Connection to rabbitmq with SSL doesn't work

SUMMARY
We have stackstorm v3.2.0 on openshift and the connection to rabbitmq with SSL worked normally. Now we would like to upgrade stackstorm to v3.5.0, but the connection to the rabbitmq with SSL seems not work.
STACKSTORM VERSION
st2: 3.5.0
OS, environment, install method
OCP: 4.8.13
Docker image OS: redhat 8.5
Certificate: self signed certificate
Rabbitmq version: 3.8.4
Rabbitmq listener:
Interface: [::], port: 25672, protocol: clustering, purpose: inter-node and CLI tool communication
Interface: [::], port: 5672, protocol: amqp, purpose: AMQP 0-9-1 and AMQP 1.0
Interface: [::], port: 5671, protocol: amqp/ssl, purpose: AMQP 0-9-1 and AMQP 1.0 over TLS
Interface: [::], port: 15672, protocol: http, purpose: HTTP API

Rabbitmq config:
    listeners.ssl.default             = 5671
    ssl_options.cacertfile            = /etc/cert/cacert.pem
    ssl_options.certfile              = /etc/cert/cert.pem
    ssl_options.keyfile               = /etc/cert/key.pem
    ssl_options.verify                = verify_peer
    ssl_options.fail_if_no_peer_cert  = false

st2.conf:
    url = amqp://user:pwd@chatops-rabbitmq-ha-discovery:5671
    ssl = True
    ssl_keyfile = /etc/cert/rabbitmq/key.pem
    ssl_certfile = /etc/cert/rabbitmq/cert.pem
    ssl_cert_reqs = optional
    ssl_ca_certs = /etc/cert/rabbitmq/cacert.pem
    login_method = PLAIN

Steps to reproduce the problem
stackstorm v3.2.0 on openshift connected to rabbitmq with SSL normally,  when upgrade stackstorm to v3.5.0, the connection to the same rabbitmq with SSL does not work. Without SSL, stackstorm v3.5.0 can connect to rabbitmq normally.
Expected Results
The stackstorm should be able to connect to rabbitmq with SSL normally. Here's the connection successfully log from  stackstorm v3.2.0:
2021-11-17 03:30:29,698 DEBUG [-] Using SSL context for RabbitMQ connection: {'keyfile': '/etc/cert/rabbitmq/key.pem', 'certfile': '/etc/cert/rabbitmq/cert.pem', 'cert_reqs': <VerifyMode.CERT_OPTIONAL: 1>, 'ca_certs': '/etc/cert/rabbitmq/cacert.pem'}
2021-11-17 03:30:29,698 INFO [-] Starting ActionExecutionDispatcher...
2021-11-17 03:30:29,724 DEBUG [-] Start from server, version: 0.9, properties: {'capabilities': {'publisher_confirms': True, 'exchange_exchange_bindings': True, 'basic.nack': True, 'consumer_cancel_notify': True, 'connection.blocked': True, 'consumer_priorities': True, 'authentication_failure_close': True, 'per_consumer_qos': True, 'direct_reply_to': True}, 'cluster_name'<EMAIL_ADDRESS>'copyright': 'Copyright (c) 2007-2020 VMware, Inc. or its affiliates.', 'information': 'Licensed under the MPL 1.1. Website: https://rabbitmq.com', 'platform': 'Erlang/OTP 23.0.1', 'product': 'RabbitMQ', 'version': '3.8.4'}, mechanisms: [b'AMQPLAIN', b'PLAIN'], locales: ['en_US']
2021-11-17 03:30:29,728 INFO [-] Connected to amqp://admin:**@chatops-rabbitmq-ha-discovery:5671//
2021-11-17 03:30:29,729 DEBUG [-] using channel_id: 1
2021-11-17 03:30:29,730 DEBUG [-] Channel open

Actual Results
Stackstorm connection to rabbitmq with SSL failed, most pods show CrashLoopBackOff with below log:
2021-11-17 01:37:45,290 DEBUG [-] Registering exchanges...
2021-11-17 01:37:45,290 DEBUG [-] Using SSL context for RabbitMQ connection: {'keyfile': '/etc/cert/rabbitmq/key.pem', 'certfile': '/etc/cert/rabbitmq/cert.pem', 'cert_reqs': <VerifyMode.CERT_OPTIONAL: 1>, 'ca_certs': '/etc/cert/rabbitmq/cacert.pem'}
2021-11-17 01:37:47,367 DEBUG [-] Received RabbitMQ server error, sleeping for 10 seconds before retrying: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:897)
2021-11-17 01:37:57,415 DEBUG [-] Failed to re-establish connection to RabbitMQ server, retrying in 2.0 seconds: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:897)
2021-11-17 01:37:59,436 DEBUG [-] Failed to re-establish connection to RabbitMQ server, retrying in 4.0 seconds: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:897)
2021-11-17 01:38:03,497 DEBUG [-] Failed to re-establish connection to RabbitMQ server, retrying in 6.0 seconds: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:897)
2021-11-17 01:38:09,588 ERROR [-] Connections to RabbitMQ cannot be re-established: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:897)
Traceback (most recent call last):
  File "/opt/stackstorm/st2/lib/python3.6/site-packages/st2common/transport/connection_retry_wrapper.py", line 131, in run
    channel = connection.channel()
  File "/opt/stackstorm/st2/lib/python3.6/site-packages/kombu/connection.py", line 283, in channel
    chan = self.transport.create_channel(self.connection)
  File "/opt/stackstorm/st2/lib/python3.6/site-packages/kombu/connection.py", line 859, in connection
    max_retries=1, reraise_as_library_errors=False
  File "/opt/stackstorm/st2/lib/python3.6/site-packages/kombu/connection.py", line 439, in _ensure_connection
    callback, timeout=timeout
  File "/opt/stackstorm/st2/lib/python3.6/site-packages/kombu/utils/functional.py", line 325, in retry_over_time
    return fun(*args, **kwargs)
  File "/opt/stackstorm/st2/lib/python3.6/site-packages/kombu/connection.py", line 866, in _connection_factory
    self._connection = self._establish_connection()
  File "/opt/stackstorm/st2/lib/python3.6/site-packages/kombu/connection.py", line 801, in _establish_connection
    conn = self.transport.establish_connection()
  File "/opt/stackstorm/st2/lib/python3.6/site-packages/kombu/transport/pyamqp.py", line 128, in establish_connection
    conn.connect()
  File "/opt/stackstorm/st2/lib/python3.6/site-packages/amqp/connection.py", line 323, in connect
    self.transport.connect()
  File "/opt/stackstorm/st2/lib/python3.6/site-packages/amqp/transport.py", line 115, in connect
    self.socket_settings, self.read_timeout, self.write_timeout,
  File "/opt/stackstorm/st2/lib/python3.6/site-packages/amqp/transport.py", line 225, in _init_socket
    self._setup_transport()
  File "/opt/stackstorm/st2/lib/python3.6/site-packages/amqp/transport.py", line 405, in _setup_transport
    self.sock.do_handshake()
  File "/opt/stackstorm/st2/lib/python3.6/site-packages/eventlet/green/ssl.py", line 313, in do_handshake
    super(GreenSSLSocket, self).do_handshake)
  File "/opt/stackstorm/st2/lib/python3.6/site-packages/eventlet/green/ssl.py", line 162, in _call_trampolining
    return func(*a, **kw)
  File "/usr/lib64/python3.6/ssl.py", line 1036, in do_handshake
    self._sslobj.do_handshake()
  File "/usr/lib64/python3.6/ssl.py", line 648, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:897)

It looks like a certificate problem
You could try and connect over SSL but remove some of the verify steps, to help identify where the problem is, e.g.

If your rabbitMQ uses verify_none instead of verify_peer can your StackStorm instance connect?
If your ST2 doesn't verify the certificate from rabbitMQ can you connect (ssl_cert_reqs = None in st2.conf)

