PushPlugin.m error: no visible @interface for 'UIView' declares the selector 'stringByEvaluatingJavaScriptFromString:'

Hi,
I am getting the following error while building on iOS
Plugins/com.phonegap.plugins.PushPlugin/PushPlugin.m:221:23: error: no visible @interface for 'UIView' declares the selector 'stringByEvaluatingJavaScriptFromString:'
[self.webView stringByEvaluatingJavaScriptFromString:jsCallBack];
Any suggestions.

I'm getting this too. Haven't figured out a workaround yet.
Xcode 7.2
Cordova 6.0.0
Cordova-ios 4.0.1

@DURK Easiest fix is using cordova-ios-3 (instead of 4). Btw, there is a fix in the works so this is a temporary inconvenience.
This should do it:
cordova platform remove ios
cordova platform add<EMAIL_ADDRESS>

@EddyVerbruggen Thanks for the workaround. It works on 3.9.2 like you said :+1:

@EddyVerbruggen It worked. Can we use till the time it's not fixed for 4.0.x

+1

+1

+1 To know when it's fixed too :D

+1

+1

Hey all, I just pushed cordova-ios-4 support to master and would love you to check it out before closing this issue and tagging a release.

@EddyVerbruggen Hi,
I'm not sure it's related, but while trying to use the plugin https://github.com/EddyVerbruggen/HeadsetDetection-PhoneGap-Plugin you wrote with an ionic app, I'm getting the same kind of errors with cordova-ios-4 and it's working with<EMAIL_ADDRESS>with a deprecation warning (see details below).
Sorry not being able to help as I do not have any knowledge about objectiveC and fix your plugin, anyway this may be another clue for this current topic...
Mirko

<EMAIL_ADDRESS>/Users/mirko/myApp080316/platforms/ios/CPM App/Plugins/nl.x-services.plugins.headsetdetection/HeadsetDetection.m:9:9: warning: 'writeJavascript:' is deprecated: Deprecated in Cordova 3.6. Use the CDVCommandDelegate equivalent of evalJs:. This will be removed in 4.0.0 [-Wdeprecated-declarations]
[self writeJavascript:[result toSuccessCallbackString:callbackId]];
    ^

<EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS>/Users/mirko/myApp080316/platforms/ios/CPM App/Plugins/nl.x-services.plugins.headsetdetection/HeadsetDetection.m:9:33: error: no visible @interface for 'CDVPluginResult' declares the selector 'toSuccessCallbackString:'
[self writeJavascript:[result toSuccessCallbackString:callbackId]];
                     ~~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~

1 error generated.
** BUILD FAILED **

FYI The issue @scamianbas mentioned has been dealt with here.

I have still the same problem. Should it work already with Cordova 4.0.x?

It's working for me.
On Friday, March 25, 2016, benjakraft<EMAIL_ADDRESS>wrote:

I have still the same problem. Should it work already with Cordova 4.0.x?
—
You are receiving this because you authored the thread.
Reply to this email directly or view it on GitHub
https://github.com/Telerik-Verified-Plugins/PushNotification/issues/71#issuecomment-201003502

ok need to check again then! Thanks for the info

+1 for cordova-ios-3. Would love to know when it works with cordova-ios-4.

It's working for me for 4 as well.
On Wed, Apr 6, 2016 at 12:48 AM<EMAIL_ADDRESS><
<EMAIL_ADDRESS>wrote:

+1 for cordova-ios-3. Would love to know when it works with cordova-ios-4.
—
You are receiving this because you authored the thread.
Reply to this email directly or view it on GitHub
https://github.com/Telerik-Verified-Plugins/PushNotification/issues/71#issuecomment-205955478

This commit  ddaa7a1548b01eccbc7f3fdd24f7356057c3931e fixes it for me.
Thanks.

cordova plugin add https://github.com/Telerik-Verified-Plugins/PushNotification\#ddaa7a1548b01eccbc7f3fdd24f7356057c3931e

This commit ddaa7a1 fixes it for me too.

if ([self.webView isKindOfClass:[UIWebView class]]) {
	[(UIWebView*)self.webView stringByEvaluatingJavaScriptFromString:jsCallBack];
}

http://stackoverflow.com/a/34901862/332578


Nginx worker crashes when "if" directive specified in location with MDS enabled

