added email search using elasticsearch, changes for unsubscribing contacts, added blocked emails, domains in settings pages

added email search using elasticsearch, changes for unsubscribing contacts, added blocked emails, domains in settings pages

Coverage decreased (-1.3%) to 95.052% when pulling e1b6f58b75e20ea9f0fcdbadcfa72e7270b54c58 on changes into 36f25529503fbed28f2df972a59e7b0dcf2a5f6e on master.


Updated Verge3D info. Fixed broken links.

Updated Verge3D links according to PR https://github.com/KhronosGroup/glTF/pull/1791
Updated description for OSG.JS (it was called "OSK" in the title - a typo, probably) (Related: https://github.com/KhronosGroup/glTF/issues/1795 )
Removed some closing )'s after several links. In most cases, hey didn't harm, but e.g. in "https://github.com/xml3d/xml3d-gltf-plugin)" it lead to a 404...
For UX3D, changed link to lead to the main page
For Archilogic, changed link to lead to the main page, although they don't seem to mention glTF anywhere on their site any more...
(A broken link for GLBoost was already fixed with the previous update, but not yet live)

I'm going to manually run the Github Pages update since I haven't been able to get TravisCI working properly. Hope to have time this week to fix that.

Deploy finished.


Create notebook that reproduces one point in Fig 2a of the Zeus paper

As a starting point for #4 let's write a notebook that reproduces one point in that figure.

The DeepSpeech experiment became too complicated. The librispeech data needs to be preprocessed from .flac file to .csv, which in itself becomes a very complicated task.

Switched to Imagenet experiment using Resnet-50. The notebook uploaded currently has not been run in its entirety. Also, missing an explanation of steps

Comments -

take notes about how long each part takes, to put in the instructions
write about how/why of all choices. e.g. refer to the specific section of Zeus repo where you found

normalize = transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])

perhaps we are only supposed to be limited by min accuracy
change to validation accuracy (min accuracy)
change order in train loop to match example in this notebook

Use pynvml to set power limits
power limit values will be 100-250W, batch size will be powers of 2 from 8 to 1024
following their comment, not specifying initial LR for Adadelta
in your loop:

iterate over n_max_iter (clarify how long it will take to generate each point)
in each iteration, randomly sample from the ranges of power limit/batch size (exclude values that have already been selected)
write a json file with experiment details for each point (time and energy measurements, experiment parameters - power limit and batch size, also training and validation accuracy at the end, number of epochs)

The imagenet data is too huge for the node.
When extracting the downloaded .tar files, the system gives a "Disk Full Error"
Compresses .tar files have the size: 137GB (Train) and 7GB (Test).
These when uncompressed give error.
Continuing the experiment with a  subset of data present here

The imagenet data is too huge for the node. When extracting the downloaded .tar files, the system gives a "Disk Full Error"
Compresses .tar files have the size: 137GB (Train) and 7GB (Test). These when uncompressed give error.
Continuing the experiment with a subset of data present here

Refer to #6


Timeout on schema inspection, received: {"message":"The upstream server is timing out"}

Describe the bug
Getting error 504 when trying to introspect the schema  at my https://XXXX.supabase.co/graphql/v1
Versions:

Running in Lastest Supabase Cloud
PostgreSQL: PostgreSQL 14.1 on aarch64-unknown-linux-gnu, compiled by gcc (Ubuntu 10.3.0-1ubuntu1~20.04) 10.3.0, 64-bit
pg_graphql: 0.3.1

