Client loses connection and stop (/hang) Need advise

Hi There
I am using ESP32_BLE_Arduino library on a esp-idf environment trying to read multiple (10) BLE-servers
I am able to read a BLE server using the client.
There are a lot of Error passing through and everything is still working
I do not care about these error but on different moments the connection got lost and everything stops.
And that is what I do not like (/cannot have)
The places with odd errors and still working fine are:
Code:
pRemoteService->getCharacteristics();
or
Result:
E (3678) BLERemoteCharacteristic: esp_ble_gattc_get_all_descr: ESP_GATT_NOT_FOUND
E (3678) BLERemoteCharacteristic:
E (3678) BLERemoteCharacteristic:
Code:
pClient->disconnect();
Result:
E (19898) BT: bta_gattc_conn_cback() - cif=3 connected=0 conn_id=3 reason=0x0016
The places wich stop ESP32 to work are (not always, but certainly within 20 times):
Code:
std::string value = pRemoteCharacteristic->readValue();
Result:
E (26488) BT: GATTC_Read GATT_BUSY conn_id = 3
E (26488) BT: No pending command
E (26498) BT: No pending command
E (35048) BT: bta_gattc_conn_cback() - cif=3 connected=0 conn_id=3 reason=0x0013
Code:
BLERemoteService* pRemoteService = pClient->getService(serviceUUID);
Result:
E (103488) BT: btc_gattc_cback transfer failed
E (103578) BT: No pending command
E (112008) BT: bta_gattc_conn_cback() - cif=3 connected=0 conn_id=3 reason=0x0013
Things already tried:
-Latest version from esp-idf,
-Latest version from ESP32_BLE_Arduino
-Using isConnected() before executing code.
I expect that it is due to losing the connection during execution
question
So my major question is. How to avoid stopping the client executing. (catch all the issues and just continue)
Minor question. How to reduce errors that might cause the problem
Additional question: How to show the messages that are in the library: ESP_LOGD(LOG_TAG,"someting");
I tried already using this command  esp_log_level_set("*", ESP_LOG_ERROR);
including the settings "make menuconfig"

E (3678) BLERemoteCharacteristic: esp_ble_gattc_get_all_descr: ESP_GATT_NOT_FOUND
means that characteristic does not have any descriptors, no need to worry, its not error
E (19898) BT: bta_gattc_conn_cback() - cif=3 connected=0 conn_id=3 reason=0x0016
this probably also its not an error, sometimes espressif devs use LOGE for logging, but in your case it can just be info that disconnection reason is 0x0016, especialy if its after pClient->disconnect(); (im not sure, though)
Here

std::string value = pRemoteCharacteristic->readValue();
BLERemoteService* pRemoteService = pClient->getService(serviceUUID);

try to add check:
if(pClient->isConnected()){
BLERemoteService* pRemoteService = pClient->getService(serviceUUID);
}

Thanks. I tried the isConnected() already. Actually and does not help

Maybe a little delay before read/write operation that causes crash?

Additional question: How to show the messages that are in the library: ESP_LOGD(LOG_TAG,"someting");
I tried already using this command esp_log_level_set("*", ESP_LOG_ERROR);
including the settings "make menuconfig"

In arduino you have Debug core level to set, in esp-idf its log level in menuconfig that you need to setup first. I have set it up to verbose (helps in debug).

Maybe a little delay before read/write operation that causes crash?