Core dump contains:
Program terminated with signal 11, Segmentation fault.
#0  modsecurity::Rule::getFinalVars (this=this@entry=0x21c4680, trans=trans@entry=0x186a4f0) at rule.cc:495
495             if (a.second->m_isExclusion) {
backtrace:
#0  modsecurity::Rule::getFinalVars (this=this@entry=0x21c4680, trans=trans@entry=0x186a4f0) at rule.cc:495
#1  0x00007f4b05981f12 in modsecurity::Rule::evaluate (this=0x21c4680, trans=0x186a4f0, ruleMessage=std::shared_ptr (count 1, weak 0) 0x2da23e0) at rule.cc:803
#2  0x00007f4b059742ca in modsecurity::Rules::evaluate (this=0x1896650, phase=phase@entry=3, transaction=transaction@entry=0x186a4f0) at rules.cc:228
#3  0x00007f4b059627d2 in modsecurity::Transaction::processRequestBody (this=0x186a4f0) at transaction.cc:808
#4  0x00000000005045f2 in ngx_http_modsecurity_pre_access_handler (r=0x1882f20) at ngx_http_modsecurity/src/ngx_http_modsecurity_pre_access.c:199
#5  0x000000000046af43 in ngx_http_core_generic_phase (r=0x1882f20, ph=0x2d3f528) at src/http/ngx_http_core_module.c:882
#6  0x000000000046ae93 in ngx_http_core_run_phases (r=0x1882f20) at src/http/ngx_http_core_module.c:860
#7  0x000000000046ae01 in ngx_http_handler (r=0x1882f20) at src/http/ngx_http_core_module.c:843
#8  0x000000000047ac80 in ngx_http_process_request (r=0x1882f20) at src/http/ngx_http_request.c:1921
#9  0x0000000000479609 in ngx_http_process_request_headers (rev=0x7f4af71ba0d0) at src/http/ngx_http_request.c:1348
#10 0x00000000004789ec in ngx_http_process_request_line (rev=0x7f4af71ba0d0) at src/http/ngx_http_request.c:1028
#11 0x000000000047759e in ngx_http_wait_request_handler (rev=0x7f4af71ba0d0) at src/http/ngx_http_request.c:503
#12 0x0000000000459e3b in ngx_epoll_process_events (cycle=0x1865520, timer=60000, flags=1) at src/event/modules/ngx_epoll_module.c:902
#13 0x0000000000448eae in ngx_process_events_and_timers (cycle=0x1865520) at src/event/ngx_event.c:242
#14 0x00000000004576c1 in ngx_worker_process_cycle (cycle=0x1865520, data=0x3) at src/os/unix/ngx_process_cycle.c:749
#15 0x0000000000453fb5 in ngx_spawn_process (cycle=0x1865520, proc=0x4575da <ngx_worker_process_cycle>, data=0x3, name=0x535943 "worker process", respawn=-3) at src/os/unix/ngx_process.c:198
#16 0x000000000045650b in ngx_start_worker_processes (cycle=0x1865520, n=4, type=-3) at src/os/unix/ngx_process_cycle.c:358
#17 0x0000000000455b28 in ngx_master_process_cycle (cycle=0x1865520) at src/os/unix/ngx_process_cycle.c:130
#18 0x0000000000414e56 in main (argc=3, argv=0x7ffe88c4b148) at src/core/nginx.c:375
full backtrace:
#0  modsecurity::Rule::getFinalVars (this=this@entry=0x21c4680, trans=trans@entry=0x186a4f0) at rule.cc:495
a = @0x18ed688: {first = 942431, second = std::unique_ptrmodsecurity::Variables::Variable containing 0x0}
__for_range =
exclusions_update_by_tag_remove = empty std::list
exclusions_update_by_id_remove = empty std::list
variables = std::vector of length 3, capacity 4 = {0x21c0e60, 0x21c2cb0, 0x21c3010}
exclusions = empty std::list
exclusions_update_by_msg_remove = empty std::list
finalVars = std::vector of length 0, capacity 0
#1  0x00007f4b05981f12 in modsecurity::Rule::evaluate (this=0x21c4680, trans=0x186a4f0, ruleMessage=std::shared_ptr (count 1, weak 0) 0x2da23e0) at rule.cc:803
variables =
recursiveGlobalRet =
containsDisruptive = false
eparam = ""((?:[\~\!\@\#\$\%\^\&\\(\)\-\+\=\{\}\[\]\|\:\;\"\'\´\’\‘\\\<\\>][^\\~\\!\\@\\#\\$\\%\\^\\&\\*\\(\\)\\-\\+\\=\\{\\}\\[\\]\\|\\:\\;\\\"\\'\\´\\’\\‘\\\<\>]?){6})""
globalRet = false
finalVars = std::vector of length 0, capacity 0
#2  0x00007f4b059742ca in modsecurity::Rules::evaluate (this=0x1896650, phase=phase@entry=3, transaction=transaction@entry=0x186a4f0) at rules.cc:228
rule = 0x21c4680
i = 268
rules =
#3  0x00007f4b059627d2 in modsecurity::Transaction::processRequestBody (this=0x186a4f0) at transaction.cc:808
a = std::unique_ptr<std::basic_string<char, std::char_traits, std::allocator >> containing 0x2d5f590
fullRequest = "Host: sbt-opbs-0007:8085\nConnection: keep-alive\nContent-Length: 6\nAccept-Language: en,ru-RU;q=0.9,ru;q=0.8,en-US;q=0.7\nAccept: application/json, text/plain, /\nOrigin: chrome-extension://ehafadccdcde"...
l = std::vector of length 9, capacity 16 = {0x2d4a7e0, 0x2d4a770, 0x2d4a700, 0x2d4a5d0, 0x2d4a650, 0x2d4a600, 0x2d4a580, 0x2d4a4f0, 0x2d5f540}
#4  0x00000000005045f2 in ngx_http_modsecurity_pre_access_handler (r=0x1882f20) at ngx_http_modsecurity/src/ngx_http_modsecurity_pre_access.c:199
ret = 0
already_inspected = 0
chain = 0x2d5a628
ctx = 0x1869550
cf = 0x1894c88
old_pool = 0x0
#5  0x000000000046af43 in ngx_http_core_generic_phase (r=0x1882f20, ph=0x2d3f528) at src/http/ngx_http_core_module.c:882
rc = -5
#6  0x000000000046ae93 in ngx_http_core_run_phases (r=0x1882f20) at src/http/ngx_http_core_module.c:860
rc = -2
ph = 0x2d3f498
cmcf = 0x1867a78
#7  0x000000000046ae01 in ngx_http_handler (r=0x1882f20) at src/http/ngx_http_core_module.c:843
cmcf = 0x7f4af71ba0d0
#8  0x000000000047ac80 in ngx_http_process_request (r=0x1882f20) at src/http/ngx_http_request.c:1921
c = 0x7f4af74041e0
#9  0x0000000000479609 in ngx_http_process_request_headers (rev=0x7f4af71ba0d0) at src/http/ngx_http_request.c:1348
p = 0x1882ed0 "\316>\210\001"
len = 25702280
n = 421
rc = 0
rv =<PHONE_NUMBER>10704
h = 0x1883c80
c = 0x7f4af74041e0
hh = 0x0
r = 0x1882f20
cscf = 0x188a918
cmcf = 0x1867a78
#10 0x00000000004789ec in ngx_http_process_request_line (rev=0x7f4af71ba0d0) at src/http/ngx_http_request.c:1028
n = 446
rc = 0
rv = 25733552
host = {len = 47450432, data = 0x7a2420 <cached_time+96> "\033\364\264Z"}
c = 0x7f4af74041e0
r = 0x1882f20
#11 0x000000000047759e in ngx_http_wait_request_handler (rev=0x7f4af71ba0d0) at src/http/ngx_http_request.c:503
p = 0x3000000020 <Address 0x3000000020 out of bounds>

Hi @dennus
Thanks for the report. This is known issue. Please follow up here: https://github.com/SpiderLabs/ModSecurity-nginx/issues/74
Thanks.


Add integration test for heapster on CoreOS

As of now the coreos buddy is not tested periodically. Having an integration test will reduce the release overhead.

CoreOS support is currently suspended.


Error when trying to install Azure Resource Manager (ARM) Tools

Type: Bug
I get this error when trying to install extension "Azure Resource Manager (ARM) Tools":
2023-03-23 09:28:58.331 [error] PackageIntegrityCheckFailed: Signature: PackageIntegrityCheckFailed
VS Code version: Code 1.76.2 (ee2b180d582a7f601fa6ecfdad8d9fd269ab1884, 2023-03-14T17:55:54.936Z)
OS version: Windows_NT x64 10.0.19044
Modes:
Sandboxed: No

This seems to have been resolved today.

@Iyad-Abusneineh   Are you still facing the issue?

No, the problem is solved. Thank you.

Från: madhurivadaligithub @.>
Skickat: den 27 mars 2023 15:06
Till: microsoft/vsmarketplace @.>
Kopia: Iyad-Abusneineh @.>; Mention @.>
Ämne: Re: [microsoft/vsmarketplace] Error when trying to install Azure Resource Manager (ARM) Tools (Issue #632)
@Iyad-Abusneinehhttps://github.com/Iyad-Abusneineh Are you still facing the issue?
—
Reply to this email directly, view it on GitHubhttps://github.com/microsoft/vsmarketplace/issues/632#issuecomment-1485071571, or unsubscribehttps://github.com/notifications/unsubscribe-auth/A6VZPHEWB2VEI3P2VRA4MKLW6GGE3ANCNFSM6AAAAAAWE3XQHE.
You are receiving this because you were mentioned.Message ID: @.***>


Fix logic error

Wrongly set OBS tN to OBS repo_subject

Pull Request Test Coverage Report for Build 305

0 of 2 (0.0%)  changed or added relevant lines in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 59.49%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

webhook.py
0
2
0.0%

Totals

Change from base Build 286:
0.0%

Covered Lines:
2890

Relevant Lines:
4858

💛  - Coveralls


feat(CaseSaga): Support saga type

Case Saga support saga type
Issue: https://github.com/anymore1405/redux-toolkit-saga/issues/4
Proposal
I would like to be able to specify a sagaType for one of my saga inside caseSagas object.
Example:
Overriding "global" SagaType options :
createSliceSagas({
  name: 'test',
  caseSagas: {
    *withGlobalSagaType({ payload }) {
      //
    },
    withSpecificSagaType: {
      *fn({ payload }) {
        //
      },
      sagaType: SagaType.TakeEvery // any other SagaType
    }
  },
  sagaType: SagaType.TakeLatest
)

It looks great.
Please edit the documentation in README.md according to the difference in your pull request during my review.
Thanks for that 🥳

It looks great.
Please edit the documentation in README.md according to the difference in your pull request during my review.
Thanks for that 🥳

@anymore1405 done!

@anymore1405 done!

I just an issue with payload type infering on actionCreators
TypeScript thought this was an action without payload :

I just an issue with payload type infering on actionCreators
TypeScript thought this was an action without payload :

@xDisfigure Everything is working fine. Thank you for your contribution 🥳

@xDisfigure Everything is working fine. Thank you for your contribution 🥳

You're welcome, thanks for the fast reply

You're welcome, thanks for the fast reply


Don't use get_task_dict() in task registration / initialization

cc @lintangsutawika

We should test this PR more carefully before merging to ensure the fix generalizes / does not break anything

There seems to be an error in the unit tests.
Traceback (most recent call last):
  File "/home/runner/work/lm-evaluation-harness/lm-evaluation-harness/lm_eval/decontamination/janitor.py", line 11, in <module>
    import janitor_util
ModuleNotFoundError: No module named 'janitor_util'
Traceback (most recent call last):
  File "/home/runner/work/lm-evaluation-harness/lm-evaluation-harness/lm_eval/decontamination/janitor.py", line 11, in <module>
    import janitor_util
ModuleNotFoundError: No module named 'janitor_util'

also looks like a weird caching issue. Maybe manually re-run the tests?

Yeah looks like something just went wrong in that run of the tests, passing now.


Sending email with only html param should work

resolves https://github.com/mailersend/mailersend-laravel-driver/issues/31#issuecomment-1668613702

[x] Validate email params should also check html param

We are only able to send html and text, this update should allow us send only html

+1
I just wanted to report this as well. The documentation says either text, email or template ID must be used.


Use RNG to generate ephemeral keys

This issue depends on #41.
The current protocol implementation in both hacspec and Rust versions uses hardcoded ephemeral keys. This issue aims at using the RNG provided by the crypto API in order to properly generate ephemeral keys for each protocol execution.
See:

https://github.com/openwsn-berkeley/edhoc-rs/blob/main/hacspec/src/lib.rs#L128 and https://github.com/openwsn-berkeley/edhoc-rs/blob/main/hacspec/src/lib.rs#L316 for hacspec version
https://github.com/openwsn-berkeley/edhoc-rs/blob/main/lib/src/edhoc.rs#L126 and https://github.com/openwsn-berkeley/edhoc-rs/blob/main/lib/src/edhoc.rs#L308 for Rust version

Resolved with #45


TypeError: Cannot read property 'split' of undefined

Running 152 SDK

Thanks for your input! Closing this...


Add a setup.py

Setuptools is quite useful, especially if we ever want to release to pypi for install via pip.

This is done as of #32.


Azure OpenAI: Address unintended namespace changes from last PR

A PR just a bit earlier unintentionally picked up IDE-generated namespaces in the course of feedback iterations:
Azure OpenAI: Add support for faster, streaming Completions responses for ChatGPT-style use #33990

The new, public Streaming objects should live in the same root namespace of Azure.AI.OpenAI
The internal Helper types (e.g. for server-sent events) don't need a new namespace.

API change check
APIView has identified API level changes in this PR and created following API reviews.
Azure.AI.OpenAI


lost synchronization with server on query with many parameters

Environment
To diagnose, we usually need to know the following, including version numbers.  On Windows, be
sure to specify 32-bit Python or 64-bit:

Python: 3.7 64-bit
pyodbc: 4.0.27
OS: Ubuntu 16.04
DB: Postgresql 11
driver: PostgreSQL Unicode (psqlODBC)

Issue
I have the following query
SELECT * FROM (VALUES (?),(?)...) t(val)

Then execute with
cursor.execute(query, params)

If the number of query parameters is large ~2^14, this query fails with
pyodbc.Error: ('HY000', '[HY000] lost synchronization with server: got message type "t", length 65542\n;\nError while preparing parameters (1) (SQLExecDirectW)')

The query should complete without errors.
I tried the same query with psycopg2. There even with 2^24 parameters the query is executed successfully.

I am able to reproduce your issue with the following code:
print(f"Python version {sys.version}")
# Python version 3.7.4 (tags/v3.7.4:e09359112e, Jul  8 2019, 20:34:20) [MSC v.1916 64 bit (AMD64)]

print(f"pyodbc version {pyodbc.version}")
# pyodbc version 4.0.27

connection_string = get_conn_str()
print(connection_string)
# DSN=PostgreSQL35W

cnxn = pyodbc.connect(connection_string)
print(f'{cnxn.getinfo(pyodbc.SQL_DRIVER_NAME)}, version: {cnxn.getinfo(pyodbc.SQL_DRIVER_VER)}')
# PSQLODBC35W.DLL, version: 11.01.0000

crsr = cnxn.cursor()

num_params = 7499
print(f"Attempting {num_params} parameters ...")
qmark_string = ",".join(["(?)" for x in range(num_params)])
sql = "SELECT * FROM (VALUES " + qmark_string + ") t(val)"
params = tuple(range(num_params))
crsr.execute(sql, params)
n = 0
for row in crsr:
    n += 1
print(f"{n} row(s) returned")

The code works with num_params ≤ 7498, but fails for anything larger.
However, I was also able to reproduce the issue using System.Data.Odbc in .NET, although the failure point there was 32768 and the error was
Unhandled Exception: System.OverflowException: Arithmetic operation resulted in an overflow.
   at System.Data.Odbc.OdbcParameterCollection.Bind(OdbcCommand command, CMDWrapper cmdWrapper, CNativeBuffer parameterBuffer)
   at System.Data.Odbc.OdbcCommand.ExecuteReaderObject(CommandBehavior behavior, String method, Boolean needReader, Object[] methodArguments, SQL_API odbcApiMethod)
   at System.Data.Odbc.OdbcCommand.ExecuteReaderObject(CommandBehavior behavior, String method, Boolean needReader)
   at System.Data.Odbc.OdbcCommand.ExecuteReader(CommandBehavior behavior)
   at odbcConsoleApp.Program.Main(String[] args) in C:\Users\Gord\source\repos\odbcConsoleApp\Program.cs:line 31

So it looks like there is some sort of limitation on the number of parameters that the ODBC driver can handle.

If you need that many parameters, consider redesigning your query. All databases have their limits which are considered reasonable and it's not a good idea to try exceeding or even approaching them.

I have to agree with @v-chojas on this - I can't imagine that you really want to use that many parameters.  Perhaps there is a bulk copy you can use?
Anyway, as this seems to be an environment / driver / DB issue, I'm going to close.


certificate verify failed: certificate has expired

When starting the node, it is found that the networkcert has expired

Due to hard-coded restrictions, the follow-up will be resolved by upgrading the ccf version.


Update index.js

found that it fixed my code, but i also handle data NaN later in my code, so it may be that it would help with some issues, i do find that data = NaN will set state to 0 irrespective of what going on.
@issue 40 https://github.com/rudders/homebridge-http/issues/40
so at least this helps the bridge not terminate, albeit it ends up switching most devices off over time as it recieves NaN code, that may very well be how i am presenting data from my device.

 If @rudders wants to make you a contributor you can do them yourself. Can you please close the non-main ones

Now this Pull request can be closed because it conflicts with the real fix that is introduced in PR #61

@metbosch Actually, it doesn't :) NPM version has the great old callback(error);


use gftools==0.9.74, update glyphsLib==6.9.4

we no longer need to install gftools from github, as our patches were released upstream.
also, glyphsLib 6.9.4 reverted a change in 6.9.3 that caused lots of unnecessary diffs in GlyphOrder
JMM

I just merged this to kick a new fontc_crater run


Ensure zuul nodes support nesting

We need to avoid using hardware that does not allowed nested virtualization, as vagrant would fail.
Depends-On: https://github.com/ansible-network/windmill-config/pull/743

Sorry, but you cannot Depends-On things from trusted repositories like windmill-config.

@goneri I know that the depends-on does not work, but I used it more for documentation purposes, not really expecting it to be effective.

recheck

recheck


Inconsistent query behaviour w/ lots of joins

CrateDB version
5.1.1
CrateDB setup information
CrateDB Cloud cluster with 3 nodes
Steps to Reproduce
SELECT DISTINCT
    o.name as "Organization",
    p.region as "Region",
    c.name as "Cluster Name",
    coalesce(al2.context['current_user']['email'], al.context['current_user']['email']) as "Email",
    IF(RIGHT(al.context['current_user']['email'],8) = 'crate.io',1,0) as "Crate.io",
    sub.provider as "Billing Provider",
    stats.credits_used / 100000 / 100 as "$ Credits used",
    ((credits.amount - stats.credits_used) / 100000 / 100) as "$ Credits remaining",
    DATE_FORMAT('%Y-%m-%d %H:%i', sub.dc['created']) as "Subscription created",
    DATE_FORMAT('%Y-%m-%d %H:%i', c.dc['created']) as "Cluster created",
    'croud clusters delete --region ' || p.region || ' --cluster-id ' || c.id || ' --sudo' as "croud delete stmt",
    c.id as "Cluster ID",
    o.id as "Organization ID",
    c.project_id as "Project ID",
    c.crate_version as "CrateDB Version",
    sc.id as "Stripe Customer ID"
from core.clusters c
    JOIN core.projects p ON c.project_id = p.id
    JOIN core.organizations o ON p.organization_id = o.id
    LEFT JOIN core.subscriptions sub ON c.subscription_id = sub.id
    JOIN core.audit_logs al ON c.id = al.context['cluster']['id']
    LEFT JOIN core.audit_logs al2 ON (c.id = al2.context['cluster']['id'] and al2.action = 'product.initiate_create_cluster')
    LEFT JOIN core.stripe_customers sc ON sc.organization_id = o.id
    JOIN stats.credit_usage_by_cluster stats ON stats.cluster_id = c.id
    JOIN core.credits credits ON credits.organization_id = o.id
where c.is_deleted = false AND al.action = 'product.create_cluster' AND sub.state = 'ACTIVE'
  AND stats.last_ts > NOW() - interval '24 hours'
  AND p.region != 'bregenz.a1'
ORDER BY 7 desc, 1,
    2 limit 100;

Expected Result
Query consistently returns same result when data does not change
Actual Result
Query returns 0 results most of the time, but sometimes returns the expected results.

Hi @SStorm, Thx for reporting, have you tried to remove tables from the join one-by-one to try narrow down, which one could cause the issue?

Hey @matriv , looks like it is the 2nd join with the audit_logs table:
SELECT DISTINCT
    o.name as "Organization",
    p.region as "Region",
    c.name as "Cluster Name",
    --coalesce(al2.context['current_user']['email'], al.context['current_user']['email']) as "Email",
    al.context['current_user']['email'] as "Email",
    IF(RIGHT(al.context['current_user']['email'],8) = 'crate.io',1,0) as "Crate.io",
    sub.provider as "Billing Provider",
    stats.credits_used / 100000 / 100 as "$ Credits used",
    DATE_FORMAT('%Y-%m-%d %H:%i', sub.dc['created']) as "Subscription created",
    DATE_FORMAT('%Y-%m-%d %H:%i', c.dc['created']) as "Cluster created",
    'croud clusters delete --region ' || p.region || ' --cluster-id ' || c.id || ' --sudo' as "croud delete stmt",
    c.id as "Cluster ID",
    o.id as "Organization ID",
    c.project_id as "Project ID",
    c.crate_version as "CrateDB Version",
    sc.id as "Stripe Customer ID"
from core.clusters c
    JOIN core.projects p ON c.project_id = p.id
    JOIN core.organizations o ON p.organization_id = o.id
    LEFT JOIN core.subscriptions sub ON c.subscription_id = sub.id
    JOIN core.audit_logs al ON c.id = al.context['cluster']['id']
    --LEFT JOIN core.audit_logs al2 ON (c.id = al2.context['cluster']['id'] and al2.action = 'product.initiate_create_cluster')
    LEFT JOIN core.stripe_customers sc ON sc.organization_id = o.id
    JOIN stats.credit_usage_by_cluster stats ON stats.cluster_id = c.id
where c.is_deleted = false AND al.action = 'product.create_cluster' AND sub.state = 'ACTIVE'
  AND stats.last_ts > NOW() - interval '24 hours'
  AND p.region != 'bregenz.a1'
limit 100;

works absolutely fine. As soon as I add it back in, it's inconsistent again.

great, thx!

The problem is fixed if we move the 2nd part of the join: al2.action = 'product.initiate_create_cluster') condition to the WHERE clause:
SELECT DISTINCT
    o.name as "Organization",
    p.region as "Region",
    c.name as "Cluster Name",
    coalesce(al2.context['current_user']['email'], al.context['current_user']['email']) as "Email",
    IF(RIGHT(al.context['current_user']['email'],8) = 'crate.io',1,0) as "Crate.io",
    sub.provider as "Billing Provider",
    stats.credits_used / 100000 / 100 as "$ Credits used",
    ((credits.amount - stats.credits_used) / 100000 / 100) as "$ Credits remaining",
    DATE_FORMAT('%Y-%m-%d %H:%i', sub.dc['created']) as "Subscription created",
    DATE_FORMAT('%Y-%m-%d %H:%i', c.dc['created']) as "Cluster created",
    'croud clusters delete --region ' || p.region || ' --cluster-id ' || c.id || ' --sudo' as "croud delete stmt",
    c.id as "Cluster ID",
    o.id as "Organization ID",
    c.project_id as "Project ID",
    c.crate_version as "CrateDB Version",
    sc.id as "Stripe Customer ID"
from core.clusters c
    JOIN core.projects p ON c.project_id = p.id
    JOIN core.organizations o ON p.organization_id = o.id
    LEFT JOIN core.subscriptions sub ON c.subscription_id = sub.id
    JOIN core.audit_logs al ON c.id = al.context['cluster']['id']
    LEFT JOIN core.audit_logs al2 ON c.id = al2.context['cluster']['id']
    LEFT JOIN core.stripe_customers sc ON sc.organization_id = o.id
    JOIN stats.credit_usage_by_cluster stats ON stats.cluster_id = c.id
    JOIN core.credits credits ON credits.organization_id = o.id
where c.is_deleted = false AND al.action = 'product.create_cluster' AND sub.state = 'ACTIVE'
  AND stats.last_ts > NOW() - interval '24 hours'
  AND p.region != 'bregenz.a1' AND al2.action = 'product.initiate_create_cluster')
ORDER BY 7 desc, 1,
    2 limit 100;

I haven't manage to reproduce the issue locally both in single node and a 3-node cluster. One example of what I've tried:
create table t1(a int primary key, b OBJECT);
create table t2(a int primary key, b OBJECT);
create table t3(a int primary key, b OBJECT);
create table t4(a int primary key, b OBJECT);

insert into t1(a) select generate_series(1, 10, 1);
update t1 set b['foo'] = a * 10 + a;

insert into t2(a) select generate_series(3, 12, 1);
update t2 set b['foo'] = a * 10 + a;

insert into t3(a) select generate_series(6, 14, 1);
update t3 set b['foo'] = a * 10 + a;

insert into t4(a) select generate_series(8, 16, 1);
update t4 set b['foo'] = a * 10 + a;

refresh tables t1,t2,t3,t4;

SELECT DISTINCT t1.a, t2.a, t3.a, t4.a
FROM t1
INNER JOIN t2 ON t1.b['foo'] = t2.b['foo']
LEFT OUTER JOIN t3 ON t1.b['foo'] = t3.b['foo'] AND t3.a < 8
LEFT OUTER JOIN t4 ON t2.a * 10 + t4.a = t4.b['foo'];

SELECT DISTINCT t1.a, t2.a, t3.a, t4.a
FROM t1
INNER JOIN t2 ON t1.b['foo'] = t2.b['foo']
LEFT OUTER JOIN t3 ON t1.b['foo'] = t3.b['foo'] AND t3.a < 8
INNER JOIN t4 ON t2.a * 10 + t4.a = t4.b['foo'];

@matriv

The difference in the plan is that in the 1st case (original query) we get NestedLoopJoin because the 2nd part of the join condition doesn't allow the planner to recognize an equi-join. In the second case (2nd part is moved to WHERE) we get HashJoin

Where is the NestedLoopJoin turning into a HashJoin? A simple diff of your posted plans only highlights the expected change from LEFT to INNER and the join condition. Do I miss something or did you maybe mix something up with the posted plans?
The most significant change I see is that in one plan the constant join condition is pushed to the collect phase (guess when manually moving it to the WHERE clause) while in the non working case it isn't pushed down.

SELECT
    c.name
from core.clusters c
    JOIN core.projects p ON c.project_id = p.id
    JOIN core.organizations o ON p.organization_id = o.id
    LEFT JOIN core.audit_logs al2 ON (c.id = al2.context['cluster']['id'] and al2.action = 'product.initiate_create_cluster')
    LEFT JOIN core.stripe_customers sc ON sc.organization_id = o.id
    JOIN core.credits credits ON credits.organization_id = o.id
where c.is_deleted = false

is enough to sometimes get 0 results
the context field is of type OBJECT(IGNORED) which might also have an effect on the physical plan?!
CREATE TABLE  "core"."audit_logs"
(
    "id"                   TEXT NOT NULL,
    "action"               TEXT,
    "context"              OBJECT(IGNORED),
    PRIMARY KEY ("id")
) CLUSTERED BY ("id")

The difference in the plan is that in the 1st case (original query) we get NestedLoopJoin because the 2nd part of the join condition doesn't allow the planner to recognize an equi-join. In the second case (2nd part is moved to WHERE) we get HashJoin

Where is the NestedLoopJoin turning into a HashJoin? A simple diff of your posted plans only highlights the expected change from LEFT to INNER and the join condition. Do I miss something or did you maybe mix something up with the posted plans? The most significant change I see is that in one plan the constant join condition is pushed to the collect phase (guess when manually moving it to the WHERE clause) while in the non working case it isn't pushed down.

@seut You're right, apologies, I probably mixed up with some other versions of the query I was trying out, no NL<->HashJoin change, just the LEFT to INNER.

The conversion of LEFT JOIN to INNER when a filter (WHERE clause) on the right relation of the LEFT join is applied is valid.
from https://stackoverflow.com/questions/3256304/left-join-turns-into-inner-join:
Whenever you specify a value from the right side of a left join in a WHERE clause (which is NOT NULL), you necessarily eliminate all of the NULL values and it essentially becomes an INNER JOIN.

If you write, AND (c.foobar = 'somethingelse' OR c.foobar IS NULL) that will solve the problem.

You can also move the c.foobar portion into your join predicate, and that too will solve the issue.

This in our code is applied here: https://github.com/crate/crate/blob/master/server/src/main/java/io/crate/planner/optimizer/rule/RewriteFilterOnOuterJoinToInnerJoin.java#L163
Checkout PSQL behaviour:
matriv=> SELECT t1.a,t1.b,tt2.a,tt2.b
         FROM t1
         LEFT OUTER JOIN t2 AS tt2 ON t1.a = tt2.a;
 a  |  b  | a | b
----+-----+---+----
  1 |  11 |   |
  2 |  22 |   |
  3 |  33 | 3 | 33
  4 |  44 | 4 | 44
 15 |  55 |   |
 16 |  66 |   |
 17 |  77 |   |
 18 |  88 |   |
 19 |  99 |   |
 20 | 110 |   |
(10 rows)

matriv=> EXPLAIN SELECT t1.a,t1.b,tt2.a,tt2.b
         FROM t1
         LEFT OUTER JOIN t2 AS tt2 ON t1.a = tt2.a;
                              QUERY PLAN
----------------------------------------------------------------------
 Hash Left Join  (cost=60.85..99.39 rows=2260 width=16)
   Hash Cond: (t1.a = tt2.a)
   ->  Seq Scan on t1  (cost=0.00..32.60 rows=2260 width=8)
   ->  Hash  (cost=32.60..32.60 rows=2260 width=8)
         ->  Seq Scan on t2 tt2  (cost=0.00..32.60 rows=2260 width=8)
(5 rows)

matriv=> SELECT t1.a,t1.b,tt2.a,tt2.b
         FROM t1
         LEFT OUTER JOIN t2 AS tt2 ON t1.a = tt2.a WHERE tt2.b > 20;

 a | b  | a | b
---+----+---+----
 3 | 33 | 3 | 33
 4 | 44 | 4 | 44
(2 rows)

matriv=> EXPLAIN SELECT t1.a,t1.b,tt2.a,tt2.b
         FROM t1
         LEFT OUTER JOIN t2 AS tt2 ON t1.a = tt2.a WHERE tt2.b > 20;
                             QUERY PLAN
---------------------------------------------------------------------
 Hash Join  (cost=47.66..86.21 rows=753 width=16)
   Hash Cond: (t1.a = tt2.a)
   ->  Seq Scan on t1  (cost=0.00..32.60 rows=2260 width=8)
   ->  Hash  (cost=38.25..38.25 rows=753 width=8)
         ->  Seq Scan on t2 tt2  (cost=0.00..38.25 rows=753 width=8)
               Filter: (b > 20)
(6 rows)

To my understanding (/cc @SStorm) the workaround (moving the 2nd part from the JOIN condition to the WHERE clause) is not valid, as it changes the semantics of the query.

SELECT
    c.name
from core.clusters c
    JOIN core.projects p ON c.project_id = p.id
    JOIN core.organizations o ON p.organization_id = o.id
    LEFT JOIN core.audit_logs al2 ON (c.id = al2.context['cluster']['id'])
    LEFT JOIN core.stripe_customers sc ON sc.organization_id = o.id
where c.is_deleted = false

I have never managed to receive 0 rows with this one (on the cluster in question, and also locally)

SELECT
    c.name
from core.clusters c
    JOIN core.projects p ON c.project_id = p.id
    JOIN core.organizations o ON p.organization_id = o.id
    LEFT JOIN core.audit_logs al2 ON (c.id = al2.context['cluster']['id'])
    LEFT JOIN core.stripe_customers sc ON sc.organization_id = o.id
where c.is_deleted = false

is enough to sometimes get 0 results
the context field is of type OBJECT(IGNORED) which might also have an effect on the physical plan?!
CREATE TABLE  "core"."audit_logs"
(
    "id"                   TEXT NOT NULL,
    "action"               TEXT,
    "context"              OBJECT(IGNORED),
    PRIMARY KEY ("id")
) CLUSTERED BY ("id")

@proddata I have never managed to receive 0 rows with this one (on the cluster in question, and also locally)

I have never managed to receive 0 rows with this one (on the cluster in question, and also locally)

less common, but it still happens

@proddata Indeed, now it's easily reproducable with this query as well.

Here you can find an Integration test (along with changes to force flipping to RIGHT join) that reproduces the issue: https://github.com/crate/crate/compare/mt/test-flaky?expand=1


Can't install this extension into Standard Notes

I was looking to work with mermaid inside Standard Notes and I just found this plugin. Unfortunately, I can't seem to install it.
My Standard Notes version is 3.191.21. The steps I do to try and install this plugin are as follows:

Navigate to the "Plugins" area in the Standard Notes settings.
Paste "https://nienow.github.io/sn-mermaid/ext.json" into "Install Custom Plugin" textbox.
Hit the "Install" button
The I receive the error "Error downloading package details. Please check the extension link and try again." and the plugin isn't installed.

Am I doing anything incorrect? or is there an issue with the plugin?
Is the plugin still supported? If not, is there another way to use Mermaid in Standard Notes?
Any help would be greatly appreciated.

Unfortunately, it looks like installing Custom plugins does not work through the webapp anymore. Apparently, installing plugins on the Desktop app still works, and then you can still use them on the webapp, you just can't install on the webapp. I'm going to discuss with Standard notes about this issue.

@nienow Thanks for the quick response.
I never use the Standard Notes desktop app, I only used the webapp on 2 x laptops and the android app. I did try to install this extension on all three devices but it wouldn't install on any.
I've just installed the desktop app on my Linux laptop and installed the extension, and as you say it's now appeared on my 2 x laptops and android device.
Again thanks for the help in getting this extension installed.


fill(previous) does not really get previous value

fill(previous) works only on the current time span (the where statement). I expected it to use the previously logged value at or before the current time span.
Say I have the value 100 logged at 2014-12-31
And the value 50 logged at 2015-01-02
The I perform the query:
select value from someSeries where time > '2015-01-01' group by time(24h) fill(previous)
It returns
2015-01-01 null
2015-01-02 50
2015-01-03 50
2015-01-04 50
and so on
I would expect it to return 100 as the value for 2015-01-01 when specifying fill(previous) even though the value 100 was logged outside of the time scope.
In other historian db's you have the notion of "include bounds" which will include the last value before as well as the first value after your specified time range. These can be used to fill in manually.
Very useful when working with devices that only logs new data points on actual change. It can be quite large gaps without any data logged. When viewing the data I don't want "holes" in the series.

Ported from comment on #1925. Thanks, @paaland!,

Closing this in favor of the more recent #5943.


Possible to access higher-level IR in decompilation process?

This question comes to you in two parts:

Is the HighFunction we see in Ghidra's source another form of IR? Is it possible to access that representation, or is is PCode the only IR that is involved in the decompiling process?
If a higher-level IR exists, can we print the IR as well?

Thanks!

Yes, it is another form of IR.
The HighFunction object is an object containing the AST (Arbitrary Syntax Tree) built by the decompiler, which is Ghidra's IR language. You can't modify it by hand easily, but you can retrieve and review the IR by fetching a DecompileResults object, using the DecompInterface object. The HighFunction object obtained via DecompileResults().getHighFunction() is full of good information, including the full set of varnodes, the list of basic blocks, the jump tables, etc, but to figure out what all it can give you, you also need to play with feeding the DecompInterface instance a DecompileOptions object using the setOptions method.
I'd recommend looking at the full API for both, but its trivial to get the basic DecompileResults and HighFunction object in the jython interpreter. Just open a Python window, then do the following:
>>> from ghidra.app.decompiler import DecompInterface
>>> ifc = DecompInterface()
>>> ifc.openProgram(currentProgram)
True
>>> timeout_secs = 60
>>> results = ifc.decompileFunction(getFunctionContaining(currentAddress), timeout_secs, monitor)
>>> results.__class__
<type 'ghidra.app.decompiler.DecompileResults'>
>>> high_func = results.getHighFunction()
>>> high_func.__class__
<type 'ghidra.program.model.pcode.HighFunction'>
>>> high_func.getBasicBlocks()
[basic@00000010]
>>> high_func.getVarnodes(currentAddress)
java.util.TreeMap$NavigableSubMap$SubMapKeyIterator@62fa9b87
>>> results.decompiledFunction.getC()
u'\nvoid _init(void)\n\n{\n  undefined *puVar1;\n  \n  FUN_00000040();\n  puVar1 = PTR_DAT_0000003c;\n  *(undefined4 *)(PTR_DAT_0000003c + -4) = 0;\n  *(undefined4 *)(puVar1 + -8) = 0;\n  *(undefined4 *)(puVar1 + -0xc) = 0;\n  *(undefined4 *)(puVar1 + -0x10) = 0;\n  (*(code *)PTR_FUN_00000034)();\n  (**(code **)PTR_PTR__start_00000038)();\n  return;\n}\n\n'

By default, the decompiler is configured to just yield the basic information, I think to make communications between SWING and the decompiler faster? But you can configure that by changing the information in the interface object using .getOptions() to get the DecompileOptions object, then setting the fields you want the decompiler to populate, and using .setOptions(<modified options object>) to then reconfigure the decompiler using the new set of options.

I've played with scripting the decompiler to a decent extent at this point, fwiw, and I'm happy to answer any other questions you might have on this as they come up, so don't hesitate to ask.

Thanks for your detailed response @hedgeberg!


AppBar: fix bugs, add docs, add samples

I added some tests for the bug that I fixed.
I added docs for IconButton and AppBar.
I added some new constructors for FractionalOffset.

cc @abarth

Depends on https://github.com/flutter/assets-for-api-docs/pull/4

will land on green


Bug? UI in Dockerimage not able to load all resources

What Happened?
Hi :)
I wanted to try the docker image (I tried version 1.8.5, 1.8.4, 1.8.3), but the ui does not show up as expected. It fails to load the additional ressources.
 Learn more: https://help.hotjar.com/hc/en-us/articles/115011624047
window.hjBootstrap @ hotjar-3502316.js?sv=7:3
wtp.js:17 handleResponse
wtp.js:20 file_name is
wtp.js:22 path is chrome-extension://dlmffppdphadfmicefckcdnpaokpdmbm/
wtp.js:24 type of tmext is undefined
wtp.js:25 type of message is undefined
public:1  Error handling response: TypeError: Cannot read properties of undefined (reading 'databc')
    at handleResponse (chrome-extension://dlmffppdphadfmicefckcdnpaokpdmbm/wtp.js:26:46)
    at chrome-extension://dlmffppdphadfmicefckcdnpaokpdmbm/wtp.js:83:5
public:1  Unchecked runtime.lastError: A listener indicated an asynchronous response by returning true, but the message channel closed before a response was received
[NEU] Erläutern von Konsolenfehlern mithilfe von Copilot in Edge: Klicken Sie auf
         , um einen Fehler zu erklären.
        Weitere Informationen
        Nicht mehr anzeigen
Microsoft Edge is moving towards a new experience that allows users to choose to browse without third-party cookies.
tabs.css:1
        Failed to load resource: the server responded with a status of 404 (Not Found)
header.css:1
        Failed to load resource: the server responded with a status of 404 (Not Found)
interative-code.css:1
        Failed to load resource: the server responded with a status of 404 (Not Found)
buttons.css:1
        Failed to load resource: the server responded with a status of 404 (Not Found)
logs.css:1
        Failed to load resource: the server responded with a status of 404 (Not Found)
modal.css:1
        Failed to load resource: the server responded with a status of 404 (Not Found)
style.css:1
        Failed to load resource: the server responded with a status of 404 (Not Found)

I tried edge browser as well as firefox.
What Should Have Happened?
UI should be able to load all of its resources succesfully.
Relevant Code Snippet
Deployment via:
docker run --rm  -p 8787:8787 portkeyai/gateway:1.8.5

Your Twitter/LinkedIn
No response

@VfBfoerst Can you try this url once - "http://localhost:8787/public/"
The last slash might be what's causing the issue. Will fix this in the next release.

@roh26it thank you! Yeah i will try it tomorrow.

Can confirm its because of the slash. Works with the slash at the end.

This went live in v1.8.6.


Allowing automated atom typing for larger system(100 molecules) upon provide atom-typed coeff.(not the opls value, but the exact coeff. for each atom,bond,angle,dihedral,impropers,etc.) for it's smaller individual component( 1 molecule)

Describe the behavior you would like added to Foyer
A clear and concise description of what the proposed idea is.
Describe the solution you'd like
A clear and concise description of what you want to happen.
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
Add any other context or screenshots about the feature request here.

I find foyer struggles with cyclic structures(I tried Ethylene Carbonate(EC) and Propylene Carbonate(PC)) more, than linear structures(dimethyl Carbonate(DMC) or ethyl methyl carbonate(EMC)) for atom typing.
It finds multiple atom types for EC and PC, even though the exact parameters {Lucienne's param.} exist for PC specifically.
When I tried commenting on the confused atom types from the. XML forcefield file generates errors like the expected 17 bond angle parameters, but only 16 are found.
Since mBuild can easily build a box with the required molecules, I request a way to iterate over the molecules and assign them the parameter from what I supply for 1 such molecule. And expanding this to a system constituting different molecules. If one wants to use their own parameters, they can do so only after the foyer builds that file right and changes the .data file
But what if the foyer fails to build the .data file to begin with?
Pardon me if such a feature already exists, I just started out with research in MD(still an undergrad)


Process .ZON file

Hello, I was wondering if you were processing/using the ZON files that keyence produces from their VR 6000 in this work or if you were exporting the information in a different way. How did you get your test-scan.dxf file?
Thank you!

Yeah, so unfortunately you have to use the VR analysis software to export a .zon file to CAD format. This also has the unfortunate side effect of ballooning the file size my 3-5x. I wasn't able to get my script to do alignment good enough for our purposes so I benched my efforts on doing it outside of the VR software. Just crossing my fingers that keyence implements rotational scanning stitching functionality.


About training loss and validation loss.

Hello, that is a really nice tracking project. Good work!
I am playing for a while with this tracking framework.
While training SiamRPN++ with ResNet as backbone, I am plotting the losses in tensorboard.
I wonder why is there no validation loss? The validation datasets and validation json files are generated and in the right folder.
Is there any reason to not plot the validation loss? If not, how can I implement it by myself?
Thanks in advance.

I'm not sure why they are not added, but you definitely can add the validation loss in train.py.
You may checkout tensorboard instructions on how to plot the validation loss

I have the same question. Do we have a solution for this issue? Thanks a lot

@zyc-ai I saw the code inside pysot/models/model_builder.py  and I don't think there is any validation_loss reported. here is the snippet which only has total loss, cls loss and loc_loss. How can we add validation loss to this? Thanks
def forward(self, data):

    template = data['template'].cuda()
    search = data['search'].cuda()
    label_cls = data['label_cls'].cuda()
    label_loc = data['label_loc'].cuda()
    label_loc_weight = data['label_loc_weight'].cuda()

    # get feature
    zf = self.backbone(template)
    xf = self.backbone(search)
    if cfg.MASK.MASK:
        zf = zf[-1]
        self.xf_refine = xf[:-1]
        xf = xf[-1]
    if cfg.ADJUST.ADJUST:
        zf = self.neck(zf)
        xf = self.neck(xf)
    cls, loc = self.rpn_head(zf, xf)

    # get loss
    cls = self.log_softmax(cls)
    cls_loss = select_cross_entropy_loss(cls, label_cls)
    loc_loss = weight_l1_loss(loc, label_loc, label_loc_weight)

    outputs = {}
    outputs['total_loss'] = cfg.TRAIN.CLS_WEIGHT * cls_loss + \
        cfg.TRAIN.LOC_WEIGHT * loc_loss
    outputs['cls_loss'] = cls_loss
    outputs['loc_loss'] = loc_loss

    if cfg.MASK.MASK:
        # TODO
        mask, self.mask_corr_feature = self.mask_head(zf, xf)
        mask_loss = None
        outputs['total_loss'] += cfg.TRAIN.MASK_WEIGHT * mask_loss
        outputs['mask_loss'] = mask_loss
    return outputs

@zyc-ai I saw the code inside pysot/models/model_builder.py and I don't think there is any validation_loss reported. here is the snippet which only has total loss, cls loss and loc_loss.

If you are training, it's training loss, if not, it's validation loss.


Stripping Authorization header upon redirects (second try)

Signed-off-by: Noam Lerner<EMAIL_ADDRESS>Description
This is another attempt of https://github.com/chef/chef/pull/6985. This makes it so that chef won't sent the Authorization header on GET or POST redirects.
Issues Resolved

https://github.com/chef/chef/issues/6984

Check List

[ ] New functionality includes tests. (Tested manually, see examples later.)
[ ] All tests pass
[ ] RELEASE_NOTES.md, has been updated if required (not required for bugfixes, required for API changes)
[x] All commits have been signed-off for the Developer Certificate of Origin. See https://github.com/chef/chef/blob/master/CONTRIBUTING.md#developer-certification-of-origin-dco

Testing.
As a previous PR broke the :delete action and got reverted (https://github.com/chef/chef/pull/6996), I'd like to be extra careful here. Please let me know how if you'd like me to test this further. Here's what I did.

Ran a similar test script using chef-apply: https://gist.github.com/bugok/53add64fbb7b2c605068bc648cdb3ccd
Put that snippet as part of one of my chef's cookbooks, monkey-patched send_http_request with this commit.
In both cases, I ran chef in debug mode, made sure that the header is being removed on the second (redirected) http request.

Again, I'd be happy to followup with another test, I'm just not sure what it should be - and if it's needed.

cc people from previous PRs who might want to chime into the discussion:
@tas50, @lamont-granquist, @jaymzh, @thommay.

Seems like the travis build for PRs is broken: https://travis-ci.org/chef/chef/pull_requests
With this error: Bundler could not find compatible versions for gem "mixlib-log":
Example: https://travis-ci.org/chef/chef/jobs/354907549

We really like the intent, but we're concerned we've not thought through the possible edge cases, and we need to figure out the testing situation as you say. So, given that chef-14 release candidates start in a few days, we're going to postpone taking this until 15 opens. Does that make sense?

@thommay how about a feature flag?

My take on this:

it is the correct behavior, so we should move in this direction
we can guard it by a default-off flag for 14, which moves to default-on flag in 15, and remove the flag in 16

Seem sane, @thommay and @danielsdeleo ?

@markan pointed out that this isn't the X-Ops-Authorization header so that makes me feel a bit better about this since I'm certain we probably do nutty things with chef-servers and redirected urls...

Happy to take it default off, absolutely.

@thommay - sure, but we should set it up for changing the default in 15 and removing the option in 16... since otherwise we're violating the spec :)

Yep

Alright, @bugok  - you wanna add that?

Yes. Will do. Will have something up in a few days.

Messed up my repo. Sending a proper diff soon.

I'm not sure if introducing such a config is the right way to go - and I didn't find that config file under my chef 12 directory in order to properly test this.
Again, I'd appreciate any feedback on how to properly test this.

This is perfect. @bugok  - just put that in client.rb to test. :)
Hey @thommay / @lamont-granquist  - how do we hook this into the Deprecations thing system?

Updated the testing part. Please let me know if you'd like me to do anything else in order to get this merged.


How to switch from GLES to GLES2 and GLES3 headers ?

I use Ubuntu and ubuntu has libGLESv1_CM shared lib but doesn't provide GLES headers. I tried to search for it and it seems libgles1-mesa-dev is no longer avaible. how to make SFML work for GLES2 on linux? is it supported?

This issue tracker is for confirmed and/or reproducible bugs. All support enquiries should go to the SFML forum.
SFML currently does not support OpenGL ES 2 or 3. Support for it might come in the future.
It is recommended to not use OpenGL ES on a desktop system that can provide desktop OpenGL (non ES) anyway. If your system supports desktop OpenGL, build SFML without OpenGL ES support.


Add to the documentation the functionality of generating raw HTML from a template

Thanks for the interest! I don't think it's necessary to add this here, the full documentation around Starlette templates is here: https://www.starlette.io/templates/
People might also want to check the official JInja docs. I'll pass on this one but thanks for the effort! :coffee:


Path incompatibility on Windows

I'm not sure this can be run on Windows without extensive modifications to the code?
When following the Getting Started guide on windows, I'm getting the following error:
`

Elder.js running on http://localhost:3000
/ [
TypeError [ERR_INVALID_ARG_TYPE]: The "id" argument must be of type string. Received undefined
at validateString (internal/validators.js:124:11)
at Module.require (internal/modules/cjs/loader.js:945:3)
at require (internal/modules/cjs/helpers.js:88:18)
at Object.templateComponent (C:\Projects\elderjs-app\node_modules@elderjs\elderjs\build\utils\svelteComponent.js:20:20)
at buildPage (C:\Projects\elderjs-app\node_modules@elderjs\elderjs\build\utils\Page.js:43:40)
at processTicksAndRejections (internal/process/task_queues.js:93:5)
at async Object.run (C:\Projects\elderjs-app\node_modules@elderjs\elderjs\build\hooks\index.js:81:34)
at async C:\Projects\elderjs-app\node_modules@elderjs\elderjs\build\utils\prepareRunHook.js:46:44
at async processHook (C:\Projects\elderjs-app\node_modules@elderjs\elderjs\build\utils\prepareRunHook.js:41:13)
at async Array.prepServer (C:\Projects\elderjs-app\node_modules@elderjs\elderjs\build\utils\prepareServer.js:8:9) {
code: 'ERR_INVALID_ARG_TYPE'
}
]
`

It appears this is due to the Node.js 'path' module resolving paths with \\ as opposed to / on Unix based systems like Mac.
Long story short this results in an empty string passed to require() inside of /build/utils/svelteComponent.ts
The '/' pattern looks to be used extensively throughout ElderJs source.
Has anyone run into this or has an easy work-around that doesn't involve re-writing pathing in the source?

@puglisij Make sure you are on the latest release.
If you are and are still having issues, if you can create a project or better, a test that fails we can look into fixing it.
I've spent extensive effort trying to keep windows support and even rewrote the entire test suite to cover it.

Thanks @nickreese . face palm I was one version behind at 1.2.1.  Nice!
Thanks for open sourcing this project too, I really like the way this is laid out so far.


Modules and calling external methods

Calling this
module XD
  abstract def xd

  def xd1
    xd0 #looks this method
    xd
  end
end

class XX
  include XD

  def xd
    puts "demo"
  end
end

I think it's better and typesafe doing something like this
module XXD
  abstract def xd0
end

module XD
  include XXD
  abstract def xd

  def xd1
    xd0
    xd
  end
end

class XX
  include XD

  def xd
    puts "demo"
  end

  def xd0
  end
end

I for one don't follow at all what you're proposing.

I mean in the first code the compiler has to look if the class of the object in the hierarchy has implemented the xd0 method, this has to be expensive in a bigger project. Instead the module XD needs to use a method (xd0) required in another module(XXD) so the module includes the other module that way the class that includes it should implement both. Actually both codes works, but I think the second one is easier to compile and more typesafe.

Did you mean to implement xd0 in XX in the first example too?

@jhass to force to implement it, have you checked Scala traits?, it's a good approach to implement typesafe mixins.

Eh? Why not just abstract def xd0 in XD?

Forcing declaring abstract methods goes against quick prototyping. As for type safety and errors, they are the same if we force defining abstract methods that if we don't.

And it's also not true that it will be faster to compile. If you have a module as a restriction you just have to check that the given type includes it, without having to check what methods it has. The method is only searched when needed, which you are going to do anyway once that method is invoked.


Use resolver 2

For 2021 edition this defaults to 2 for individual crates but not for
workspaces.
You can read more about this here https://doc.rust-lang.org/edition-guide/rust-2021/default-cargo-resolver.html . Basically this forces us to specify the right features in some cases instead of the code accidentally compiling because a required feature gets enabled from somewhere else.
There is no immediate reason to enable it. I just recently learned it isn't the default for workspaces.
Test Plan
CI

I meant "no".


set up google analytics

Set up google analytics using gtag. This will likely also require some sort of GDPR notice or privacy policy.

Going to close this for now, not enough value add to overcome the risks.


FlexAudioSpectrogram ops is not supported by the tflite interpreter

When I run a model converted from speech command demo using lite Interpreter, the error is:
Traceback (most recent call last):
File "/home/yuan/anaconda3/envs/TFLite/lib/python3.7/threading.py", line 917, in _bootstrap_inner
self.run()
File "/home/yuan/tensorflow-master/tensorflow/examples/speech_commands/audio/audio_processor_lite.py", line 41, in run
self._interpreter.allocate_tensors()
File "/home/yuan/anaconda3/envs/TFLite/lib/python3.7/site-packages/tensorflow_core/lite/python/interpreter.py", line 198, in allocate_tensors
return self._interpreter.AllocateTensors()
File "/home/yuan/anaconda3/envs/TFLite/lib/python3.7/site-packages/tensorflow_core/lite/python/interpreter_wrapper/tensorflow_wrap_interpreter_wrapper.py", line 106, in AllocateTensors
return _tensorflow_wrap_interpreter_wrapper.InterpreterWrapper_AllocateTensors(self)
RuntimeError: Regular TensorFlow ops are not supported by this interpreter. Make sure you invoke the Flex delegate before inference.Node number 0 (FlexAudioSpectrogram) failed to prepare.
But the model provided by speech command android demo works  well. (https://github.com/tensorflow/examples/blob/master/lite/examples/speech_commands/android/README.md)

Please help us to know which TensorFlow version you are using. Thanks!

Please help us to know which TensorFlow version you are using. Thanks!

OK. I used "pip3 install tf-nightly" to install the tensorflow, and the version is 1.14.1-dev20190615

Hi Alan, could you take a look at the speech demo, or do you know who's familar with this?

Try this
tflite_convert
--output_file=/output.tflite
--graph_def_file /path/to/my_frozen_graph.pb
--input_arrays decoded_sample_data,decoded_sample_data:1
--output_arrays labels_softmax
--allow_custom_ops

@zhizunbao-y
Hi, could you please try 1) tf-nightly >= 2.3.0 and 2) flex op?
converter = tf.lite.TFLiteConverter.from_saved_model(your_model)
converter.target_spec.supported_ops = [tf.lite.OpsSet.TFLITE_BUILTINS, tf.lite.OpsSet.SELECT_TF_OPS]
tflite_model = converter.convert()

@zhizunbao-y We are checking to see if you still need help on this issue, as you are using an older version of tensorflow(1.x) which is officially considered as end of life. We recommend that you upgrade to 2.6 which is latest stable version of TF and let us know if the issue still persists in newer versions.Thanks!


allow single quotes in string blocks

Super minor, but I'd love to be able to write this (Post in double quotes):
var source = '
{{#posts}}
{{{link_to 'Post' this}}}
{{/posts}}
'

Right now, I have to write this:
var source = '
{{#posts}}
{{{link_to "Post" this}}}
{{/posts}}
'

I just hit this in ember.js with {{bindAttr blah='blah'}} not working. Switching to double quotes made it work.
This is important as I use double quotes to represent strings that I need to localize, and single quotes for everything else.

I make the distinction of double is for things I'd replace into, like how CoffeeScript allows you to write "my replacement: #{foo}". Everything else is single quotes. Just reads more nicely because I can look for double quotes and know something in that string is being replaced.

Yeah, I'd like to see single-quoted strings supported (or, at least, a reasoning why they're not supported).
This below shouldn't be an error:
{{myHelper 'foo'}}

I talked with @wycats about this. He said that while he's in favor of this, it would make the tokenizer much more complex and isn't something he wants to attempt to implement himself. If someone would like to send a PR for this, we'll gladly consider it.


Boxes in the first row of a file box do not have correct left margins when expanded.

This seems to only affect the first row inside a file box.  If a box which is not the first cha on the line is expanded, the left sides of the canvas are calculated wrong and the box is not adjacent to the side.  See screenshots below:
The cursor may need to be on the line in front of the box to reproduce.
Starting out:

Box expanded:

Closing this... the renderer has almost been entirely rewritten since this was filed, and I haven't seen this particular error in a long time.


Initial tests for node

These PR includes some initial tests for node.
As tracked by https://github.com/godotengine/godot/issues/43440, there are no tests yet for node, so I decided to create some.
The following operations are tested for node:

add
remove
move
get (by index, node path and group)
find
count
is_inside_tree
name
Verifying the scene tree (node count)
Processing setup

My goal is to create more tests in the future.
Some requires more work (I got some crashes when trying to simulate a _process call).

Thanks!


Fix: have CurrentLimits method in opev and oscev filter for LoadControlLimitDescription instead of MeasurementDescription

Since the "ScopeType" field in the LoadControlLimitDescription is more relevant (with a value of "overloadProtection" and "selfConsumption" for OPEV and OSCEV, respectively), it shall be used as the filter for obtaining the relevant ElectricalConnectionPermittedValueSetListData items in the CurrentLimits getters for OPEV and OSCEV. From the relevant LoadControlLimitDescriptionData items, one can get their corresponding measurement IDs and use them to filter for relevant parameter description items.

Thank you @AhmedMagdyCoretech , this looks great!

Looks great overall, just some minor adjustments needed.

Thank you for the feedback. All the issues have been duly resolved.

Thank you very much @AhmedMagdyCoretech !


Use native theme in KDE

Hey, is there a way to get the app to use the OS's theming in KDE (or even in GTK?).
It seems that out of the box it's using the default GTK theme rather than the one configured by the user. As a result any apps built with fltk will look off.

Hi
You can try FLTK's app::get_system_colors() , which will attempt to get X11 colormap settings, usually set by the DE.
This will only affect the colors though.
The shape of widgets follows the app::scheme, or in fltk-theme, is custom drawn by overriding some drawing functions.

Hmm, it doesn't seem to have changed anything. I tried calling that API before creating any UI elements and just before calling app.run() and neither option had a visible effect. It just had the default grey theme.

I’m interested to know what environment you’re using.
I tried it on a kubuntu machine on X11, the color becomes nearly white.
Are you perhaps using KDE on wayland?

This is with KDE Plasma 5.26.4 with X11 on Manjaro Linux.
It's on a 10th generation Intel core if that makes a difference. 🤔
use fltk_theme::{ColorTheme, color_themes};
use fltk::{app, button::Button, frame::Frame, prelude::*, window::Window};

fn main() -> Result<(), Box<dyn Error>> {
    let app = app::App::default();
    app::get_system_colors();

    let mut wind = Window::new(100, 100, 400, 300, "Hello from rust");
    let mut frame = Frame::new(0, 0, 400, 200, "");
    let mut but = Button::new(160, 210, 80, 40, "Click me!");
    wind.end();
    wind.show();

    println!("Wow OK we exited!");

    Ok(())
}

This is what my GTK theme should look like according to the preview thingie in Plasma:

It seems KDE plasma stores themes in $HOME/.local/share/plasma/desktoptheme//. The colors are in a colors subdirectory of the theme. I'm not sure where the current global theme is set in the system though. Maybe adding a light/dark Oxygen theme to this crate might give a less out of touch UI on KDE desktops. But I think adding logic to check system files to determine which is the current theme and the theme's details would be too much for this crate.


Uncaught TypeError: Cannot read property 'markBufferRange' of undefined

Steps to reproduce:

Run narrow:search
Search for start

I'm not entirely sure if this error is due to there being so many search results, but I was able to reproduce it on multiple unrelated projects. I was not able to reproduce it on projects with only a few test files.
Atom: 1.24.0 x64
Electron: 1.6.16
OS: Mac OS X 10.12.6
Thrown From: narrow package 0.57.0
Stack Trace
Uncaught TypeError: Cannot read property 'markBufferRange' of undefined
At /Users/nsergeant/.atom/packages/narrow/lib/grouped-highlight.js:29

TypeError: Cannot read property 'markBufferRange' of undefined
    at GroupedHighlight.markRange (/packages/narrow/lib/grouped-highlight.js:29:38)
    at markRange (/packages/narrow/lib/narrow-editor.js:378:26)
    at NarrowEditor.highlightItems (/packages/narrow/lib/narrow-editor.js:424:9)
    at Ui.renderItems (/packages/narrow/lib/ui.js:644:27)
    at reducers.reduce (/packages/narrow/lib/item-reducer.js:212:35)
    at Array.reduce (native)
    at ItemReducer.reduce (/packages/narrow/lib/item-reducer.js:211:19)
    at refreshDisposables.CompositeDisposable.onDidUpdateItems.items (/packages/narrow/lib/ui.js:734:26)
    at Function.module.exports.Emitter.simpleDispatch (/Applications/Atom.app/Contents/Resources/app/node_modules/event-kit/lib/emitter.js:25:20)
    at Emitter.module.exports.Emitter.emit (/Applications/Atom.app/Contents/Resources/app/node_modules/event-kit/lib/emitter.js:141:34)
    at Ui.emitDidUpdateItems (/packages/narrow/lib/ui.js:59:45)
    at Provider.updateItems (/packages/narrow/lib/provider/provider.js:245:13)
    at Search.updateItems (/packages/narrow/lib/provider/search.js:104:19)
    at updateItemsIfNotModified (/packages/narrow/lib/provider/search.js:88:12)
    at stdout (/packages/narrow/lib/searcher.js:95:28)
    at Socket.<anonymous> (/Applications/Atom.app/Contents/Resources/app/src/buffered-process.js:212:17)
    at emitOne (events.js:96:13)
    at Socket.emit (events.js:188:7)
    at readableAddChunk (_stream_readable.js:176:18)
    at Socket.Readable.push (_stream_readable.js:134:10)
    at Pipe.onread (net.js:551:20)

Commands
     -0:06.0 core:close (input.hidden-input)
     -0:04.5.0 narrow:search (input.hidden-input)
     -0:04.4.0 vim-mode-plus:activate-insert-mode (atom-text-editor.editor.narrow.narrow-editor.search.vim-mode-plus.normal-mode.prompt)

Non-Core Packages
busy-signal 1.4.3
cursor-history 0.13.0
django-templates 0.5.0
git-blame 1.5.0
git-time-machine 1.5.9
hyperclick 0.1.5
intentions 1.1.5
jump-to-import 3.6.5
language-haml 0.25.2
linter 2.2.0
linter-eslint 8.4.1
linter-ui-default 1.6.10
narrow 0.57.0
persistent-undo 1.3.0
prettier-atom 0.50.0
sync-settings 0.8.3
vim-mode-plus 1.28.0

Thanks for reporting, fixed and released as v0.57.1.

Awesome, thanks for the quick fix!


Print node stats sporadically

This is to lessen the amount of logs on large deployment. We will print
node stats only sporadically as a debugging measure.

OCD run https://ocd.appscale.com:8080/job/Daily Build/3498/


Properly configure logging

Things that need to be improved:

Log errors

Make sure errors are notified in Slack

Disable rocket logging

Make sure that normal logging still works

I think those noisy logs come from our catchers. I am working on implemeting error logging with a Fairing. I will get rid of the catchers as they don't seem to add value.


Fully support v5

Changes

Removes v4 deprecations
Creates cjs, esm & iife builds for all filters and bundle
Use core @pixi/* packages as dependencies so that it can be used with either pixi.js pixi.js-legacy or @pixi/core
Share typings from bundle

TODO

[x] Update documentation on READMEs
[x] Test new bundle typings

Test for typings: https://github.com/bigtimebuddy/pixi-filters-typescript-test
linking pixi-filters works :+1:


feat(cb2-3462): split flatten lambda code

Create transform function for split flatten lambda
A lambda to take records from the existing technical record DynamoDB, flatten the data structure of the records and insert them into a new technical records DynamoDB. Full details of the work can be found here
Related issue: CB2-3462
Type of change

[ ] Bug fix (non-breaking change which fixes an issue)
[X] Feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)

Checklist:

[X] I have performed a self-review of my own code
[X] I have added tests that prove my fix is effective or that my feature works

Would it be of any value to add a one more Unit Test scenario where number of elements in techRecords list is >1, or do you think it would be a stretch of Unit Testing?

Would it be of any value to add a one more Unit Test scenario where number of elements in techRecords list is >1, or do you think it would be a stretch of Unit Testing?

You're right, I'll create a test for it :)


Custom legend

@bobular @dmfalke  I have made PR for initial custom legend works presented at the dev call. This relies on the PR at web-components as well.

@dmfalke so, I noticed an thumbnail capture issue at Scatter plot case with the custom legend: from my limited test it does not occur at other viz though. It happens when using plot option other than 'raw', i.e., smoothed mean or best fit, and thumbnail is not made correctly in those cases - showing previous plot. I think that it is because the custom legend's status is asynchronously happened as compared to thumbnail capture you made. So, I made async/await at the same useEffect so that custom legend is firstly updated and then thumbnail capture is done after that.

I think now both histogram and barplot vizs are working correctly with the custom legend. Surprisingly the checkbox behavior (turning on/off plot trace) worked just fine for the faceted plot without much changes (at least for histogram and barplot vizs) 🎉 Since they both used the same marker style (solid square without border), the current custom legend (PlotLegend component) are working for them even if currently it only has that square marker case. Will need to check marker style for other plot vizs and add markers accordingly.

Thanks for the update @moontrip. One suggestion is to store the checkedLegendItems as a part of the visualization config object. If you do this, be sure to make it optional.

Thanks for the update @moontrip. One suggestion is to store the checkedLegendItems as a part of the visualization config object. If you do this, be sure to make it optional.

@dmfalke Actually I thought of the case as well because, if I remember correctly, there was a talk to keep the status of legend selection. Perhaps I will think of that case next week as I am off from VEuPathDB today.

@dmfalke so, I noticed an thumbnail capture issue at Scatter plot case with the custom legend: from my limited test it does not occur at other viz though. It happens when using plot option other than 'raw', i.e., smoothed mean or best fit, and thumbnail is not made correctly in those cases - showing previous plot. I think that it is because the custom legend's status is asynchronously happened as compared to thumbnail capture you made. So, I made async/await at the same useEffect so that custom legend is firstly updated and then thumbnail capture is done after that.

The await does somehow magically make the thumbnail sort-of work.  However, it doesn't work as desired: the thumbnail isn't made from the last-viewed scatterplot, which may have series deselected via the new legend.
I think the problem can be solved by moving the "set all checked" useEffect to the main ScatterplotViz function, where I think it belongs more naturally (this is where legendItems is made).
Then the toImage useEffect just needs checkedLegendItems as a dependency.
Here's the diff from what I was playing around with
diff --git a/src/lib/core/components/visualizations/implementations/ScatterplotVisualization.tsx b/src/lib/core/components/visualizations/implementations/ScatterplotVisualization.tsx
index fa86efd4..30577b88 100755
--- a/src/lib/core/components/visualizations/implementations/ScatterplotVisualization.tsx
+++ b/src/lib/core/components/visualizations/implementations/ScatterplotVisualization.tsx
@@ -365,6 +365,7 @@ function ScatterplotViz(props: VisualizationProps) {
       : [];
   }, [data, filters]);

+
   //DKDK
   console.log(
     'data.value?.dataSetProcess.series =',
@@ -377,6 +378,11 @@ function ScatterplotViz(props: VisualizationProps) {

   console.log('checkedLegendItems =', checkedLegendItems);

+  useEffect(() => {
+    // use this to set all checked
+    setCheckedLegendItems(legendItems.map((item) => item.label));
+  }, [legendItems]);
+
   return (

@@ -499,7 +505,6 @@ function ScatterplotViz(props: VisualizationProps) {
           //DKDK pass checked state of legend checkbox to PlotlyPlot
           checkedLegendItems={checkedLegendItems}
           setCheckedLegendItems={setCheckedLegendItems}
-          legendItems={legendItems}
         />

         {/* DKDK custom legend */}
@@ -573,8 +578,8 @@ type ScatterplotWithControlsProps = XYPlotProps & {
   // add disabledList
   disabledList: string[];
   //DKDK legend checkbox
+  checkedLegendItems: string[];
   setCheckedLegendItems: (checkedItems: string[]) => void;
-  legendItems: LegendItemsProps[];
 };

 function ScatterplotWithControls({
@@ -589,8 +594,8 @@ function ScatterplotWithControls({
   disabledList,
   updateThumbnail,
   //DKDK legend checkbox
+  checkedLegendItems,
   setCheckedLegendItems,
-  legendItems,
   ...scatterplotProps
 }: ScatterplotWithControlsProps) {
   // TODO Use UIState
@@ -613,20 +618,17 @@ function ScatterplotWithControls({
   //DKDK add async/await for correct thumbnail capture
   useEffect(() => {
     (async () => {
-      if (data != null) {
-        // use this to set all checked
-        await setCheckedLegendItems(legendItems.map((item) => item.label));
-      }
       await plotRef.current
         ?.toImage({ format: 'svg', ...plotDimensions })
         .then(updateThumbnailRef.current);
     })();
-  }, [data, legendItems]);
+  }, [data, checkedLegendItems]);

   return (

       <XYPlot
         {...scatterplotProps}
+        checkedLegendItems={checkedLegendItems}
         ref={plotRef}
         data={data}
         // add controls

However, a bigger structural change is that we need the checked items (if there are any) to be saved in vizConfig.  So I guess we should use vizConfig.checkedLegendItems (and updateVizConfig etc) for the storage instead of useState()

@dmfalke so, I noticed an thumbnail capture issue at Scatter plot case with the custom legend: from my limited test it does not occur at other viz though. It happens when using plot option other than 'raw', i.e., smoothed mean or best fit, and thumbnail is not made correctly in those cases - showing previous plot. I think that it is because the custom legend's status is asynchronously happened as compared to thumbnail capture you made. So, I made async/await at the same useEffect so that custom legend is firstly updated and then thumbnail capture is done after that.

The await does somehow magically make the thumbnail sort-of work. However, it doesn't work as desired: the thumbnail isn't made from the last-viewed scatterplot, which may have series deselected via the new legend.
I think the problem can be solved by moving the "set all checked" useEffect to the main ScatterplotViz function, where I think it belongs more naturally (this is where legendItems is made).
Then the toImage useEffect just needs checkedLegendItems as a dependency.
Here's the diff from what I was playing around with
diff --git a/src/lib/core/components/visualizations/implementations/ScatterplotVisualization.tsx b/src/lib/core/components/visualizations/implementations/ScatterplotVisualization.tsx
index fa86efd4..30577b88 100755
--- a/src/lib/core/components/visualizations/implementations/ScatterplotVisualization.tsx
+++ b/src/lib/core/components/visualizations/implementations/ScatterplotVisualization.tsx
@@ -365,6 +365,7 @@ function ScatterplotViz(props: VisualizationProps) {
       : [];
   }, [data, filters]);

+
   //DKDK
   console.log(
     'data.value?.dataSetProcess.series =',
@@ -377,6 +378,11 @@ function ScatterplotViz(props: VisualizationProps) {

   console.log('checkedLegendItems =', checkedLegendItems);

+  useEffect(() => {
+    // use this to set all checked
+    setCheckedLegendItems(legendItems.map((item) => item.label));
+  }, [legendItems]);
+
   return (

@@ -499,7 +505,6 @@ function ScatterplotViz(props: VisualizationProps) {
           //DKDK pass checked state of legend checkbox to PlotlyPlot
           checkedLegendItems={checkedLegendItems}
           setCheckedLegendItems={setCheckedLegendItems}
-          legendItems={legendItems}
         />

         {/* DKDK custom legend */}
@@ -573,8 +578,8 @@ type ScatterplotWithControlsProps = XYPlotProps & {
   // add disabledList
   disabledList: string[];
   //DKDK legend checkbox
+  checkedLegendItems: string[];
   setCheckedLegendItems: (checkedItems: string[]) => void;
-  legendItems: LegendItemsProps[];
 };

 function ScatterplotWithControls({
@@ -589,8 +594,8 @@ function ScatterplotWithControls({
   disabledList,
   updateThumbnail,
   //DKDK legend checkbox
+  checkedLegendItems,
   setCheckedLegendItems,
-  legendItems,
   ...scatterplotProps
 }: ScatterplotWithControlsProps) {
   // TODO Use UIState
@@ -613,20 +618,17 @@ function ScatterplotWithControls({
   //DKDK add async/await for correct thumbnail capture
   useEffect(() => {
     (async () => {
-      if (data != null) {
-        // use this to set all checked
-        await setCheckedLegendItems(legendItems.map((item) => item.label));
-      }
       await plotRef.current
         ?.toImage({ format: 'svg', ...plotDimensions })
         .then(updateThumbnailRef.current);
     })();
-  }, [data, legendItems]);
+  }, [data, checkedLegendItems]);

   return (

       <XYPlot
         {...scatterplotProps}
+        checkedLegendItems={checkedLegendItems}
         ref={plotRef}
         data={data}
         // add controls

@bobular thank you for your suggestion. Actually the approach I have used async/await for both legendItems and thumbnail at useEffect was designed for scatter plot and it worked just fine. I don't know why you did not have the screenshot correctly. Anyway, the approach you suggested was my initial approach to use useEffect for legendItems (set function) at ScatterplotViz but it didn't work properly for me, especially with plot options with smoothed mean and best fit line: that was the reason why I switched to async/await. However, what I missed is the dependency at useEffect of thumbnail so it may make difference. I will test it too!
And yes I started to set vizConfig.checkedLegendItems for histogram viz and then barplot viz. If it would be done, I think that we can merge this custom legend stuff so that I can add this custom legend to other plot vizs that are being grounded by you 😄

@bobular after testing, the missing dependency at thumbnail's useEffect() at my implementation was the culprit to prevent from correct capture 👍

Great! Good catch @bobular, and nice work @moontrip!
@moontrip, there is a long-standing issue to retain the state of what legend items are visible.

@moontrip, there is a long-standing issue to retain the state of what legend items are visible.

@dmfalke I will think of that specific case later: need to make custom legend work for all vizs, including faceted plot, at first :)

@bobular and @dmfalke histogram and barplot vizs with faceted plot are now changed to use vizConfig.
@bobular Actually I also changed scatterplot viz in this branch (i.e., without faceted plot) to use vizConfig, but I am hesitating to commit because you already started working previous scatter plot to have faceted plot: in that case I can change yours later. If you didn't start the scatter plot yet, then I will also commit it here. Just let me know 👍

Actually I also changed scatterplot viz in this branch (i.e., without faceted plot) to use vizConfig, but I am hesitating to commit because you already started working previous scatter plot to have faceted plot: in that case I can change yours later. If you didn't start the scatter plot yet, then I will also commit it here. Just let me know

Hi @moontrip  - I haven't started on scatterplot faceting - so please commit!

Actually I also changed scatterplot viz in this branch (i.e., without faceted plot) to use vizConfig, but I am hesitating to commit because you already started working previous scatter plot to have faceted plot: in that case I can change yours later. If you didn't start the scatter plot yet, then I will also commit it here. Just let me know

Hi @moontrip - I haven't started on scatterplot faceting - so please commit!

Thank you for your info, @bobular 👍 I just committed scatter plot viz as well.

now make this as a normal PR so that it can be used for other Vizs with faceted plot, which I will handle the addition of this custom legend to those vizs - done for histogram and barplot vizs, and scatter plot viz in part.

Reviewing as fast as I can now.
From testing, I see there's a general logic/wiring issue that I'll make another ticket for and fix at a later date. Here's the ticket: https://github.com/VEuPathDB/web-eda/issues/676
We shouldn't show the gray No data option for overlay variable sex in the example below.  The problem is that showMissing or showMissingOverlay booleans don't take into account the completeCases data, which they should.

Thanks @bobular ! 👍 I also saw your report regarding the bug(?). Initially I thought I made a mistake to incorrectly show the legend item, No data, but after reading the description carefully, I realized that it was related to the switch behavior. Glad that my custom legend helps to identify the issue (and also relieved myself a bit that the legend logic worked fine :) )

thank you for your review and comments @bobular ! 👍 Will work for merging


Bypass Config File?

Hi!
Is it possible to 'bypass' the config file?
I'm using multiple apps and i would like not to set the ID and Secret on a file but get it from database storage and change it.
I did try to leave it bank and/or use a "fake" one, then change it by $this->config->set_item()
but the lib didn't even let me to start.

The library loads the config file on line 40 in application/libraries/Facebook.php.
Comment that out and load you config from the database in any way you would like. Remember to update the settings array in line 49-53 accordingly. That should do the trick.

I ended up with this... does the job, but... oh well..
`    public function __construct($args)
{
// Load config
$this->load->config('facebook');
    // Load required libraries and helpers
    //$this->load->library('session');
    //$this->load->helper('url');

    // Initiate the Facebook SDK
    if (!isset($this->fb))
    {
        if(!$args)
        {
            $this->fb = new Facebook\Facebook([
                'app_id' => $this->config->item('facebook_app_id'),
                'app_secret' => $this->config->item('facebook_app_secret'),
                'default_graph_version' => $this->config->item('facebook_graph_version')
            ]);
        }
        else
        {
            if(!isset($args['version']))
            {
                $args['version'] = 'v2.5';
            }
            $this->fb = new Facebook\Facebook([
                'app_id' => $args['app_id'],
                'app_secret' => $args['app_secret'],
                'default_graph_version' => $args['version']
            ]);
        }
    }

then i'm calling it with$args = array(
'app_id' => 'APP_ID',
'app_secret' => 'APP_SCRT',
'version' => 'v2.5'
);
$this->load->library('facebook',$args);`

That looks like a decent workaround. I'll consider maybe updating the library to support custom config in the future.


Microsoft .NET SDK 6.0.412 (x64) is detected as Microsoft.DotNet.SDK.7 < 7.0.100

Brief description of your issue
Microsoft .NET SDK 6.0.412 (x64) is incorrectly identified as Microsoft.DotNet.SDK.7 version < 7.0.100, triggering an install of Microsoft.DotNet.SDK.7 version 7.0.306 every time I run winget upgrade --all, which is already installed.
Steps to reproduce
winget upgrade --all
Expected behavior
The .NET 6 SDK should be detected as Microsoft.DotNet.SDK.6 with an accurate version, or ignored.
Before installing a package version, a system check for that package should be made to avoid slowly downloading and installing a large package version that is already installed, in case multiple installations end up mapping to the same package, which has been a recurring issue for winget.
Actual behavior
The presence of the .NET 6 SDK triggers the reinstall of the .NET 7 SDK each time winget upgrade --all is executed.
Environment
Windows Package Manager (Preview) v1.5.441-preview
Copyright (c) Microsoft Corporation. All rights reserved.

Windows: Windows.Desktop v10.0.19045.3208
System Architecture: X64
Package: Microsoft.DesktopAppInstaller v1.20.441.0

Logs: %LOCALAPPDATA%\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\LocalState\DiagOutputDir

User Settings: %LOCALAPPDATA%\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\LocalState\settings.json

Links
---------------------------------------------------------------------------
Privacy Statement   https://aka.ms/winget-privacy
License Agreement   https://aka.ms/winget-license
Third Party Notices https://aka.ms/winget-3rdPartyNotice
Homepage            https://aka.ms/winget
Windows Store Terms https://www.microsoft.com/en-us/storedocs/terms-of-sale

Admin Setting                             State
--------------------------------------------------
LocalManifestFiles                        Disabled
BypassCertificatePinningForMicrosoftStore Disabled
InstallerHashOverride                     Disabled
LocalArchiveMalwareScanOverride           Disabled

I'm running in a corporate environment under an unprivileged account, entering privileged account credentials when prompted by the installer. I'm not able to run winget itself under the privileged account, because that results in this error:
Failed when searching source: winget
An unexpected error occurred while executing the command:
0x8a15000f : Data required by the source is missing

Even getting that far under that account was a huge battle because winget doesn't have a simple installer. After trying a bunch of suggestions in #1861, I've gotten it only this far.
Under that account, winget source list returns:
Name    Argument
-----------------------------------------------------
msstore https://storeedgefd.dsx.mp.microsoft.com/v9.0
winget  https://cdn.winget.microsoft.com/cache

Under that account, winget --info returns:
Windows Package Manager (Preview) v1.5.441-preview
Copyright (c) Microsoft Corporation. All rights reserved.

Windows: Windows.Desktop v10.0.19045.3208
System Architecture: X64
Package: Microsoft.DesktopAppInstaller v1.20.441.0

Logs: %LOCALAPPDATA%\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\LocalState\DiagOutputDir

User Settings: %LOCALAPPDATA%\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\LocalState\settings.json

Links
---------------------------------------------------------------------------
Privacy Statement   https://aka.ms/winget-privacy
License Agreement   https://aka.ms/winget-license
Third Party Notices https://aka.ms/winget-3rdPartyNotice
Homepage            https://aka.ms/winget
Windows Store Terms https://www.microsoft.com/en-us/storedocs/terms-of-sale

Admin Setting                             State
--------------------------------------------------
LocalManifestFiles                        Disabled
BypassCertificatePinningForMicrosoftStore Enabled
InstallerHashOverride                     Disabled
LocalArchiveMalwareScanOverride           Disabled

[Policy] Area-Matching
Duplicate of #3070


224 | OSSL_DEPRECATEDIN_3_0 int DH_compute_key(unsigned char *key,

Output
===> phpbrew will now build 7.0.33
---> Parsing variants from command arguments '+default -- --with-openssl'
===> Loading and resolving variants...
Checking distribution checksum...
Checksum matched: 4933ea74298a1ba046b0246fe3771415c84dfb878396201b56cb5333abe86f07
===> Distribution file was successfully extracted, skipping...
Source Directory: /home/Ledesma/.phpbrew/build/php-7.0.33
Found existing Makefile, running make clean to ensure everything will be rebuilt.
You can append --no-clean option after the install command if you don't want to rebuild.
===> Running make clean: /usr/bin/make -C '/home/Ledesma/.phpbrew/build/php-7.0.33' --quiet 'clean'
Running Command:/usr/bin/make -C '/home/Ledesma/.phpbrew/build/php-7.0.33' --quiet 'clean'
Writing variant info to /home/Ledesma/.phpbrew/php/php-7.0.33/phpbrew.variants
===> Checking patches...
Checking patch for replace apache php module name with custom version name
Checking patch for replace freetype-config with pkg-config on php older than 7.4
Enabled variants: [xml, opcache, bcmath, bz2, calendar, cli, ctype, dom, fileinfo, filter, ipc, json, mbregex, mbstring, mhash, pcntl, pcre, pdo, pear, phar, posix, readline, sockets, tokenizer, curl, openssl, zip]
Disabled variants: []
Found existing build.log, renaming it to /home/Ledesma/.phpbrew/build/php-7.0.33/build.log.1658577142
===> Configuring 7.0.33...

Use tail command to see what's going on:
   $ tail -F '/home/Ledesma/.phpbrew/build/php-7.0.33/build.log'

./configure '--cache-file=/home/Ledesma/.phpbrew/cache/config.cache' '--prefix=/home/Ledesma/.phpbrew/php/php-7.0.33' '--with-config-file-path=/home/Ledesma/.phpbrew/php/php-7.0.33/etc' '--with-config-file-scan-dir=/home/Ledesma/.phpbrew/php/php-7.0.33/var/db' '--disable-all' '--enable-phar' '--enable-session' '--enable-short-tags' '--enable-tokenizer' '--with-pcre-regex' '--with-zlib=/usr' '--enable-dom' '--enable-libxml' '--with-libxml-dir=/usr' '--enable-simplexml' '--enable-xml' '--enable-xmlreader' '--enable-xmlwriter' '--with-xsl' '--enable-opcache' '--enable-bcmath' '--with-bz2=/usr' '--enable-calendar' '--enable-cli' '--enable-ctype' '--enable-fileinfo' '--enable-filter' '--enable-shmop' '--enable-sysvsem' '--enable-sysvshm' '--enable-sysvmsg' '--enable-json' '--enable-mbregex' '--enable-mbstring' '--with-mhash' '--enable-pcntl' '--with-pcre-dir=/usr' '--enable-pdo' '--with-pear=/home/Ledesma/.phpbrew/php/php-7.0.33/lib/php/pear' '--enable-posix' '--with-readline=/usr' '--enable-sockets' '--with-curl=/usr' '--with-openssl' '--enable-zip' >> '/home/Ledesma/.phpbrew/build/php-7.0.33/build.log' 2>&1
===> Checking patches...
Checking patch for php5.3.x on 64bit machine when intl is enabled.
Checking patch for openssl dso linking patch
Checking patch for php5.6 with openssl 1.1.x patch.
===> Building...
make >> '/home/Ledesma/.phpbrew/build/php-7.0.33/build.log' 2>&1
Error: Make failed:
The last 5 lines in the log file:
      |         ^~~

/usr/include/openssl/dh.h:224:27: nota: se declara aquí

  224 | OSSL_DEPRECATEDIN_3_0 int DH_compute_key(unsigned char *key,

      |                           ^~~~~~~~~~~~~~

make: *** [Makefile:629: ext/openssl/openssl.lo] Error 1

Please checkout the build log file for more details:
         tail /home/Ledesma/.phpbrew/build/php-7.0.33/build.log

Command
phpbrew --debug install 7.0  +default -- --with-openssl
Build Log
make >> '/home/Ledesma/.phpbrew/build/php-7.0.33/build.log' 2>&1
Error: Make failed:
The last 5 lines in the log file:
|         ^~~
/usr/include/openssl/dh.h:224:27: note: is declared here
224 | OSSL_DEPRECATEDIN_3_0 int DH_compute_key(unsigned char *key,
  |                           ^~~~~~~~~~~~~~

make: *** [Makefile:629: ext/openssl/openssl.lo] Error 1
Please checkout the build log file for more details:
tail /home/Ledesma/.phpbrew/build/php-7.0.33/build.log
Platform
OS:
Fedora Linux 36 (KDE Plasma) x86_64
Installing PHP: 7.0.33

The issue is related to this.
The openssl extension need to use the OpenSSL 1.x version, but it only includes the OpenSSL 3.x version in the Fedora Linux 36.
I prepare for the fresh and clean Fedora Linux 36 and do the following steps:
To resolve above issue, we need to compile the OpenSSL 1.x firstly. And compiling steps are as follows:

yum install wget perl
yum groupinstall "Development tools"
cd $HOME
wget https://www.openssl.org/source/openssl-1.1.1i.tar.gz
tar -xzf $HOME/openssl-1.1.1i.tar.gz
cd openssl-1.1.1i
./Configure --prefix=$HOME/openssl-1.1.1i/bin -fPIC -shared linux-x86_64
make -j 8
make install
export PKG_CONFIG_PATH=$HOME/openssl-1.1.1i/bin/lib/pkgconfig
export LD_LIBRARY_PATH=/usr/lib/:/usr/local/lib:$HOME/openssl-1.1.1i/bin/lib

After running above steps, running the phpbrew --debug install 7.0 +default again:
$ phpbrew --debug install 7.0 +default
===> phpbrew will now build 7.0.33
---> Parsing variants from command arguments '+default'
===> Loading and resolving variants...
Checking distribution checksum...
Checksum matched: 4933ea74298a1ba046b0246fe3771415c84dfb878396201b56cb5333abe86f07
===> Distribution file was successfully extracted, skipping...
Source Directory: /root/.phpbrew/build/php-7.0.33
Writing variant info to /root/.phpbrew/php/php-7.0.33/phpbrew.variants
===> Checking patches...
Checking patch for replace apache php module name with custom version name
Checking patch for replace freetype-config with pkg-config on php older than 7.4
Enabled variants: [xml, opcache, bcmath, bz2, calendar, cli, ctype, dom, fileinfo, filter, ipc, json, mbregex, mbstring, mhash, pcntl, pcre, pdo, pear, phar, posix, readline, sockets, tokenizer, curl, openssl, zip]
Disabled variants: []
Found existing build.log, renaming it to /root/.phpbrew/build/php-7.0.33/build.log.1670299628
===> Configuring 7.0.33...

Use tail command to see what's going on:
   $ tail -F '/root/.phpbrew/build/php-7.0.33/build.log'
......
config-set succeeded
Source directory: /root/.phpbrew/build/php-7.0.33
Congratulations! Now you have PHP with 7.0.33 as php-7.0.33

* To configure your installed PHP further, you can edit the config file at
    /root/.phpbrew/php/php-7.0.33/etc/php.ini

To use the newly built PHP, try the line(s) below:

    $ phpbrew use php-7.0.33

Or you can use switch command to switch your default php to php-7.0.33:

    $ phpbrew switch php-7.0.33

Enjoy!


Add "--starred" for "drive push"

Currently there is "--starred" flag for "drive pull". Therefore, I think it would be great to add "--starred" flag for "drive push" to complement that. Thank you!

Hello there @devinalvaro, thank you for the request and welcome to drive! My apologies for the late reply, I've been swamped with a bunch of work.
Sounds good to me, but I think the caller should realize that pushing --starred will push only starred files and directories.
Thank you for the feature request!


About the performance gap with the released checkpoints

Thanks for your great work. I have two questions:

With the same kinetics400 validation set (19796 videos) as that of mmaction, the same setting as your configs/recognition/vit/vitclip_base_k400.py (32 x 3 x 1 Views during testing), the checkpoint vit_b_clip_32frame_k400.pth you provided, my evaluation results on kinetics400 validation set is 83.34 (acc@1) and 96.45 (acc@5), which is lower than your results given in README.md, i.e., 84.7 (acc@1) and 96.7 (acc@5). Is there any possible reason for the gap (e.g., do you have a smaller kinetics400 validation set due to expired links)?

The checkpoint vit_b_clip_32frame_diving48.pth you provided is tested on 32 x 1 x 1 Views, according to README.md. But the Views in configs/recognition/vit/vitclip_base_diving48.py is 32 x 1 x 3. My evaluation results is 88.43 (acc@1, 32 x1 x 3) and 88.32 (acc@1, 32 x 1 x 1), which is lower than your results given in README.md, i.e., 88.9 (acc@1, 32 x 1 x 1). Is there any possible reason for the gap?

I am also confused about the following mismatch:

The checkpoint vit_b_clip_32frame_k700.pth you provided is tested on 32 x 3 x 3 Views, according to README.md. But the Views in configs/recognition/vit/vitclip_base_k700.py is 8 x 3 x 3.

With the same kinetics700 validation set (34824 videos) as that of mmaction, the checkpoint vit_b_clip_32frame_k700.pth you provided and 32 x 3 x 3 testing Views, my evaluation result on kinetics700 validation set is 75.78 (acc@1), which is lower than your result given in README.md, i.e., 76.9 (acc@1). Is there any possible reason for the gap?

Hi @yangbang18 , thanks for your interest in our work.

We have 19404 validation videos. We are using the Kinetics-400 dataset from here.
It may be caused by the difference of environment and device.
The config is an example. You could modify the frames and frame_interval for different settings.
I don't have the access to the K700 dataset now. We were downloading the K700 dataset following this

Sorry, I can't visit your kinetics400 link (even with VPN).
BTW, I have some new findings recently.
With the same kinetics400 validation set (19796 videos) as that of mmaction, I re-produce the training process at 8 V100s with configs/recognition/vit/vitclip_base_k400.py, which produces 83.36 (acc@1) and 96.41 (acc@5) under 32x3x1 views. These results are similar to the checkpoint vit_b_clip_32frame_k400.pth you provided.
With your acc@1 (84.9% according to the paper) reported on 19404 videos, the performance range of the model on my validation set (19796 videos) would be [(19404 * 84.9% + 392 * 0%) / 19796 = 83.2%, (19404 * 84.9% + 392 * 100%) / 19796 = 85.2%]
Given that my re-produced 83.36 is close to the lower bound (83.2), I suspect the missing 392 (19796 - 19404) videos in your validation set are hard for the model to classify.
About the claim: It may be caused by the difference of environment and device, I also had a try. I evaluated the released vit_b_clip_32frame_k400.pth checkpoint at V100 and 4090. Both devices gave the same results.

Hi, the link is from academic torrent. The link is provided in MMAction2 . You may try other VPN. I will check the results on Diving48.

I downloaded kinetics 400 at https://opendatalab.com/OpenMMLab/Kinetics-400, the same data as MMAction2.

I downloaded kinetics 400 at https://opendatalab.com/OpenMMLab/Kinetics-400, the same data as MMAction2 (i.e., the same number of training/validation videos). So did the kinetics 700.
I can reproduce Diving48 results by training. So you can overlook this part.

Hello, @yangbang18
I've been trying to reproduce Diving48 results by training recently. But I can't obtain the reported results.
Could you kindly provide your settings, configuration, or log?
Thank you.


Setup RethinkDB server to be used in conjunction with Deepstream

RethinkDB will save all our critical data (e.g. sensor readings).

Created a branch here:
https://github.com/CSUFTitanRover/TitanRover2018/tree/feature/UserInterface-RethinkDB-24

So I tried setting up rethinkDB on the Nvidia Tegra and ran into an issue that the platform was not supported. Tried compiling rethinkDB directly on the Tegra and that didn't work either. So I went ahead and tried to install mongoDB since it also has supported integration with Deepstream. MongoDB works and is installed! I think we'll just go with mongoDB since it works and there are no losses using it over rethinkDB.