Pg Log:
{
  "file": "/var/log/postgresql/postgresql.csv",
  "host": "db-bzupkzejwgejjkpyuqig",
  "parsed": [
    {
      "application_name": "postgrest",
      "backend_type": "client backend",
      "command_tag": "SELECT",
      "connection_from": "<IP_ADDRESS>:45127",
      "context": "SQL expression \"coalesce(\n            jsonb_object_agg(\n                fa.field_alias,\n                case\n                    when selection_name = 'name' and not has_modifiers then to_jsonb(gt.name::text)\n                    when selection_name = 'description' and not has_modifiers then to_jsonb(gt.description::text)\n                    when selection_name = 'specifiedByURL' and not has_modifiers then to_jsonb(null::text)\n                    when selection_name = 'kind' then (\n                        case\n                            when is_array_not_null then to_jsonb('NON_NULL'::text)\n                            when is_array then to_jsonb('LIST'::text)\n                            when is_not_null then to_jsonb('NON_NULL'::text)\n                            else to_jsonb(gt.type_kind::text)\n                        end\n                    )\n                    when selection_name = 'fields' and not has_modifiers then (\n                        select\n                            jsonb_agg(\n                                graphql.resolve_field(\n                                    f.name,\n                                    f.parent_type,\n                                    null,\n                                    x.sel\n                                )\n                                order by\n                                    f.column_attribute_num,\n                                    f.name\n                        )\n                        from\n                            graphql.field f\n                        where\n                            f.parent_type = gt.name\n                            and not f.is_hidden_from_schema\n                            and gt.type_kind = 'OBJECT'\n                            and not f.is_arg\n                            and (\n                                -- heartbeat is not visible unless the query type is empty\n                                gt.meta_kind <> 'Query'\n                                or f.meta_kind <> 'Query.heartbeat'\n                                or not exists(\n                                    select 1\n                                    from graphql.field fin\n                                    where\n                                        fin.parent_type = gt.name -- 'Query'\n                                        and not fin.is_hidden_from_schema\n                                        and fin.meta_kind <> 'Query.heartbeat'\n                                    limit 1\n                                )\n                            )\n                    )\n                    when selection_name = 'interfaces' and not has_modifiers then (\n                        case\n                            -- Scalars get null, objects get an empty list. This is a poor implementation\n                            -- when gt.meta_kind not in ('Interface', 'BUILTIN', 'CURSOR') then '[]'::jsonb\n                            when gt.type_kind = 'SCALAR' then to_jsonb(null::text)\n                            when gt.type_kind = 'INTERFACE' then to_jsonb(null::text)\n                            when gt.meta_kind = 'Cursor' then to_jsonb(null::text)\n                            else '[]'::jsonb\n                        end\n                    )\n                    when selection_name = 'possibleTypes' and not has_modifiers then to_jsonb(null::text)\n                    when selection_name = 'enumValues' then graphql.\"resolve_enumValues\"(gt.name, x.sel)\n                    when selection_name = 'inputFields' and not has_modifiers then (\n                        select\n                            jsonb_agg(\n                                graphql.resolve_field(\n                                    f.name,\n                                    f.parent_type,\n                                    f.parent_arg_field_id,\n                                    x.sel\n                                )\n                                order by\n                                    f.column_attribute_num,\n                                    f.name\n                            )\n                        from\n                            graphql.field f\n                        where\n                            f.parent_type = gt.name\n                            and not f.is_hidden_from_schema\n                            and gt.type_kind = 'INPUT_OBJECT'\n                    )\n                    when selection_name = 'ofType' then (\n                        case\n                            -- NON_NULL(LIST(...))\n                            when is_array_not_null is true then graphql.\"resolve___Type\"(type_, x.sel, is_array_not_null := false, is_array := is_array, is_not_null := is_not_null)\n                            -- LIST(...)\n                            when is_array then graphql.\"resolve___Type\"(type_, x.sel, is_array_not_null := false, is_array := false, is_not_null := is_not_null)\n                            -- NON_NULL(...)\n                            when is_not_null then graphql.\"resolve___Type\"(type_, x.sel, is_array_not_null := false, is_array := false, is_not_null := false)\n                            -- TYPE\n                            else null\n                        end\n                    )\n                    else null\n                end\n            ),\n            'null'::jsonb\n        )\n    from\n        graphql.type gt\n        join jsonb_array_elements(ast -> 'selectionSet' -> 'selections') x(sel)\n            on true,\n        lateral (\n            select\n                graphql.alias_or_name_literal(x.sel) field_alias,\n                graphql.name_literal(x.sel) as selection_name\n        ) fa,\n        lateral (\n            select (coalesce(is_array_not_null, false) or is_array or is_not_null) as has_modifiers\n        ) hm\n    where\n        gt.name = type_\"\nPL/pgSQL function graphql.\"resolve___Type\"(text,jsonb,boolean,boolean,boolean) line 4 at RETURN\nSQL expression \"coalesce(\n            jsonb_object_agg(\n                fa.field_alias,\n                case\n                    when selection_name = 'name' then to_jsonb(field_rec.name)\n                    when selection_name = 'description' then to_jsonb(field_rec.description)\n                    when selection_name = 'isDeprecated' then to_jsonb(false) -- todo\n                    when selection_name = 'deprecationReason' then to_jsonb(null::text) -- todo\n                    when selection_name = 'type' then graphql.\"resolve___Type\"(\n                                                            field_rec.type_,\n                                                            x.sel,\n                                                            field_rec.is_array_not_null,\n                                                            field_rec.is_array,\n                                                            field_rec.is_not_null\n                    )\n                    when selection_name = 'args' then (\n                        select\n                            coalesce(\n                                jsonb_agg(\n                                    graphql.resolve_field(\n                                        ga.name,\n                                        field_rec.type_,\n                                        field_rec.id,\n                                        x.sel\n                                    )\n                                    order by\n                                        ga.column_attribute_num,\n                                        case ga.name\n                                            when 'first' then 80\n                                            when 'last' then 81\n                                            when 'before' then 82\n                                            when 'after' then 83\n                                            when 'after' then 83\n                                            when 'filter' then 95\n                                            when 'orderBy' then 96\n                                            when 'atMost' then 97\n                                            else 0\n                                        end,\n                                        ga.name\n                                ),\n                                '[]'\n                            )\n                        from\n                            graphql.field ga\n                        where\n                            ga.parent_arg_field_id = field_rec.id\n                            and not ga.is_hidden_from_schema\n                            and ga.is_arg\n                            and ga.parent_type = field_rec.type_\n                    )\n                    -- INPUT_OBJECT types only\n                    when selection_name = 'defaultValue' then to_jsonb(field_rec.default_value)\n                    else graphql.exception_unknown_field(selection_name, field_rec.type_)::jsonb\n                end\n            ),\n            'null'::jsonb\n        )\n    from\n        jsonb_array_elements(ast -> 'selectionSet' -> 'selections') x(sel),\n        lateral (\n            select\n                graphql.alias_or_name_literal(x.sel) field_alias,\n                graphql.name_literal(x.sel) as selection_name\n        ) fa\"\nPL/pgSQL function graphql.resolve_field(text,text,integer,jsonb) line 20 at RETURN\nSQL expression \"coalesce(\n            jsonb_object_agg(\n                fa.field_alias,\n                case\n                    when selection_name = 'name' then to_jsonb(field_rec.name)\n                    when selection_name = 'description' then to_jsonb(field_rec.description)\n                    when selection_name = 'isDeprecated' then to_jsonb(false) -- todo\n                    when selection_name = 'deprecationReason' then to_jsonb(null::text) -- todo\n                    when selection_name = 'type' then graphql.\"resolve___Type\"(\n                                                            field_rec.type_,\n                                                            x.sel,\n                                                            field_rec.is_array_not_null,\n                                                            field_rec.is_array,\n                                                            field_rec.is_not_null\n                    )\n                    when selection_name = 'args' then (\n                        select\n                            coalesce(\n                                jsonb_agg(\n                                    graphql.resolve_field(\n                                        ga.name,\n                                        field_rec.type_,\n                                        field_rec.id,\n                                        x.sel\n                                    )\n                                    order by\n                                        ga.column_attribute_num,\n                                        case ga.name\n                                            when 'first' then 80\n                                            when 'last' then 81\n                                            when 'before' then 82\n                                            when 'after' then 83\n                                            when 'after' then 83\n                                            when 'filter' then 95\n                                            when 'orderBy' then 96\n                                            when 'atMost' then 97\n                                            else 0\n                                        end,\n                                        ga.name\n                                ),\n                                '[]'\n                            )\n                        from\n                            graphql.field ga\n                        where\n                            ga.parent_arg_field_id = field_rec.id\n                            and not ga.is_hidden_from_schema\n                            and ga.is_arg\n                            and ga.parent_type = field_rec.type_\n                    )\n                    -- INPUT_OBJECT types only\n                    when selection_name = 'defaultValue' then to_jsonb(field_rec.default_value)\n                    else graphql.exception_unknown_field(selection_name, field_rec.type_)::jsonb\n                end\n            ),\n            'null'::jsonb\n        )\n    from\n        jsonb_array_elements(ast -> 'selectionSet' -> 'selections') x(sel),\n        lateral (\n            select\n                graphql.alias_or_name_literal(x.sel) field_alias,\n                graphql.name_literal(x.sel) as selection_name\n        ) fa\"\nPL/pgSQL function graphql.resolve_field(text,text,integer,jsonb) line 20 at RETURN\nSQL expression \"coalesce(\n            jsonb_object_agg(\n                fa.field_alias,\n                case\n                    when selection_name = 'name' and not has_modifiers then to_jsonb(gt.name::text)\n                    when selection_name = 'description' and not has_modifiers then to_jsonb(gt.description::text)\n                    when selection_name = 'specifiedByURL' and not has_modifiers then to_jsonb(null::text)\n                    when selection_name = 'kind' then (\n                        case\n                            when is_array_not_null then to_jsonb('NON_NULL'::text)\n                            when is_array then to_jsonb('LIST'::text)\n                            when is_not_null then to_jsonb('NON_NULL'::text)\n                            else to_jsonb(gt.type_kind::text)\n                        end\n                    )\n                    when selection_name = 'fields' and not has_modifiers then (\n                        select\n                            jsonb_agg(\n                                graphql.resolve_field(\n                                    f.name,\n                                    f.parent_type,\n                                    null,\n                                    x.sel\n                                )\n                                order by\n                                    f.column_attribute_num,\n                                    f.name\n                        )\n                        from\n                            graphql.field f\n                        where\n                            f.parent_type = gt.name\n                            and not f.is_hidden_from_schema\n                            and gt.type_kind = 'OBJECT'\n                            and not f.is_arg\n                            and (\n                                -- heartbeat is not visible unless the query type is empty\n                                gt.meta_kind <> 'Query'\n                                or f.meta_kind <> 'Query.heartbeat'\n                                or not exists(\n                                    select 1\n                                    from graphql.field fin\n                                    where\n                                        fin.parent_type = gt.name -- 'Query'\n                                        and not fin.is_hidden_from_schema\n                                        and fin.meta_kind <> 'Query.heartbeat'\n                                    limit 1\n                                )\n                            )\n                    )\n                    when selection_name = 'interfaces' and not has_modifiers then (\n                        case\n                            -- Scalars get null, objects get an empty list. This is a poor implementation\n                            -- when gt.meta_kind not in ('Interface', 'BUILTIN', 'CURSOR') then '[]'::jsonb\n                            when gt.type_kind = 'SCALAR' then to_jsonb(null::text)\n                            when gt.type_kind = 'INTERFACE' then to_jsonb(null::text)\n                            when gt.meta_kind = 'Cursor' then to_jsonb(null::text)\n                            else '[]'::jsonb\n                        end\n                    )\n                    when selection_name = 'possibleTypes' and not has_modifiers then to_jsonb(null::text)\n                    when selection_name = 'enumValues' then graphql.\"resolve_enumValues\"(gt.name, x.sel)\n                    when selection_name = 'inputFields' and not has_modifiers then (\n                        select\n                            jsonb_agg(\n                                graphql.resolve_field(\n                                    f.name,\n                                    f.parent_type,\n                                    f.parent_arg_field_id,\n                                    x.sel\n                                )\n                                order by\n                                    f.column_attribute_num,\n                                    f.name\n                            )\n                        from\n                            graphql.field f\n                        where\n                            f.parent_type = gt.name\n                            and not f.is_hidden_from_schema\n                            and gt.type_kind = 'INPUT_OBJECT'\n                    )\n                    when selection_name = 'ofType' then (\n                        case\n                            -- NON_NULL(LIST(...))\n                            when is_array_not_null is true then graphql.\"resolve___Type\"(type_, x.sel, is_array_not_null := false, is_array := is_array, is_not_null := is_not_null)\n                            -- LIST(...)\n                            when is_array then graphql.\"resolve___Type\"(type_, x.sel, is_array_not_null := false, is_array := false, is_not_null := is_not_null)\n                            -- NON_NULL(...)\n                            when is_not_null then graphql.\"resolve___Type\"(type_, x.sel, is_array_not_null := false, is_array := false, is_not_null := false)\n                            -- TYPE\n                            else null\n                        end\n                    )\n                    else null\n                end\n            ),\n            'null'::jsonb\n        )\n    from\n        graphql.type gt\n        join jsonb_array_elements(ast -> 'selectionSet' -> 'selections') x(sel)\n            on true,\n        lateral (\n            select\n                graphql.alias_or_name_literal(x.sel) field_alias,\n                graphql.name_literal(x.sel) as selection_name\n        ) fa,\n        lateral (\n            select (coalesce(is_array_not_null, false) or is_array or is_not_null) as has_modifiers\n        ) hm\n    where\n        gt.name = type_\"\nPL/pgSQL function graphql.\"resolve___Type\"(text,jsonb,boolean,boolean,boolean) line 4 at RETURN\nPL/pgSQL assignment \"agg = agg || (\n                with uq as (\n                    select\n                        distinct gt.name\n                    from\n                        graphql.type gt\n                        -- Filter out object types with no fields\n                        join (\n                            select\n                                distinct parent_type\n                            from\n                                graphql.field\n                            where\n                                not is_hidden_from_schema\n                                -- scheam.queryType is non null so we must include it\n                                -- even when its empty. a client exception will be thrown\n                                -- if not fields exist\n                                or parent_type = 'Query'\n                            ) gf\n                            on gt.name = gf.parent_type\n                            or gt.type_kind not in ('OBJECT', 'INPUT_OBJECT')\n                )\n                select\n                    jsonb_build_object(\n                        graphql.alias_or_name_literal(node_field),\n                        jsonb_agg(graphql.\"resolve___Type\"(uq.name, node_field) order by uq.name)\n                    )\n                from uq\n            )\"\nPL/pgSQL function graphql.\"resolve___Schema\"(jsonb,jsonb) line 36 at assignment\nPL/pgSQL assignment \"data_ = case meta_kind\n                                when '__Schema' then\n                                    graphql.\"resolve___Schema\"(\n                                        ast := ast_inlined,\n                                        variable_definitions := variable_definitions\n                                    )\n                                when '__Type' then\n                                    jsonb_build_object(\n                                        graphql.alias_or_name_literal(ast_statement),\n                                        graphql.\"resolve___Type\"(\n                                            (\n                                                select\n                                                    name\n                                                from\n                                                    graphql.type type_\n                                                where\n                                                    name = graphql.argument_value_by_name('name', ast_inlined)\n                                            ),\n                                            ast_inlined\n                                        )\n                                    )\n                                else null::jsonb\n                            end\"\nPL/pgSQL function graphql.resolve(text,jsonb,text,jsonb) line 206 at assignment",
      "database_name": "postgres",
      "detail": null,
      "error_severity": "ERROR",
      "hint": null,
      "internal_query": null,
      "internal_query_pos": null,
      "leader_pid": null,
      "location": null,
      "process_id": 27974,
      "query": "WITH pgrst_source AS (WITH pgrst_payload AS (SELECT $1::json AS json_data), pgrst_body AS ( SELECT CASE WHEN json_typeof(json_data) = 'array' THEN json_data ELSE json_build_array(json_data) END AS val FROM pgrst_payload), pgrst_args AS ( SELECT * FROM json_to_recordset((SELECT val FROM pgrst_body)) AS _(\"query\" text) )SELECT \"graphql_public\".\"graphql\"(\"query\" := (SELECT \"query\" FROM pgrst_args LIMIT 1)) AS pgrst_scalar) SELECT null::bigint AS total_result_set, pg_catalog.count(_postgrest_t) AS page_total, coalesce((json_agg(_postgrest_t.pgrst_scalar)->0)::text, 'null') AS body, nullif(current_setting('response.headers', true), '') AS response_headers, nullif(current_setting('response.status', true), '') AS response_status FROM (SELECT \"pgrst_source\".*FROM \"pgrst_source\"    LIMIT $2 OFFSET $3) _postgrest_t",
      "query_id":<PHONE_NUMBER>653522000,
      "query_pos": null,
      "session_id": "629bb986.6d46",
      "session_line_num": 8,
      "session_start_time": "2022-06-04 19:59:02 UTC",
      "sql_state_code": "57014",
      "timestamp": "2022-06-04 20:01:02.945 UTC",
      "transaction_id": 0,
      "user_name": "authenticator",
      "virtual_transaction_id": "5/17599"
    }
  ],
  "parsed_from": null,
  "project": "bzupkzejwgejjkpyuqig",
  "source_type": "file"
}