I'd also double check that the certificates are correct in case of any problems there.
Can you connect from one of the ST2 3.5.0 pods to RabbitMQ using openSSL and passing the certificates you passed in the ST2.conf (see https://www.rabbitmq.com/troubleshooting-ssl.html#openssl-tools for help)?

@amanda11, thanks your suggestions.
I re-generated the certificate files, but the stackstorm still can not connect to rabbitmq.
I tried to connect to Rabbitmq using openSSL client with the command below, and it can connect normally with verify return code 0
openssl s_client -connect <IP_ADDRESS>:5671 -cert cert.pem -key key.pem -CAfile cacert.pem  -tls1_2 -cipher ALL
Then I tried to set the rabbitMQ uses verify_none, this time the Stackstorm instances can connect successfully.

Is RabbitMQ configured to trust the signing authority of the certificate that StackSotmr is sending?

The rabbbitmq is configured as below, what's the configuration you mean to trust the signing authority of the certificate that StackStorm?
    listeners.ssl.default             = 5671
    ssl_options.cacertfile            = /etc/cert/cacert.pem
    ssl_options.certfile              = /etc/cert/cert.pem
    ssl_options.keyfile               = /etc/cert/key.pem
    ssl_options.verify                = verify_peer
    ssl_options.fail_if_no_peer_cert  = false

So StackStorm will send a client certificate which will be signed by a certificate authority. That certificate authority needs to be trusted by RabbitMQ. The ssl_options.cacertfile is the trusted CA bundle path - so needs to include the certificate authority that signed the certificate that StackStorm sent.
See: https://www.rabbitmq.com/ssl.html#peer-verification-how-it-works

The provided cacertfile /etc/cert/cacert.pem is the file with certificate authority, and has been configured and provided to RabbitMQ for authentication.

@amanda11, could you pls have a look at above comment? what's the tls protocal available from StackStorm side? Any thoughts for the error message from you?

I don't think we specify the tls version, so I think it is dependant on your O/S. I had a good look around and I think its just up to the python version on your distribution. I believe with RH8  then that's tls v1.2 and v1.3. (I think the exception trace is not related to the version - the name of the exception class doesn't change between tls versions).
I would suspect though that if you managed to connect successfully when rabbitMQ verify_peer was none, that it wasn't a version problem. (But I have known that the errors can be sometimes confusing...)
If you can put on extra debug on the rabbitMQ side then that might help, as I think the error needs to be investigated from the rabbitMQ side as to why it is failing to verify the peer connection.
According to https://www.rabbitmq.com/ssl.html#peer-verification then if the problem is with the certificate that StackStorm is sending to RAbbitMQ then on the rabbitMQ logs you should get errors indicating if its that it's unknown CA, or certificate expired.
It appears to me that StackStorm is just reporting that RabbitMQ rejected the connection, so the key to resolve is to look at the RabbitMQ logs to see why its being rejected.

The error message seems to imply that the client is trying to connect using SSLv3 and the RabbitMQ server no longer supports SSLv3 as it is now considered "Insecure" and it use has been discouraged since the POODLE attacks compromised it.  You could try forcing the SSL Version to TLS 1.2 by adding the following to the config along with the other config options set above:
ssl_version=ssl.PROTOCOL_TLSv1_2


[Feature][dlink-executor] UDF management center

Search before asking

[X] I had searched in the issues and found no similar feature requirement.

Description

UDF maybe contains other resources, dynamic library, etc. bundle all of them in one jar is convenient
UDF may be used in various tasks, load and upload is a redundancy work,
the jar of the UDF version may be changed, there is a potent dangerous upload the wrong version.

according to the above reasons, managing all UDF jars is necessary
Use case
No response
Related issues
No response
Are you willing to submit a PR?

[ ] Yes I am willing to submit a PR!

Code of Conduct

[X] I agree to follow this project's Code of Conduct

Design:

the jar of UDF could be as binary data in the MySQL database.
when uploading the jar to the database, we can analyze the customized UDF class name by the FLINK UDF interface.
after selecting a special jar in the task configuration, the user gets autocomplete power.

database table
create table dinky.dinky_udf_jar (     id               int auto_increment         primary key,     tenant_id        int           null,     name             char(64)      not null,     alias            char(64)      null,     function_class json          null,     description      varchar(4096) null,     type             tinyint(1)    null,     url              text          null,     jar              longblob      null,     create_name      datetime      null,     update_time      datetime      null on update CURRENT_TIMESTAMP );
url and jar items according to url, are mutual, function_class contains UDF class package that is acquired from the jar when storing the jar package in database. is an array represented by json.

the UDF online and git repository could produce a jar to the dinky_udf_jar table. dinky_udf_jar haven't version item because the version is defined in jar name. even if the jar file name doesn't contain version information, the uploader should add it.

Design:

the jar of UDF could be as binary data in the MySQL database.
when uploading the jar to the database, we can analyze the customized UDF class name by the FLINK UDF interface.
after selecting a special jar in the task configuration, the user gets autocomplete power.

database table
create table dinky.dinky_udf_package
(
    id             int auto_increment primary key,
    tenant_id      int           null,
    name           char(64)      not null,
    alias          char(64)      null,
    function_class json          null,
    description    varchar(4096) null,
    path_type      tinyint(1)    null,
    package_type   tinyint(1)    null,
    url            text          null,
    package        longblob      null,
    version        char(32)      null,
    create_name    datetime      null,
    update_time    datetime      null on update CURRENT_TIMESTAMP
);

url and package items according to url, are mutual, function_class contains UDF class package that is acquired from the package when storing it in database. is  represented by json.
the json format like this:
{
    "com.diny.udf.className": "identifier",
    "com.diny.udf.classNameOther": "identifierOther"
}

identifier suppose default UDF function name in sql, because the identifier only need keep unique in one task( not global unique), so that validate this constraint at task validation step. if necessary, use can custom identifier  in sql statement.
the UDF online editor and git repository could produce a package to the dinky_udf_package table.

#2491


HELP!! Negation, and, or does not work

Hi All,
Thanks in advanced for any help provided. I am having some very frustrating issues writing yaml rules with ElastAlert and Negations, and, or.
I cannot get Negations, and or to work, I have tried an exact copy of the example on the docs (ensuring every space is correct), I have tried other examples from issues listed here. Every time I get a similar error which is:
RequestError(400, u'parsing_exception', {u'status': 400, u'error': {u'line': 1, u'root_cause': [{u'reason': u'[and] query malformed, no start_object after query name', u'type': u'parsing_exception', u'line': 1, u'col': 206}], u'type': u'parsing_exception', u'reason': u'[and] query malformed, no start_object after query name', u'col': 206}})
This works:
filter:
    - term:
        field1: "value"
    - term:
        field2: "value"

Any of the following DO NOT work:
filter:
- and:
    - term:
        field1: "value"
    - term:
        field2: "value"

OR
filter:
- or:
    - term:
        field: "value"
    - wildcard:
        field: "foo*bar"
    - and:
        - not:
            term:
              field: "value"
        - not:
            term:
              _type: "something"

I have checked the correct spacing in front of every line (magical 4 spaces) no matter what I do I get the same error. I am using the latest version of ElastAlert and Elastic Search 5.2 (just upgraded from 5.x but no difference)
Many thanks

This is a 5.x issue. You can use the workaround here #912

Thanks is there any plans to fix this?

Is this issue fixed? How to use must or must_not?

@mircopolo As you said and, or and not won't work with an ES5+ cluster. In ES they should be replaced by should, must, must_not from the bool filter type.
I tried a lot of bool filters, some wre complex, some were very simple, similar to the first example you gave:
filter:
  - bool:
    should:
      - term:
        field1: 'value'
      - term:
        field2: /regex/

But none worked. I always have this error message:
Error running query: TransportError(400, u'parsing_exception', u'[bool] query malformed, no start_object after query name')

And the documentation is still very outdated https://elastalert.readthedocs.io/en/latest/recipes/writing_filters.html#negation-and-or, only talking about the old syntax.
The documention should give a compatibility map, of which queries are supported for each ES version supported.
bool doesn't seem to be supported or if someone can happen to make it works please share your valid filter.

The examples and documentation are a bit dated. I'd recommend using query strings if you are using ES5 or ES6. You should be able to construct boolean logic.
Example:
filter:
- query_string:
     query: "(NOT field1: value OR field2: value) AND field3: value"

If someone wants to add better support for using the ES6 syntax for bool queries, I'd happily accept the changes.

Hi Qmando
I am facing same issue after elastic search upgrade from 2.x to 5.x filter not working.
Filter which was in 2.x below same is not working after elastic search upgrad to 5.x
filter:

or:

term:
sp-message: "Got exception:"
term:
sp-message: "Exception while trying to run program"
wildcard:
sp-message: "Unexpected error:"
wildcard:
sp-message: "Thrift error for org.apache.tephra.distributed."

So now i am trying to change the filter to acheive the same which is not working.
filter:

query:
query_string:
query: 'sp-message: "Got exception:" OR sp-message: "Unexpected error:" OR sp-message: "Thrift error for org.apache.tephra.distributed."'

So when i use the wildcard in the query it is not pulling all matches its only pulling latest match. Could you please help me acheiving same.

My current filter is below:
filter:

query:
query_string:
query: 'sp-message: "Got exception:" OR sp-message: "Unexpected error:" OR sp-message: "Thrift error for org.apache.tephra.distributed."'

We we used this with wildcard entry which matches wildcard the latest one is picking up instead of all matches that wild card query has.

I do not know why * is not appearing when i submit the details here not showing * inside query wildcard

Try:
filter:
 - query:
      query_string:
        query: "\"Got exception\" OR \"Unexpected error\" OR \"Thrift error for org.apacje.tephra.distributed\""
        default_field: sp-message

This should work if sp-message is using the default analyzer. You don't actually need the *s unless it's an unanalyzed field or there's no space in between words (like somethingUnexpected or error:Timeout).
By the way, you can remove formatting on github by surrounding text with triple backticks, ```

It would be a great feature to be able to put directly the kibana syntax in the rule.yaml
I think of something like directly the query object in order to pass it directly to ES, elastalert would juste add the range for the date
Maybe a simple way (that wouldn't break anything) would be to have a new entry query in the yaml
If this query is there, it is passed directly to ES
in
elastalert/elastalert.py
    def get_query

        es_filters = {'filter': {'bool': {'must': filters}}}

... if query is present...
        es_filters = {'filter': query}

Hi @Qmando , I am facing similar problems with AND in filters. Mentioned in #3119.
I am trying with
filter:
- query:
      query_string:
          query: "r1_ AND r2_ AND r3_"
          default_field: rule_name

and I don't get any hits, but if I just put
filter:
- query:
      query_string:
          query: "r1_ "
          default_field: rule_name

I get 1 hit (as expected) but not working with more values. Neither working this way (again for only 1 term it gets 1 hit but not for more values)
filter:
- term:
      rule_name: "r1_"
- term:
      rule_name: "r2_"
- term:
      rule_name: "r3_"

Because as I say in #3119, using
terms:
rule_name:
   - r1_
   - r2_
   - r3_

filter as OR, not AND that is what I need
Thanks, Bea


[Housekeeping] Update xUnit version to v2.3 beta5

Updated the xUnit version we use.
Most of the changes are to fix the xUnit analyzer warnings as there is a better way to assert test outcome. Also it appeared that for the CreateWithPropertyDecoratedWithRangeAttributeReturnsCorrectResult and CreateWithFieldDecoratedWithRangeAttributeReturnsCorrectResult tests we don't use the passed inline data, so we could simplify the logic.
@moodmosaic @adamchester Please take a look 😉

Closed as agreed.


Needed grouping of tasks based on projects

Hi,
This is a feature request. OR if anyone already has already implemented this than please help.
What I want to achieve:
Grouping of the tasks based on the project. Means, I want to have collapse and expanded view of tasks based on the projects.
Example:

If this package already have that functionality then please let me know. If not please suggest an approach.
Thanks in advance.

Hi @afjal-arlab,
I will take a look

Hello,
I have added visual grouping. Please check the demo

@MaTeMaTuK My two cents: the result in the demo doesn't look like what @afjal-arlab was describing or what is usually done in Gantts. Usually you would expect an expand-collapse feature when there is a hierarchy (tasks within a project, or subtasks within a summary task). In the demo, the "grouping" just hides dependent tasks.

Thanks, @UserManagedSolutions.
I should remove hiding for all tasks by default now 😅
Maybe the best option is keep hiding feature for project type only.
By the way, developer control component state and he able to update project record with his/her wishes

Thanks, @MaTeMaTuK
Although, it makes sense in some cases, to hide the dependent tasks because I made those dependent on other tasks. So I'm expecting them to be connected with parent-dependent tasks.
And if your tasks are not dependent. Then it will keep hiding tasks for the project type only, which is working fine as of now.
So in both cases, it's fine whether you remove this for tasks or add props to manage this.
In my case, expand-collapse feature is working as expected, as my tasks are not dependent on each other. They're just under the same project.
And thanks a lot for the quick response and all the help :)

Good. I keep hide mechanism for project only for now.
Maybe I will extend this feature after.


Flutter_app_upgrade 集成后IOS上架会被拒绝,慎重

As we discussed, your app was found to be out of compliance with App Store Review Guidelines 2.3.1 and 2.5.2.
Specifically, we continue to find remote updating and upgrading functionality in this app via Flutter. It would be appropriate to remove any and all remote updating functionality from your app, such as your app’s Flutter_app_upgrade.framework before resubmitting for review.
Apple 回复的

iOS app是不允许在App内弹出升级提示的（即使是原生也不允许），
所以你们要自己做出规避，查查别的应用是如何处理App内弹出升级提示的。


GraphQL CombinedError Issue when loading more articles of a series

I'm using this starter-kit for my website https://giolaq.dev.
I've got a page https://giolaq.dev/series/talks loading all the articles of a series but when I click "Load More" the older articles are not loading and there's the GraphQL error below:
GQL error occurred
Object { error: CombinedError }
[talks:13024:25](https://giolaq.dev/series/talks)
    overrideMethod https://giolaq.dev/series/talks:13024
    NextJS 86

The error message you provided seems to be related to GraphQL, specifically with Next.js. The error object indicates a "CombinedError." Here's a general approach to address this issue:
Check GraphQL Queries/Mutations:
Ensure that your GraphQL queries or mutations are correctly formed.
Confirm that the queries or mutations match the schema defined in your GraphQL server.
Inspect the CombinedError Object:
Look into the details of the CombinedError object to understand the specific GraphQL error(s) that occurred.
Log or print the error details to the console for more information:
javascript
Copy code
console.error("GraphQL Error:", error);
Handle Errors in Your Code:
Implement proper error handling in your code to gracefully handle GraphQL errors.
You can use try...catch blocks to catch and handle errors:
javascript
Copy code
try {
// Your GraphQL query or mutation code here
} catch (error) {
console.error("Error occurred:", error);
// Handle the error appropriately (e.g., show a user-friendly message)
}
Check Network Requests:
Ensure that network requests to your GraphQL server are successful.
Check the network tab in your browser's developer tools for any failed GraphQL requests.
Verify Server-Side Rendering (SSR) in Next.js:
If you're using Next.js for server-side rendering, make sure that your GraphQL queries are properly handled on the server side.
Verify that your components or pages with GraphQL queries are wrapped with the withApollo HOC (Higher Order Component) from @apollo/client.
Update Apollo Client:
Ensure that you are using a compatible version of @apollo/client. Check for any updates to the Apollo Client library and upgrade if necessary.
If you provide more specific details about the GraphQL query, the structure of your components/pages, and how you are using Apollo Client with Next.js, I can provide more targeted assistance.

Thanks! I'm just using this starter kit (hashnode theme) pointing to my HashNode.
You can check the deployment here
Didn't change any part in the code

This issue has been fixed in this PR: https://github.com/Hashnode/starter-kit/pull/111

@giolaq Can you provide some additional information to your issue?

You are using the hashnode theme, right?
What is the actual error (you post only shows { error: CombinedError })? Can you provide the full error?
Can you confirm that you have integrated the changes of the linked PR in your code?
Is your code maybe publicly available so that I can debug it directly?
Did you made any changes yourself in related code?

Hi @JannikWempe  thank you!
I'm using hashnode them for my website here giolaq.dev
The code is available in my fork https://github.com/giolaq/starter-kit
Didn't change anything on that code, essentially I cannot retrieve the article of the series here https://giolaq.dev/series/talks

I have checked out your branch locally and used your domain and everything seems to work just fine.
It looks like the deployment for the fix failed 👇🏼

That seems to be related to the type error which will be fixed by https://github.com/Hashnode/starter-kit/pull/114

Now your deployment should work again and the fix should be deployable.


Error output formatting

Insert a newline before tool output in error messages, for #164.  The user was also seeing newlines within the error messages being printed as \n but that has already been addressed.

Running the new unit test in v0.9.0a1 we can see double backslashes in the output.
tests/test_build_config.py:16 (TestBuildConfig.test_error_newlines)
'1\n2\n3' != ('\n'
 '\n'
 'Error running build steps:\n'
 "('Error calling compiler:', RuntimeError('foo error\\n1\\n2\\n3'))\n"
 '\n'
 '1 error(s) found during compile fortran')


[WIP] Add support for T20 platform and misc cleanup

This PR adds initial open sdk support for the Ingenic T20 (and T10 too, perhaps). I've only tested this on a T20 board with a jxf23 sensor, will need more varied testing (on both T10 and T20 with other sensors) before merge.

tx-isp and jxf23 driver: https://s3-us-west-2.amazonaws.com/download.wyzecam.com/firmware/gpl/kernel_modules_wyze_cam_v2_pan.tar.gz
rest of sensor drivers: https://github.com/debugdump/Ingenic-T10_20/blob/master/opensource/drivers.7z
I preferred to use Wyze's tx-isp driver mainly because it seems to be from a later SDK
(H201709151519) that hasn't appeared anywhere yet (from what I could find).
I did do a diff between the tx-isp driver from Wyze and the one from the older SDK
and couldn't really see anything that would cause issues on other boards (hoping that they didn't modify anything).
I'm still unsure about it however (which is another reason to this change more).
Functionality wise, everything is still working with source built modules on my Wyze V2.

@bengris32 are you able to allocate more memory to OSMEM? Right now we are at mem=40M rmem=24M
The device has 128M of ram.   stock fw is at mem=104M@0x0 ispmem=8M@0x6800000 rmem=16M@0x7000000
I can't do more than 40M~ otherwise the kernel crashes on boot or majestic crashes the kernel on ISP open.

Confirmed this pr works well on the wyze v2 device.

@bengris32 any update on this/?  Would love to have all the modules build in openingenic vs using the precompiled binaries =D

So, what suggestions do you have for this PR, are we closing it as outdated ?

I think it's a good addition for t10/t20 device support.  If @bengris32 doesn't have the time to finish the PR I could make a new one as well.  Building the modules from source instead of relying on precompiled binaries is a definite advantage.

Sorry to have kept you all hanging for so long!
@gtxaspec feel free to continue/resubmit the PR (same for anyone else, do whatever you feel like doing with it), it will however need rebasing since I've seen a lot of changes since this was submitted.

Closed due to creation of a parallel patch thread.


review

here are some thoughts from claude : Here's an attempt to model some of the key entities and incentives in the Morpheus network proposal mathematically:
Users (U)

Goal: Access useful AI services at low cost
Utility function: f(AI quality, cost)
Strategies: Provide data to train models in return for MOR rewards

Developers (D)

Goal: Earn MOR rewards and fees by building agents and tools
Utility function: MOR rewards + Fees earned
Strategies: Contribute code to Morpheus and build agents; Set optimal fees to maximize revenue

Compute Providers (CP)

Goal: Earn MOR rewards and fees by providing compute
Utility function: MOR rewards + Fees earned - Compute costs
Strategies: Provide competitive pricing for compute to maximize revenue - costs

Capital Providers (CAP)

Goal: Earn MOR rewards by providing liquidity
Utility function: MOR rewards + Share of trading fees - Opportunity cost
Strategies: Optimize staking amounts to maximize yield

Interactions:

U pay fees to CP and D to access services
D and CP earn MOR from U fees based on usage
All entities respond to MOR price and liquidity from CAP
CP and D compete to set optimal prices to attract U
U, D, CP provide data, code, compute to earn MOR rewards
Entities make tradeoffs between rewards and costs

The interactions should ideally converge to an equilibrium where fees and rewards incentivize maximized participation while covering costs for each entity. But modeling the dynamics quantitatively would require estimations of variables like usage, costs, token velocity, etc. Game theory and agent-based modeling could provide further insights.
Here's a simple numeric example of how the incentives could play out, based on some rough assumptions:
Assumptions:

100 users (U)

10 developers (D)

50 compute providers (CP)

25 capital providers (CAP)

Users demand 1,000 compute queries per day

Compute costs $0.01 per query for providers

Developers build 10 new agents per day

1,000 MOR rewards distributed daily

400 MOR to users for data
300 MOR to developers for agents
200 MOR to compute providers
100 MOR to capital providers

Interactions:

Users pay CP $10 per day (1,000 queries x $0.01)
CP earn $500 in fees (50 CPs x $10) but have $500 costs
CP earn 200 MOR rewards worth $20 each = $4,000 value
Devs earn 300 MOR worth $6,000 value
Users earn 400 MOR worth $8,000 value
CAP earn $2,000 in value from rewards

Equilibrium:

CP and Devs earn more from MOR rewards than fees currently
CP are incentivized to provide compute up to marginal cost
Devs incentivized to maximize agents built
Users incentivized to provide data to earn MOR
CAP earns yield on staked capital

Of course, this is a very simple model. We'd have to consider additional factors like changing demand, costs, number of participants, speculation, etc. But hopefully it illustrates how the incentive structures and token distributions aim to drive network growth.

Certainly, let's explore a few scenarios to model how various external factors and uncertainties might impact the Morpheus network:
Scenario 1: Increased User Demand
Assumption: User demand for compute queries doubles from 1,000 to 2,000 per day.
Impact: Increased demand could lead to higher competition among compute providers and drive up fees. Developers may also be more motivated to build new agents, and capital providers could see an increase in yield. This might lead to a shift in equilibrium where fees and rewards adjust to accommodate the increased demand.
Scenario 2: Rising Token Speculation
Assumption: Speculation around the MOR token leads to a 50% increase in its value.
Impact: A higher token value might encourage more users to participate and provide data, as the rewards become more valuable. Developers and capital providers might also benefit from the increased token value. However, compute providers may face higher operational costs as token rewards become more expensive to distribute.
Scenario 3: Improved Compute Efficiency
Assumption: Technological advancements lead to a 20% reduction in the cost of providing compute.
Impact: With lower costs, compute providers can earn more from fees and rewards while maintaining competitiveness in pricing. This may attract more participants to provide compute, and developers could see a higher share of MOR rewards, further incentivizing agent development.
Scenario 4: Increased Capital Staking
Assumption: Capital providers collectively stake 25% more capital in the network.
Impact: A higher level of staked capital could lead to increased liquidity and trading fees, which benefits capital providers. This, in turn, may encourage more developers and users to participate as they see enhanced yield opportunities.
These scenarios illustrate how various external factors can influence the dynamics within the Morpheus network. They can impact the equilibrium by altering the relative incentives for different participants. To quantitatively model these scenarios, you'd need to assign specific values to the variables and run simulations to see how the network reacts over time.

Certainly, let's consider how the presence of competing projects that either steal away or stall out compute providers could impact the Morpheus network:
Scenario 5: Competition from Rival Project
Assumption: A new project (Project X) enters the market with a similar value proposition, attracting a portion of compute providers away from the Morpheus network.
Impact: The presence of a rival project can result in a reduction in the number of compute providers available on the Morpheus network. This reduced supply may drive up fees on the Morpheus network as they compete for the remaining compute resources. In response, Morpheus developers might work to enhance the network's offerings, while capital providers may assess the impact on yield.
Scenario 6: Stalling of Compute Providers
Assumption: Some existing compute providers face technical challenges or regulatory issues that stall their operations.
Impact: The stalling of compute providers on the Morpheus network can reduce the available compute resources and increase fees as a result. This situation could incentivize developers to create more efficient agents and find alternative ways to provide compute. Capital providers might reassess their staking strategies based on the evolving network dynamics.
These scenarios highlight the potential challenges the Morpheus network could face when competing with other projects or dealing with unforeseen issues affecting its compute providers. To model these scenarios effectively, it's necessary to consider the specific extent of the competition or the nature of the stalling events, as well as how these variables evolve over time. This would require a more detailed simulation and analysis to understand the network's adaptability and resilience in such situations.

Indeed, the behavior of agents that switch to multi-protocol systems to choose the best compute provider can significantly impact the Morpheus network. Let's explore this scenario:
Scenario 7: Agents Choosing the Best Provider
Assumption: Agents developed within the Morpheus network evolve to become more sophisticated, capable of evaluating multiple compute providers and selecting the one that offers the best combination of cost, quality, and reliability.
Impact: Agents with the ability to switch to the best provider can optimize their performance and reduce costs. This could lead to increased competition among compute providers to offer the most attractive terms to these agents. In response, compute providers might need to continuously improve their offerings, including pricing and quality, to attract these advanced agents.
Developers within the Morpheus network could focus on creating more efficient and adaptable agents to stay competitive. Meanwhile, capital providers may reevaluate their staking strategies based on the evolving landscape of compute providers.
This scenario underscores the importance of agent flexibility and adaptability within the Morpheus network, as it may encourage innovation and efficiency while creating a dynamic environment for compute providers to compete. Modeling this scenario would involve simulating how agents make decisions, the factors they consider, and how compute providers respond to these changing dynamics.


README: Improve markdown formatting for plaintext readability

This change doesn't affect how the README looks when viewed rendered into HTML. It simply reformats the markdown in such a way that improves readability when reading the document using a plaintext editor.
One of the ways to improve the visual appeal of the README text was to use reference-style links whenever an inline-link would cause the paragraph to line-wrap in a visually unappealing way.
For example, this is before:
Submit bugs and feature requests to [issue
tracker](https://github.com/openthread/openthread/issues). Usage
questions? Post questions to [Stack
Overflow](http://stackoverflow.com/) using the [`[openthread]`
tag](http://stackoverflow.com/questions/tagged/openthread). We also
use Google Groups for discussion and announcements:

And this is after:
Submit bugs and feature requests to [issue tracker][ot-issues]. Usage
questions? Post questions to [Stack Overflow][stackoverflow] using the
[`[openthread]` tag][ot-tag]. We also use Google Groups for discussion
and announcements:

[ot-issues]: https://github.com/openthread/openthread/issues
[stackoverflow]: http://stackoverflow.com/
[ot-tag]: http://stackoverflow.com/questions/tagged/openthread

Both of these render to exactly the same HTML:

Submit bugs and feature requests to issue tracker. Usage questions? Post questions to Stack Overflow using the [openthread] tag. We also use Google Groups for discussion and announcements:

Click here to see the README in plaintext. Click here to see the HTML-rendered version.

LGTM 👍


Allow label changes associated with the Register As person.

When a parent/guardian registers – we should use that language throughout the registration. Currently it defaults to “Parent”.  At this point, there is no way to edit as someone may like.
Are you willing and interested in being engaged during the development and testing process?  Yes

@rdblake21 Going to attempt to tackle this issue if that is okay with you!


Load texture after unload all fails

Exception is thrown ("invalid vector subscript") when loading textures after calling UnloadAllTextureAssets(). The exception comes from line 437 in ShaderStorage.cpp where we attempt to access a vector element within the static TextureArrayBufferStorage that has been cleared.
Easy to reproduce with the sample test: ./Sample --run-test.
Commenting out texture unloading in the test (line 99 in SmokeTest.cpp) allows the test to pass, so it doesn't look like other handle types are having problems (we clear all asset types). (After looking again, it looks like this ought to an issue for CubeMaps also?).
I haven't fully grokked the flow yet, so I'm uncertain on what correct behavior is. Maybe either the handling of a 'clear' event should be different, or 'clear' shouldn't be sent in the 'unload all' case.

This is due to incorrect handling of asset clear events. WIP branch here, which includes some other fixes - bug in sparse_map and potential bug with asset ids being cached as std::string_view.

@jaremieromer Was there more to do on this, or can this issue be closed?


Add ability to update quantity & override resource mapping

Pretty basic functionality at the moment, but this will allow a user to add a default quantity to their products.
This requires a ShopID to be present, so I've also added the ability to override the resource mapping so people can provide a numeric ID here without saving it to the database. I'm open to any ideas on how this could be improved, perhaps we should use a callback function instead for overriding?

I'm interested as to how best we can sync the quantity on update of a product. It looks like we need to provide an itemShopID which seems randomly generated when the product is created on Lightspeed. Example PUT body would be:
{
	"ItemShops": {
		"ItemShop": {
			"itemShopID": 11111,
			"qoh": 4
		}
	}
}

I've addressed the updating of product quantities with cca5aec. It's a little bit janky, so I'm open to ideas on how we could clean this up. In short, it:

Makes an API call to get the Item
Gets the Shop relation and gets the itemShopID
Uses this in the payload to update the correct shop, using the user-defined $shopId as a way to know which shop to update

I'm interested as to how best we can sync the quantity on update of a product. It looks like we need to provide an itemShopID which seems randomly generated when the product is created on Lightspeed. Example PUT body would be:
{
	"ItemShops": {
		"ItemShop": {
			"itemShopID": 11111,
			"qoh": 4
		}
	}
}

You would have to do a GET before you update, or save the IDs locally I guess.
Or you could try and see if LS is smart enough to update the right ItemShop object when you provide the item and the shop ID :)

I've addressed the updating of product quantities with cca5aec. It's a little bit janky, so I'm open to ideas on how we could clean this up. In short, it:

Makes an API call to get the Item
Gets the Shop relation and gets the itemShopID
Uses this in the payload to update the correct shop, using the user-defined $shopId as a way to know which shop to update

I would move all your code in adjustQuantityPayload to an accessor on your model, like in my example.
That gives you a lot more freedom!

@timothydc Would you be able to point me to where your example is? I'm a little unsure on which part you're referring to.

@timothydc Would you be able to point me to where your example is? I'm a little unsure on which part you're referring to.

@HarryLee186 Did you see my review ping here? https://github.com/timothydc/laravel-lightspeed-retail-api/pull/21/files/7cc7e945fd30f7a64fa58bb04ff7934ff9d0b333

@timothydc Following that link takes me to the files to be reviewed, but doesn't show me any pings or comments.


Add contributing.md file for the markdown-previewer and guidelines for hacktoberfest participants

Create a contributing.md file so that every contributer of the project can understand and contribute to this project.

Hi can i contribute to this issue??
can you assign it to me?

I would like to work on this issue

Hi can i contribute to this issue?? can you assign it to me?

Thanks for showing interest @SaiAryan1784, i will be adding some more issues tomorrow please contribute to them, as of now i will continue with @VivekBaldha0712 cause he is also part of this project and we need to work on some documentation things.


chore: add package data

I checked the generated ´setup.pyin mypygeojsonpackage and I found out thatpackage_data` was missing here. This is also according to https://www.python.org/dev/peps/pep-0561/
I'm so sorry.

@hawkaa I tried this locally and didn't see the *.typed file in the package. Any ideas? I would have thought it's something like but this fails as well:
package_data = {
        "geojson_pydantic": ["*"]
}

Unfortunately, I don't know. I just found this blog post: https://blog.ian.stapletoncordas.co/2019/02/distributing-python-libraries-with-type-annotations.html . Which is basically what you've done there.
I know it works for my poetry https://github.com/hawkaa/pygeojson project ....

:wave: I ran into a similar issue recently and removing include_package_data=True seemed to fix it (ref https://stackoverflow.com/a/13783919)

Closing in favor of 30015ae60578f04b17a592ca18fa5639178b486a. Thanks to @geospatial-jeff and @hawkaa, https://pypi.org/project/geojson-pydantic/0.2.1/ should be good now

Works like a charm. Thank you!


Fix HSL compatibility

Is it possible to fix the display the server list when using Horizontal Server List? Right now the rightmost end of the list sticks to the edge of the window and is not rounded (see screenshot).

HSL has a hardcoded width that can't be overridden without breaking midnights default theme. I made an external theme that patches it though, if you want to use it. Just install it like any other theme.
hslxmidnight.zip

Awesome, tysm


Adding config for namespace for system components

What would you like to be added:
Adding config for namespace for system components that avoid to have defaultNetwork.
Why is this needed:
Some kubernetes distribution uses several namespaces for kubernetes component (which should not have defaultNetworks).

#254 fixed it.


Migration histogram to use fastutil's primitive sorted map.

Green = New Version
Red = Existing Version (after all updates in this PR except Fastutil tree implementation change)

Green = New Version
Red = Existing Version (after all updates in this PR except Fastutil tree implementation change)
In this test, both JVMs were given XMS=XMX=1024m. With no GC pressure (e.g. preallocated large heap) the new FastUtil implementation (green) grows much more slowly than the existing implementation (red). Consequently, it will collect garbage far more infrequently.
Therefore, if you set a high XMS you can reduce GC (and CPU) at the cost of memory consumption. If you set a low XMS you will increase GC (and CPU) but save memory. The same Telegraf workload used about 250Mb in the existing implementation and only about 50Mb in the new implementation.
A few more improvements like this and it's money.

Most of the independent stuff was pulled into #86.


added param for custom instance url

Added a param for custom Nitter instance.
# example
nitter = Nitter("http://localhost:8080", log_level=1, skip_instance_check=True)

Can you accept this pr please


feat(auth): Support for creating tenant-scoped session cookies

Upgraded some Maven plugins to latest to avoid some issues with Jacoco code coverage reporting in older versions.
Cleaned up the Builder APIs in FirebaseAuth and TenantAwareFirebaseAuth.
Moved session cookie creation and verification APIs to AbstractFirebaseAuth so they are inherited by both subclasses of this API.
Implemented support for verifying tenant-scoped session cookies (by passing a tenant ID to the respective FirebaseTokenVerifier).
Implemented support for creating tenant-scoped session cookies (by verifying the ID token locally which also matches tenant IDs)

RELEASE NOTE: Exposing createSessionCookie() and verifySessionCookie() methods from the TenantAwareFirebaseAuth class.

Those are existing docs. We are just moving them from FirebaseAuth to AbstractFirebaseAuth. I'm also debating whether to merge this PR now or finish off the v7 work first. I'll figure it out next week.


Updates Localytics to v5

The one change here is that when configuring the appKey, the Localytics integrate method
takes an additional argument to add flexibility on when/how to upload user data.
Localytics will default to uploading data periodically based on the state of a user's network connection.
The default behavior occurs when passing nil to withLocalyticsOptions.
I think we can ship this update and consider supporting the ability to integrate with Localytics options
in another release.
Relevant docs.
This will close Issue #23

By analyzing the blame information on this pull request, we identified  and undefined to be a potential reviewer.

Is localytics now a dynamic framework (IIRC previously it was a static library)? If so, we should remove use_frameworks! from the example app podfile.

I think it was a linker error, there was still a reference to the Localytics.framework from 4.0 in the directory


[wip] make sure Splash handles bad http status messages

Current coverage is 86.11% (diff: 100%)

Merging #528 into master will decrease coverage by 0.52%

@@             master       #528   diff @@
==========================================
  Files            40         40
  Lines          4977       4977
  Methods           0          0
  Messages          0          0
  Branches        689        688     -1
==========================================
- Hits           4312       4286    -26
- Misses          506        530    +24
- Partials        159        161     +2

Powered by Codecov. Last update 2e44bc3...e4a1e90


Engine - script - startDetached() enables to delete QProcess object without killing running process

Hello Massimo,
Here is a very simple fix for #1270 and #1339
Replacing start() by startDetached() enables to immediately delete the QProcess object, and clean-up all associated pipes and file descriptors, without killing the running process.
This fix has been validated:

on Linux Raspbian 10 with Qt 5.11.3
and on Windows 10 with Qt 5.15.3

This fix does not drastically change the current behavior of system commands, unlike the fix on procfix which requires to specify a timeout (wait time) for every command.
This fix is based on following doc & source code of QProcess::startDetached :

https://www.qt.io/blog/2017/08/25/a-new-qprocessstartdetached

https://doc.qt.io/qt-5/qprocess.html#startDetached

https://github.com/qt/qtbase/blob/5.15/src/corelib/io/qprocess.cpp

https://github.com/qt/qtbase/blob/5.15/src/corelib/io/qprocess_unix.cpp

https://github.com/qt/qtbase/blob/5.15/src/corelib/io/qprocess_win.cpp

My test results on Linux & Windows are summarized below:

The number of open file descriptors does not increase anymore every time a new systemcommand is executed.

On Linux: ls -l /proc/pidof qlcplus/fd | wc -l
28
On Windows: handle -s -p qlcplus | find "File"
File            : 47

The standard input/output/error streams (0, 1, 2) of the sub-processes launched by systemcommand are inherited from qlcplus and redirected to the same devices as qlcplus (no change):

ls -l /proc/1929/fd
total 0
lr-x------ 1 pi pi 64 Aug 20 10:250 -> /dev/null
l-wx------ 1 pi pi 64 Aug 20 10:25 1 -> /home/pi/.cache/lxsession/LXDE-pi/run.log
l-wx------ 1 pi pi 64 Aug 20 10:25 2 -> /home/pi/.cache/lxsession/LXDE-pi/run.log
ls -l /proc/$(pidof qlcplus)/fd
total 0
lr-x------ 1 pi pi 64 Aug 20 10:22 0 -> /dev/null
l-wx------ 1 pi pi 64 Aug 20 10:22 1 -> /home/pi/.cache/lxsession/LXDE-pi/run.log
lrwx------ 1 pi pi 64 Aug 20 10:22 10 -> 'socket:[24384]'
lrwx------ 1 pi pi 64 Aug 20 10:22 11 -> /dev/snd/seq
lrwx------ 1 pi pi 64 Aug 20 10:22 12 -> 'socket:[24386]'
lr-x------ 1 pi pi 64 Aug 20 10:22 13 -> 'pipe:[24387]'
l-wx------ 1 pi pi 64 Aug 20 10:22 14 -> 'pipe:[24387]'
lr-x------ 1 pi pi 64 Aug 20 10:22 15 -> 'pipe:[24388]'
l-wx------ 1 pi pi 64 Aug 20 10:22 16 -> 'pipe:[24388]'
lrwx------ 1 pi pi 64 Aug 20 10:22 17 -> 'anon_inode:[timerfd]'
lr-x------ 1 pi pi 64 Aug 20 10:27 18 -> 'pipe:[24389]'
l-wx------ 1 pi pi 64 Aug 20 10:27 19 -> 'pipe:[24389]'
l-wx------ 1 pi pi 64 Aug 20 10:22 2 -> /home/pi/.cache/lxsession/LXDE-pi/run.log
…

All system commands keep running as long as needed, independantly from qlcplus.

Hi, thanks for this.
This is really curious because I'm convinced I already tried the detached way and it didn't work for me.
Can you please tell me which system command you tried?

Hello Massimo,
I tested the 3 following scripts:

on Linux:
systemcommand:/usr/bin/sleep arg:10000
on Windows:
systemcommand:"C:\Windows\explorer.exe"
systemcommand:"C:\Windows\System32\cmd.exe"

I'm more than happy to test other commands if it can help.
Thierry

Thanks. So the sleep on Linux starts a detached process and after 10 seconds it ends properly and leave no PID trace?

On Linux, "ps" is showing that the parent process id (PPID) of all system commands (/usr/bin/sleep) started by qlcplus is 1. This confirms the system commands are detached from qlcplus.
pi        1409  1062  1 20:47 ?        00:00:19 /usr/bin/qlcplus
pi        1447     1  0 20:48 ?        00:00:00 /usr/bin/sleep 10000
pi        1469     1  0 20:51 ?        00:00:00 /usr/bin/sleep 10000
pi        1481     1  0 20:52 ?        00:00:00 /usr/bin/sleep 10000
pi        1483     1  0 20:52 ?        00:00:00 /usr/bin/sleep 10000
pi        1485     1  0 20:52 ?        00:00:00 /usr/bin/sleep 10000
And whatever the number of (simultaneous or sequential) commands launched by qlcplus, the memory usage of qlcplus is stable, as well as the number of fd's:
$ pmap -p 1409 | grep total
total   339260K
$ ls -l /proc/1409/fd | wc -l
28
I also tested shell scripts writing to ttys or files (eg "systemcommand:/usr/bin/bash arg:/home/pi/hello-world"). No issue at all.

Merged, thanks a lot :+1:


LFS-1053: Form actions menu & LFS-1080: As a developer, I can render a Delete button with a text label

Jira links:

LFS-1053: Form actions menu
LFS-1080: As a developer, I can render a Delete button with a text label

Also fixes:

LFS-1090: Error "404 Not Found" when deleting form while in edit mode

Looks great. One small suggestion: for Change subject action use an icon other than pencil.

I would like to make it a practice that whenever we add a composite (list of items) UI element, we add it as an extension point + extensions instead of hardcoding the list in code.

Created LFS-1084: Refactor the Form actions menu as an extention point to address this. I agree this should be a practice. But for now this is a huge user experience improvement and IMO should be merged as is.

Switched to vertical ellipsis as icon for "More actions" in the latest commit 1f60b0c :

tested

Not sure f the following things are related to this PR:

when creating a new form the console error "Invalid DOM property 'tabindex'. Did you mean 'tabIndex'?"
when deleting form from the patient chart 404 err happens in the following situation:

create form for subject A
click on Save and close
click on Delete form menu option

If I do the following, 404 err does not happen:

create a form for subject A
click on Save and close
click on Subject main menu option
click on subject A
click on the newly created form
click on Delete form menu option

Not sure if the following 2 things are related to this PR:

when creating a new form the console error "Invalid DOM property 'tabindex'. Did you mean 'tabIndex'?"

Unrelated, introduced in #579, and I see it's getting fixed in #589: https://github.com/ccmbioinfo/lfs/pull/589/commits/fb925216109209b5a8ac3b9c88b8ff0b0356183c#diff-6f45c28ff73937e5746dfa2984c3925a8fa7d004fd85b7ccb3b3589cd3b5fb2bR339

Two minor comments:

are we sure we want the pencil icon to be red?

I don't have a strong opinion either way. We can make it primary blue.

on a form, expand the menu, change the subject -> the menu is still expanded while changing the subject and after the change; I think it should close, if easy to implement.

Agreed.


ropsten playground - sale for 10 years without caps, token transferab…

…le immediately, market maker lib + currency factory + issuance factory

market maker lib + currency factory + issuance factory


Support width: '100%' in react-native

According to following: https://github.com/facebook/react-native/commit/3f49e743bea730907066677c7cbfbb1260677d11
it is now possible to use % for width / height and other parameters like so: width: 100%, however doing this through styled components yields an error
Invalid undefined `width` of type `string` supplied to `StyleSheet generated`, expected `number`.
StyleSheet generated: {
  "width": "80%",

I think we already have this in v2, any chance to backport this to v1 as a non-breaking change @jacobp100?

It’s available in non-shorthand properties. I think it’ll be too difficult to back port this.

How stable is v2 to use with react-native and could you also expand on what you mean by non-shorthand properties, i.e. width: 100% seems like a full one?

Shorthand properties are like font, because you can write: font: bold 12/14 “Helvetica”. width isn’t a shorthand property.
Would it be possible to get a screenshot of the red box error you’re getting?

Hey @jacobp100 can't currently upload it up, but this is full error from the redbox
ExceptionsManager.js:71 Unhandled JS Exception: Invalid undefined `width` of type `string` supplied to `StyleSheet generated`, expected `number`.
StyleSheet generated: {
  "width": "80%",
  "textAlign": "center",
  "marginTop": 21.8625,
  "fontWeight": "bold",
  "fontSize": 16,
  "color": "rgb(24, 24, 24)",
  "fontFamily": "Trajan Pro",
  "textShadowColor": "rgba(255, 255, 255, 0.2)",
  "textShadowOffset": {
    "width": 0,
    "height": 0.5
  }
}

generated by following code (dimension.x is essentially what I want to swap to percentages):
const SText = styled(Text)`
  width: 80%;
  text-align: center;
  margin-top: ${dimension.buttonWidth * 0.106};
  font-weight: bold;
  font-size: ${fontSize.big};
  color: rgb(${colour.darkBrown});
  font-family: ${'Trajan Pro'};
  text-shadow-color: rgba(${colour.white}, 0.2);
  text-shadow-offset: 0 0.5;
`;

It definitely seems to be passing in the correct arguments, and it's failing on the RN side. Either it's a bug there, or we have multiple versions on RN installed.
Could you try deleting your node_modules and then reinstalling?
If the error still occurs, could you see if the folder ./node_modules/styled-components/node_modules/react-native exists. If it does, could you look in the package.json there and let us know what version it reports?
Thanks!

Alright, this is on a fresh init of react native, styled components doesn't have node_modules for me (works fine though, strange, is this expected?) version inside styled components package.json is
"react-native": "^0.39.2",

under devDependencies, could this be an issue? I think width: 100% will only work in 0.41.x

So a new init worked fine?

Oh no no, I meant issue occurred on new init. Does it work for you? In this case I can dig deeper and see if it is something else on my end, but honestly this is as close to styled components as it gets I think.
I also tried it on View and Image components, to see if text wasn't supported perhaps, but still same issue

Mystery solved! You need react-native 0.42 (currently in release candidate).

<EMAIL_ADDRESS>was just released with % support! https://github.com/facebook/react-native/releases/tag/v0.42.0

react-native-cli: 2.0.1
react-native: 0.42.3
But still not working :(

@crajeshwnp What error message are you getting? Could you screenshot it?

@jacobp100 sorry its working now. before i had just given 100%, now i gave '100%' its working.
Thanks


please reimplement graphics.setColor(byte, byte, byte, byte) as overload

please reimplement graphics.setColor(byte, byte, byte, byte) as overload,
the only reason why I would see the lua version not doing this is because lua doesn't have function overloads.

Did you mean color values is [0-255] from LÖVE 11.0 it changed all color values to be in the range 0-1, rather than 0-255.
why no use Graphics.SetColor( r / 255f, g / 255f, b / 255f, a / 255f ) to replace ?
reimplement Graphics.SetColor(byte, byte, byte, byte)  will confuse with Graphics.SetColor(float, float, float, float)

dividing by 255f would work but I just thought it would be a nice feature to be able to pass in 0-255  ranges as well. since C# supports overloads.
as for being confusing there could just be intellisense documentation that says the values range from 0-1 or 0-255 when you start typing the function.

wow. Let me delay.
may be Graphics.SetColor(Color c) with Color.RGBA32(float,float,float,float) and Color.RGBA8(byte, byte, byte, byte) is the best solution .. but , it was tremble ..
on the other hand, for some reason, developer even can pass value bigger than 1.0 to GPU to get some "special effect" ....
I think I will be better if I try to persuade you not to overload it. 🔑


pagination with bootstrap 4

pagination is not looks properly with bootstrap 4

Hi,
I ran into the same problem, and this worked for me. Hope it helps you too
$.extend($.fn.bootgrid.Constructor.defaults, {
        css: {
            pagination: "pagination",
            paginationButton: "page-link",
        },
	templates: {
            pagination: '

',
            paginationItem: '
{{ctx.text}}
'
        }
});

It's a pitty that bootgrid is so discontinued from the creator. Does anybody a working project like bootgrid that has mantainment and woks so fine as bootgrid? I'll think to change to that plugin. Thanks!

@RezaErfani67 it doesn't works your code, the generated result is the same, I put on the page loaded event but the result is the same.
$(function() {
............
});

@canchito-dev I don't know but your code doesn't works for me, only if I put your code inside the main grid object constructor, but I need to place on every grid I create.


Add CouchDB

I completed the 3 steps below:

[x] I've read the Contribution Guide.
[x] I've updated the documentation. (refer to this for how to do so).
 I updated the port.


Delegating traits with associated types

Our last manually delegated trait is std::ops::Index<usize, Output = bool>.  It appears that ambassador presently does not support associated types. Is this the case?

Ambassador does support associated types, but they do not need to be specified, e.g.:
use ambassador::{delegatable_trait_remote, Delegate};
use core::ops::Index;

#[derive(Delegate)]
#[delegate(Index<usize>)]
struct Struct(Vec<bool>);

#[delegatable_trait_remote]
pub trait Index<Idx> {
    type Output: ?Sized;

    fn index(&self, index: Idx) -> &Self::Output;
}

fn main() {
    let s = Struct(vec![true, false, true]);
    dbg!(&s[1]);
}

I think it would be immensely useful to have these examples in the docs.

Would it work to add a link to https://github.com/hobofan/ambassador/tree/master/ambassador/tests/run-pass somewhere? It includes a lot of examples including associated_types.rs?

Yes, because the tests directory is not where people usually look for documentation. They may look there for examples of usage of a feature once they know about it, but they won't look for features there.


Add in SMILES-integer dictionary and conversion function

Need to create a dictionary of all possible elements in SMILES string.
Also write a function to convert SMILES tring to integer representation using the dictionary.

Here's actually an alternate approach that I think may work better for encoding. It's called 'one-hot coding.' Instead of representing each character as an integer, we would represent each character as a binary number. This would actually turn any SMILES string into a matrix instead of a vector.

And here's the function you could use to implement it.  Definitely recommended, as that way you can easily use the code again in other contexts.

The one-hot encoder currently treats each individual observation as an entire feature, when we want individual characters to be treated as features. @pmont056 and I fixed this in this week's meeting.
This still needs to be wrapped into a function, and be sure to add in some documentation.


can't find results with Xcode 11

Hi,
i'm running "fastlane test" in a simple example project and using the "trainer" plugin to generate JUnit XML report.
However, whenever I run fastlane it is not able of finding the results.
This is my "fastlane/Fastfile"
default_platform(:ios)

platform :ios do
  desc "Run tests"
  lane :test do
    scan(scheme: "UnitTest-Calculator",
       output_types: "",
       fail_build: false)

    trainer(output_directory: "build/reports/")
  end

end

This is the output obtained:
+----------------------------+-------------------------------------------------------------------------------------------+
|                                                      Lane Context                                                      |
+----------------------------+-------------------------------------------------------------------------------------------+
| DEFAULT_PLATFORM           | ios                                                                                |
| PLATFORM_NAME              | ios                                                                                |
| LANE_NAME                  | ios test                                                                                |
| SCAN_DERIVED_DATA_PATH     | /Users/smsf/Library/Developer/Xcode/DerivedData/UnitTest-Calculator-fbcsrzqmxnbtunckthqv  |
|                            | azzqktol                                                                                |
# This file contains the fastlane.tools configuration
| SCAN_GENERATED_PLIST_FILES | []                                                                                |
| SCAN_GENERATED_PLIST_FILE  |                                                                                |
+----------------------------+-------------------------------------------------------------------------------------------+
[12:10:06]: No test result files found in directory '.', make sure the file name ends with 'TestSummaries.plist' or '.xcresult'

+------+------------------+-------------+
|           fastlane summary            |
+------+------------------+-------------+
| Step | Action           | Time (in s) |
+------+------------------+-------------+
| 1    | default_platform | 0           |
| 2    | scan             | 23          |
| 💥   | trainer          | 0           |
+------+------------------+-------------+

[12:10:06]: fastlane finished with errors

[!] No test result files found in directory '.', make sure the file name ends with 'TestSummaries.plist' or '.xcresult'

This is the content of the build directory, under the "DerivedData" default one:
$ ls /Users/smsf/Library/Developer/Xcode/DerivedData/UnitTest-Calculator-fbcsrzqmxnbtunckthqvazzqktol/Logs/Test/
LogStoreManifest.plist                                     Run-UnitTest-Calculator-2019.10.24_12-05-37-+0100.xcresult

The "Run-UnitTest-Calculator-2019.10.24_12-05-37-+0100.xcresult" is not a file but a directory instead.
It does not contain any TestSummaries.plist neither a .xcresult file.
Am I missing something basic in the configuration of fastlane or in the build itself to generate .xresult file? As it seems, XCode 11 is generating a .xcresult directory with many files.
From the trainer code, from my understanding it does not go into .xcresult directories under the DerivedData folder.. but anyway, I don't see a specific .xcresult there.

I am facing the same issue. Have you found any work around or any solution?

Unfortunately the only solution was to use another tool: xcpretty.
You can see an example here: https://confluence.xpand-it.com/display/XRAY/Testing+iOS+apps+using+XCTest+in+Swift

I've the same issue with Xcode 11.2 and Mojave 10.14.6.
The current workaround we applied is to copy the last xcresult bundle to the  fastlane folder (or project folder to not add path to trainer action…).
trainer parses xcresult bundles. It's ok for that.
Xcode only keep the latest 2 xcresult bundles. If "latest bundle" is not safe enough, for sure, trainer has to check LogStoreManifest.plist.

Unfortunately the only solution was to use another tool: xcpretty.
You can see an example here: https://confluence.xpand-it.com/display/XRAY/Testing+iOS+apps+using+XCTest+in+Swift

Issue I found after switching to rely on xcpretty is it can only handle basic use cases. For me I needed it to work with multiple devices so I put together this plugin


runing problem

when i run the code ‘python main.py -data cifar10 -nc 25 -jr 0.25 -gr 2 -ls 2 -algo PGFed -mu 0.1 -lam 0.01 -bt 0.0’，i got the result that
File path: ../results/cifar10-25clients_alpha0.3-PGFed-lr:0.00500-mu:0.10000-lambda:0.01000-cnn-0.h5
Traceback (most recent call last):
File "C:\Users...\Desktop\pgfed-main\system\main.py", line 214, in
run(args)
File "C:\Users...\Desktop\pgfed-main\system\main.py", line 106, in run
server.train()
File "C:\Users...\Desktop\pgfed-main\system\flcore\servers\serverpgfed.py", line 64, in train
self.save_results(fn=self.hist_result_fn)
File "C:\Users...\Desktop\pgfed-main\system\flcore\servers\serverbase.py", line 221, in save_results
with h5py.File(file_path, 'w') as hf:
File "D:\a_environment\anaconda\envs\env1\lib\site-packages\h5py_hl\files.py", line 567, in init
fid = make_fid(name, mode, userblock_size, fapl, fcpl, swmr=swmr)
File "D:\a_environment\anaconda\envs\env1\lib\site-packages\h5py_hl\files.py", line 237, in make_fid
fid = h5f.create(name, h5f.ACC_TRUNC, fapl=fapl, fcpl=fcpl)
File "h5py_objects.pyx", line 54, in h5py._objects.with_phil.wrapper
File "h5py_objects.pyx", line 55, in h5py._objects.with_phil.wrapper
File "h5py\h5f.pyx", line 126, in h5py.h5f.create
OSError: [Errno 22] Unable to create file (unable to open file: name = '../results/cifar10-25clients_alpha0.3-PGFed-lr:0.00500-mu:0.10000-lambda:0.01000-cnn-0.h5', errno = 22, error message = 'Invalid argument', flags = 13, o_flags = 302)
i think there is something wrong with the function that meant to save the result of the training(probably the way to create the file to restore the result), can u give me some advice on how to solve the problem i mentioned, thank u for ur devotion.

Hi @hideon27
Thank you for your question. What OS are you running the code on? I am not able to reproduce the error, but I think the error happens since the file_path is incompatible with your OS. I would suggest changing the file_path variable to something simple, like "results.h5", and see if the error happens again.


bypass: adds a test with a UDP flow

Ticket
Redmine ticket: https://redmine.openinfosecfoundation.org/issues/7053

Continued in https://github.com/OISF/suricata-verify/pull/1940


Update contradictory recommendation re: localities

Fixes #11786
Summary of changes:

Instead of referring to "regional tables" generally, we update to say
REGIONAL BY ROW (which is what we meant, and what the doc already
links to).

This change is


Inconsistent use of cdk (command) and npx cdk (command)

Describe the bug
In the pipelines workshop, deploy commands are done by npx cdk deploy. In all sections leading up to this, they are cdk deploy. This should not affect the behavior of the code, but is inconsistent.
I can open a pull for this.
Expected Behavior
Standardized CLI commands.
Current Behavior
Mix of CLI commands.
Reproduction Steps
This page
vs
this page
Possible Solution
No response
Additional Information/Context
No response
CDK CLI Version
No response
Section
No response
Browser
No response
Language
Typescript

@scanlonp Thanks for pointing the inconsistency. Feel free to contribute PR with a fix. Please ensure the following:

Make the changes for all language workshops, for both English and Japanese languages
Ensure locally that omitting npx works.

Thanks,
Ashish

@scanlonp @ashishdhingra  I have some capacity left and if you both are fine, I can look into this.


How to restore a single container from backup zfs snapshot

I'll describe my issue so you can better understand the problem.
I have a backup machine, that handle the backup of several lxd hosts. I pull zfs snapshots for critical containers (not necessarily all the containers) from the lxd hosts to the backup server every hour (ssh root@lxdhost1 zfs send -I tank/lxd/container2@2016081615 tank/lxd/container2@2016081615 | zfs receive tank/backup/lxdhost1/lxdhost1/container2/system).
On my backup server, I have something like this as zfs tree:
tank
└── backup
    ├── lxdhost1
    │   ├── container1
    │   │   ├── system
    │   │   ├── data1
    │   │   └── data2
    │   └── container2
    │       └── system
    ├── lxdhost2
    │   └── container3
    │       ├── system
    │       └── data1
    └── lxdhost3
        └── container4
            └── system

I also backup the lxd database of all hosts (lxd.db) and the content of the /var/lib/lxd tree (without the mounted zfs devices containing the containers data of course).
If lxdhost1 dies, I need to import container1 to lxdhost2 and container2 to lxdhost3.
To my knowledge, there is no easy way to do that.
For example, to restore the backup of container1 to lxdhost2, I suppose I have to:

lxc init a new container with the same name/config/os on lxdhost2
lxc config edit to adjust the mac addresses to their old values
zfs destroy the new container dataset
zfs send/receive container1 dataset backup to lxdhost2
adjust the sqlite database (adjust the containers_config "volatile.base_image" to the original, or remove the line if the image doesn't exist on lxdhost2 I think)
lxc start container1

I would like to be able to do something like this instead:

export container1 configuration (as a sql file?) during the backup procedure (don't save the lxd.db in this case)
zfs send/receive the container1 dataset to lxdhost2
import the container1 configuration to lxdhost2 lxd.db
lxc start container1

I'm not sure how to handle the zfs dataset origin (eg: container link to their image). But it should simply be dropped since we just send the zfs dataset without any reference to the original image.
An other way would be to have the backup host as an lxd host and lxc copy every containers to it, then send incremental snapshots to keep the backup up-to-date. This way a simple lxc copy from the backup host to lxdhost2 would work, but you need a backup system with lxd, which is not always possible.
Any more idea how to be able to export/import containers from backup is welcome.

This issue is somewhat related to #1987 and #1304 .

On Tue, Aug 16, 2016 at 05:37:49AM -0700, AceSlash wrote:

I'll describe my issue so you can better understand the problem.
I have a backup machine, that handle the backup of several lxd hosts. I pull zfs snapshots for critical containers (not necessarily all the containers) from the lxd hosts to the backup server every hour (ssh root@lxdhost1 zfs send -I tank/lxd/container2@2016081615 tank/lxd/container2@2016081615 | zfs receive tank/backup/lxdhost1/lxdhost1/container2/system).
On my backup server, I have something like this as zfs tree:
tank
└── backup
    ├── lxdhost1
    │   ├── container1
    │   │   ├── system
    │   │   ├── data1
    │   │   └── data2
    │   └── container2
    │       └── system
    ├── lxdhost2
    │   └── container3
    │       ├── system
    │       └── data1
    └── lxdhost3
        └── container4
            └── system

I also backup the lxd database of all hosts (lxd.db) and the content of the /var/lib/lxd tree (without the mounted zfs devices containing the containers data of course).
If lxdhost1 dies, I need to import container1 to lxdhost2 and container2 to lxdhost3.
To my knowledge, there is no easy way to do that.
For example, to restore the backup of container1 to lxdhost2, I suppose I have to:

lxc init a new container with the same name/config/os on lxdhost2
lxc config edit to adjust the mac addresses to their old values
zfs destroy the new container dataset
zfs send/receive container1 dataset backup to lxdhost2
adjust the sqlite database (adjust the containers_config "volatile.base_image" to the original, or remove the line if the image doesn't exist on lxdhost2 I think)
lxc start container1

I would like to be able to do something like this instead:

export container1 configuration (as a sql file?) during the backup procedure (don't save the lxd.db in this case)
zfs send/receive the container1 dataset to lxdhost2
import the container1 configuration to lxdhost2 lxd.db
lxc start container1

I'm not sure how to handle the zfs dataset origin (eg: container link to their image). But it should simply be dropped since we just send the zfs dataset without any reference to the original image.
An other way would be to have the backup host as an lxd host and lxc copy every containers to it, then send incremental snapshots to keep the backup up-to-date. This way a simple lxc copy from the backup host to lxdhost2 would work, but you need a backup system with lxd, which is not always possible.
Any more idea how to be able to export/import containers from backup is welcome.

Why not use lxc copy to copy the containers to the second system
running in LXD? Then you can just use lxc start right away on
failover.

--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/lxc/lxd/issues/2286

On Tue, Aug 16, 2016 at 08:09:12AM -0700, AceSlash wrote:

@tych0 : Your approach has several issues from my point of view:

you must know on which host you will start the containers if the first host dies, this is not necessary the case, as host and load change over time

True, although you could just lxc copy them to the host you want
them to live on finally.

you are using production lxd host as backup hosts, with the whole history (all zfs snapshots) on them, this can take a lot of space where you could just send the latest snapshot from the central backup server

Not necessarily, you can copy just snapshots:
lxc copy foo/snap0 otherhost:foobackup

from one backup host where you have all your data clearly identified, you now have several backup/prod hosts, this complicate the backup checking and process significantly

Furthermore, I backup the data on the backup host on different site (a mirror backup server and an external encrypted storage) and the backup host is the only one that have access to all the different lxd hosts, some lxd hosts don't see each others (different network, different location). It would be difficult to have the same level of security and check that everything works on 10+ lxd hosts.

I don't understand these points. Why not just run LXD on the backup
server?

But your way works if you need HA and quick fail over, and for some containers, I actually replicate the data one more time this way (lxc copy than zfs send/receive to keep it up-to-date), but I purge the history on the lxd hosts very frequently (I only keep 7 days of data on prod servers).
--
You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub:
https://github.com/lxc/lxd/issues/2286#issuecomment-240132216

From IRC discussion, I see your point: with a backup server running lxd, you can keep up-to-date all the containers from different lxd hosts and if an host dies, you can transfer the container from the backup host to the new lxd host.
That's indeed a solution. This is exactly what I meant by:

An other way would be to have the backup host as an lxd host and lxc copy every containers to it, then send incremental snapshots to keep the backup up-to-date. This way a simple lxc copy from the backup host to lxdhost2 would work, but you need a backup system with lxd, which is not always possible.

The main issue is that your backup server must run lxd, which may not be the case (Freebsd, older Linux, etc).
While I understand that this may not seem like a big issue, you are basically telling me that lxd containers cannot be saved and restored individually outside a lxc copy operation.
Don't you think that the ability to create/restore a container backup should exist beside this solution?

We talked this over in IRC, but for the record: I think we'd be happy to accept patches that made this possible (e.g. by adding another image type called "zfs" or something, and allowing uploading a zfs blob), but it is not a priority for us right now.

i've also run a freebsd as backup machine and would love to zfs send | ssh backup zfs recev datavols of my containers on this machine. But before; it requires that lxd accept zfs image for restore.

Thanks for that guys.


client_secret in Skoruba IdentityServer4 Admin Api

Question
I just made a clone of the repository. I've left all settings by default and every thing work well.
In 'Skoruba IdentityServer4 Admin Api' what should I write in 'client_secret' input textbox?

I guess you mean the interface Swagger provides for authenticating? You can proceed without a secret.
The client is configured to not need a (valid) client secret.


Offline-first behavior

cache data and use if there is no connection
implement cache invalidation and 'catching up' strategies

Useful library to investigate:
https://github.com/jevakallio/redux-offline

Closing as partially implemented.


custom key name feature

I've added support for customising the key name (until now assumed by Lawnchair to be 'key').
By passing in a 'keyName' option, you can customise this to anything you wish.
My immediate usecase is for saving json docs straight from couchdb
e.g. {_id: 5ebe2294ecd0e0f08eab7690d2a6ee69 }. Yes I could have added a key property but it just didn't make sense.
I've added a single additional spec using the DOMStorageAdaptor but customizing the key name. It passes.
If there is no keyName option specified it defaults to 'key'. The rest of the existing specs use the 'key' default.
I've tested the following specs (those present in index.html):
dom.html (passes with occasional single failure (same result without these changes) - ff,chrome)
dom-with-alt-key-name.html (passes with occasional single failure (same as dom.html) - ff,chrome)
gears.html (all green - ff)
webkit.html (all green - chrome)
cookie.html (mostly fails, even before my changes - ff,chrome) weird. Haven't delved into it yet.
FYI: My tests were done with osx 10.6.4
I'd appreciate if someone can test the rest of the specs. (the changes are mostly trivial but need to be tested)
Regards,
Saimon

Pull request #212 addresses this.  @saimonmoore, I apologize for not seeing and working with your pull request before I wrote #212.  People kept asking for custom ID support so I didn't think there was a pull request which addressed it.  Please check #212 to see if there is overlooked logic.


can't run the code

dear author,
I can't run the code successfully. Some problems happen like "Bitshift ASSUMEDTYPE must be an integer type name." My matlab version is 2017b. There is some limitation for the matlab version?

I have the same problem. Do you have an answer.

It has never been tested on that version of Matlab. The code is not really maintained anymore to comply with the latest version of Matlab. Let us know with a comment here, if you find a solution to the problem.


Bug: Searching for Steam ID on shows Gatsby Dev 404 page

Repro Steps

npm run dev
Hard reload the browser on localhost:8000
Enter any text in search bar

On submit, you should see:

Reloading page with a valid Steam Id usually shows correct "/steam/profile/" Profile page

See<PHONE_NUMBER>43 steam reaction - research client only routes gatsby.md


Compiling errors when using the command

HI dear author,
It's truly a honor to write a letter to you,  I'm build your project nowadays
My question is how to build this on linux ubuntu
thank you
best regards to you
William

This is an issue tracker for bug reports, not user support.
Please consult the documentation to find how to compile Godot: https://docs.godotengine.org/en/stable/development/compiling/index.html
And use other community platforms for support if you run into issues: https://godotengine.org/community/


Double call to Route.getComponent()

I'm trying to usee getComponent() to implement an loader pattern but the getComponent() is getting called twice for every request made to given route. Is this an expected behaviour (due to bubbling or some other re-rendeinrg of the tree) or is this a bug?
Version
3.0.0
Test Case
http://jsbin.com/patazecana/1/edit?html,js,console,output
Steps to reproduce
a) Run application
b) Navigate to "down" link
Expected Behavior
a) on application load only one "getComponent for /" is shown in console
b) on navigation only "getComponent for /" and "getComponentFor /test" are added to console
Actual Behavior
a) "getComponent for /" is shown twice
b) both are shown twice

No, that's not expected. Perhaps it has something to do with my Promise addition? I don't see anything obvious, but that test case helps!

I seem to have a similar issue as well, but haven't tried the getComponent function. In my case with 3.0, all components are rendered more than once upon initial mount, only when I'm using hashHistory.
It seems to be a problem with hashHistory  in my case, as changing to browserHistory resolves the issue.

It's also not an issue with createMemoryHistory ( example  : http://jsbin.com/fohemoqibo/1/edit?html,js,console,output ) so it might be related to hashHistory indeed, @kdenz

I think this is the same issue I just asked about on stack. I stuck console logs in my component render functions and noticed that using Router Links renders each component twice. Heres the code that should reproduce this effect:
import ReactDOM from 'react-dom';
import React from 'react';
import { Router, Route, Link, IndexRoute, hashHistory, browserHistory } from 'react-router';

class home extends React.Component {
    render(){
        console.log('RENDERING HOME');
        return(
            <Link to='destination'>Link to Destination</Link>
        )
    }
}

class destination extends React.Component {
    render(){
        console.log('RENDERING DESTINATION');
        return(
            <Link to='/'>Link to Home</Link>
        )
    }
}

var App = React.createClass({
  render: function() {
      return(
          <Router history={hashHistory}>
              <Route path='/' component={home}/>
              <Route path='destination' component={destination}/>
          </Router>
      );
  },
});

ReactDOM.render(<App />, document.getElementById('app'));

I can confirm that when using browserHistory from react-router, things work as expected, but when using a custom browser history such as using useRouterHistory alongside with createHistory from history, routes get called twice (in my case getComponent is called twice).

Ran into this issue as well (using hash history). It appears that the extra render is triggered by location prop change. location.action is 'PUSH' on initial render, but changes to 'POP' on the second render.

Hi, after I changed component to getComponent, it just execute my component's initial rendering.
One of my Route like this: <Route path=”shopper-center” getComponent={() => System.import(‘./ShopperCenter’).then(c => c.ShopperCenter)}/>
This component will fetch data and then render something, but if data is not fetched, it just render an empaty <div>, so I got an empty <div>.
It sounds not related with this issue.

I'm having this same issue I think with react-router-redux, where getComponent is being called twice on initial render.
My setup looks like :
import { Router, Route, browserHistory } from 'react-router'
import { syncHistoryWithStore } from 'react-router-redux'

const history = syncHistoryWithStore(browserHistory, store)

ReactDOM.render(
  <Provider store={store}>
    <Router history={history}>
      <Route path="/" component={App}>
        <Route path="foo" component={Foo}/>
      </Route>
    </Router>
  </Provider>,
  document.getElementById('mount')
)

And on initial render getComponent is called twice. When switching
const history = browserHistory

getComponent is only called once as expected. Any ideas?

@dtothefp I am guessing you are using the latest react-router-redux. The 4.0.7 version. I solved my exact problem downgrading to one patch down, to 4.0.6. I suggest you try that.

@dadish this is a 3.x issue

Sorry @dtothefp I misread your comment. I thought you had issues with browserHistory. @BTMPL should I delete my comment?

I can confirm that this bug is present when using hashHistory.
We're using following:
"react-router": "^3.0.2",
"react-router-redux": "^4.0.6",

Let's not conflate this with react-router-redux. It has a bug right now that's somewhat similar, but unrelated to this.

@timdorr do you have a link to the bug report on react-router-redux and if so how can we determine which bug is which?
I can confirm I'm on:
"react-router": "3.0.2",
"react-router-redux": "4.0.7"

reactjs/react-router-redux#481

This issue should probably be moved to history because from what I can see, it has to do with multiple calls of the  history instance's transitionTo method (which, through a chain of events eventually calls getComponent) being triggered by one click. The first time is through the call to history.push and the second is when the HashProtocol's listener is called.

Looks like the problem is the hashchange listener is calling the history listeners directly instead of using transitionTo like 2.x did. While that's fine for the browser history, because popstate only fires on browser-initiated transitions, the hashchange event fires for all mutations of the hash, including the transition itself! That causes it to double up the listener calls.
In any case, as @pshrmn stated, this is ultimately a history issue. I'll open up something over there and link back here.

So if we are using hashHistory how do we prevent this?

I know this issue is ancient, but I want to leave my workaround for those of you who might be working on large, long existing projects (and are stuck on v3)
`
<Route path='/somewhere' getComponent={ myRoute } />
...
export const myRoute = (location, cb) => {
if (location.location.action === 'POP') {
System.import('somestuff').then((m) => {
// return component here
});
}
};
`


Split Statement::clean_up into bind_clean_up and clean_up

Allow to reuse statement with new references by only cleaning bound values and not the backend statement.

It would be nice if docs/{backends,reference}.md could be updated, perhaps with an example of how a statement can be reused thanks to the new function introduction?

We also need a test case.
It's awesome SOCI receives new contributions, but even smallest features need a test case and a tiny bit of docs. Otherwise, those who will follow with maintenance will need to spend more time than necessary to figure details out. I'm sure, I'm annoying with the obvious :)

FWIW I totally agree with the need for the test case, I was going to mention it myself but forgot, thanks @mloskot for doing it.

Of course, I can add documentation and test case, there is no problem
This is an example:
soci::session db("sqlite3", ":memory:");
db << "CREATE TABLE test(a INTEGER)";

{
    // prepare statement
    soci::statement stmt = (db.prepare << "INSERT INTO test(a) VALUES(?)");

    {
        // first insert
        int a0 = 0;

        // update reference
        stmt.exchange(soci::use(a0));

        stmt.define_and_bind();
        stmt.execute(true);
        stmt.bind_clean_up();
    }

    {
        // come later, second insert
        int a1 = 1;

        // update reference
        stmt.exchange(soci::use(a1));

        stmt.define_and_bind();
        stmt.execute(true);
        stmt.bind_clean_up();
    }
}

{
    std::vector<int> v(10);
    db << "SELECT a FROM test", soci::into(v);
    for (int i = 0; i < v.size(); ++i)
        std::cout << i << ": " << v[i] << std::endl;
}

db << "DROP TABLE test";

I guess, such statement preparation with delayed re-binding is useful.
:+1: thanks!

I was wondering why exchange do not bind directly and I have to call define_and_bind. Is there any reason?

I agree that exchange() could be smarter, see also my old mail about this.

Indeed, I didn't checked backends other than sqlite3.
But this method and the one from your old email didn't generate errors with valgrind, I mean running sqlite3 backend.
My point, when reviewing sqlite3 backend (see PR #360), was that when running execute all references and so their contents should not change. So any pointer to referenced values used by pre_use should be valid until post_use is called, both call are done in execute.

Regarding exchange and define_and_bind sequence, AFAIU, it is related to Oracle OCI legacy. Originally, SOCI was createda as "Simple OCI". Later, adoption to other DBMS followed.
Does this PR need more work or is it ready/accepted to merge?

This PR is ready if nobody has comment on it.
About exchange I made some tests to bind directly exchanged values but it is no so easy, there is some corner cases because of prepare* and once* classes.

@ArnaudD-FR Thanks for your help!


Adjust the schema towards transparency issues

This is partly already done by implementing properties like "open access" or "sustainability plan", but as I was reading an article by Zaagsma (2022), I came across this quote:

To start with, and echoing the call of Hauswedell et al. (2020), we urgently need what could be called digital cultural heritage transparency guidelines that encourage institutions to provide more information about how their digital resources are constituted and were created. Who funded the project? What selection criteria were applied? What classification and metadata schemes were used? How is access provided? What choices were made concerning the interface and search options? And crucially (if often ignored), what relevant offline sources could be of interest to researchers? An increasing number of institutions is beginning to provide (parts of) this information, a development that will hopefully see wide adoption across the GLAM sector. (Zaagsma 2022: 844)

This is an issues especially in the NLS-related area, as due to different reasons, projects are not willing to provide too much transparency, especially not before the project's work is "publication-ready" (e.g. Bibliotheca Arabica). I think that does conflict with Open Scholarship and FAIR principles often required by funding institutions or academic guidelines and should be addressed as such. That being said, we should not use this as a stigma, as there are valid reasons for not being transparent in some cases. But some of the questions above might be interesting to weave into the schema, don't you think?
(Assigned to Xenia, but feel free to change @theodore-s-beers )

Very good, thank you! I think this article could be also helpful in the preparation of questions for our interview. I would read it and make notes, but I wouldn´t change the schema before consulting it with you, @theodore-s-beers

I definitely support adjusting the schema to bring these issues into relief. I think it could be done subtly enough that it wouldn't look as though we were being judgmental toward projects that operate relatively less transparently.


How to export FP32 model?

EVALUATION.md shows the latency of FP32. With export.py and optimize.py only the FP16 model is available. So how to export FP32 model? And could you give the accuracy of different models? thanks!

Hi @JingruiYu, thank you for your interest in LightGlue-ONNX.
If you run optimize.py as follows:
python optimize.py --input weights/superpoint_lightglue.onnx

It should produce two outputs:

weights/superpoint_lightglue_fused.onnx: This is the FP32 one
weights/superpoint_lightglue_fused_fp16.onnx: This is the FP16 one

At the moment, I don't have any plans to calculate the accuracies (busy with other stuff). But you're very welcome to contribute these results!

Thanks!