I  tried a delay of 100ms, I thought that should be enough. That did not help  :(

Sorry, but i cant perform real life simulation with so many devices so i cant any solution or advice. I wish i can be more helpful.

I Sorry, but i cant perform real life simulation with so many devices so i cant any solution or advice. I wish i can be more helpful.
No worries I will come back with more details.
I am almost sure that this is just due to the BLE-server is sending data and during transmit the connection is lost. And there is no fallback scenario. I think I found the "Verbose" setting. So I will know more soon


Make signal optional feature

Is your feature request related to a problem? Please describe.
To reduce dependencies count i propose to make signal is optional.
Describe the solution you'd like
Making signal optional in cargo.toml
Describe alternatives you've considered
Additional context

Just released version 1.1.1 which adds the signals feature flag. It's enabled by default for compatibility, so you can disable it like this:
[dependencies]
interprocess = { version = "1.1", default-features = false }


Show dialog when accessing folders without read/write permissions

Explain the bug
Write a clear description of what the bug is.
To reproduce

Let someone create a Folder on a network drive, so that you dont have read/write/open permissions for the folder, but so that you can see it (see first screenshot)
Try to open the Folder in Files.
Now it looks as if the folder you opened is an empty folder

Expected behavior

A warning message when you try to open folders, that you don't have permissions for.

Screenshots

Add screenshots to help explain your problem if needed.
System Information

OS:	Windows 10 Pro Version	20H2 19042.868
App version:  v1.5 -  e859940

@gave92 Should we merge this with #1194?

Merging with #1194


Fix typo optimistick -> optimistic

Signed-off-by: Aurélien Pupier<EMAIL_ADDRESS>

Thanks @apupier !


fix typo in docs/index.rst

Fixed typo in label of url to github in docs/index.rst

Thanks! This has actually bothered me for quite some time though did not find the energy for fixing it.


The profile picture (neither mine nor someone) can not enlarge when clicked on it.

Is your feature request related to a problem? Please describe.
When I click on someone's profile pic, nothing happen.
Describe the solution you'd like
When clicked on the someone's profile picture in the room, it should be enlarged as in IOS app.
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
Device: Galaxy S20+
OS: Android 11
APK version: 1.08

İssue resolved on version 1.09. Thanks to developer, I have closed the ticket.


DMN Runner doesn't render inputs and outputs from Included Models

Currently, the DMN jit executor doesn't send back which nodes from the Included Models are used in the current DMN, making it impossible to render the inputs and outputs on the DMN Runner table and form.
Acceptance criteria

[ ] Make the jitexecutor send back the Included DMN which are used in the current DMN;
[ ] Make a distintion of the Included DMN in the DMN Runner Inputs and Outputs section. (e.g. a new section or add a border);'
[ ] The DMN Runner should work in the form and table;

@ljmotta Can you please provide a reproducer? Like a DMN that should be working but isn't... Thanks!

In the following example, we have a "MyDecision" decision node which depends on the "b.MyBooleanDecision" decision node and the "b.MyInput" input node. The "b.MyBooleanDecision"  depends on the "MyInput" input on the included DMN.
The "MyDecision"  has a Boxed Literal with b.MyInput and b.MyBooleanDecision
The "b.MyBooleanDecision" has a Boxed Literal with MyInput.
Adding a new input node named MyInput would add this input to the DMN Runner form, but it would not affect the decision evaluation.


$ pipenv install not working.

❯ pipenv install
Creating a Pipfile for this project...
Creating a virtualenv for this project...
New python executable in /Users/jeyraof/Work/fashion-keyword/.venv/bin/python
Installing setuptools, pip, wheel...done.

Virtualenv location: /Users/jeyraof/Work/fashion-keyword/.venv
No package provided, installing all dependencies.
Pipfile found at /Users/jeyraof/Work/fashion-keyword/Pipfile. Considering this to be the project home.
Installing dependencies from Pipfile...

Traceback (most recent call last):
  File "/usr/local/bin/pipenv", line 11, in <module>
    sys.exit(cli())
  File "/Library/Python/2.7/site-packages/click/core.py", line 722, in __call__
    return self.main(*args, **kwargs)
  File "/Library/Python/2.7/site-packages/click/core.py", line 697, in main
    rv = self.invoke(ctx)
  File "/Library/Python/2.7/site-packages/click/core.py", line 1066, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/Library/Python/2.7/site-packages/click/core.py", line 895, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/Library/Python/2.7/site-packages/click/core.py", line 535, in invoke
    return callback(*args, **kwargs)
  File "/Library/Python/2.7/site-packages/pipenv/cli.py", line 524, in install
    do_init(dev=dev, requirements=requirements, allow_global=system)
  File "/Library/Python/2.7/site-packages/pipenv/cli.py", line 378, in do_init
    click.echo(crayons.yellow('Pipfile.lock not found, creating...', err=True))
TypeError: yellow() got an unexpected keyword argument 'err'

❯

When i start up new project, I sent command $ pipenv install for initializing default structure.
But no specific pypi-package-name passed, it raised above error.
However, when I pass pypi-package-name on start up, it works well:
$ pip env install requests.
how to deal with it ?
Is $ pipenv install (blank) bad request?

fixed!

Its not fixed I still get the error when I try to run $ pipenv install (blank) its still a bad request.-bash: pipenv: command not found

@allisonsnipes your issue is unrelated


Convexification of a flowpipe

Write a function convexify that receives a flowpipe and an integer k and returns the convexified flowpipe, ie. it groups through ConvexHullArray wrappers the contiguous reach-sets for each chunk of k reach-sets.

there is now Convexify(fp::Flowpipe{N, ReachSet{N, ST}}) where {N, ST}
we could add a variant that also receives an index k >= 1 and convexifies reach-set chunks of size k

on a related note, though L = Convexify(sol[end-k:end]) works, it copies sol[end-k:end] over to a new array. it would be nice if we can avoid the copy. this probably requires a wrapper type ConvexifiedReachSet.


Query : GO:0006794 phosphorus utilization

GO:0006794 phosphorus utilization zero annotations
Should this be phosphate utilization ?

Maybe it's ok? https://grammarist.com/spelling/phosphorous-phosphorus/
I suppose bacteria would use the mineral form?

OK!
We don't have phosphate utilization .... that's what I was looking for...

add as synonym? I dont have a very strong feeling.
If you have references that'd be useful.

For my purposes phosphate ion homeostasis will suffice.
https://pubmed.ncbi.nlm.nih.gov/?term="phosphate+homeostasis"+and+fission+yeast&sort=date&size=50
(I will keep this ticket open to add synonyms"
phosphate homeostasis
Pi homeostasis

Also add synonyms to cellular phosphate ion homeostasis chid


chore(master): release 0.28.0-alpha

:robot: I have created a release beep boop
0.28.0-alpha (2024-01-24)
Features

new (6cc063d)

This PR was generated with Release Please. See documentation.

:robot: Release is at https://github.com/mafqla/yalis-blog/releases/tag/v0.28.0-alpha :sunflower:


Possible race condition?

https://github.com/gernot-at-etron/redux-saga-put-async
Is it possible with the current code that the handler of yield put(decrementAction()); reaches this line this.data.push(data); before the handler of yield put(incrementAction()); does reach it?
Thank you

Greetings!  Could you please link me the file where this.data.push(data); is called?

Sure.
https://github.com/gernot-at-etron/redux-saga-put-async/blob/master/src/features/singleton/Singleton.ts

Expecting a handler to finish before the next handler when two consecutive yield put() are called can result in race conditions.  All yield put() does under the hood is call store.dispatch(action).  The takeEvery watcher will then get called but in a non-blocking way.  My recommendation is to not use yield put in cases where you need the subsequent operation to complete.
In your case:
export function* start() {
	console.log("start()");
        yield call(increment);
	yield call(decrement);
}

export function* increment() {
	console.log("increment()");
        yield put(incrementAction());
	const singleton = Singleton.getInstance();
	yield singleton.funcA("increment");
}

export function* decrement() {
	console.log("decrement()");
        yield put(decrementAction());
	const singleton = Singleton.getInstance();
	yield singleton.funcA("decrement");
}

export function* watchIncrement() {
	yield takeEvery('START', start);
}

export function* rootSaga() {
	yield all([
		helloSaga(),
		watchIncrement()
	])
}


How to use with custom text function❓

Is there any way to work with custom text domain like __my('Text', 'domain', 'key'). __my function is first checking the key from theme options. if there is any text shows that text, if not works with __() wp function. For this case I want to detect __my function texts and add to pot file.
Thanks

No, this is currently not possible, but might be a reasonable addition if you wanna make a contribution.
The main challenge is for users to be able to specify how __my( 'Text', 'domain', 'key' ) should be interpreted. In your case, it could be treated like __() but with the third argument ignored. But what if someone uses __my2( 'Text', 'something else', 'context', 'key' )? This is where things get complicated.

I have simple frontend texts and option panel to edit them. I use only 3 arguments. I don't need a complicated configuration. I used gulp task before with https://github.com/wp-pot/gulp-wp-pot and it has gettextFunctions variable for this issue. But gulp-wp-pot limited me for something else.
Their configuration was similar to this;
	gettextFunctions: [ 		{ 			name: "__my" 		}, 		{ 			name: "__myEcho" 		}, 		{ 			name: "__" 		}, 		{ 			name: "_e" 		}, 	        { 			name: "_ex", 			context: 2 		}, 		{ 			name: "_n", 			plural: 2 		}, 		{ 			name: "_n_noop", 			plural: 2 		}, 		{ 			name: "_nx", 			plural: 2, 			context: 4 		}, 		... 	]

I have simple frontend texts and option panel to edit them. I use only 3 arguments. I don't need a complicated configuration. I used gulp task before with https://github.com/wp-pot/gulp-wp-pot and it has gettextFunctions variable for this issue. But gulp-wp-pot limited me for something else.
Their configuration is similar to this;
gettextFunctions: [ { name: "__my" }, { name: "__myEcho" }, { name: "__" }, { name: "_e" }, { name: "_ex", context: 2 }, { name: "_n", plural: 2 }, { name: "_n_noop", plural: 2 }, { name: "_nx", plural: 2, context: 4 }, ... ]

Well, same thing. It's the kind of cconfiguration option we would need here as well.

It would be great if there is a plan to add this. 👀

@deepnees We're currently discussing this in Slack.
My current thoughts are that you should have a flag like this to make this work:
wp i18n make-pot --add-gettext-function=__my,__myEcho

This could then also be added to a per-project wp-cli.yml configuration file like so:
i18n make-pot:
  add-gettext-function: __my,__myEcho

With this, the functions would always be added by default when you run the command from within the folder that contains this configuration file.
How does that sound? Do you think this solves your issue? Do you think there would be a use case where you absolutely had to remove an already defined function?

Yes, It will solve my simple need. How about complicated usages mentioned by @swissspidy?

Is there any progress on this? --add-gettext-function=__my,__myEcho is good start to support this idea.

We’re all volunteers here, so time is scarce. I currently don‘t have much time to work on this, but if you‘re up for submitting a pull request that would be more than welcome!

Well, I'm a simple developer. I forked and made some workaround changes for my needs. https://github.com/deepnees/i18n-command/pull/1
I hope you support this more properly in the future.


Fix: Prototype Pollution upstream vulnerability

fix(vulnerabilities): bump node-pushnotification 1.5.0

fixes upstream node-forge Prototype Pollution in node-forge
https://www.npmjs.com/advisories/1561

Fix #83

any news about this PR? 🙄

any news about this PR? 🙄

I'm catching up, sorry for the delay: https://github.com/notifme/notifme-sdk/releases/tag/1.11.0


Generate macros.h with configure_file()

Using file(WRITE) caused the file to be rewritten for every CMake
reconfigure, which was causing unnecessary full rebuilds of the project
even when no source files changed.
The new strategy has the added benefit of enforcing that the macros.h file
is always generated correctly. When the main project relies on this
header for macro definitions (instead of relying on add_definitions()),
we can be more confident that the project will build correctly when used
as a library (which is the whole point of the macros.h file).
Upsides:

No more unnecessary rebuilds
Higher confidence that the project will compile properly as a third-party library

Downsides:

Developers need to add an entry to macros.h.in whenever they would have added a new definition with add_definitions()

/cc @Yangqing because https://github.com/caffe2/caffe2/commit/642db009d20eb2f816bbb2bcaa8fc1d0cbc0c618

Rebased after merge conflict from https://github.com/caffe2/caffe2/pull/1104.

Looks great - @harouwu mind merging?

I am working on a fix to disable Travis CI complaining test right now. After that if all passes, lets land it then


db.close() not allowed after db.detatchAll(antibodies,true)

OrientDB Version: 2.2.17
Java Version: 1.8
OS: Kubuntu linux 14.04
Expected behavior
select some items and return to a Grails server page or view(gsp) and closing the database connection before returning.(see below)
Actual behavior
Using this concept in IntelliJ/Grails, Controller and Services
*** dbObjectConnectionService ...
public OObjectDatabaseTx getDatabase(String url, String userName, String password) {
OObjectDatabaseTx db = new OObjectDatabaseTx(url).open(userName, password)
ODatabaseRecordThreadLocal.INSTANCE.set(db.getUnderlying())
return db
}
*** Service...
def db = dbObjectConnectionService.getDatabase("remote:localhost/CytBase", "admin", "admin")
db.getEntityManager().registerEntityClass(Panel.class)
List antibodies = db.query(
new OSQLSynchQuery("select from Panel where channeltype != 'N/A' order by channeltype"))
the next two lines do not give the expected outcome, namely to close the database connection and still be able to utilize the List antibodies.
antibodies = db.detatchAll(antibodies,true)
db.close()
antibodies
*** Controller...
def index() {
[antibodies: panelService.getPanelData()]

}
To utilize the 'antibodies' list in a drop down makes it impossible to close the database.
Steps to reproduce
antibodies = db.detatchAll(antibodies,true)
db.close()
renders stack trace:
URI
/panel/index
Class
groovy.lang.MissingMethodException
Message
null
Caused by
No signature of method: com.orientechnologies.orient.object.db.OObjectDatabaseTx.detachAll() is applicable for argument types: (java.util.ArrayList) values: [[no.cytbase.data.Panel(153Eu_pSTAT1_Y701, Eu153Di, Intracellular phosphorylation), ...]] Possible solutions: detachAll(java.lang.Object, boolean), detach(java.lang.Object), detach(java.lang.Object), detach(java.lang.Object, boolean)

hi @austx,
The error still sound strange to me, like the error says it exists a method with signature detachAll(java.lang.Object, boolean)  and it complain because the parameter is not ArrayList, but it should be ok, because everything is Object, I'm trying to reproduce it locally but i don't have much experience with grais, I'll come you back with some example as quick as i can, in any case i think we need to investigate a bit on the java-grails intragraion.
Regards

hi tglman,
to me this is all about being able to close the database after fetching data into map antibodies.
The detachAll(antibodies,true) does not complain, the problem appears if db.close() is used.
Not sure I understood this all together, but can't keep increasing the number of open database connections. Thanks!

hi @austx,
Yes i got the overall problem i just wrote an "example" test case to reproduce your problem in java, and I figured out the we have some problem with the detach all, but anyway i was able to write a test case that actually works, here it is:
package com.orientechnologies.orient.object.db;

import com.orientechnologies.orient.core.db.document.ODatabaseDocument;
import com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx;
import com.orientechnologies.orient.core.db.object.ODatabaseObject;
import com.orientechnologies.orient.core.sql.query.OSQLSynchQuery;
import org.junit.Test;

import java.util.ArrayList;
import java.util.List;

import static org.junit.Assert.assertEquals;

/**
 * Created by tglman on 24/02/17.
 */
public class TestObject {

  public static class Some {
    private String name;
    private String surname;

    public Some() {
    }

    public Some(String name, String surname) {
      this.name = name;
      this.surname = surname;
    }

    public String getName() {
      return name;
    }

    public void setName(String name) {
      this.name = name;
    }

    public String getSurname() {
      return surname;
    }

    public void setSurname(String surname) {
      this.surname = surname;
    }

    @Override
    public String toString() {
      return "Some{" + "name='" + getName() + '\'' + ", surname='" + getSurname() + '\'' + '}';
    }
  }

  @Test
  public void simpleDetachTest() {
    OObjectDatabaseTx databaseObject = new OObjectDatabaseTx("memory:test");
    databaseObject.create();
    databaseObject.getEntityManager().registerEntityClass(Some.class);
    databaseObject.save(new Some("a-name", "a-surname"));

    List<Some> val = databaseObject.query(new OSQLSynchQuery<Some>("select from Some"));
    List<Some> val1 = new ArrayList<Some>();
    for (Some some : val) {
      val1.add((Some) databaseObject.detach(some, true));
    }
    databaseObject.close();

    System.out.println(val1.toString());
    assertEquals(val1.size(), 1);
    assertEquals(val1.get(0).getName(), "a-name");
    assertEquals(val1.get(0).getSurname(), "a-surname");
  }

}

As you see in the example i didn't do the detachAll but i iterate on the result and detached them one by one, filling another list, this work fine, i'm going to dig a bit and make as well the datachAll work properly but i hope this can unblock you for now.
Regards

I've tested @austx case. Not all fields in Panel from the database existed in the POJO Panel. This included a link to a some other data element. In essence this means that this operation will fail if the POJO does not have all the fields and links defined on it.
This resulted in a NullPointerException in OObjectEntitySerializer.getField(fieldName, selfClass) on line 140 https://github.com/orientechnologies/orientdb/blob/master/object/src/main/java/com/orientechnologies/orient/object/enhancement/OObjectProxyMethodHandler.java
I think the most reasonable approach here would be to only set the fields that exist in the POJO and ignore the rest.

Thanks stiancor!
one example to illustrate this is. I had to include in_... and out_... edges as String in actual domain classes.

hi all,
Sorry for the late replay, so checking this again I got the right way to do this, there is no way, to make orientdb iterate to all the results and detach them for you before the query is returned, so you have to iterate over them and call detachAll, the detach is not enough because it detach only the first level and not the nested documents, so getting again your example, this is the final:
  @Test
  public void simpleDetachTest() {
    OObjectDatabaseTx databaseObject = new OObjectDatabaseTx("memory:test");
    databaseObject.create();
    databaseObject.getEntityManager().registerEntityClass(Some.class);
    databaseObject.save(new Some("a-name", "a-surname"));

    List<Some> val = databaseObject.query(new OSQLSynchQuery<Some>("select from Some"));
    List<Some> val1 = new ArrayList<Some>();
    for (Some some : val) {
      val1.add((Some) databaseObject.detachAll(some, true));
    }
    databaseObject.close();

    System.out.println(val1.toString());
    assertEquals(val1.size(), 1);
    assertEquals(val1.get(0).getName(), "a-name");
    assertEquals(val1.get(0).getSurname(), "a-surname");
  }

Let me know if doing in this way solve the problem.
Regards

I have a feeling we are talking past each other. I can't see any mention of the real problem here. If a new edge is created the detach renders a nullpointerexception. Please have a closer look at stiancor answer.

I don't know OrientDB well at all, so my apologies if I'm missing something here, or if we are talking past each other.  However, it seems to me that we might be talking about two separate issues here?
I was going through @austx code, and found that the NullPointerException he got was related to setting the values on his POJO class called Panel. It seems that after saving, and then querying he suddenly got more fields from the query that did not originally exist in the Panel class. One of these fields are out_UtilizedIn where the code I refered to earlier would fail unless one defined getters and setters on the Panel class.  My suggestion was to ignore trying to set fields on POJOs if the class did not have a setter to do so.

This seems to be nothing short of a misconception when mixing Graph and Object API.. After some advice from Luca, I decided to close this issue. Writing a Helper function worked just fine. Thanks.

Cool.


Bugfix/#26 remove gathering timeout

Removed gathering timeouts and replaced check for completeness of agent.getState() with agent.getState().isOver(). Following the connectivity establishment the result is logged and if the state is either FAILED or TERMINATED then the thread exits (as per before).
To clarify why both timeouts of the gathering process were removed: the first timeout was preventing the agent from finishing gathering candidates, which is guaranteed to finish. The second timeout was unnecessary and could cause connectivity establishment failure because

the transport protocol used is tcp i.e. guaranteed packet delivery
If the peer takes longer than 6 seconds to gather candidates, the connection is reinitiated resulting in the potential for a loop.

I'll have to check about isOver(), but that sounds nice.
I don't think removing the timeouts is a good idea though. I guess you're doing that as gathering still takes up to a minute on your machine?
We might be able to take a look at ice4j and figure out/fix it there.
About not timing out gathering candidates, in what way is that guaranteed to finish? That check was added to detect it not finishing and then restart the gathering process with less harvesters, first time no host, second time no srflx, so on the third attempt only the relay candidate should be found which solves the issue of not finishing gathering for lots of people.
About the second timeout, there is no guarantee an ICE message/candidates package will arrive at the other side, as the server might drop it or you may even have lost connection to it. Removing the timeout would effectively break the ability to reconnect.

based on some comments on the discord technical help channel, it seems this is happening not only on my machine.
Ok, so using less harvesters on multiple retries sounds great, but the reason that the gathering is taking so long is it's network adapter that times out after a long time (30,40,50 seconds) and not the method by which gathering happens. Moreover, the gathering process is guaranteed to finish because at some point the underlying connections that ice4j creates will time out or complete (or other failure), thus completing the gathering phase.
Maybe the best compromise is to count the number of active (i.e. with ip address allocated) network adapters between two peers and add a few seconds timeout for each for both peers? Alternatively, how about measuring and uploading/recording the gathering and component creation timings for analysis?
For the second timeout: Ok, I went through the logic again and mistakenly assumed that the connection is established directly between peers, but this is before ICE is finished. Makes sense to keep that timeout then.


Telemetry - Add x-meilisearch-client query parameter

Why?
Following this comment pointing out that some browsers forbid the customization of the User-Agent header, the analytics stack can now take the value of a x-meilisearch-client query parameter if found instead of the user-agent header to track the usage of our SDKs/Integrations.

To further emphasis the comment linked in the body of this PR:
What are the issues in using user-agent in the javascript SDK
Issues:

Chrome and safari does not accept custom user agent https://github.com/axios/axios/issues/1231#issue-280685325

Forcing the user-agent change in chrome and safari will throw errors in the dev console in safari and chrome: Refused to set unsafe header "user-agent"

Why not check the environment to know if we change the user-agent or not? Trying to find out if we are not in an chrome or safari environment requires parsing the user-agent. Unfortunately, the user-agent is going through a lot of changes in the upcoming chrome versions. These changes are breaking.
If we remove the user-agent in Javascript we are not able to know if the request are made from front end or back end

Nice info:
Chrome is going to provide user agent client hint as an alternative to know about the user environments to avoid using the user-agent.
This has been decided in order to gradually reduce the size of the user agent (huge breaking starting chrome 101 )
Why do they break the user agent? See last section here.
→ User agent client hint: https://web.dev/user-agent-client-hints/
→ Gradual change in User-agent: https://blog.chromium.org/2021/09/user-agent-reduction-origin-trial-and-dates.html


Cap tox at 2.4.0 to avoid env substitution bug

Tox 2.4.0 was released this morning and broke the ability to use
environment substitution. To avoid this and keep our continuous
integration happy while we complete our work, we prevent travis from
installing any version of tox 2.4.0 or later.
Related-to tox-dev/tox#380
Connects rcbops/u-suk-dev#512
(cherry picked from commit 3e18ce8b06ab64cf2d509abefbef5e33f6a0e39f)

👎 there's a new version of tox that fixes this appropriately. I'd like to see what happens with #1497 before we merge this so that we do not have to cap tox long term.

👎

#1499 out.


[GURPS] 2.9.16

Submission Checklist
Required

[x] The pull request title clearly contains the name of the sheet I am editing.
[x] The pull request title clearly states the type of change I am submitting (New Sheet/New Feature/Bugfix/etc.).
[x] The pull request makes changes to files in only one sub-folder.
[x] The pull request does not contain changes to any json files in the translations folder (translation.json is permitted)

Changes / Description

Added Reason for Mod to Hit Point and Fatigue Point columns.
Updated tooltip notes for Recover from Physical Stun Check, Knockdown and Stunning Check, Unconsciousness Check, and Death Check.
Range Calculator Tool: Updated modifier summary to include the number of shots fired. Fix macro help tooltip for the Fired input box.

Character Sheet Info Roll20 Internal Use only.


Unblock Travis

Something is going on with Travis as of yesterday. Doesn't seem like any builds are passing, lots of hanging.
https://travis-ci.org/Instagram/IGListKit/builds/180498817 is taking over 3 hours with about half of the builds succeeding in around a minute.

Yep -- known issue. Travis is having some problems:
https://www.traviscistatus.com/incidents/nq0sf0srvx8s


Seems highly incomplete; and possibly 99% fake data.

At least 75% of the domains from the below master are not in this list:
https://raw.githubusercontent.com/FGRibreau/mailchecker/master/list.json
I run an email service with massive numbers of users (many millions of distinct email domains), and this list only matched two dozen domains: it looks like almost all those sha1 hashes are junk/rubbish and not real domains at all... they're just fake to make the list look big, when it's got almost nothing useful in it really.

Hi Mr. or Mrs. readnotify,
this is to notify that I just read your message ;-)
First of all: congratulations to your service which collects millions of domains - might be a good input for my project as well (see www.block-disposable-email.com).
Secondly, the list you found is for sure not fake - all domains are checked manually at the time when they appeared for the first time on my end. The hashed list includes about 2.000 alternative domains of mailinator. Some of them are not used very frequently for subscriptions. However, they are or have been used by mailinator. And this is what the list is dedicated to. To make it even more clear: the list does not include any domains of other disposable email services - that's why there is not so much overlap to the repository of @FGRibreau. To check your userbase against more than 10.000 domains of a variety of dea services feel free to challenge us.
The domains you found are published in hashed format in order not to disclose my asset and not to support using the domains for fake subscriptions. Anyway, it looks like I have to prove the content - so here is a list of 50 domains in plain text. Looking forward to get another statement from you.
boatloancalculators.info
mozazbnat.info
divaneganehosein.ir
adjun.info
aletaiblack.top
aliblue.top
ilcircolodelcibo.info
takup.info
fisiologia.info
achengred.top
achengyellow.top
barafa.gs
melis.ml
zhilin.info
goldminerptc.info
akesublue.top
anlublue.top
achengwhite.top
ankangblack.top
achengblue.top
ankangred.top
megamania.info
alipink.top
bnyzw.info
tennis-in-gifhorn.info
anluyellow.top
lebens-weise.info
test-server.xyz
lolsofunny.info
alired.top
grinn.ga
limon.cf
golubovi-bih.info
virtualmobileinfrastructure.us
ioio.eu
vaipe.ru
aletaiyellow.top
aliyellow.top
anqinggreen.top
eboise.com
zolotaya-mina.ru
ankangyellow.top
hnzjj.info
pheron.co
sfedora.ml
ankangpink.top
akesuwhite.top
net-cash.info
anqingwhite.top
aletaipink.top
(some of them might be outdated or not in use anymore)

Close issue due to missing response.

would it be possible to merge the two lists together for a more complete list?

If I would get the list: yes. But it looks like "readnotify" is a fakeuser that just tries to speak bad of the list provided.


Bot 2.0

Closes issues:

Add administration tools
Rename message object fields
Migrate to servant 0.7

I'll try and close the other remaining bot-2.0 issues too and send other PR, or would you prefer to have all  successive commits and fixes in this PR?

LGTM


Scrubbing of detached DOM elements, prevents memory leaks

Fixes #5263.
This scrubs all the DOM elements which would be become detached elements after a map.remove() call. It's necessary to both L.DomUtil.remove() the element and delete every reference to them, even some implicit closures that we made for convenience.
Also adds a new way to call L.DomEvent.off(), as to scrub all (known) native event handlers.

Before: the HTMLCanvasElement becomes a detached element, leaking memory. Also observe five HTMLDivElements for the map panes, and 8 for the control corners, animation proxy, and draggable proxy.

After: I've managed to scrub the detached elements, except for a reference to L.Draggable that I cannot locate right now.

Hmm, I thought that if you remove an element from the DOM, and don't have any references to it left, all the children nodes will also be garbage-collected properly. Do we have to remove all the children like this too?

Apparently not - I had to both remove the nodes from the DOM and delete their references in order for Chrome to garbage-collect them. If I skip removing some explicitly declared element from the parent, then remove the parent, the children is somehow kept in memory.
I might be wrong, though. This PR was a 20-minute hack anyway.

@mourner from a quick look, one problem we have is that adding mouse/touch listeners from a layer adds a reference from the map container to these layers, and they are not always properly cleaned up when the layer is removed; for example Canvas leaves a dblclick etc. from the map container. @IvanSanchez's fix addresses this.
As for the other changes, I haven't looked at them in detail, but I would expect similar patterns.


Blink Detection

There are no script & dataset for blink detection model training. What kind of dataset(full face image or eye image) is used for blink detection model training.

Hello Sujan,
If you need the dataset and training script I can provide you the files.

Hi @R4j4n . Can you share me the dataset and scripts of blinks detection. Thanks you


Update references to the rizinrc config file

I started out PR'ing this to dev, but it seems like there's a few outstanding commits and the last two PR's have gone straight to master, so this too is set to master, but let me know if you want me to rebase on dev.
Updated a few references of ~/.rizinrc to be ~/.config/rizin/rizinrc. Both do appear to work, but thought it would be nice to be consistent. One of the instances was an old output of the command e? which I've also included an update for.

Shall we prefer ~/.rizinrc in the doc? That's where I usually place my configuration at least.

Yeah, I can switch it to that. Any technical reason other than personal preference? I noticed .config/rizin/rizinrc will trump .rizinrc if they're both set with different values.

Shall we prefer ~/.rizinrc in the doc? That's where I usually place my configuration at least.

that is also mine. but i guess we could also mention other locations.

I personally prefer in .config since it's the XDG standard and prevents clogging your HOME.

rizin -H states RZ_RCONFIGHOME=/home/nullun/.config/rizin as being the default configuration location for me and I haven't changed anything, but the files page in the book does suggest ~/.rizinrc as being a valid alternative which also works.
I'm in favour of using XDG standards to keep my home directory clean, but maybe we could add links to the above files page in all the places .config/rizin/rizinrc is shown?

if that is the output of the home location, than yes. that would be what should have been on the docs.


Specific paths / glob patterns not working for clean_urls

Superstatic doesn't seem to be honoring globs assigned to clean_urls:
{
  "clean_urls": ["/app**", "!/components**"]
}

When using an array instead of true/false, all paths continue to be rewritten.

@fastdivision can you try putting the negated components glob before the app glob?
I think it parses them in order.

@scottcorgan I tested a variety of path arrays and none appear to be working. Can you replicate?

@fastdivision the nature of globs and how they're matched require that if you want to touch all files in a directory, you need the slash, such as follows:
{
  "clean_urls": ["/app/**", "!/components/**"]
}

@scottcorgan Makes sense, I need to update the documentation examples to include the slash. Keeping open to investigate multiple exclude patterns as discussed.

Seems to be a glob styling issue and not so much a superstatic issue.
See https://github.com/isaacs/node-glob#glob-primer for information on constructing file globs


stew upgrade --all throwing errors

stew upgrade --all command throwing error, if there is no update found.
including this command in topgrade (r-darwish/topgrade) also throwing error status.

Maybe better to print a warning? I've got a script to update everything and these error messages would just distract, giving no useful info

Btw, the error message goes to stdout, not stderr

These "errors" are harmless and more so just warnings.

Btw, the error message goes to stdout, not stderr

Good call out! Started printing errors to stderr in #31


Error 'Couldn't resolve host name' and with: attribute is blank

I've authorised TestSpace for one of my repos, URL example: https://github.com/bennymeade/testing-testspace
I've then added the required steps to my GH workflow:
- name: TestSpace client
        if: always()
        // Just for the record I also tried `uses: testspace-com/setup-testspace@v1`
        uses<EMAIL_ADDRESS>        with:
          domain: ${{ github.bennymeade.testspace.com }}

- name: Publish Results to Testspace
        if: always()
        run: |
          testspace results.xml

But I get the following error:
Run<EMAIL_ADDRESS>  with:
testspace
Testspace Client, version 2.8.5013
Copyright (C) 2021 S2 Technologies, Inc.

Unable to proceed. Unable to access "testspace-config" space in "bennymeade:testing-testspace" project at Testspace (https://.testspace.com) with specified credentials. Failed performing request: [6] Couldn't resolve host name
For more information about Testspace, visit www.testspace.com.
Error: Process completed with exit code 2.

Note that the with:  is blank and causes project at Testspace (https://.testspace.com) with specified credentials

Hi @bennymeade use the following:
with:
   domain: ${{ github.repository_owner }}

The workflow context provides your organization name that the action requires (i.e. bennymeade).

Great, thanks @munderseth that was my mistake.
I have a new issue that you might be able to help me with. Error: non-existing result file "results.xml" specified! in my - name: Publish Results to Testspace step.
Run testspace results.xml
  testspace results.xml
  shell: sh -e {0}
Aggregating content...
Error: non-existing result file "results.xml" specified!
Uploading to Testspace (https://bennymeade.testspace.com/projects/bennymeade:testing-testspace/spaces/testspace-config)...
  https://bennymeade.testspace.com/spaces/123/result_sets/123

It looks like you are using Cypress.  You need to configure the test runner's output to JUnit and pass the file(s) on the command line to testspace.  Check out the Cypress documentation, I believe their reporter is based on Mocha.
Here is some info on Mocha related to Testspace - https://help.testspace.com/docs/publish/tools-support-javascript#mocha.
Hopefully, this helps.

Yes I'm running Cypress tests. Thanks again for the speedy replies. I will add ```Junit`` tonight and retest my config.

@bennymeade glad it is working for you. If you find the action helpful go ahead and Star it.


CSE: disable CSE of lazy property getters of struct

We cannot prove that the whole struct is overwritten between two lazy property getters.
We would need AliasAnalysis for this, but currently this is not used in CSE.
rdar://problem/67734844

@swift-ci test

@swift-ci benchmark

Performance: -O
Code size: -O
Performance: -Osize

Improvement
OLD
NEW
DELTA
RATIO

FlattenListFlatMap
2802
2422
-13.6%
1.16x (?)

StringToDataEmpty
550
500
-9.1%
1.10x (?)

DataAppendDataMediumToMedium
3160
2920
-7.6%
1.08x (?)

Code size: -Osize
Performance: -Onone
Code size: -swiftlibs

How to read the data
The tables contain differences in performance which are larger than 8% and
differences in code size which are larger than 1%.
If you see any unexpected regressions, you should consider fixing the
regressions before you merge the PR.
Noise: Sometimes the performance results (not code size!) contain false
alarms. Unexpected regressions which are marked with '(?)' are probably noise.
If you see regressions which you cannot explain you can try to run the
benchmarks again. If regressions still show up, please consult with the
performance team (@eeckstein).

Hardware Overview
  Model Name: Mac mini
  Model Identifier: Macmini8,1
  Processor Name: 6-Core Intel Core i7
  Processor Speed: 3.2 GHz
  Number of Processors: 1
  Total Number of Cores: 6
  L2 Cache (per Core): 256 KB
  L3 Cache: 12 MB
  Memory: 64 GB


Display line numbers

Let's make them clickable and linkable like https://github.com/hexpm/preview/blob/main/mix.exs#L1.

@wojtekmach Is this open to pick up? If so I'd be interested developing this!

Please go ahead!


Coral-Schema: Correct nullability determination in coral-schema

During investigation of a extract_union view coral-schema schema conversion issue, I found a bigger problem in the nullability determination logic in the existing coral-schema module codebase.
The correct determination of the nullability should be using the RelDataType's builtin isNullable method, this means, for example, to determine the nullability of a UDF's return type, we should use the UDF's SqlReturnTypeInference which when called on the given operands will return the inferred return RelDataType which contains the nullability information.
Coral-schema needs to return the correct nullability information to work with engines that have strict nullability checks like spark3.
The unit test failures are expected, because the code change covers the logic change in the main code but the framework and unit tests setup needs more changes to pass all tests.

"The unit test failures are expected,"
Does it mean we will have a separate PR to fix unit test?

During investigation of a extract_union view coral-schema schema conversion issue, I found a bigger problem in the nullability determination logic in the existing coral-schema module codebase.

Could you elaborate on whether this PR address the "bigger problem"? It is not clear which what are the two problems and which is the bigger one.

During investigation of a extract_union view coral-schema schema conversion issue, I found a bigger problem in the nullability determination logic in the existing coral-schema module codebase.

Could you elaborate on whether this PR addresses the "bigger problem"? It is not clear what are the two problems and which is the bigger one.

The bigger problem is the existing nullability determination logic (and functions registrations without the correct nullability information in SqlReturnTypeInference).
The change of coalesce_struct is just one example of such changes of SqlReturnTypeInference (the smaller problem, which is extract_union view not working in spark3)

Closing it given #229 has been merged.


Cannot read dma.pickle

Dear Zipline Maintainers,
Before I tell you about my issue, let me describe my environment:
Environment

Operating System: Windows 10
Python Version: `$ Python 3.5
How did you install Zipline: Conda
Python packages: ``

Name                    Version                   Build  Channel
alembic                   0.9.9
bcolz                     0.12.1
Bottleneck                1.2.1
certifi                   2018.4.16                py35_0
chardet                   3.0.4
click                     6.7
contextlib2               0.5.5
cyordereddict             1.0.0
Cython                    0.28.2
decorator                 4.3.0
empyrical                 0.4.2
idna                      2.6
intervaltree              2.1.0
Logbook                   1.3.3
lru-dict                  1.1.6
Mako                      1.0.7
MarkupSafe                1.0
multipledispatch          0.5.0
networkx                  1.11
numexpr                   2.6.4
numpy                     1.14.2
pandas                    0.18.1
pandas-datareader         0.5.0
patsy                     0.5.0
pip                       9.0.3                    py35_0
python                    3.5.5                h0c2934d_2
python-dateutil           2.7.2
python-editor             1.0.3
pytz                      2018.4
requests                  2.18.4
requests-file             1.4.3
requests-ftp              0.3.1
scipy                     1.0.1
setuptools                39.0.1                   py35_0
six                       1.11.0
sortedcontainers          1.5.10
SQLAlchemy                1.2.7
statsmodels               0.8.0
tables                    3.4.3
toolz                     0.9.0
urllib3                   1.22
vc                        14                   h0510ff6_3
vs2015_runtime            14.0.25123                    3
wheel                     0.31.0                   py35_0
wincertstore              0.2              py35hfebbdb8_0
zipline                   1.2.0
Description of Issue
After following the instruction, I executed following code:

zipline run -f dual_moving_average.py --start 2014-1-1 --end 2018-1-1 -o dma.pickle

I got dma.pickle the contents inside the file, but it seems there are some encoding error.
When I try to open "dma.pickle", all the characters are broken.
How can I read this dma.pickle?
Sincerely,
Nomadcreator

i could open it by following code:

python -m pickle dma.pickle


stackoverflow error from linear model

This MWE is eq.6 from Kyung et al. which features group-wise scaling of the coefficients to facilitate shrinkage, analogous to the grouped lasso.
Pretty sure I just messed up the model specification somehow but I also filed an issue, in case that makes it easier for the devs.
I have the following model:
# Import Turing and Distributions.
using Turing, Distributions

# Import MCMCChains, Plots, and StatPlots for visualizations and diagnostics.
using MCMCChains, Plots, StatsPlots

# Functionality for splitting and normalizing the data.
using MLDataUtils: shuffleobs, splitobs, rescale!

# Functionality for evaluating the model predictions.
using Distances

# Set a seed for reproducibility.
using Random

using LinearAlgebra
Random.seed!(0)

# Hide the progress prompt while sampling.
Turing.turnprogress(false);

@model function grouped_lasso(y,x1,x2,x0,σ²,λ²)
	# for pairwise model, only two groups for lasso: home (self) and remote (other)
	ngroups = 2

	# home and remote groups
	mk = size(x1)[2] + size(x0)[2]

	# number of observations
	nobs = size(x1)[1]

	# set variance prior (shrinkage of the group-wise linear coefficients)
	τ² = Vector{Real}(undef,ngroups)
	for i = 1:ngroups
		τ²[i] ~ Gamma((mk+1)/2,λ²/2)
	end

	# set the coefficient prior
	β = Vector{Vector}(undef,ngroups)
	for i = 1:ngroups
		β[i] ~ MvNormal(mk,σ²*τ²[i])
	end
	# set the target distribution
	ntarg = size(y)[2]
	for i = 1:nobs
		mu = Vector{Real}(undef,ntarg)
		for j = 1:ntarg
			mu[j] = dot(vec([x1[i,:]' x0[i,:]']),vec(β[1])) + dot(vec([x2[i,:]' x0[i,:]']),vec(β[2]))
		end
		y[i,:] ~ MvNormal(mu,σ²)
	end
end

yTrain = rand(MvNormal(fill(0,3),1),1000)'
x1Train = rand(MvNormal(fill(0,2),1),1000)'
x2Train = rand(MvNormal(fill(0,2),1),1000)'
x0Train = rand(MvNormal(fill(0,2),1),1000)'
σ² = 1
λ² = 2

model = grouped_lasso(yTrain,x1Train,x2Train,x0Train,σ²,λ²)
chain = sample(model, NUTS(0.65), 300);

error output:
ERROR: StackOverflowError:
Stacktrace:
 [1] MvNormal(::Array{Real,1}, ::PDMats.ScalMat{Float64}) at /home/me/.julia/packages/Distributions/HjzA0/src/multivariate/mvnormal.jl:200
 [2] MvNormal(::Array{Real,1}, ::PDMats.ScalMat{Float64}) at /home/me/.julia/packages/Distributions/HjzA0/src/multivariate/mvnormal.jl:202 (repeats 65353 times)
 [3] MvNormal(::Array{Real,1}, ::Int64) at /home/me/.julia/packages/Distributions/HjzA0/src/multivariate/mvnormal.jl:220
 [4] #29 at /home/me/code/scratch/local/turing/test_lasso.jl:50 [inlined]
 [5] (::var"#29#30")(::Random._GLOBAL_RNG, ::DynamicPPL.Model{var"#29#30",(:y, :x1, :x2, :x0, :σ², :λ²),(),(),Tuple{Adjoint{Float64,Array{Float64,2}},Adjoint{Float64,Array{Float64,2}},Adjoint{Float64,Array{Float64,2}},Adjoint{Float64,Array{Float64,2}},Int64,Int64},Tuple{}}, ::DynamicPPL.VarInfo{DynamicPPL.Metadata{Dict{DynamicPPL.VarName,Int64},Array{Distribution,1},Array{DynamicPPL.VarName,1},Array{Real,1},Array{Set{DynamicPPL.Selector},1}},Float64}, ::DynamicPPL.SampleFromPrior, ::DynamicPPL.DefaultContext, ::Adjoint{Float64,Array{Float64,2}}, ::Adjoint{Float64,Array{Float64,2}}, ::Adjoint{Float64,Array{Float64,2}}, ::Adjoint{Float64,Array{Float64,2}}, ::Int64, ::Int64) at ./none:0
 [6] macro expansion at /home/me/.julia/packages/DynamicPPL/YDJiG/src/model.jl:0 [inlined]
 [7] _evaluate at /home/me/.julia/packages/DynamicPPL/YDJiG/src/model.jl:160 [inlined]
 [8] evaluate_threadunsafe at /home/me/.julia/packages/DynamicPPL/YDJiG/src/model.jl:130 [inlined]
 [9] Model at /home/me/.julia/packages/DynamicPPL/YDJiG/src/model.jl:92 [inlined]
 [10] Model at /home/me/.julia/packages/DynamicPPL/YDJiG/src/model.jl:98 [inlined]
 [11] VarInfo at /home/me/.julia/packages/DynamicPPL/YDJiG/src/varinfo.jl:110 [inlined]
 [12] VarInfo at /home/me/.julia/packages/DynamicPPL/YDJiG/src/varinfo.jl:109 [inlined]
 [13] DynamicPPL.Sampler(::NUTS{Turing.Core.ForwardDiffAD{40},(),AdvancedHMC.DiagEuclideanMetric}, ::DynamicPPL.Model{var"#29#30",(:y, :x1, :x2, :x0, :σ², :λ²),(),(),Tuple{Adjoint{Float64,Array{Float64,2}},Adjoint{Float64,Array{Float64,2}},Adjoint{Float64,Array{Float64,2}},Adjoint{Float64,Array{Float64,2}},Int64,Int64},Tuple{}}, ::DynamicPPL.Selector) at /home/me/.julia/packages/Turing/UsQlw/src/inference/hmc.jl:378
 [14] Sampler at /home/me/.julia/packages/Turing/UsQlw/src/inference/hmc.jl:376 [inlined]
 [15] sample(::Random._GLOBAL_RNG, ::DynamicPPL.Model{var"#29#30",(:y, :x1, :x2, :x0, :σ², :λ²),(),(),Tuple{Adjoint{Float64,Array{Float64,2}},Adjoint{Float64,Array{Float64,2}},Adjoint{Float64,Array{Float64,2}},Adjoint{Float64,Array{Float64,2}},Int64,Int64},Tuple{}}, ::NUTS{Turing.Core.ForwardDiffAD{40},(),AdvancedHMC.DiagEuclideanMetric}, ::Int64; kwargs::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}) at /home/me/.julia/packages/Turing/UsQlw/src/inference/Inference.jl:164
 [16] sample at /home/me/.julia/packages/Turing/UsQlw/src/inference/Inference.jl:164 [inlined]
 [17] #sample#1 at /home/me/.julia/packages/Turing/UsQlw/src/inference/Inference.jl:154 [inlined]
 [18] sample(::DynamicPPL.Model{var"#29#30",(:y, :x1, :x2, :x0, :σ², :λ²),(),(),Tuple{Adjoint{Float64,Array{Float64,2}},Adjoint{Float64,Array{Float64,2}},Adjoint{Float64,Array{Float64,2}},Adjoint{Float64,Array{Float64,2}},Int64,Int64},Tuple{}}, ::NUTS{Turing.Core.ForwardDiffAD{40},(),AdvancedHMC.DiagEuclideanMetric}, ::Int64) at /home/me/.julia/packages/Turing/UsQlw/src/inference/Inference.jl:154
 [19] top-level scope at none:1

That error is caused by the dispatches promotions in the constructor of MvNormal in Distributions, more specifically in https://github.com/JuliaStats/Distributions.jl/blob/ae2d6c5c68abc0aeafdc249ca60df058c19279cb/src/multivariate/mvnormal.jl#L202. This line will just call the same model over and over again since you use a mean vector with element type Real.

Thanks @devmotion, I'm quite out of my depth here, is there an alternate MvNormal constructor you would recommend?

I would suggest the following (which should also be faster), using the notation from the reference:
using Turing

@model function grouped_lasso(y, X, σ, λ²)
	# number of observations and features
	nobs, p = size(X)
    mk = div(p, 2)

	# set variance prior (shrinkage of the group-wise linear coefficients)
	τ² ~ filldist(Gamma((mk + 1) / 2, 2 / λ²), 2)

	# set the coefficient prior
	β ~ arraydist(MvNormal.(mk, σ .* sqrt.(τ²)))

	# set the target distribution
    for i in 1:nobs
        mu = view(X, i, :) * vec(β)
        y[i, :] ~ MvNormal(mu, σ)
	end
end

Additionally, it might be more efficient to transpose X and y such that observations are saved as column vectors since typically accessing row vectors is slower than column vectors.

That is also much easier to read and works great!  For completeness, I have updated the MWE with your suggestions below.
Thanks very much for the fast responses.
MWE:
@model function grouped_lasso(y, X, σ,λ²)
	# number of observations and features
	p, nobs = size(X)
    mk = div(p, 2)

	# set variance prior (shrinkage of the group-wise linear coefficients)
	τ² ~ filldist(Gamma((mk + 1) / 2, 2 / λ²), 2)

	# set the coefficient prior
	β ~ arraydist(MvNormal.(mk, σ .* sqrt.(τ²)))

	# set the target distribution
    for i in 1:nobs
        mu = view(X, :, i)' * vec(β)
		y[:, i] ~ MvNormal(fill(mu,size(y)[1]), Matrix(σ*I, size(y)[1], size(y)[1]))

	end
end

yTrain = rand(MvNormal(fill(0,3),1),1000)
x1Train = rand(MvNormal(fill(0,2),1),1000)
x2Train = rand(MvNormal(fill(0,2),1),1000)
x0Train = rand(MvNormal(fill(0,2),1),1000)
σ = 1.0 #
#Σ = Matrix(σ*I, 3, 3)
λ² = 2

model = grouped_lasso(yTrain,[x0Train; x1Train; x0Train; x2Train;],σ,λ²)
chain = sample(model, NUTS(0.65), 300);

describe(chain)[1]
Summary Statistics
  parameters      mean       std   naive_se      mcse        ess      rhat
      Symbol   Float64   Float64    Float64   Missing    Float64   Float64

      β[1,1]    0.0352    0.5431     0.0443   missing    30.3005    1.0391
      β[1,2]   -0.0189    0.5435     0.0444   missing    29.6187    1.0392
      β[2,1]   -0.0463    0.5427     0.0443   missing    48.3097    1.0507
      β[2,2]    0.0519    0.5421     0.0443   missing    48.6922    1.0498
      β[3,1]   -0.0103    0.0178     0.0015   missing   103.0911    0.9942
      β[3,2]   -0.0070    0.0205     0.0017   missing   116.8437    0.9938
      β[4,1]   -0.0006    0.0166     0.0014   missing    25.3661    1.0488
      β[4,2]   -0.0053    0.0182     0.0015   missing   153.0968    1.0133
       τ²[1]    0.9193    0.8859     0.0723   missing   103.1504    0.9948
       τ²[2]    0.7998    0.7515     0.0614   missing    73.5011    0.9947

describe(chain)[2]

Quantiles
  parameters      2.5%     25.0%     50.0%     75.0%     97.5%
      Symbol   Float64   Float64   Float64   Float64   Float64

      β[1,1]   -1.0620   -0.2630    0.0450    0.3429    1.2221
      β[1,2]   -1.2039   -0.3139   -0.0416    0.2944    1.0857
      β[2,1]   -1.3327   -0.2722   -0.0355    0.2126    0.9825
      β[2,2]   -0.9773   -0.2046    0.0287    0.2683    1.3501
      β[3,1]   -0.0398   -0.0234   -0.0107    0.0024    0.0243
      β[3,2]   -0.0496   -0.0174   -0.0058    0.0061    0.0278
      β[4,1]   -0.0319   -0.0108   -0.0001    0.0114    0.0275
      β[4,2]   -0.0431   -0.0168   -0.0038    0.0077    0.0247
       τ²[1]    0.0476    0.2398    0.7270    1.2488    3.0862
       τ²[2]    0.0617    0.2423    0.5721    1.1749    2.8963

Do you want the mean of y be the same along all dimensions?
In any case, you could also write
using FillArrays

...
    mus = X' * vec(β)
    for i in 1:nobs
	    y[:, i] ~ MvNormal(Fill(mus[i], size(y, 1)), σ)
    end

Note that you have to use σ^2 when you specify a matrix - in this case MvNormal assumes that you specify the covariance, not the standard deviation.

```julia
using FillArrays

...
    mus = X' * vec(β)
    for i in 1:nobs
	    y[:, i] ~ MvNormal(Fill(mus[i], size(y, 1)), σ)
    end

Actually the y[i]'s are in general not going to have the same mean.
I have a related issue with the case where the beta[i]'s are of different dimensions, which is actually true in general outside of the mwe I made to get this working.
To deal with this, I made a parameterized version (please see below) according to the performance tips in the docs, but this is very slow, at least with the default AD settings, after finding the initial I had no progress bar after 30 min
What would be the preferred way to handle this?
# mk = vector where length(β[i]) = mk[i]
@model function grouped_lasso_multi(y, X, σ, λ², mk, ::Type{T} = Float64) where {T}
	# number of observations and features
	p, nobs = size(X)
	p_y,_ = size(y)
	nmk = length(mk)
	# set variance prior (shrinkage of the group-wise linear coefficients)

	τ² = Vector{T}(undef,nmk)
	for i = 1:nmk
		τ²[i] ~ Gamma((mk[i] + 1) / 2, 2 / λ²)
	end

	β = Vector{Vector{T}}(undef,nmk)
	for i = 1:nmk
		β[i] ~ MvNormal(mk[i], σ .* sqrt(τ²[i]))
	end

	# set the target distribution
	for i in 1:nobs
		mu = view(X, :, i)' * reduce(vcat,β)
		y[:, i] ~ MvNormal(fill(mu,p_y), Matrix(σ*I, p_y, p_y))
	end
end

Thanks


Problem with pods.

I cloned app  and  run pod install from the Example directory first. I got error   No `Podfile' found in the project directory.

Which app are you referring to?
This is a distribution repository.
If you are interested in some reference app then visit our website: http://skylink.io

Since this is the case, the readme on here should be more specific. It simply says clone the repo and run pod install from the example directory. From that description, one would assume the reference is to the current repository - not a different repository. Please update the readme to reference the sample app repository at https://github.com/Temasys/SkylinkSDK-iOS-Sample


Add support for ManyToManyField with create/update views

I have a model in that a field takes ManyToManyField with reference to a Model. It throws an error, can't bulk assign the data, and suggests to use .set(data). Is there any other way to create the data? It throws an error like this:
uui-django             | Traceback (most recent call last):
uui-django             |   File "/usr/local/lib/python3.11/site-packages/ninja/operation.py", line 107, in run
uui-django             |     result = self.view_func(request, **values)
uui-django             |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
uui-django             |   File "/code/api.py", line 86, in wrapper
uui-django             |     return func(*args, **kwargs)
uui-django             |            ^^^^^^^^^^^^^^^^^^^^^
uui-django             |   File "/usr/local/lib/python3.11/site-packages/ninja_crud/views/create_model_view.py", line 221, in wrapped_func
uui-django             |     return route_func(*args, **kwargs)
uui-django             |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
uui-django             |   File "/usr/local/lib/python3.11/site-packages/ninja_crud/views/create_model_view.py", line 175, in create_model
uui-django             |     instance = self._save_model(instance, payload, request)
uui-django             |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
uui-django             |   File "/usr/local/lib/python3.11/site-packages/ninja_crud/views/create_model_view.py", line 195, in _save_model
uui-django             |     setattr(instance, field, value)
uui-django             |   File "/usr/local/lib/python3.11/site-packages/django/db/models/fields/related_descriptors.py", line 626, in __set__
uui-django             |     raise TypeError(
uui-django             | TypeError: Direct assignment to the forward side of a many-to-many set is prohibited. Use actor.set() instead.

class MovieModelViewSet(ModelViewSet):
    model = MovieModel
    default_input_schema = MovieIn
    default_output_schema = MovieOut

    retrieve_view = RetrieveModelView()
    create_view = CreateModelView()
    delete_view = DeleteModelView()
    update_view = UpdateModelView()

Using a work around for this by using Router from ninja:
class MovieModel(Model):
    id = UUIDField(primary_key=True, editable=False)
    actors = ManyToManyField(Actor, blank=True)

class Actor(Model):
    id = UUIDField(primary_key=True, editable=False)
    name=CharField(max_length=50)

While there is a post request to the MovieModel, the payload comes as [id, id].
@router.post("/", response={201: MovieOut})
def create_movie(request, data: MovieIn):
    list_id = data.list_id
    result = MovieModel.objects.create(**data.dict(exclude=["actors"]))
    result.actor.set(data.actor)
    return 201, result

Thanks @hbakri for detailed explanation. I did handle create and update by creating an endpoint for them and it does work.
Great work! 👏


Lighting of models in 2D map view

I have a problem like #8014, the polygon entity is darker when it changes to the 2D view.
In my project, the temporary solution is set height value of this polygon entity to 'undefined', but I think maybe it has a better solution.
I set an example below, I tried this Lighting code to show the result more clear, you can see the code on the left side. I am sure it has nothing to do with the setting of sunlight.
In the 3D view, it's normal.

When changes to the 2D view, this entity changes to be darker:

Changed the sun light:

When the height value set to undefined, the result is shown below:

I think this is a duplicate of https://github.com/CesiumGS/cesium/issues/5730.


Remove deployed FIXMEs

All of these FIXMEs have been deployed or the thing they rely upon has
been actioned.
This also re-enables application restarts, see: #4205.

:+1: merge when green


⚠ ClamAV has degraded performance

In 0b69c59, ClamAV (https://spamassassin.apache.org/) experienced degraded performance:

HTTP code: 200
Response time: 49 ms

Resolved: ClamAV performance has improved in 2b249ff.


No battery information

No battery information on arch linux, Pc Dell Latitude e4300

Solved was only a dependency "acpi" not installed, my apologies.


Added default text value

related to issue -> https://github.com/dabakovich/react-native-controlled-mentions/issues/36

@dabakovich any update on the PR?

Hi @Abhishek-Sankey! Thanks for your PR!
Are you sure it will resolve your issue?
Because JS default function parameter will not save you from null. It will use this default parameter '' only when the value is undefined.
In any case, your PR didn't work for me locally.

In my case, value was coming as undefined. So, it was working correctly in my case.
Will test you latest commit...

That's strange because 2.2.3 already had an undefined check and worked for me.


View Metrics Date Range UI

On Actions/View Metrics, there is a close icon and a right-arrow-ish icon to the right of the date selectors. Those icons are overlapping each other, and don't seem to do anything, and when browser is zoomed in a bit, they obscure the year in the date range, making it hard to see what date you selected.
If these icons don't do anything, remove them.

oh! i was on firefox not following Sinopia's own advice to be on Chrome. Thanks!
In Chrome there is still the overlap issue when zoom is increased

we can leave this open and adjust title/description of ticket if that's something fixable

But we are always told to use Firefox, not Chrome... So who and where can this be done? On stage I get no response


Macos switch to krunkit

In order to switch from QEMU to krunkit we need to use gvproxy   to provide network support to the VM. We need to bound gvproxy     lifetime to krunkit lifetime, so there is not an "orphan"     daemon after krunkit finish.
We are using an "internal" command to monitor, in the future     this should be a different binary, but right now is the     easiest way. We save the pid of krunkit instead of the monitor    because the stop command sends a SIGINT to that pid, and    we currently are capturing the signal at podman-bootc.

v2:

Just fixed some rpm errors
kill gvproxy if krunkit fails to start

@vrothberg

Maybe mention to
$ brew tap slp/krunkit
$ brew install krunkit

in the README.

Works like a charm 👍

Maybe mention to
$ brew tap slp/krunkit
$ brew install krunkit

in the README or upgrade to Podman v5.2+

Ok, I will also update the podman-bootc homebrew formula to include krunkit as dependency


distance matrix Python to C++

I want to convert Scipy distance matrix to C++ code.
I used a variety of libraries, but it took too long.
And then i found optimized C version code  https://github.com/scipy/scipy/blob/main/scipy/spatial/distance.py   2846 line.
Where can i check optimized C version code or any better idea?

The C-implemented distance metrics are here: https://github.com/scipy/scipy/tree/main/scipy/spatial/src
I will close this as the question has been answered, and there is no feature request or bug report to follow up on.


Fix the table of contents warning message on transforming html into a…

There's a warning message on this page in the documentation: https://unstructured-io.github.io/unstructured/examples/chroma.html
This is the patch as advised in the chroma doc to remove the error message if you're inserting a TOC at the top.

Thanks for the docs contribution! Closing since docs have moved to https://docs.unstructured.io


Broken link to the Vessel GIF

Describe the error
On "Vessel Gif changed" page of dmaorg,info there is broken link on "04/21/18 - Vessel gif discovered" chapter.
I mean the "Vessel gif" link.
What should it be
I think it should be link to the first mysterious hint of Dema (Vessel store GIF).
Link to the page
link

Good catch. Indeed the gif does seem to be gone. I’ll have to reupload and fix that link tonight.
thank you!!


fix: added ctrl + enter to run the tests button

fix(i18n) : added ctrl + enter to run the tests buttun as asked in #45175
Checklist:

[x] I have read freeCodeCamp's contribution guidelines.
[x] My pull request has a descriptive title (not a vague title like Update index.md)
[x] My pull request targets the main branch of freeCodeCamp.
[x] I have tested these changes either locally on my machine, or GitPod.

Closes #45175

Thank you for your contribution to the page! 👍
We are happy to accept these changes and look forward to future contributions. 🎉


Dataset Viewer issue for knkarthick/dialogsum_reformat

Link
https://huggingface.co/datasets/knkarthick/dialogsum_reformat
Description
The dataset viewer is not working for dataset knkarthick/dialogsum_reformat.
Error details:
Error code:   ResponseNotFound

Related to:

#992

Hi @knkarthick,
Again the issue is not related to the dataset viewer, but to your Python loading script:
In [1]: from datasets import load_dataset

In [2]: ds = load_dataset("knkarthick/dialogsum_reformat")
    ...
    BUILDER_CONFIGS = [
                       ^
IndentationError: unindent does not match any outer indentation level

Please, better use the "Community" tab of your dataset for this kind of issues.
Let's continue the discussion there.


create parameter-hints for own language

Reproducible in vscode.dev or in VS Code Desktop?

[X] Not reproducible in vscode.dev or VS Code Desktop

Reproducible in the monaco editor playground?

[X] Not reproducible in the monaco editor playground

Monaco Editor Playground Code
No response
Reproduction Steps
Is there a way to provide a parmeter hints widget for your own language? Is there a example for it?
Actual (Problematic) Behavior
found no sample
Expected Behavior
sample should exist
Additional Context
No response

Found it:
 //@ts-ignore
    monaco.languages.registerSignatureHelpProvider('csharp', {
        signatureHelpTriggerCharacters: ["("],
        //@ts-ignore
        provideSignatureHelp: async (model, position, token, context) => {
            //@ts-ignore
            let signatureHelp= {
                signatures: [
                    {
                        label: 'test',
                        documentation: "ooooo",
                        parameters: [{ label: 'par1', documentation: 'ppp' }]
                    }
                ],
                activeParameter: 0,
                activeSignature: 0
            };

            return { value: signatureHelp };
        }
    });

If someone is interested, I work on a sample to integrate C# Roslyn easily to Monaco: https://github.com/dotnetprojects/MonacoRoslynCompletionProvider
It's still very basic, but hopefully will grow


Child routes not getting resolved automatically

I am using the solution as it is, but i added my own module into it.
Example :

http://localhost:5000/home resolves
http://localhost:5000/dashboard doesnot resolving - giving 404 for me.

it tries the two examples as

home module - without Lazy Loading
about module - with Lazy Loading

Routes are not resolving for children automatically. can you give me a solution to go forward with this.
These are the Routes i used :
Added DashboardModule to app Module.
app.routes.ts :
import { Routes, RouterModule } from '@angular/router';
import { DashboardModule } from './modules/dashboard/dashboard.module';
export const routes: Routes = [
{ path: '', redirectTo: 'dashboard', pathMatch: 'full' },
{ path: 'dashboard', loadChildren: './modules/dashboard/dashboard.module#DashboardModule' },
{ path: 'about', loadChildren: './modules/about/about.module#AboutModule' }
];
export const AppRoutes = RouterModule.forRoot(routes);
dashboard.routes.ts:
import { Routes, RouterModule } from '@angular/router';
import { DashboardComponent } from './components/dashboard.component';
const routes: Routes = [
{ path: '', component: DashboardComponent }
];
export const DashboardRoutes = RouterModule.forChild(routes);

Did you add the new module to the tsconfig files?

yes i even tried that,i even added in tsconfig-aot too. but the same result.
But for home there is no reference for HomeModule right ?

HomeModule in not lazy loaded. Did you update the router in Startup.cs?

Thanks Roberto, It is solved.
And for hosting on IIS, when we create an application(Ex: TestApplication) under a DefaultWebSite(poining to localhost) .

In index.html src for app.bundle and polyfills.bundle are pointing to localhost ratherthan localhost/TestApplication.

Is there any approach to point them it to localhost/TestApplication. As this application is not working as an app inside a website.
output -> dist
src -> from webapplication/dist.
Thanks,
Bharani

For new questions, please open new issues.
Greetings,
Roberto


[WIP] Write first cucumber scenario

fixes#37

Why did you add „global“ as a dependency?

closing this as we have another PR from @Tirokk that is newer and being kept update


That's a cool idea! Could you just add (Perl) at the end please?

Done.

Thanks. :)


New version updates disrupt "Restore my tabs"

Platform
Which platform does the bug apply to?

WebExtension (Google Chrome, Mozilla Firefox)

Describe the bug
New version tab appeared, and it disrupted Chrome's normal restoration of tabs. I couldn't recover them anymore, and I am very frustrated.
To Reproduce
Steps to reproduce the behavior:

Open tabs
Hard-exit Chrome (for example with a forced reboot) before a Wappalyzer update
Start Chrome again, and Wappalyzer inserts the "Hi I have new features" tab.
Voila Chrome doesn't want to restore your tabs anymore, and shift-control-T doesn't help.

Expected behavior
Chrome offers option to "Restore My Tabs"
Additional context
Deleted Wappalyzer argh. Maybe someday I'll try it again but right now I'm mad.

I'm not sure how to work around that but there's an option in the extension setting to disable this behaviour. Uncheck the 'tell me about upgrades' box and you should not have this issue.


feat: Datadog type monitor

⚠⚠⚠ Since we do not accept all types of pull requests and do not want to waste your time. Please be sure that you have read pull request rules:
https://github.com/louislam/uptime-kuma/blob/master/CONTRIBUTING.md#can-i-create-a-pull-request-for-uptime-kuma
Tick the checkbox if you understand [x]:

[x] I have read and understand the pull request rules.

Description
Hello @louislam !
Some context:
We use DataDog to monitor our stack/services, and it does not offer status page product, we take a look at the open sources projects that could fit. We found uptime-kuma 💘  the one we like the most and could fit better.
We even work already into a POC, but we need to work around with a way to get DataDog monitor states into uptime-kuma, creating push monitors and an extra service that should be the one that gather datadog and make the request to the push monitor endpoint.
Instead of having this kind of workaround, I thought that could be fun and worth to contribute to the project! (Alert! : I'm not a developer, so please bear with me and my small code changes).
With this feature, anyone that is using DataDog will be able to relay on uptime-kuma out of the box to create first class status pages 😎 .
New DataDog type monitor
This feature will allow to sync DataDog monitor state with uptime-kuma monitor.
As this is just initial base code changes, there are some things still need to be added:

[ ] Tests
[ ] Translation in place
[ ] BUG: The creation works, but I missed something cause updating the monitor fields that I added is not working (Again bear with me 😞 )
[ ] Documentation about this new monitor type
[ ] Go through the checklist properly
[ ] datadog-api-cli dependency or use just http to keep uptime-kuma dependencies lean and clean.

Type of change

New feature (non-breaking change which adds functionality)
This change requires a documentation update

Checklist

[ ] My code follows the style guidelines of this project
[ ] I ran ESLint and other linters for modified files
[ ] I have performed a self-review of my own code and tested it
[ ] I have commented my code, particularly in hard-to-understand areas (including JSDoc for methods)
[ ] My changes generates no new warnings
[ ] My code needed automated testing. I have added them (this is optional task)

Screenshots

@chakflying @louislam @Saibamen @Zaid-maker
Currently, we offer pretty basic monitors (grpc, http, dns, docker, databases).
I think this monitor does not fit into the line of moniotors we currently offer.
Similar as in https://github.com/louislam/uptime-kuma/pull/4619, I think that limiting our scope a bit is nessesary in this area.
I think including such monitors via https://github.com/louislam/uptime-kuma/issues/1117 instead might be a better call..
What are other peoples oppinions?

Yes I agree with you!
We need to limit our current ecosystem with limit amount of monitors, also maybe in feature we can add these feature as a Premium feature or smh like that

These 3rd party monitors are hard to maintain, because only our users are checking changelogs for APIs etc.
The best solution will be to have plugins system.

These 3rd party monitors are hard to maintain, because only our users are checking changelogs for APIs etc.

Hi @seluard Thanks for your work, but I don't think this fits into the scope that we can currently support given the engineering that is going into the project. Sorry


GET_ONE response data not available in edit view

The application I'm working with can sometimes have a lot of data per record, sometimes several MB's worth of plain text (don't ask). I'm trying to limit the amount of data pushed down from the REST server, so I've removed the fields that can contain large amounts of data for list responses, but I'd still like to be able to edit these fields sometimes in the edit view.
The problem is, that if this source field is not available in the list view, it doesn't appear to be loaded when changing to the edit view, even though I can see the API request/response for the GET_ONE record.  Is this a known limitation?

Nevermind, figured it out.

What was the solution, I am having the same problem?!

Not sure if it helps, but I think it had to do with my REST Client which is customized for PouchDB. I was using both _id and id parameters and I had them mixed up either in the REST client code or the source field in the list. I doubt that is helpful, but if you're having the same issue its worth double checking the id fields.


Use modify_settings from django for tests

Coverage remained the same at 90.129% when pulling fdce982a8f7d3c4f599e158a7afe671401c21d5f on remove-odd-test-utils into ec07c8c94d9a82c4b7dccd2ff657489efd72323c on master.


Either.chainLeft

I have an Either where, if its a Right instance, I want to map the inner value and transform the Either instance to a Left. I am currently using fold to do this, but wondered if there was a better pattern. Perhaps chainLeft would make sense here, like mapLeft?
const e = either.left<string, string>('foo')
e
  .fold(
    left => either.left<string, string>(left),
    right => either.left<string, string>(mapFn(right))
  )

Ah, sorry.

What I actually needed was the ability to chain a Validation. I see two ways of doing this:

.fold
convert validation to Either, perform chaining using .chain, and then convert back to a Validation.

const v = validation.failure<string, string>('foo')
v
  .fold(
    failure => validation.failure<string, string>(failure),
    success => validation.failure<string, string>(mapFn(success)),
  )

Here's what I ended up with:
export const chainValidation = <L, A, B>(
    leftSemigroup: semigroup.StaticSemigroup<L>,
    validationInstance: validation.Validation<L, A>,
    chainFn: (a: A) => validation.Validation<L, B>,
) => (
    validationInstance.fold(
        failure => validation.failure<L, B>(leftSemigroup, failure),
        chainFn,
    )
);

I arrived here actually seeking chainLeft, or a more robust alternative to Either, TaskEither and ReaderTaskEither's alt that gives access to the left value for the morphism. Is there a reason for why this shouldn't exist?

alt that gives access to the left value

@marcotoniut see orElse

Well, that makes sense... Thank you.


ETL for Google Analytics report data

This implements an ETL pipeline for Google Analytics report data. The pipeline will populate the metrics fact table with pageview and unique pageview metrics for a given day.
The Google Analytics Reporting API restricts us to 10,000 requests per day. Each request can return a maximum of 10,000 data points.
Only a subset of the GOV.UK content is actually viewed everyday by someone, so fetching all the metrics for a given day is more economical than making more computationally expensive queries to the API with constraints for know content item dimensions. At the time of writing we should be able to import a days worth of data by utilising ~15 requests.
A "source" class returns an enumerable collection that can be traversed, searched, filtered etc as part of a pipelines of steps.
A "transform" class filters out any rows where we don't have a latest content item dimension matching the page path and returns a set of attributes suitable for importing into the fact table.
A "destination" class updates the fact table.
Closes #476

 (3) GA: store Google Analytics metrics by day

Thank you for your work on this PR.
We are superseding this PR in favor of #486 because it is processing the metrics individually so we have a very long transaction with more than 800K queries a BBDD. I have run it a few times and I have had some timeouts so I am not confident that this is the best approach. I have cherry-picked the following commits: 074e3f3, 2aa6d7c, a72bb73, c5219b1 for #486
In #486 I have tried to use a single update after have copied to a local table all the events. This will also allow to process all the base_paths that do not match the path for a content item directly. We will use the Content Store to resolve each individual path.
Using a custom SQL we are able to load the fact table in 7-10 seconds.