This is the API respond log
{
"headers": [
{
"cf_cache_status": "DYNAMIC",
"cf_ray": "715f36d200c79447-SJC",
"content_length": "51",
"content_location": null,
"content_range": null,
"content_type": "application/json; charset=utf-8",
"date": "Sat, 04 Jun 2022 08:15:17 GMT",
"transfer_encoding": null,
"x_kong_proxy_latency": "1",
"x_kong_upstream_latency": "60001"
}
],
"origin_time": 60217,
"status_code": 504
}

And this is the inspection query:
query IntrospectionQuery {
__schema {
queryType {
name
}
mutationType {
name
}
subscriptionType {
name
}
types {
...FullType
}
directives {
name
description
locations
args {
...InputValue
}
}
}
}
fragment FullType on __Type {
kind
name
description
fields(includeDeprecated: true) {
name
description
args {
...InputValue
}
type {
...TypeRef
}
isDeprecated
deprecationReason
}
inputFields {
...InputValue
}
interfaces {
...TypeRef
}
enumValues(includeDeprecated: true) {
name
description
isDeprecated
deprecationReason
}
possibleTypes {
...TypeRef
}
}
fragment InputValue on __InputValue {
name
description
type {
...TypeRef
}
defaultValue
}
fragment TypeRef on __Type {
kind
name
ofType {
kind
name
ofType {
kind
name
ofType {
kind
name
ofType {
kind
name
ofType {
kind
name
ofType {
kind
name
ofType {
kind
name
}
}
}
}
}
}
}
}

My guess is that it is something related to the naming conversion, when I name_thing_like_this, it works, but then I apply
comment on schema public is '@graphql({"inflect_names": true})';
It breaks with the same timeout error. And therefore I removed the comment and directly modify the the database and column name to camelcase, then it breaks again.

sorry for the slow response, I was OOO last week
Could you please provide your supabase project reference? Everything in your description looks standard/correct for loading the graphiql IDE so I'll have to take a look at the instance to try to reproduce the issue

Sure, it's https://app.supabase.com/project/bzupkzejwgejjkpyuqig, I have removed all sensitive data, and I will keep it running for debugging purpose.

@olirice just so you know, also experiencing the same issue on our much simpler (~25 tables) but likely to become more complex shortly database.
Do you know where the long tent-pole on the rebuilding schema cache speed problem is?

@Marviel this is a function of query size rather than it is schema size
Are you experiencing the timeout on a large query (> 7 joins)?

@olirice only asking for the introspection query right now. Is there any way to build that schema cache in SQL? I would be happy to do so as a post-migration step.

Is there any way to build that schema cache in SQL

You could make a call like this https://github.com/supabase/pg_graphql/blob/f837b390a26d0c0f12703be4dd7816f172086866/test/sql/resolve_graphiql_schema.sql#L38
subbing in your query, operationName, and variables to match what the client is sending. That would build the cache and wouldn't be subject to the same timeout limit
I worked on this issue a bit today and plan to continue next week. Will keep this thread in the loop when a patch is ready

@liweihan I'll cut a new version tomorrow and have it pushed to your instance to include https://github.com/supabase/pg_graphql/pull/195. Will ping you on this channel once that's done
@Marviel I can do the same for your project if you could reply with a project ref

Hey @olirice , my instance works now! I tied the same query on another instance with almost the same schema but failed. I assume it has not been publicly available yet, right?

Hi @olirice, unfortunately the timeout still happens to this instance while introspecting (in graphiql) . Meanwhile I have another instance with almost the same schema plus a $50 medium add on failed as well.
However once I set inflect_names to false, and run the tree lines, then both instances works again.

@liweihan bzupkzejwgejjkpyuqig had been deactivated due to free-tier inactivity and was reactivated today. When a project is re-activated it boots up on a fresh server which reverted you back to (the currently deployed) version v0.3.2
The latest version v0.4.0 is now installed and enabled on bzupkzejwgejjkpyuqig and I confirmed that the introspection schema loads in ~900 ms

version v0.4.0 is scheduled to deploy in the next 2 weeks but I'd be happy to get it put on your $50 instance early too if you send a project ref

@olirice I see. Thank you so much! My paid instance is tilepcwykspsgbllptbf, Im happy to try out your updates on it!

sure thing, v0.4.0 is now installed on  tilepcwykspsgbllptbf
to activated it run
drop extension pg_graphql;
create extension pg_graphql;

Omg this is way faster! Thank you so much @olirice . I will close this issue then


testdata sql中的表结构比 smaple 需要使用的少字段

缺少descs字段
What happened:
What you expected to happen:
How to reproduce it (as minimally and precisely as possible):
Anything else we need to know?:

i will fix it


Support logging to syslog and text files

If you want more sophisticated logging than that which is provided by HeliumLogger, I'd suggest you look at https://github.com/SwiftyBeaver/SwiftyBeaver-Kitura.

HeliumLogger lets you log to implementations of TextOutputStream. See HeliumStreamLogger.swift.
Here's some code I threw together to log to stderr (thanks to https://deepswift.com/core/standard-io/ ). You can probably see where you can adapt it to write to a text file instead.
struct StandardError: TextOutputStream {
    func write(_ text: String) {
        guard let data = text.data(using: String.Encoding.utf8) else {
            return
        }
        FileHandle.standardError.write(data)
    }
}

let se = StandardError()
HeliumStreamLogger.use(outputStream: se)

Then log as normal.

Nice tips guys, thank you.

In general logging to files is more involved than just writing to a file. Generally to be useful one needs log rotation (one hopes one's server will run for a really long time which makes for very large log files...) and some minimal management to insure that the file system doesn't fill up with log files......

…but sometimes one just needs to see what's going on in one's code and a debugger isn't a good fit for certain cases. And any server OS worth being called as much will already ship with log rotation tools if one really needs to log so much stuff in production that filling up a disk is a worry.
 You seem to be very interested in talking us down from using it in favor of a commercial alternative. Hmm.

I am a contributor to Kitura.
The goal of HeliumLogger was to be a very simple and lightweight logger. The idea of the LoggerAPI in Kitura was to enable the plugging in of all sorts of loggers, not just those supplied by Kitura.
Even open source servers that log to disk, have built in facilities to switch log files when the log file is over a certain size.
I agree that sometimes simplistic logging to a file is useful.

@gmosx I've put the code example which is referenced above into the API reference for HeliumStreamLogger here ->
http://ibm-swift.github.io/HeliumLogger/Classes/HeliumStreamLogger.html#/s:12HeliumLogger0a6StreamB0C3usey0B3API0B11MessageTypeO_x06outputC0tFZ
If this resolves your issue please can you close it. If it doesn't and you'd like additional documentation please let me know what and where and I'll address it.


Make NEAR() and WITHIN() repeatable

This issue applies to NEAR() and WITHIN() in AQL as well as /_api/simple/near and /_api/simple/within in the REST interface.
Currently, when you have 2 documents in the same coordinates, they are chosen randomly and it is unclear which one will be returned in each request.
If, for example, we are building an app that finds all the areas of interest (documents) within or near a given postcode (coordinates) and we want to paginate through pages of results, this becomes impossible. While we could use cursors to help, since each request to the our webserver would be independent of previous request, this means that we need to persist the cursor to the user's session. There is also the risk that the cursor will timeout.
My proposal is that for documents which cannot be ordered because their coordinates are the same, order them by their _id. This allows geo queries to ArangoDB to be repeatable and consistent.

We're currently working on geo-indices. We will get cursor support, and results will allways be in the sequence that the distance grows. However, similar distances may vary in sequence. We don't have an ETA on this yet.

Quoting the CHANGELOG:

add implicit use of geo indexes when using SORT/FILTER in AQL, without
the need to use the special-purpose geo AQL functions NEAR or WITHIN.
the special purpose NEAR AQL function can now be substituted with the
following AQL (provided there is a geo index present on the doc.latitude
and doc.longitude attributes):
FOR doc in geoSort
  SORT DISTANCE(doc.latitude, doc.longitude, 0, 0)
  LIMIT 5
  RETURN doc

WITHIN can be substituted with the following AQL:
FOR doc in geoFilter
  FILTER DISTANCE(doc.latitude, doc.longitude, 0, 0) < 2000
  RETURN doc

Compared to using the special purpose AQL functions this approach has the
advantage that it is more composable, and will also honor any LIMIT values
used in the AQL query.

We're pleased to anounce that ArangoDB 3.2 containing this is now available for download - Closing.


'cap.node' was compiled against a different Node.js version using NODE_MODULE_VERSION 83. This version of Node.js requires NODE_MODULE_VERSION 89.

Hello, I'm facing this issue :
'cap.node'
was compiled against a different Node.js version using
NODE_MODULE_VERSION 83. This version of Node.js requires
NODE_MODULE_VERSION 89. Please try re-compiling or re-installing
the module (for instance, using `npm rebuild` or `npm install`).

So I did install the electron-rebuild and try to :
PS C:\Users\Erfan\Documents\Warcraft-Plus> .\node_modules\.bin\electron-rebuild.cmd
\ Building module: cap, Completed: 0

But nothing happens ! this has been running for 13 Hours and it's not completing anything !

You'll want to post an issue to the electron project instead. I have no control over that. This addon compiles just fine outside of electron.


New notebooks example case: MolSSI learning content

https://github.com/MolSSI-Education/acs-2023-notebooks
Could use these also in the intro/motivation

Maybe mention GitHub CodeSpaces that support notebooks

Anyhow this is not critical so maybe leave out for now


[CI] switch self-hosts for test-default and test-scroll

Description
Fix test-default to use Jenkins2 (new-host), test-scroll to use Jenkins1 (super2).

Close this PR to use https://github.com/scroll-tech/zkevm-circuits/pull/481


Update README.md and app.js to work with /services and /routes instead of /apis - Kong CE 0.14

This also changes the curl commands to use the same notation as used in the docs seen on https://docs.konghq.com/0.14.x/getting-started/configuring-a-service/

Thank you!

Hey Josh, thanks for the PR... follow up just an adjustment I had to make to get the token:
curl -X POST
--url "https://<IP_ADDRESS>:8443/mock/oauth2/token"
--header "Host: mockbin.org"
--data "grant_type=authorization_code"
--data "client_id=318f98be1453427bc2937fceab9811bd"
--data "client_secret=efbc9e1f2bcc4968c988ef5b839dd5a4"
--data "redirect_uri=http://getkong.org/"
--data "code=ad286cf6694d40aac06eff2797b7208d"
--insecure
I've included the /mock to the url and changed the Host to mockbin.org

Thanks for the heads up... let me submit another PR to fix that.


Minor fixes to docs and website

The Installation section on http://panel.pyviz.org was being formatted at the wrong level:

Also cleaned up some wording and clarified in the intro that there are three completely different ways of using Panel, and that users should pick one of them for any particular application.

Looks good, made one small comment but we can just gloss over that if you want.


Copying Vocabulary from other database schema

In the Vocabulary tab there is the option to copy the vocab from another schema. It is not clear to me how this works. I guess this schema should then be in the same Database since there are no separate credentials, server location asked? Can you explain in what situation this is useful?
In the first Location tab the database name is for Postgres the schema (as shown by the hint). Is this copying of vocab only possible in SQL server maybe? If so it may be a good idea to grey out the option if PostgreSQL is selected on the Location tab.

The option works on Postgres but yes, the vocab schema needs to be in the same database as the CDM schema.
I have only one database on my server with many schemas. I guess you have many databases with one schema per database?

Correct. They are on the same Postgres server but in different databases.
SYNPUF
CDM
Results
IPCI[version]
CDM
Results
This keeps the results better organized I think and you can run a script by changing the database name (like changing the schema in JnJ case).
I could also add a vocab schema per database in this way instead of putting it into CDM or giving them all different names
Not sure what is the general preferred approach is though, there are advantages to both options.
From: Martijn Schuemie<EMAIL_ADDRESS>Reply-To: OHDSI/JCdmBuilder<EMAIL_ADDRESS>Date: Tuesday 25 April 2017 at 18:32
To: OHDSI/JCdmBuilder<EMAIL_ADDRESS>Cc: Peter Rijnbeek<EMAIL_ADDRESS>Author<EMAIL_ADDRESS>Subject: Re: [OHDSI/JCdmBuilder] Copying Vocabulary from other database schema (#8)
The option works on Postgres but yes, the vocab schema needs to be in the same database as the CDM schema.
I have only one database on my server with many schemas. I guess you have many databases with one schema per database?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://github.com/OHDSI/JCdmBuilder/issues/8#issuecomment-297088038, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AG6oiZBE0SeFwfD8n_ou1KyG6f06nSCgks5rziA3gaJpZM4NHYN3.


3.0b3/2.0 w/macOS13 - Issue w/Super waiting for download but download never starts

I've been running into an issue where super is going through the MDM download process, gets to the point where it's waiting for the download to start, the MDM log show's the MDM download workflow as complete, but the download isn't starting. I've had it try probably 20+ attempts, tried a reboot, also tried version 2.0 but had the same resut
This is running on macOS 13.0 trying to update to 13.1 beta so I'm not sure if that's causing an issue, but wanted to call it out and send over the logs in case there is an issue with softwareupdate on macOS 13 or if you spot something I'm missing
super (1).log
mdm (1).log
update (1).log

This is not an issue with super. After the Jamf API command is sent, there is nothing super can do but wait for the download to start. We literally have no control over the download process after the MDM command workflow is started... none. Instead super waits for softwareupdated to start the download to complete, and quite often it simply will not. The update.log is the raw output of the softwareupdated process, and if it never starts to download then super v3.0 will properly timeout and try again. See this example log for what should happen when the download is working.

Reopening for clarification... are the affected systems set to automatically download updates? If so, that could be the cause. In other words, if the update is already downloaded before the MDM command tells it to download, then the softwareupdate log may not indicate any download progress because it's already done. If this is the case then there could be something super could do to try and detect if the update was previously downloaded automatically.

The problem is that there aren't any good methods to detect this. The only "official" method is to literally run softwareupdate --download every time super runs to validate previous downloads, but as we all now know... every run of softwareupdate is another chance for it to hang. Normally super keeps track of downloads it completes to avoid re-downloading, so did you reset super between download/install attempts?

Yes I did reset super between download/install attempts but it didn't have any effect.
I have a feeling this would be a rare occurrence. It's only come up this once, and super has been able to reset other times.
Maybe in the future a flag could be added to force a re-download of all updates but it's probably a low priority at this point.

It looks like someone submitted a pull request for what sounds like this same issue, I haven't had a chance to comb over their code though

It's not ideal as it still requires running softwareupdate again... an ideal solution would be to know before any download is attempted if the update is already cached. I found this... working on it... defaults read /System/Volumes/Update/Update.plist update-asset-attributes

Well.. I've tested some things... I will likely be re-architecting the download mechanism again... stay tuned for the next beta.


Add async Result modifiers

I was missing easy access to Result modifiers after .request(...), so I took inspiration from the currently existing RxMoya and Moya wrappers.

@AndrewSB This is just a simple wrapper for some convenience modifiers, I see that there's some tests for Single/Observable/SignalProducer, do you think that's needed for the async wrapper as well? In general, this is just a simple extra compilation step, but if needed I can add tests. 😄


feat(contract): improve Multicall result handling

Motivation
Currently, if Multicall version is set to 2 or 3, .call()'s result will be a tuple of (bool, <_>) where bool is success. This is not the best API since it differs from version 1 and it is likely to throw and error when if the bool success variable is false, since the revert data almost never matches the success data.
This PR addresses this by making use of  the standard Result type to represent the call's result, where Ok is used when the success boolean is true, Err otherwise.
Breaking changes:

.call()'s generic result type in all versions is now just the tuple of types, instead of a tuple of (bool, <_>) tuples
.raw_call()'s concrete result type was changed from Vec<Token> to Vec<Result<Token, Bytes>>, explained above

Solution
On top of the changes described above:

made all of the Multicall struct's fields public
changed .call() and .call_array()'s generic type trait bound from Detokenize to Tokenizable, because it is better suit for what these methods do, which is take a vector of tokens and map them to a Rust tuple (single token). This is not a breaking change since Detokenize is a supertrait of Tokenizable
improved the Detokenize implementation
changed ethers-contract's edition to 2021 to match the other crates
improved existing multicall test and reflected changes in the methods' and the Multicall struct's docs

PR Checklist

[x] Added Tests
[x] Added Documentation
[x] Updated the changelog
[x] Breaking changes

Extra context:
When a call fails (and it was allowed to), it will be returned as either Token::Bytes or Token::String, which is not always the same type as the "Ok" return type of the call, thus even if we allow it to revert, call and call_array will fail turning them from tokens to native types, and also the error is not recoverable in this case.
This is why I think using Result (as it's also quite natural given that there are an Ok and an Err return type...) is a necessary breaking change to have.
If it fails and it wasn't allowed to, call_raw early returns with a middleware error at .call() on the ContractCall


TEM2015 Test 01: Camps feature service item does not exist

Item 621106f10a85416495445fc44e562edc associated with NationalIntelligence/Camps/MapServer existed in TEM2015 Ops Server Test 01 build, but item f96cbe75893b48139d8ec3c96ef9bd50 associated with the Camps feature service does not exist.
Searching dev portal I find that both portal items are owned by ReleasedIntelligence owner, so assumption is that the feature service item f96cbe75893b48139d8ec3c96ef9bd50 was released after the TEM2015 Test 01 extract. I'll check after final TEM2015 extract that this item exists in extracted portal content.

Verified that both portal items associated with the service are owned by ReleasedIntelligence. Closing issue.


NIFI-1806 Set file encoding to UTF-8 when running unit tests

Full build is OK.
Tested with Windows 10 / Java 8.

Given @joewitt latest comment in JIRA we may need to close this a "No Fix"


Quoted identifiers in column names

Add the ability to quote identifiers for columns in a table. This would allow column names to contain arbitrary characters such as spaces. Hive supports these types of identifiers using backquotes. For example,
create table parquet_table (Session Token string) stored as parquetfile;
However, attempting to insert a new row into this table results in an error.
insert into parquet_table values ('1234-45')
org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.IllegalArgumentException: field ended by ';': expected ';' but got 'token' at line 1:   optional string Session Token
I would suggest using backquotes in Parquet as well.
Reporter: Michael Styles
Note: This issue was originally created as PARQUET-677. Please see the migration documentation for further details.

Michael Styles:
@julienledem I am in the process of putting together a PR for this issue. The master branch (1.8.2-SNAPSHOT) has a dependency on Hive 0.12. Some of the hive-related tests I'm trying to write would require Hive 0.13 which supports quoted identifiers. Is there any plan on moving up to Hive 0.13?

Michael Styles:
PR: https://github.com/apache/parquet-mr/pull/361

Julien Le Dem / @julienledem:
Parquet support for Hive has moved to the hive repo itself for more recent versions. You should find the same tests there.
The serde in the parquet repo is for older versions of Hive so it wont be moving up.
This was to better support compatibility across Hive versions since Hive's API kept changing.


[RFC] Add generic CudaTensor types

This is an RFC on a patch that will add support for all the torch7 tensor types to cutorch, with an eye to adding half-precision float support as well for Maxwell in a future PR.
The new tensor types are named e.g. torch.CudaLongTensor, and the conversion functions are named e.g. :cudaLong(). The Lua and C APIs for cuda float tensors is left unchanged for backwards compatibility, so cuda float tensors are still called CudaTensor (and THCudaTensor).
Only the construction, resize, and CPU copy/type-conversion API are implemented generically so far. I'll be adding some more stuff like FFI and GPU-GPU type-conversion (and tests), but I don't expect to implement the full cutorch math API generically any time soon.
Thanks!

I'm going to see if I can break this into multiple commits to make the actual changes vs. moved files more clear.

Thanks Adam! If you could break this up a bit, that'd be great.
What do you think about having torch.CudaFloatTensor in addition to torch.CudaTensor (one being essentially an alias of the other)? It seems consistent and gives us a path towards deprecating torch.CudaTensor if we ever wanted to. We can only do that on the Lua side I guess, but then most of our users are probably working in Lua only.

Hi Dominik, how do you propose I break it up? I already split out the file moves to a separate commit to make the changes clearer. Would you like me to split it into THC and cutorch components?
Also just to clarify, this is just RFC, it's not in shape to be merged yet.

Dominik, I thought about having torch.CudaFloatTensor in addition to torch.CudaTensor. On the Lua side, you can't really alias, you'd  have to have two distinct torch types, which could both wrap the same C object; then every interfacing function would have to accept both types. I'd be worried that you'd end up with fragmentation where you could almost use the types interchangeably except for some random libraries that didn't support both "aliases" and suddenly you get confusing behavior.
What do you think? Is this how you were thinking of doing the aliasing?

Cant you do simply:
torch.CudaTensor = torch.CudaFloatTensor

?

Yes, you could alias in this way and even copy torch7 by adding a cutorch.setdefaulttensortype(), but it won't be backwards compatible because torch.type(torch.CudaTensor()) will now be CudaFloatTensor.
Serialization and stuff would also have to be patched up. You could also do it the opposite way, torch.CudaFloatTensor = torch.CudaTensor, but that has its own problems.

I was thinking of just doing
torch.CudaFloatTensor = torch.CudaTensor

Beside the issues that torch.type will always return 'CudaTensor', what other problems would there be?
I think at some point we have to break backwards-compatibility, e.g. :cuda() should preserve the type instead of always converting to float. We're not quite there yet, but I was hoping that a torch.CudaFloatTensor would make the transition easier.

@andresy I'm working on this large-ish change to support non-float CudaTensor types. Before I do too much more work, can you comment on whether you're planning to switch to C++ templates in torch7 any time soon? If so, I'm just wasting my time.

My latest update adds a bunch of the missing pieces - (slow) cuda->cuda copies, generic FFI, indexing, and simple tests.
It would be nice to get this reviewed now, since I would work on half-precision next. @dominikgrewe do you have any preferred way you'd like me to split this up to make it easier for review?

@adamlerer no c++ in the short future, sorry

I actually don't think this needs further splitting. It's a big CL but all changes are related to each other.

I just got back to this PR; it's rebased on master and I've added GPU-GPU copies and tests. It's still bare-bones (no math, indexing, non-contiguous copies) but I think it's enough for one PR. @dominikgrewe would you like to take a look? Thanks!

Updated with changes suggested by @dominikgrewe

I don't think I can see any changes.

Sorry @dominikgrewe, got git and hg mixed up again :/. Files should be updated now.

Just two nits, otherwise it looks good to me!

Nits were fixed, lets merge this soon to avoid further rebasing work?

Ready to merge on rebase. Theres merge conflicts.

Fixed!

Kaboom! Done!


Add forget_client (using forget_sta api)

Nothing new, just cleaning up the lint errors from pull request #43 that stops it from being accepted.

@yuphing-ong Can the block_client and unblock_client also use the new _macs_cmd function?

@yuphing-ong Can the block_client and unblock_client also use the new _macs_cmd function?

Unfortunately no.  FYI _mac_cms is just sending param 'macs':macs, where macs must be a list of macs (one or more).  I'm not implementing any iteration, it's just what the Unifi API is expecting.
I'm using https://github.com/Art-of-WiFi/UniFi-API-client/blob/master/src/Client.php as a reference, so block_sta and unblock_sta only take cmd param 'mac' and a single mac, whereas forget_sta takes the param 'macs': '[...]'.


SOLR-15898 Upgrade-notes and major-changes for 9.0

https://issues.apache.org/jira/browse/SOLR-15898

Upgrade Notes page now targets 9.0 (will add 10.0 section to main in separate PR)
Moved the 8.x upgrade notes from solr-upgrade-notes.adoc to bottom of major-changes-in-solr-9.adoc.
Started with outline for structuring 9.0 changes

TODO:

[x] Complete the "Upgrade planning" section, with high-level wording and summaries~
[ ] Move all notes around to correct section headings
[ ] Re-write notes to have an end-user perspective, consolidate as needed and remove non-major changes

I think I'm done with the "Upgrade Prerequisites" and "Rolling Upgrades" chapters.

I propose that I merge what I got here before I go on vacation, and then you guys can organize the rest of the work, perhaps as a seriens of smaller PRs, I don't know.


make Wkt display

I was trying to find out how to get a Wkt to actually convert to a string. Is there a reason why it doesn't implement Display? It seems, instead i have to do ẁkt.item.to_string() - which I find counter-intuitive.

Until recently, a single Wkt values could represent multiple geometries, which would have posed some problems when implementing ToString. But adding it now seems quite reasonable.

This makes sense now. I just couldn't figure out why the README says that you can encode WKT strings, but there is no method for it. I didn't see that the individual types are Display, and i also just wanted to encode the Wkt<_>.

Fixed by @categulario in https://github.com/georust/wkt/pull/86


MODE-1328 Added to public API methods to register the node types defined in CND & XML files

Added the org.modeshape.jcr.api.nodetype.NodeTypeManager interface that extends the javax.jcr.nodetype.NodeTypeManager interface with new registerNodeTypeDefinitions(...) methods that accept File, URL, or InputStream objects.
A new test class was added to verify the behavior. Also, the CndNodeTypeReader and JackrabbitXmlNodeTypeReader classes have been deprecated. The Reference Guide was also updated.
All unit and integration tests pass.

Merged into the 'master' branch. A separate commit will be used for the changes in the '3.x' branch.


⚠ Samsung has degraded performance

In 741e78d, Samsung (https://samsung.com) experienced degraded performance:

HTTP code: 200
Response time: 2641 ms

Resolved: Samsung performance has improved in 4db706d.


need drop-down for event type to reduce block clutter

For services with lots of events, we get a ton of blocks in MakeCode. See, for example, the accelerometer extension (below). Should combine into a single block with dropdown whenever possible.

Best implemented "manually" for now.


[BUG] Missing text in legend

Describe the bug
When legend parameter is set to true some legend is present but without any kind of text.
Minimal Code To Reproduce
Check this notebook https://colab.research.google.com/drive/1mDit0vQLI651kpRU_p67XvuGjDxxfy6V?usp=sharing
Expected behavior
Show some text in the legend
Screenshots

Environment (please complete the following information):

Google Colab
JupyterLab ( quay.io/jupyter/tensorflow-notebook:cuda-latest )

Additional context
Add any other context about the problem here.

Oops, didn't read that ticket, downgrading to visualkeras==0.1.2 works fine. Thanks!

No problem, thanks for using visualkeras


update kubeadm doc

Description
Update the overview to make it clear that kubeadm join can be run to create a worker node as well as a new control plane.
Issue
Closes:  #48399

Preview page

/sig cluster-lifecycle


[Feature]: Mushroom version of the tile card

Requirements

[X] I have updated Mushroom to the latest available version
[X] I did a search to see if there is a similar issue or if a pull request is open.

Is your feature request related to a problem?
no
Describe the solution you'd like
I would like to see a mushroom version of the in built tile card, as both look modern and minimalistic, but are different enough in design so that they cannot be easily combined in the same dashboard.
Also mushroom cards are way more customizable (hide name icon etc.)

Describe alternatives you've considered
Change the mushroom design to look more like the (hopefully uniform) modern Home Assistant card design.
Additional context
No response

Hi 👋 I agree, some changes about margin or font-size should be done.
Basically, tile card is an improvement of Mushroom card in term of accessibility support and flexibility with features. What mushroom features are you missing in tile card?

+1 with the above statement.
For me two other things are missing in the Tile cards compare to mushroom:

There is no template in tile cards.
There are 3 option for action (single press, double press and long press) compared to only two with tiles (single press on card, single press on icon) => I like to "secure" some action with a long press.

Once you have populated your dashboard with mushroom template card, you are trapped with mushrooms (but for the best!)

@piitaya I would like to see that the mushroom cards have the same styling as the native tile cards, for example the secondary text font style is different. Currently I use card_mod to set it to primary text color, just like the tile card. This should not be necessary.

Hi 👋 I agree, some changes about margin or font-size should be done.
Basically, tile card is an improvement of Mushroom card in term of accessibility support and flexibility with features. What mushroom features are you missing in tile card?

most notably might be the horizontal-layout with all elements in the single height:

and the hide element when off

which results in the clean

instead of the otherwise still big core tile.....:

these 2 features are the main reason I keep returning to the mushroom card for. If only you could import that to Tile, it would be magic

Font sizes, icon sizes and colors has been updated to match the tile card style in 3.4.0 release.
@BBESINET, About long press and double tap on tile card, they are available in but not in the UI because we consider it as advanced feature.
@Mariusthvdb We are considering adding a compact mode for tile feature but didn't have found out how to do it the right way. The way it's done on Mushroom is not a solution for tile card because the control can be very small (e.g. the slider is small on the tile and hard to reach on mobile).
For the "hide control when off" we will not bring it to card feature because tile features can be more than control (e.g. it can graph for sensor in the future) and we want to avoid dynamic card size because it makes it hard to build a dashboards.

Hi 👋 I agree, some changes about margin or font-size should be done.
Basically, tile card is an improvement of Mushroom card in term of accessibility support and flexibility with features. What mushroom features are you missing in tile card?

Will there eventually be a Template card implemented in Tile Card?  I think that would be essential to being able to fully transition away from Mushroom.  Thanks for all you do!

Still different for me as well. Latest Safari on macOS:

And active:

Super simple config:
  - type: custom:mushroom-entity-card
    entity: input_boolean.skip_next_bedroom_blinds_opening
    tap_action:
      action: toggle
    name: Pomiń następne otwieranie
  - type: tile
    entity: input_boolean.skip_next_bedroom_blinds_opening
    name: Pomiń następne otwieranie

The font does match now, so that's great!

Oh, the only difference is the disabled color, right? Color rules are still different between Mushroom and tile card.

Any updates on this one?
It looks like the size is in fact a bit different. 22x22.3 vs 21.6x22. Looks like different axis is being constrained. The color that is used for disabled state in dark mode is different as well - rgb(158, 158, 158) in tile vs rgb(111, 111, 111) in mushroom. Maybe just changing defaultDarkColorCss in mushroom would fix this? I don't know where else it is used though.
Tile:

Mushroom:

I'm looking to use the same components than tile card to have exact match between mushroom card and tile car but I'm not sure yet how to approach that because many user are using card_mod on Mushroom card and it will be a hug breaking change for them.

I'm looking to use the same components as tile card to have exact match between mushroom card and tile car but I'm not sure yet how to approach that because many user are using card_mod on Mushroom card and it will be a hug breaking change for them.

Maybe the option could be to create and update an advance tile card (toadstool card?) with templates and buttons, and let mushroom as is.
In any case the decision is difficult to make and I understand that maintaining endlessly mushroom and tiles is not sustainable in the long term.


Student of the staff deadly scaling

This fixes some oversights in my initial implementation of Student of the Staff automation, avoiding console errors when not in arcane cascade and correctly scaling up the extra critical damage dice with the weapon striking runes as the deadly trait is meant to do.

I think we can do this better by making strike adjustments work for damage rolls.

What's the status on this? The conflicts will at least need to be cleared up (just need migrations ran on it for the new predicate structure).
@stwlam how hard would it be to get this working with AdjustStrike on damage rolls? Do you mean something like this to override the damage type added by deadly?
{
    "key": "AdjustStrike",
    "mode": "override",
    "property": "damageType",
    "value": "{actor|flags.pf2e.arcaneCascade.damageType}",
    "slug": "deadly-d6",
    "predicate": [
        "whatever"
    ]
}

I'm happy to update this PR to use whichever approach is best, as long as someone can point me at some documentation, an example, or some code I can use as reference

Yeah, just want some clarification on what shark proposed really. For now rebase and clear those conflicts.

I'll fix the bug preventing the weapon trait from having an effect.

Actually, that it changes the damage type of the deadly die is an additional complication we're not setup to handle. Go ahead and merge this.

Alright @dmarcuse sorry about the long delay here. Fix the conflicts and I'll merge it.

@TikaelSol rebased and fixed! While working on this I also noticed that the migration from Note to CriticalSpecialization rule elements seems to have accidentally applied critical specialization for all clubs rather than just staves, so I've added a commit fixing that as well.


Make JMeter configurable whether to use Local or Public Deployment URI

The JMeter service by default uses the deploymentURILocal if it is passed. There might be scenarios where we however want to test the public URI that is passed through deploymentURIPublic.
I suggest to make this configurable through the jmeter.conf.yaml. Simply add a flag that allows the user to define whether to use local or public

In
https://github.com/keptn/keptn/blob/558710292b2433f9467957daf0a7aa6d60e5c9fb/jmeter-service/main.go#L171-L181
we prefer local over public. Labeling this as a feature request.

JMeter has been moved out of this repo


Unsigned assembly

First of all, awesome library!
I have a request for signing the WindowsInput.dll. Right now when trying to use this in a project which is signed you get the following error:
Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.
  ----> Could not load file or assembly 'WindowsInput, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=null' or one of its dependencies. A strongly-named assembly is required. (Exception from HRESULT: 0x80131044)

Thanks so much!
Do you know how to sign it?
What version of .net are you using?

There are various resources by Microsoft on how to sign your assembly. E.g:
https://docs.microsoft.com/en-us/dotnet/standard/assembly/sign-strong-name
https://docs.microsoft.com/en-us/windows/win32/sbscs/assembly-signing-example
Having a signed assembly will allow consumers of your library to keep track of the PublicKeyToken across versions and notice if anyone has tampered with it.
I used the latest .NET Framework but it shouldn't matter what version is used as long as the calling assembly is signed.

Can you create a pull request that enables that? I did a little bit of googling and it seems like Strong naming is specific to.net framework and doesn't really matter for.net 5.0 or.net 6.0 applications.

I don't think strong naming is specific to .NET Framework.
The point of it is to make sure the dll hasn't been tampered with. It's not something I can enable in a PR since it requires you (the maintainer) to create a private key and sign the dll before publishing to NuGet.


Notebook: registers duplicate working copies with same resource

Refs: #96279
I noticed an error telling me that a working copy with a notebook URI was already registered. There can only ever be one working copy registered for a given resource. Please check that this is the case. And keep in mind that the registration needs to be disposed when the model is gone.
In this particular case I was opening a notebook in the plain text editor.
Cannot register more than one working copy with the same resource vscode-notebook://vsonline%2Bbace8651-cbe6-4eeb-9183-649c2faf82d4/home/vsonline/workspace/electron/foo.github-issues.

@rebornix I have pushed a workaround for this that ensures that there is only one instance of NotebookEditorInput per resource. Tho, there is also _resourceMapping which I am not sure about
Anyways, talked to @bpasero and the better approach is to register/cache a model, not the input.

For reference: text editor inputs (FileEditorInput) are all cached by resource, so I think having a cache for notebooks is fine too. But what drives the working copy is a model and not the editor input. The editor input is just delegating into the model for things like saving or eventing. The model is unique and single per resource.

what drives the working copy is a model and not the editor input

👍 we should then implement the working copy delegate in the NotebookTextModel instead of the input.

The NotebookEditorInput is already a slim object dedicated to Tabs and working copy service is registered only in EditorModel, which is a 1-1 mapping to resource URI.


Debian package source URL should be overridable.

I have some heavily firewalled internal hosts that are permitted to access an approx based Debian package cache.  I'd like to be able to point this at deb http://mirror.internaldomain:9999/nginx and continue to use the rest of the module without forking it internally.

As long as the repository is setup in apt's sources.list I'm not quite sure why the module would have to be forked to install the package.
You can set the module not to setup the nginx.org repository by setting manage_repo to false. The package would then be installed from whichever repositories are setup on your system.
If the package name is not nginx you can set package_name to whatever the package is called in your repository.
Let me know if I've missed something! But the module should already allow for what you've described.

That seems reasonable.  Thanks.


Legitimate meanings missing from quiz question

Most likely due to removing kana readings or distincting the final meanings list to remove duplicate synonyms.
Can probably adjust to only distinct meaning synonyms rather than all words.

This was a major edge case, since toHiragana('can') becomes かん which is the reading for this word.
Have adjusted filterRomajiReadings() to be more lenient.

Update: have temporarily disabled filterRomajiReadings() until it can be improved - since it's not catching long o variations anyway (touhoku / tohoku).


Fix Go Report Card Issues

I fixed all of the issues listed on goreportcard.

I added these refactorings to the PR thanks.

May I ask a Co-Authored-By tag in your commit message then ? 😆
https://docs.github.com/articles/creating-a-commit-with-multiple-authors#:~:text=a remote repository."-,Creating co-authored commits on GitHub,address for each co-author.

I added these refactorings to the PR thanks.

May I ask a Co-Authored-By tag in your commit message then ? 😆
https://docs.github.com/articles/creating-a-commit-with-multiple-authors#:~:text=a remote repository."-,Creating co-authored commits on GitHub,address for each co-author.
Mine would be something like
Co-authored-by: ccoVeille<EMAIL_ADDRESS>

Is this right? First time doing this. :)

I added these refactorings to the PR thanks.

May I ask a Co-Authored-By tag in your commit message then ? 😆
https://docs.github.com/articles/creating-a-commit-with-multiple-authors#:~:text=a remote repository."-,Creating co-authored commits on GitHub,address for each co-author.
Mine would be something like
Co-authored-by: ccoVeille<EMAIL_ADDRESS>

Is this right? First time doing this. :)

I think you should have a new line between the commit message and the Co-authored-by:

because you are now returning different type result, you are using interface{} here
It leads you to play with type assertion when calling the reporters.
I would suggest you to write something like this
// printReports prints the reports based on the specified grouping and reporter type.
// It returns any error encountered during the printing process.
func (c CLI) printReports(reports []reporter.Report) error {
	if Quiet {
		return nil
	}

	switch len(GroupOutput) {
	case 1:
		return printGroupSingle(reports)
	case 2:
		return printGroupDouble(reports)
	case 3:
		return printGroupTriple(reports)
	default:
		return nil, fmt.Errorf("Invalid number of group outputs: %d", len(GroupOutput))
	}
}

func (c CLI) printGroupSingle(reports []reporter.Report) error {
	if GroupOutput[0] == "" {
		return c.Reporter.Print(reports)
	}

	reportGroup, err := c.GroupBySingle(reports, GroupOutput[0])
	if err != nil {
		return err
	}

	// Check reporter type to determine how to print
	if _, ok := c.Reporter.(reporter.JsonReporter); ok {
		return reporter.PrintSingleGroupJson(reportGroup)
	}

	return reporter.PrintSingleGroupStdout(reportGroup)
}

func (c CLI) printGroupDouble(reports []reporter.Report) error {
	reportGroup, err := c.GroupByDouble(reports, GroupOutput)
	if err != nil {
		return err
	}

	if _, ok := c.Reporter.(reporter.JsonReporter); ok {
		return reporter.PrintDoubleGroupJson(reportGroup)
	}

	return reporter.PrintDoubleGroupStdout(reportGroup)
}

func (c CLI) printGroupTriple(reports []reporter.Report) error {
	reportGroup, err := c.GroupByTriple(reports, GroupOutput)
	if err != nil {
		return err
	}

	if _, ok := c.Reporter.(reporter.JsonReporter); ok {
		return reporter.PrintTripleGroupJson(reportGroup)
	}
	return reporter.PrintTripleGroupStdout(reportGroup)
}

This is mostly pseudocode made in a web browser, it may need some adjustments

did you see this @HakanVardarr BTW? what are your thoughts about it ?

because you are now returning different type result, you are using interface{} here
It leads you to play with type assertion when calling the reporters.
I would suggest you to write something like this
// printReports prints the reports based on the specified grouping and reporter type.
// It returns any error encountered during the printing process.
func (c CLI) printReports(reports []reporter.Report) error {
	if Quiet {
		return nil
	}

	switch len(GroupOutput) {
	case 1:
		return printGroupSingle(reports)
	case 2:
		return printGroupDouble(reports)
	case 3:
		return printGroupTriple(reports)
	default:
		return nil, fmt.Errorf("Invalid number of group outputs: %d", len(GroupOutput))
	}
}

func (c CLI) printGroupSingle(reports []reporter.Report) error {
	if GroupOutput[0] == "" {
		return c.Reporter.Print(reports)
	}

	reportGroup, err := c.GroupBySingle(reports, GroupOutput[0])
	if err != nil {
		return err
	}

	// Check reporter type to determine how to print
	if _, ok := c.Reporter.(reporter.JsonReporter); ok {
		return reporter.PrintSingleGroupJson(reportGroup)
	}

	return reporter.PrintSingleGroupStdout(reportGroup)
}

func (c CLI) printGroupDouble(reports []reporter.Report) error {
	reportGroup, err := c.GroupByDouble(reports, GroupOutput)
	if err != nil {
		return err
	}

	if _, ok := c.Reporter.(reporter.JsonReporter); ok {
		return reporter.PrintDoubleGroupJson(reportGroup)
	}

	return reporter.PrintDoubleGroupStdout(reportGroup)
}

func (c CLI) printGroupTriple(reports []reporter.Report) error {
	reportGroup, err := c.GroupByTriple(reports, GroupOutput)
	if err != nil {
		return err
	}

	if _, ok := c.Reporter.(reporter.JsonReporter); ok {
		return reporter.PrintTripleGroupJson(reportGroup)
	}
	return reporter.PrintTripleGroupStdout(reportGroup)
}

This is mostly pseudocode made in a web browser, it may need some adjustments

did you see this @HakanVardarr BTW? what are your thoughts about it ?

Oh I didn't see these, I'm looking right now

I think that looks good. I'll add it and co-auther you.

I added the co-authered-by part @ccoVeille is it right?

It's ok 305ebbabb5c76d9aafe50cc4df1efb970a8591bc
You can see here our names in

You can also see it here

The right pattern to use is:
Commit message

Co-authored-by: ccoVeille<EMAIL_ADDRESS>
And if you have to add a description it would be
Commit message

Description line1
Description line2
(...)

Co-authored-by: ccoVeille<EMAIL_ADDRESS>

Thanks for following my suggestion. I think we are good.
The code is now clearer and easier to maintain.

You just have to check if all tests are good.
I'm a bit worried that your version will report nothing in json mode if quiet is enabled.
So maybe, you will have to remove the if quiet and return nil in each print single/double/triple when quiet is true and it's not about dumping json

You just have to check if all tests are good.
I'm a bit worried that your version will report nothing in json mode if quiet is enabled.
So maybe, you will have to remove the if quiet and return nil in each print single/double/triple when quiet is true and it's not about dumping json

I think this commit solves the issue.

I hope they are right I got midterm tomorrow I don't have much time to debug :) @kehoecj

I hope they are right I got midterm tomorrow I don't have much time to debug :) @kehoecj

No rush! Midterm is more important 😀

I hope they are right I got midterm tomorrow I don't have much time to debug :) @kehoecj

No rush! Midterm is more important 😀

I handled the unit tests but coverage is stuck at 94.9% 😄

This may help you
go test -coverprofile=cover.out ./... ; go tool cover -html=cover.out -o cover.html

You will see you can improve coverage in
      if *reportTypePtr == "junit" && *groupOutputPtr != "" {
                fmt.Println("Wrong parameter value for reporter, groupby is not supported for JUnit reports")
                flag.Usage()
                return validatorConfig{}, errors.New("Wrong parameter value for reporter, groupby is not supported for JUnit reports")
        }

and
                        if _, ok := seenValues[groupBy]; ok {
                                fmt.Println("Wrong parameter value for groupby, duplicate values are not allowed")
                                flag.Usage()
                                return validatorConfig{}, errors.New("Wrong parameter value for groupby, duplicate values are not allowed")
                        }

This may help you
go test -coverprofile=cover.out ./... ; go tool cover -html=cover.out -o cover.html

You will see you can improve coverage in
      if *reportTypePtr == "junit" && *groupOutputPtr != "" {
                fmt.Println("Wrong parameter value for reporter, groupby is not supported for JUnit reports")
                flag.Usage()
                return validatorConfig{}, errors.New("Wrong parameter value for reporter, groupby is not supported for JUnit reports")
        }

and
                        if _, ok := seenValues[groupBy]; ok {
                                fmt.Println("Wrong parameter value for groupby, duplicate values are not allowed")
                                flag.Usage()
                                return validatorConfig{}, errors.New("Wrong parameter value for groupby, duplicate values are not allowed")
                        }

Yep they worked perfect. Thanks, I Co-Authered you to the commit.

I would say the number of commits could be reduced by grouping them with an interactive rebase. But I will let maintainers tell what they want.

I would say the number of commits could be reduced by grouping them with an interactive rebase. But I will let maintainers tell what they want.

I don't know much about git stuffs. I am new to this that is why commit number is high.

I would say the number of commits could be reduced by grouping them with an interactive rebase. But I will let maintainers tell what they want.

I don't know much about git stuffs. I am new to this that is why commit number is high.

It's OK. Let's wait for the maintainers point of view. Have fun with your midterms. That's more important to worry about.

I would say the number of commits could be reduced by grouping them with an interactive rebase. But I will let maintainers tell what they want.

I don't know much about git stuffs. I am new to this that is why commit number is high.

It's OK. Let's wait for the maintainers point of view. Have fun with your midterms. That's more important to worry about.

I'll try to have fun. 😅

Great @HakanVardarr, I can rebase mine now.
I hope you enjoyed my help on your PR.

@kehoecj I appreciate you squashed all the changes: 9006fce
I was unsure the Co-Authored-By would be kept, but I'm happy to see it worked

Great @HakanVardarr, I can rebase mine now.
I hope you enjoyed my help on your PR.

I enjoyed your help. Thanks <3


feat(input): add support for globbing matching

BREAKING CHANGE: api options rename: 'inputOptions' to 'inputReadOptions', 'outputOptions' to 'outputWriteOptions'
BREAKING CHANGE: cli options rename: 'in-opts' to 'i-read-opts', 'out-opts' to 'o-write-opts'
Add possibility to set input or output options through cli
Docs - fixes & new example
Turn off camel-case-expansion to speed up yargs a bit
fixes #3

Pull Request Test Coverage Report for Build 33

13 of 13 (100.0%)  changed or added relevant lines in 2 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 100.0%

Totals

Change from base Build 27:
0.0%

Covered Lines:
34

Relevant Lines:
34

💛  - Coveralls


run python api report error

I just copied the example from official website. I am running it on ubuntu16.
python code:
#!/usr/bin/env python3
from perfetto.trace_processor import TraceProcessor
fname="trace.bin"
tp = TraceProcessor(trace=fname)
error message:
Traceback (most recent call last):
File "/usr/lib/python3.8/urllib/request.py", line 1354, in do_open
h.request(req.get_method(), req.selector, req.data, headers,
File "/usr/lib/python3.8/http/client.py", line 1256, in request
self._send_request(method, url, body, headers, encode_chunked)
File "/usr/lib/python3.8/http/client.py", line 1302, in _send_request
self.endheaders(body, encode_chunked=encode_chunked)
File "/usr/lib/python3.8/http/client.py", line 1251, in endheaders
self._send_output(message_body, encode_chunked=encode_chunked)
File "/usr/lib/python3.8/http/client.py", line 1011, in _send_output
self.send(msg)
File "/usr/lib/python3.8/http/client.py", line 951, in send
self.connect()
File "/usr/lib/python3.8/http/client.py", line 1425, in connect
self.sock = self._context.wrap_socket(self.sock,
File "/usr/lib/python3.8/ssl.py", line 500, in wrap_socket
return self.sslsocket_class._create(
File "/usr/lib/python3.8/ssl.py", line 1040, in _create
self.do_handshake()
File "/usr/lib/python3.8/ssl.py", line 1309, in do_handshake
self._sslobj.do_handshake()
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1131)
During handling of the above exception, another exception occurred:
I have installed perfetto with command: pip3 install perfetto
What's wrong with my environment?

So two things:

Ubuntu 16 is now ancient and we've never tested on anything nearly that old.
It seems like your environment is connecting to a https url instead of HTTP which we use by default. No clue why it's doing that but we use the Python API extensively so it's definitely an environment issue not a library issue.

I try ubuntu20, results the same! and Just checked the source, I saw manifest filehttps://github.com/google/perfetto/blob/master/python/perfetto/prebuilts/manifests/trace_processor_shell.py  use https instead of http:
    'url':
        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/mac-amd64/trace_processor_shell',

Ahhhh the failure is coming at that point: I thought it was coming when we were talking to trace processor on localhost.
Yeah in that case it's something to do with your ability to access that URL: are you able to download that file on your browser for example?


Patch for 5.4

Looks like I managed to adjust the commits so that the tests pass locally.

#7278 and #7310 are the two commits that were causing errors, so they are the ones worth double-checking in terms of me manually resolving the conflicts there.


Set some headers order

Headers in cpp files. main header for cpp file > std > qt > kv. Alphabetically.


parameter 'identity' does not accept $user.identity, expects UserPrincipalName

Set-UserBriefingConfig : Cannot validate argument on parameter 'Identity'. The argument "jim.morisson" does not match the
"[a-zA-Z0-9!#$%*+-/?^_.{|}~]+@([a-zA-Z0-9\-]+\.)+[a-zA-Z]{2,4}" pattern. Supply an argument that matches "[a-zA-Z0-9!#$%*+\-/?^_.{|}~]+@([a-zA-Z0-9-]+.)+[a-zA-Z]{2,4}" and try the command again.

The example CSV in the document shows the correct format<EMAIL_ADDRESS>It looks like your entry isn't a valid UPN (jim.morrison). If you update your CSV to match, it should work.

I wasn't asking for help. I was pointing out a mistake in either the script or the cmdlet. The example csv has the identity column filled with upn data. Getting a mailbox's identity will not get you the upn. Especially not in a multi domain tenant. The script in the documentation needs to be corrected to use userprinipalname instead of identity, or the cmdlet should work the way the documentation currently claims it does.

@dennish78 - Thanks for asking! Try using "User Principal Name" instead of "User ID Principal Name" for the current user as stored in Azure Active Directory. I'll update the doc accordingly. If that doesn't work, please use the feedback form to get further assistance for this issue.


Current indicator background color

Hello there, can you help me change the color of current indicator?

You can create a new drawable like [this] (https://github.com/ongakuer/CircleIndicator/blob/master/circleindicator/src/main/res/drawable/white_radius.xml ) , and change solid color.
The XML :
<me.relex.circleindicator.CircleIndicator
            android:layout_width="match_parent"
            android:layout_height="40dp"
            app:ci_drawable="@drawable/custom_drawable"/>

Thanks for quick reply, yes I did like this, but for example I want to change the color of current indicator, means they are white and second one is yellow

@AshkanImmortal
Oh, It will be a lot of code changes.  I'll give you code later.

@AshkanImmortal
I have pushed a new branch (  transition_color  ).
I think TransitionDrawable is a way to change the color of indicator.

Thanks that's very nice
On Jan 15, 2015 9:42 AM, "relex"<EMAIL_ADDRESS>wrote:

@AshkanImmortal https://github.com/AshkanImmortal
I have pushed a new branch ( transition_color
https://github.com/ongakuer/CircleIndicator/tree/transition_color ).
I think TransitionDrawable is a way to change the color of indicator.
—
Reply to this email directly or view it on GitHub
https://github.com/ongakuer/CircleIndicator/issues/3#issuecomment-70043732
.


No-go lines not used in Botvac D7?

When using the start_cleaning() function, I would expect my Botvac D7 Connected to use the no-go-lines I defined.
When I start the robot via Neato's app, the app displays "no-go lines enabled"; however, when I start via pybotvac, the app displays "no-go lines disabled".
From this code I would expect the robot to use the persistent maps and no-go lines when available (category=4):
        if category is None:
            category = (
                4
                if self.service_version in ["basic-3", "basic-4"]
                and self.has_persistent_maps
                else 2
            )

Am I missing something, and do I need to pass certain parameters to the start_cleaning function to enable the no-go lines?

The solution is to use the following command:
start_cleaning(mode=1, navigation_mode=1, category=4)
With following parameters:
mode: 1 eco, 2 turbo
category: 2 without persistent map, 4 with persistent map
navigation_mode: 1 normal, 2 extra care


ID type intersects poorly with map[string]interface{}.

When you create a variable of type githubql.ID and place it into a map[string]interface{} as part of variables, the fact that its type was githubql.ID gets "lost" because the type is interface{} which satisfies interfaces{}.
This means queryArguments has a hard time telling the original type name:
var nodeID = githubql.ID("someid")

variables := map[string]interface{}{
    "id": nodeID,
}

Results in query($nodeID: string!) { ... } instead of query($nodeID: ID!) { ... }.

This breaks it for me when I have query variables of type String! as it converts all strings to ID!
				var m struct { 					CreateClinicalCodeType struct { 						Type        graphql.String 						Description graphql.String 					} graphql:"createClinicalCodeType(type:$type, description:$description)" 				} 				variables := map[string]interface{}{ 					"type":        "TestType", 					"description": "Test Description", 				}
Results in the mutation string, converting all Strings! to ID!:
mutation($description:ID!$type:ID!){createClinicalCodeType(type:$type, description:$description){type,description,id}}

@mwilli31 You need to explicitly specify the GraphQL type for variables, like so:
variables := map[string]interface{}{
	"type":        githubql.String("TestType"),
	"description": githubql.String("Test Description"),
}

This is now mentioned in the Arguments and Variables section of the README.

@shurcooL Great! Validated it is working as stated. Thanks!


Added missing sigma property on ExtendedStatsAggregation

Thanks @jonyadamit - I have made the change that @russcam requested and merged into our master branch.
Thanks again for your contribution!

Hi @codebrain sorry I haven't had the time to investigate why DocGenerator wouldn't run for me and so this got left behind. Thanks for merging this!

@codebrain this needs to be cherry-picked to 5.x and 5.5 too.


Python linter running on thousands of files simultaneously

.

Migrated to https://github.com/microsoft/vscode/issues/183235


Export Coraza to C

We need C wrappers in order to connect with other programs like Nginx and Apache.
We are going to copy the functions used by modsecurity but replacing msc_ with coraza_.
A sample would be:
#include "coraza/coraza.h"

char main_rule_uri[] = "basic_rules.conf";

int main (int argc, char **argv)
{
    Coraza *waf = NULL;
    Parser *parser = NULL
    Transaction *transaction = NULL;
    waf = coraza_init();

    parser = coraza_parser(waf);
    coraza_parser_read_file(main_rule_uri);

    transaction = coraza_new_transaction(waf);

    coraza_process_connection(transaction, "<IP_ADDRESS>");
    coraza_process_uri(transaction, "http://www.modsecurity.org/test?key1=value1&key2=value2&key3=value3&test=args&test=test");
    coraza_process_request_headers(transaction);
    coraza_process_request_body(transaction);
    coraza_process_response_headers(transaction);
    coraza_process_response_body(transaction);

    return 0;
}

Moved to issue #100


stopImageStream doesn't work

When I call
await stopImageStream and then isStreamingImageData, I get always true.
After digging a bit I found that the function stopImageStream does not set events to null.
I modified the code to this:
  @override
  Future<void> stopImageStream() async {
    await events?.cancel();
    events = null; // added this
  }

It works, but sometimes the app crashes on CameraMacosPlugin.swift with this error:
camera_macos/CameraMacosPlugin.swift:117: Fatal error: Unexpectedly found nil while implicitly unwrapping an Optional value+
I don't have time to fix this though

Hi @scognito,
Thanks for reporting this issue. I will take a look and see if I can update it to address this issue.

You can add the line I added. I didn't make a PR just because there is still the crash on CameraMacosPlugin.swift.
It should be trivial to fix though

I've added the stream cancelling function and changed the function signature to support error handling. It should be released in the next update.


Huge latency when deleting tasks

We want to improve the speed of deleting the tasks from the task queue of Meilisearch. Currently deleting 10M tasks took about 45 minutes, and deleting 250k tasks takes 15 minutes.
That’s huge, considering how little work there is to do.
https://github.com/meilisearch/meilisearch/blob/31bb61ba99cdf419e91c68dc78fdd10d4a418e1c/index-scheduler/src/batch.rs#L1268-L1338

I tried to reproduce the issue locally and on the cloud and could not reproduce the issue.
Thus, the behavior we observed was probably due to something else.
I’m closing for now.


How does hikariCP actively disconnect

How does hikariCP set the SQL timeout period to ensure that the global SQL automatically disconnects the connection after 30 seconds of execution, so that the connection is not full because the connection is not released while holding the connection
The following configurations cannot be actively disconnected after testing, but will continue to perform:
spring.datasource.hikari.connection-timeout=30000
spring.datasource.hikari.validation-timeout=30000

@Caesar2816 you need to setup socket timeout property on jdbc driver properties, i.e:
spring.datasource.url=jdbc:mysql://localhost:3306/dbname?socketTimeout=30000
spring.datasource.url=jdbc:postgresql://localhost:5432/dbname?socketTimeout=30000
spring.datasource.url=jdbc:sqlserver://localhost:1433;databaseName=dbname;socketTimeout=30

Postgres
https://jdbc.postgresql.org/documentation/use/

socketTimeout (int) Default 0
The timeout value used for socket read operations. If reading from the server takes longer than this value, the connection is closed. This can be used as both a brute force global query timeout and a method of detecting network problems. The timeout is specified in seconds max(2147484) and a value of zero means that it is disabled.

MariaDB
https://mariadb.com/docs/server/connect/programming-languages/java/connect/

Defines the network socket timeout (SO_TIMEOUT) in milliseconds. When set to 0, there is no socket timeout.

Or, you can set it directly on the prepared statement:
statement.setQueryTimeout(30); // Timeout in seconds

Sorry for forgetting to mark the ORACLE database I used
clarify sprintboot 2.1.3.RELEASE  HikariCP 2.7.9  ojdbc8<IP_ADDRESS>  mybatis-spring-boot-starter 2.1.3
The following methods have now been tested
The first:
mybatis.configuration.default-statement-timeout=30
spring.datasource.hikari.connection-timeout=30000
spring.datasource.hikari.validation-timeout=30000
spring.jdbc.template.query-timeout=30
Adding the above three configurations does not work
The second kind: custom datasouce to set the timeout time is not good
Third: rewrite sqlsession implementation class manual set timeout time is not good
Fourth: The interface does not add @transaction()
Fifth: Custom mybatis blocker does not work
Sixth: Add @Options() annotation above the interface of the dao layer to add timeout duration is not good
Seventh: xml file   tag after the timeout parameter does not work

mybatis.configuration.default-statement-timeout=30
spring.jdbc.template.query-timeout=30

So what do you use, mybatis or jdbc template? Both?

ORACLE

As far as I know, there is no equivalent of socketTimeout in Oracle.
You can still try setting query timeout on prepared statement directly, or make sure mybatis did it for you.
Anyway, HikariCP will not manage cancelation for you, you need to investigate what Oracle can do there. Even if you close the connection from the client, the server will keep it for some time, so you need to adjust SQLNET.EXPIRE_TIME in session, to close the connection (and hopefully cancel running query) sooner.

https://stackoverflow.com/questions/1388749/oracle-connection-query-timeout

I am using mybatis because considering that the underlying is calling JDBC, so adding JDBC configuration to do the test result is not effective
If the SQL execution is not released because the HikariCP connection pool is used, the connection will remain, and the OOM service needs to disconnect from the database at the service level to protect it
In many cases, neither mybatis level nor HikariCP level can actively disconnect
At the database level, you can set a separate timeout period to protect the database

I am using mybatis because considering that the underlying is calling JDBC, so adding JDBC configuration to do the test result is not effective

It's not JDBC configuration, it's JdbcTemplate which is kind of "ORM".
Current statement:

If the SQL execution is not released because the HikariCP connection pool is used, the connection will remain, and the OOM service needs to disconnect from the database at the service level to protect it

Original statement:

How does hikariCP set the SQL timeout period to ensure that the global SQL automatically disconnects the connection after 30 seconds of execution, so that the connection is not full because the connection is not released while holding the connection

So seems you don't need to stop active queries, instead you just want to not have any idle connections to database which is
minimumIdle=0
idleTimeout=30000
`

I am using mybatis because considering that the underlying is calling JDBC, so adding JDBC configuration to do the test result is not effective

It's not JDBC configuration, it's JdbcTemplate which is kind of "ORM".
Current statement:

If the SQL execution is not released because the HikariCP connection pool is used, the connection will remain, and the OOM service needs to disconnect from the database at the service level to protect it

Original statement:

How does hikariCP set the SQL timeout period to ensure that the global SQL automatically disconnects the connection after 30 seconds of execution, so that the connection is not full because the connection is not released while holding the connection

So seems you don't need to stop active queries, instead you just want to not have any idle connections to database which is
minimumIdle=0
idleTimeout=30000

This treatment did not meet my expectations
My idea is to set the SQL execution time uniformly for the global SQL of the service 30s and separately for some special interfaces, such as interface A 60s and interface B 80s
minimumIdle=0 can handle idle connections, but not SQL execution times
If there are multiple SQL implementations that take too long to fuse, there will still be problems with no available connections or OOM

So for SQL execution time you need to set connectionTimeout property on prepared statement, which out of control of hikari, consult your jdbc driver documentation, database documentation and ORM documentation on this topic.

So for SQL execution time you need to set queryTimeout property on prepared statement, which out of control of hikari, consult your jdbc driver documentation, database documentation and ORM documentation on this topic.

Yes, HikariCP does have no control over the timeout duration
I have found the relevant literature of mybatis and JDBC and have done tests, but it is also out of control
Would you like to ask, according to your experience, have any good ideas

For Oracle you need to configure the oracle.jdbc.ReadTimeout property. See here.


Create a user-facing password change page that doesn't require emails

(this might actually be really tricky to do in a secure fashion, especially because of how signals work, and cuz passwords need to be hashed)

Should be achievable by just using a normal update view with a password hasher in the validator.


update the available otp endpoint

It should check from holded events also

https://github.com/GDGVIT/AttendanceApp-Backend/pull/22/commits/c3689f7e4dbb0327bb63bc7a2cad77cc5f4c480e


English placenames

Take a look at any country where you can't understand their letters. Wouldn't it be much more helpful if it would show romanised/anglisised placenames? This data is available in OSM for the most part.
Example:

Good luck finding anything 😬

You can select other map styles in the layers tab, some of them show transliterations for local names, e.g. OpenStreetMap.de:

Oh I see, very nice. I never selected that one, because in my head it indicated it was going to be German, which I'm sadly not very good at.
Thanks for following up.