[Spark-20446][ML][MLLIB]Optimize MLLIB ALS recommendForAll

What changes were proposed in this pull request?
The recommendForAll of MLLIB ALS is very slow.
GC is a key problem of the current method.
The task use the following code to keep temp result:
val output = new Array(Int, (Int, Double))
m = n = 4096 (default value, no method to set)
so output is about 4k * 4k * (4 + 4 + 8) = 256M. This is a large memory and cause serious GC problem, and it is frequently OOM.
Actually, we don't need to save all the temp result. Support we recommend topK (topK is about 10, or 20) product for each user, we only need 4k * topK * (4 + 4 + 8) memory to save the temp result.
The Test Environment:
3 workers: each work 10 core, each work 30G memory, each work 1 executor.
The Data: User 480,000, and Item 17,000
BlockSize:     1024  2048  4096  8192
Old method:  245s  332s  488s  OOM
This solution: 121s  118s   117s  120s
How was this patch tested?
The existing UT.

Test build #76100 has started for PR 17742 at commit 14cdbf6.

Test build #76100 has finished for PR 17742 at commit 14cdbf6.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/76100/
Test PASSed.

Interesting - I was working on something very similar - a rough draft of it is in a branch.

Test build #76111 has started for PR 17742 at commit f607e6c.

Test build #76111 has finished for PR 17742 at commit f607e6c.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/76111/
Test PASSed.

Test build #76176 has started for PR 17742 at commit ae03124.

Could you post updated performance numbers?
I think we can do the same optimization in ml version. We could do it in a follow up PR perhaps?

Test build #76176 has finished for PR 17742 at commit ae03124.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/76176/
Test PASSed.

Hi @MLnick , The new test results are:
3 worker, each 10 cores, each 30G memory, each 1 executor.
Data Size: user 3,290,000, item 200,000.
recommendProductsForUsers with blockSize 4096 is about 37min,

Another case
3 workers， each 40 cores, each 196G memory, each 1 executor.
Data Size: user 480,000, item 17,000
recommendProductsForUsers with blockSize 4096 is about 34s

Test build #76180 has started for PR 17742 at commit 2fd97a0.

Thanks very much @MLnick .
I am doing more test about mllib solution. When it is solid enough, then we can submit a follow up PR for ML optimization. How do you think about it?

Test build #76180 has finished for PR 17742 at commit 2fd97a0.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/76180/
Test PASSed.

@mpjlu yeah we can do the ML version in a follow up PR that is ok (I can help if needed).

I did some tests with the PR.
Here is the cluster configure:
3 workers, each has 10 cores and 30G memory.
With the netflix dataset (480,189 users and 17770 movies), the recommendProductsForUsers time reduces from 488.36s to 60.93s, 8x faster than the original method.
With a larger dataset (3.29million users and 0.21 million products), the recommendProductsForUsers time reduces from 48h to 39min, 73x faster than the original method.

Test build #76254 has started for PR 17742 at commit 206a023.

Test build #76254 has finished for PR 17742 at commit 206a023.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/76254/
Test PASSed.

Test build #76258 has started for PR 17742 at commit 8eab55b.

Test build #76258 has finished for PR 17742 at commit 8eab55b.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/76258/
Test PASSed.

Test build #76260 has started for PR 17742 at commit a5261b7.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/76260/
Test FAILed.

Hi @MLnick, I will be on vacation next week.
If you have time to create an ML optimization follow up PR. I am ok. Otherwise, I will submit the follow up PR after my 1 week vacation.
Thanks very much.

retest please

retest this please

Test build #76261 has started for PR 17742 at commit a5261b7.

@mpjlu I should be able to put something together for the ML API equivalent to this code - in fact I already have a version close to ready to go :)
Thanks for this PR and major performance improvement! I will take a final pass over this shortly.

Test build #76261 has finished for PR 17742 at commit a5261b7.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/76261/
Test PASSed.

Thanks @MLnick. Please go ahead for ML API optimization.

Test build #76418 has started for PR 17742 at commit 44a4f74.

Test build #76418 has finished for PR 17742 at commit 44a4f74.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/76418/
Test PASSed.

This LGTM - it would be nice to have this and #17845 in 2.2 (especially since the ml recommend all methods are new in 2.2 and this gives a massive performance gain).
cc @srowen @jkbradley

@mpjlu I did just think about the hand-written dot for larger rank (say 100-200 which is not so common as say 10-50 range for ALS, but still can occur). Did you compare performance for that range of rank at all?

This LGTM.

Test build #76455 has started for PR 17742 at commit 17df4cf.

@MLnick , I did not test rank in range 100 to 200. I am on vacation and my colleague is doing this test, I will update this result soon.
Thanks.

Ok - I don't expect it would make a substantial difference for dot unless
the vector size was very large.
Let's check it but we could proceed to merge this in the meantime.
On Thu, 4 May 2017 at 15:58, Meng, Peng<EMAIL_ADDRESS>wrote:

@MLnick https://github.com/MLnick , I did not test rank in range 100 to
200. I am on vacation and my colleague is doing this test, I will update
this result soon.
Thanks.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/apache/spark/pull/17742#issuecomment-299192898, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AA_SB_R-VfrZJtchobPNOAneGs-H613Oks5r2dmVgaJpZM4NF_tV
.

Test build #76455 has finished for PR 17742 at commit 17df4cf.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/76455/
Test PASSed.

@MLnick , for rank is 200, the F2jblas dot is about the same performance  as handwritten dot.
Both of them is much better than native dot.

LGTM - I think #17845 and this should go in 2.2. Let me know any objections @srowen @jkbradley

Thanks for doing this!  The logic looks reasonable to me.
One comment: I'm not a fan of custom BLAS implementations scattered throughout MLlib.  I'm OK if people want to merge this now, but could you please follow up by putting the dot as a private API in BLAS.scala and adding unit tests?
@mpjlu You can remove the "[ML]" tag from the PR title since @MLnick is addressing that API separately.

@jkbradley good point. In fact thinking about it again now, it's best to simply use F2jBLAS since the performance is the same as the hand-written version. That's actually what we already do internally for MLlib's BLAS.dot for Vector.
I've created SPARK-20677 to do that places once they're merged.

Merged to master/branch-2.2.
Thanks @mpjlu for the awesome performance improvement!

I changed the commit message to drop the [ML] by the way

I think the problem is not BLAS-3 ops, nor the 256MB total memory. The val output = new Array[(Int, (Int, Double))](m * n) is not specialized. Each element holds two references. If m=4096 and n=4096, in total we have 33.5 million objects, which caused GC. The implementation in this PR changed n to k, which significantly reduced the total number of temp objects. But it doesn't mean that we should drop BLAS-3.
@mpjlu Could you test the following?

change block size to 2048, which reduced the max possible
After val ratings = srcFactors.transpose.multiply(dstFactors), do not construct output. There are two options:
** The most optimized version would be doing a quickselect on each row and select top k.
** An easy-to-implement version would be:

Iterator.range(0, m).flatMap { i =>
  Iterator.range(0, n).map { j =>
    (srcIds(i), (dstIds(j), ratings(i, j)))
 }
}

The second option is just a quick test, scarifying some performance. The temp objects created this way have very short life, and GC should be able to handle it. Then very likely we don't need to do top-k inside ALS, because the topByKey implementation is doing the same: https://github.com/apache/spark/blob/master/mllib/src/main/scala/org/apache/spark/mllib/rdd/MLPairRDDFunctions.scala#L42.

Thanks @mengxr , glad to meet you here. I am Meng Peng.
I have tested different blockSize, see https://issues.apache.org/jira/browse/SPARK-20443
I will test the other methods you mentioned.

I don't think we should use BLAS 3 here, because no matter use output or not here, you need a big buffer to save the BLAS result. That still cause GC problem.
I also want to test: build a handwritten native gemm,  which not returns C (C=A*B), but only return the topK elements of each row.  This maybe better performance than current solution.

A single buffer doesn't lead to long GC pause. If it request lot of memory, it might trigger GC to collect other objects. But itself is a single object, which can be easily GC'ed. The problem here is having many small long-living objects as in output.

Thanks, I will do some test based on BLAS 3.

** The most optimized version would be doing a quickselect on each row and select top k.
** An easy-to-implement version would be:
I test both of the methods, the best performance is about 50% this PR.
Welcome to do more test.

BLAS3 with still keeping the output size as n x m rather than n x k results in massively more shuffle data - I don't think any solution based on exploding the intermediate data so much can be as efficient as this. Since for k=10 it's ~80k little objects per block vs ~33 million...
I had a version using BLAS 3 followed by a sort per row (see https://issues.apache.org/jira/browse/SPARK-11968 for branch link and test details). For MLLIB it was slower than this approach by a factor of 1.5x. I just re-tested for ML and it it is 56s vs 16s for this approach, so really significantly slower.
Comparatively, both approaches created the intermediate output objects (but only n x k size). Certainly that part could perhaps be further optimized. However, the BLAS3 approach still had around 20% GC time vs around 12% from this approach. Each gemm does indeed require a large intermediate array and this seems to cause additional GC time (whether directly or indirectly).
Even without that this approach is a lot faster than gemm and sort for the top-k by row. I'm sure the per-row top-k can be made a lot more efficient and that is worth exploring (though frankly I am doubtful it will result in that much more gain over this approach, relative to the code complexity it will introduce). The small object GC can perhaps be improved with the iterator approach and avoiding creating the output array (that may be good for another 5% or so perhaps?) - this applies to whatever approach is used.

It's true I think my native BLAS is not working will have to check - but yeah 1.5-2x matches what I've seen in my comparisons

@mpjlu Could you try not linking with native BLAS or system BLAS in your test? Just let it fallback to f2j BLAS. I can do some tests on my end too.

F2Jblas is faster than MKL blas. The following test is based on F2jBLAS.
Method 1: BLAS 3 + quickselect on each row and select top k.
Method 2: this PR
BLOCK size: 256   512  1024  2048  4096  8192
Method 1:   48s    41s   36s    88s     NA     NA
Method 2:   NA     NA   34s    35s      34s     34s
3 workers: each worker 40 cores, each worker 120G memory, each worker 1 executor.
The Data: User 480,000, and Item 17,000

@mpjlu do you have link to the code for Method 1?

val srcBlocks = blockify(rank, srcFeatures)
val dstBlocks = blockify(rank, dstFeatures)
val pq = new BoundedPriorityQueue(Int, Double)(Ordering.by(_._2))
val ratings = srcBlocks.cartesian(dstBlocks).flatMap {
case ((srcIds, srcFactors), (dstIds, dstFactors)) =>
val m = srcIds.length
val n = dstIds.length
val ratings = srcFactors.transpose.multiply(dstFactors)
val output = new Array[(Int, (Int, Double))](m * num)
var i = 0
var j = 0
while (i < ratings.numRows) {
var k = 0
while (k < ratings.numCols) {
pq += k -> ratings(i, k)
k += 1
}
pq.foreach { case (dstId, score) =>
output(j) = (srcIds(i), (dstId, score))
j += 1
}
i += 1
pq.clear
}
output.toSeq
}
val userRec = ratings.topByKey(num)(Ordering.by(_._2))

Code is like this. Thanks.

I not validate whether this code is right. just test performance.

I find why F2j BLAS is much faster than Native BLAS for xiangrui's method (use GEMM) here.
https://issues.apache.org/jira/browse/SPARK-21305

I have rewritten recommendForAll with BLAS GEMM, and get about 20%-30% performance improvement.
https://issues.apache.org/jira/browse/SPARK-21389

I have submitted PR for ALS optimization with GEMM. and it is ready for review.
The performance is about 50% improvement comparing with the master method.
https://github.com/apache/spark/pull/18624


[WiP] Use GridService revision for container update checks

Fixes #2298, alternative to #2304 that doesn't depend on server-agent clocks being in sync
The GridService model has always included an integer revision field that is bumped on GridServices::Update changes. The revision is also set as a io.kontena.container.service_revision label on all containers. However, the service revision does not actually seem to be used anywhere?
This changes the agent ServicePodWorker#container_outdated? logic to check the applying service_pod.service_revision against the existing service_container.service_revision, re-creating the container if the label is behind the service pod. This avoids any dependency on server-agent clock synchronization when comparing the service_pod.updated_at and Docker container Created timestamps.
WiP because we need to fix any GridService updates on the server that currently rely on updated_at bumps to also bump the revision. Some places already do that (GridServices::AddEnv), others did not GridServices::Deploy with force: true)

Need to verify if the ServicePodWorker#container_outdated? is the only agent-server clock dependency. If nothing else in the agent depends on the server clock being in sync, then this PR would definitely be worth the effort to exclude an entire class of problems.
The websocket Kontena-Connected-At timestamp check is still necessary to detect connection races while avoiding issues caused by the agent sending a timestamp way in the future, and thus locking itself out until the true clock catches up.

This would also fix the update -> deploy -> update -> create -> deploy race condition in #2820. The container CreatedAt timestamp will be several seconds in the future compared to the service updated_at timestamp. A second update can races with the first deploy such that it happens after the service update, but before the container create. The second update will get lost until the next force-deploy that updates the service again.


Build fails on windows but successful on Linux

When I try to build this on windows 8.1, I get following error
> pixi-filters-monorepo@ build:prod C:\Users\zorro\Desktop\pixifilters
> cross-env NODE_ENV=production rollup -c

filters\adjustment\src\index.js → filters\adjustment\lib\filter-adjustment.cjs.js, filters\adjustment\lib\filter-adjustment.esm.js...
[!] (buble plugin) SyntaxError: Unexpected token (1:8)
filters\adjustment\src\adjustment.frag (1:8)
1 : varying vec2 vTextureCoord;
            ^
SyntaxError: Unexpected token (1:8)
1 : varying vec2 vTextureCoord;`

But it builds successfully on Linux on same hardware. On windows, I tried different node versions along with latest lts build. It was successful on linux using latest lts build.
Are there any known issues while building this on Windows? Any guesses what could be wrong?

Can anyone reproduce this? I do not have access to Windows.

Could not reproduce this error.
I was able to install dependencies (npm install) and build successfully on Windows 10 and Node.js v14.15.3 (npm run build:dev and npm run build:prod).
Closing this issue unless someone has more specific information.


Performance

I assume once a face detector model is trained its difficult to adapt it to a different input tensor size.
Retinaface image scales input images to 1024...1980 size which likely is useful to detect any face in a large image.
However Retianface is also accurate when the face is obstructed by facemask.
Using your deepface repository and measuring performance for all the provided face detectors I get something like this:
Retinaface:  172-229ms works  with glasses,  obstruction and facemask
OpenCV:     40-50ms    does not work with glasses or obstructions
SSD:            19-30ms   works with glasses and  obstruction, but not with facemask
MTCNN:      945-3125ms works with glasses and obstruction, but not with facemask
DLIB:           346-350ms   works with glasses, but not with obstruction or facemask
As you can see retinaface is not the fastest but most reliable detector, in your series of implementations.
If there is option to use smaller input tensor or a different tensor platform, like suggested by other user (TensorRT), it would be worth the effort for real-time applications.

Thank you for this research results. I already know retinaface is the most robust one but it is also the slowest but your work also shows its performance with glass, mask and obstruction.


Pick some dark <var> colors

It seems okay to use oklab now? The comment said the original
values had a and b go from [-128 to +128] so scaled them
to oklab which goes from [-100% to 100%]. Colors 2 and 3 seemed
too close to me so I adjusted color 3 slightly.
Example

#2157

@tabatkins ping?

And released 4.1.10 with the new styles.


Matrix v2

Save matrix in a vector by fusing the rows

I added a matrix support, now also with necessary tests for 100% coverage. Take a look, if you have time, it is not urgent.


const class pilot::kinematics::PositionAny’ has no member named ‘front_left’

need to fix it from the recent changes made to the pilot core!

done


Scaling and gitter channel

Hi,
I searched for gitter channel to chat and ask my questions, i did not find - i think it can help grow the community.
for my question i read in the readme that this package actually good for big data using levelDB
but how do you scale, if the creation of new DB is local?
also any benchmarks?
Thanks!

benchmarks would be useful
unfortunately, i don't have time to maintain this project any more
I don't have any other recommendations for now - simply because I don't know, but reviving this project in the form of maintaining this repo or creating a new project with the same concept would be great
This project's strength is that it's just an abstraction to any data store, and does not require holding all objects in memory. This means that in theory it shouldn't matter much how big your dataset for query time. This does not mean linvodb3 is suitable for huge amounts of data or the definition of "big data". linvodb3 was always intended as a local db - it's simply an advantage that it doesn't have to hold everything in mem

ok i get you, so basically this project is not maintained for now


add the feature of toshow the parameters detail in pyhton libraries in jupyter notebook

Dupe of #https://github.com/microsoft/vscode-jupyter/issues/1307


fix(Added api of AsyncStorage): Added api of AsyncStorage

Added Api of Asyncstorage

Coverage remained the same at 79.954% when pulling<PHONE_NUMBER>18cfabeb7a9a6e8ea0ae1df5b4ab03 on feature/Asyncstorage-APi into a337060a44d31f721af1c889e603eb7ef96e6fba on master.


Support crypto without a key file

From https://github.com/GoogleCloudPlatform/google-cloud-common/issues/180
Calls requiring crypto, such as file.getSignedUrl() currently do not work automatically-authenticated environments, because values of a service account's JSON key file are required. However, it's possible to query the metadata server for those values:
curl -H 'Metadata-Flavor: Google' -vs 'http://metadata/computeMetadata/v1/instance/service-accounts/default/' 2>&1

Which will give you something like:
aliases
email
scopes
token

Implying
http://metadata/computeMetadata/v1/instance/service-accounts/default/aliases
http://metadata/computeMetadata/v1/instance/service-accounts/default/email
http://metadata/computeMetadata/v1/instance/service-accounts/default/scopes
http://metadata/computeMetadata/v1/instance/service-accounts/default/token

What would it take to get this fixed? I'd love to use this functionality in my GCF endpoint

I'd love to see this get fixed too! I want to use it in my GCF endpoint as well! Can we get someone on this?

Opened an issue on google-auth-library: https://github.com/google/google-auth-library-nodejs/issues/169

Hello, is there any more documentation on this?  I'm running in a function and getting the inspecific error "Failure from metadata server."  Digging into the code, the metadata for the function doesn't have the defaults key (or email).
All my googling failed to indicate any information on that key, or a way to change the service account in case one configured differently is needed (it's using the default service account).  I couldn't find any general cloud documentation on usage of scopes either, but I enabled the IAM api for the project.


Don't comment pushed entries

Instead of commenting pushed entries, it would make more sense to mark them as pushed. This would avoid annoying operations like fixing start time, and would allow running operations on pushed entries (eg. show a summary of last week entries). This would also pave the way for 2-way sync, although I'm not sure this is an important feature.
I guess adding a character at the start of the line would be the way to go, as it would also allow to use other markers, for example to ignore an entry. A pushed entry could look like that:
= taxi 0800-0845 Work on taxi
Here the = sign denotes a pushed entry. We could use the ? sign for ignored entries, thus removing the current hack involving the question mark at the end of the alias:
? taxi 0800-0845 Work on taxi

+10000 on this one!
What you could do too, is to keep as it is and still parse the commented lines. I know you don't like the idea, but it's almost the same.
Thanks for going that way

Following discussion from #60:
Currently flags are in the following places:

Start of a line/alias (ignored flag, pushed flag)
End of an alias (ignored flag)

I think regrouping them to only 1 place (start of a line) would be cleaner.

As mentioned in #60, please make the characters configurable.

Fixed in https://github.com/sephii/taxi/commit/dc1c27af33ac6c1b3ec714479ed11e2c917758dc.


How to specify 'compileDebug'?

For non-dev, livereload should be removed. How to change the 'compileDebug'? Thanks a lot!

@txchen I had the same question, how did you resolve this ?

@karthilxg I ended up with creating a dev http server: https://github.com/txchen/light-server


Swift 2 query method equivalent

Hi,
I used the query(string) method to make a generic method for select data.
With the update of Squeal for Swift2, i cant use this method.
var rows = try db.query(request)
for row in rows{
//Treat row
}
I dont find equivalent of this...
Regards

for-loop support was removed to make handling errors more compatible with swift 2 errors. Instead of a for-loop, you use the next() method:
var results = try db.prepareStatement("SELECT * FROM people")
while try results.next() {
  var row = results.dictionaryValue
  // or whatever you want to do with the row
}

Since it's common to simply transform a row into some object value, you can also use the selectFrom method on the Database object, or the select method from the compiled statement. Pass these methods a block, and they will return an array of all treated rows. No need to call next() yourself.

Thank you for your response.
I have a second question: if in example you posted, i want to get values of dictionary in a String array
So i do:
var arrayValues = Array(row.values)
But values are Bindable. I search documentation to know how cast it in String (all values from my database are String) from Bindable but i dont find it.

Bindable is just a protocol, so the underlying value may be any value that implements the Bindable protocol.  If you know for sure that all the Bindable values are strings, you can do:
var arrayValues = row.values.map({ $0 as String })
That will simply cast all the values to strings.  If you don't know for sure that all values are strings, you can do:
var arrayValues = row.values.map({ $0 as? String })
In that case you are dealing with optional values and you need keep that in mind as you use them.
These functions are not specific to Squeal, but because Squeal returns Bindable values, you need handle using the return data correctly.

There are also methods that take blocks, prefixed with select, that are likely more efficient. And the Statement object supports subscripting by column name or index too.
Something like:
let emails = try db.selectFrom("people") { $0["email"] as String }

// equivalent with a statement
let results = db.prepareStatement("SELECT * FROM people")
let moreEmails = results.select { $0["email"] as String }

Thanks :)


Implement getblockheader RPC method

Motivation
This is needed for block explorer support and has also been requested by a mining pool

We will also need this to support zebrad-hash-lookup script as specified in #8829


messages in output window

I am getting some new messages from Mechanic since the last update.
these are not errors  – Mechanic seems to be working fine – it just pollutes the output window.
In RoboFont 1.8:
('|/Users/gferreira/Library/Application Support/RoboFont/plugins/Mechanic.roboFontExt/lib/site-packages/certifi/cacert.pem|', '|None|')

the same message appears lots of times
In RoboFont 3:
/Users/gferreira/Library/Application Support/RoboFont/plugins/Mechanic.roboFontExt/lib/site-packages/requests/packages/urllib3/connectionpool.py:160: DeprecationWarning: invalid escape sequence \*

+ several other deprecation warnings referencing the following files:

requests/packages/urllib3/connectionpool.py
requests/packages/urllib3/poolmanager.py
requests/models.py
requests/api.py
requests/sessions.py
semversion.py

@typemytype any ideas? I think that some of these packages got updated in the Py3 PR?

the request package which is embedded into mechanic seems to use some deprecated stuff in py3...
Ive updated those packages to py3 but I did not fix these issues inside the embedded packages
the warning you mentioned is in the doc string, its using \ to escape restructured text formatting, which has to be \\*
see https://github.com/jackjennings/Mechanic/blob/master/src/lib/site-packages/requests/packages/urllib3/connectionpool.py#L103
see the diff:
print("\* hello")
print("\\* hello")


Add repo-specific configs

This PR adds the ability to set repo-specific settings for the bot, by creating a .mention-bot file in the base directory of the repo. It also adds one configuration option, userBlacklist. Users in the blacklist will never be mentioned by mention-bot.

Thanks! That's going to be great to have a config file where we can add more stuff :)
Can you:

Rebase because it doesn't conflict
Fix the small things I commented on
Sign the CLA

and then I'll merge it in :)

Can you also sign the CLA? I can't merge it without it :(

Awesome thanks!


Improve SynchronizeCommand by reading configuration

This PR adds control to the synchronization order of object types.
Changing this also fixes an issue with Doctrine proxy subclasses.

:+1:


VBR Audio Files

Safari is the only browser that's handling VBR audio proplerly. Chrome fails on seek operation, Firefox takes a while between operations.
Solution: all audio uploaded must have CBR

CBR-ed

It's not the VBR that makes Chrome not seek - it's happening on CBR files too. VBR has better compression so switching back to VBR encoding and blaming Chrome for now

It's the converters fault - most of the apps on Mac App Store are outdated & badly done
Switch Sound File Converter 🙌🏿


scroll the chat behind textbox

can't scroll the chat behind the text box. Chat should start above the text box, not the text box going over the chat


Emojis do not renders properly in label properties

Version of Archi
5.2.0
Archi Plug-ins
coArchi
Operating System
MacOs Sonoma 14
Expected Behaviour
Fully rendered emoji in label properties (works only in element titles)
Actual Behaviour

Steps to Reproduce the Behaviour

create element
add emoji to propery
add property to label , you will see partly rendered images

Yes, they are getting clipped by the Draw2d framework that is used to render text. I'm not sure if that's easily fixable.
A workaround is to use a label expression with a line break. For example:
${name}
(line break)

or:
${property:propertykey}
(line break)

Oh, well. Such an easy fix. Well ok. At least we can handle it with line break. Thanks

Is there a list of emoji we can use?

Is there a list of emoji we can use?

You can use any emoji you want (knowing that several, if not most of them, will require you to add a newline to let it uncropped).

Such an easy fix

Not easy.
Archi uses a graphical framework Draw2D which is rather old. A text control's height is calculated on the basis of the font's metrics, not on an emoji (which didn't exist when Draw2d was first developed).

This is Mac only, emojis render OK on Windows.
I opened an issue on the Eclipse repo - https://github.com/eclipse/gef-classic/issues/414

I'm closing this issue as it's been reported https://github.com/eclipse/gef-classic/issues/414


change sim to make it work w/ kitt4sme cloud.

@souayb I changed the live simulator slightly to make it work with the current kitt4sme cloud setup.
To test SADS (classic) in kitt4sme.collab-cloud.eu

check out the cloud-demo-sim branch
put tests/util/Welding_data_new.csv back in place
cd nix
nix shell
cd ..
poetry shell
python tests/sim
browse to https://kitt4sme.collab-cloud.eu/sads/
have fun w/ sads

Oh please don't forget to kill the simulator (7) when done!!

@souayb please do not merge this PR. I only opened for your convenience so you can easily see the changes I've made. We'll close this PR after the May 12th review demo and delete the cloud-demo-sim branch too.


DEC-654: Add representational images to Pages

Why: Need to add background/representational image to a Page. This image will be used when rendering a Page cards such as on the homepage or "next" links.
How: We decided to start migrating toward having an Image object that can be used for Items, and background images for Collections, Showcases, Pages, etc.
-Created an Image model and an association to Pages.
-Changed SavePage to find or create an Image using the uploaded image and associate it to the page. If the image was previously uploaded, it will reuse the image, otherwise it will create a new one.
-Started with the basic styles needed, we may need to expand this later as we migrate the other objects, such as for dzi files.

:+1:

:+1:


Fix issue when save image list

Signed-off-by: shiyu22<EMAIL_ADDRESS>When I run the following code, the previous code will only save one image.
import towhee
towhee.glob('test1.png', 'test2.png') \
      .image_decode() \
      .img2img_translation.cartoongan(model_name = 'Hayao') \
      .save_image(dir='data/tmp') \
      .to_list()

Codecov Report

Merging #1282 (6bbfd7c) into main (b642cb0) will increase coverage by 0.13%.
The diff coverage is 0.00%.

@@            Coverage Diff             @@
##             main    #1282      +/-   ##
==========================================
+ Coverage   69.91%   70.05%   +0.13%
==========================================
  Files         267      267
  Lines       13238    13239       +1
  Branches     2182     2182
==========================================
+ Hits         9255     9274      +19
+ Misses       3402     3383      -19
- Partials      581      582       +1

Impacted Files
Coverage Δ

towhee/hub/builtin/operators/computer_vision.py
36.26% <0.00%> (-0.41%)
:arrow_down:

towhee/engine/operator_runner/runner_base.py
92.16% <0.00%> (+0.60%)
:arrow_up:

towhee/dataframe/dataframe.py
74.15% <0.00%> (+1.04%)
:arrow_up:

towhee/engine/operator_context.py
84.78% <0.00%> (+2.17%)
:arrow_up:

towhee/engine/graph_context.py
90.76% <0.00%> (+4.61%)
:arrow_up:

towhee/engine/task_scheduler.py
71.60% <0.00%> (+11.11%)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update b642cb0...6bbfd7c. Read the comment docs.

/lgtm
/approve


Revert "chore: Update Windows SIG image version to 2022-1B (#1418)"

This reverts commit bd16ffcf645590df7aa94045ac927d107928bd4c.
gMSAv2 is blocked by 2022-1B. We need to revert this change to avoid others to bring this change to AKS RP before we figure out the solution.

I have reverted the commit in official/v20220108


Option to enable cors for editor

I want to be able to have my own editor talk to the node-red server - to be able to do this CORS needs to be enabled for the server. I'm really not sure if this is the best way to do it, but it works for me..
Comments welcome

Coverage decreased (-0.1%) to 87.44% when pulling a674769a2e95c9140d19bd6293f2b3fe4b981f87 on Trisooma:global-cors into bcff74327b09fc08ebab271aacf77292cd64fec0 on node-red:master.

I can certainly see the requirement to enable CORS handling on the admin routes - but I don't think your implementation is the right way to do it. These options will apply CORS to both admin and http routes - not just admin routes.
If we're going to add this, it ought to be httpAdminCors and only get applied to the admin route in red/api/index.js

Thanks for pointing me in the right direction! I renamed the setting to httpAdminCors and it only gets applied on the admin routes.

Coverage decreased (-0.2%) to 87.362% when pulling 8b15c97a2e31ea8037d76afab1f48bea3e1faea2 on Trisooma:global-cors into bcff74327b09fc08ebab271aacf77292cd64fec0 on node-red:master.

Coverage decreased (-0.3%) to 87.247% when pulling 3cd066b1cbf95a0f0a8583c255cbed7840a4d274 on Trisooma:global-cors into bcff74327b09fc08ebab271aacf77292cd64fec0 on node-red:master.

Since I don't user node very often I'm not sure what you mean by reusing. I used a similar construct as the file you pointed me too. This way (adding handler globally) avoid having to specify it on every route.

Coverage decreased (-0.2%) to 87.357% when pulling 21d694af8d654885ce1b55325a1516f869f41821 on Trisooma:global-cors into bcff74327b09fc08ebab271aacf77292cd64fec0 on node-red:master.

:+1:


Feature/1976/multi tool multiple pages

Description
Allow user to select pages and perform rotate/delete/download operations on only the selected pages
Closes #(1976)

Checklist

[X] I have read the Contribution Guidelines
[X] I have performed a self-review of my own code
[X] I have attached images of the change if it is UI based
[X] I have commented my code, particularly in hard-to-understand areas
[X] My changes generate no new warnings
[X] I have read the section Add New Translation Tags (for new translation tags only)

https://github.com/Stirling-Tools/Stirling-PDF/issues/2195
I thought that yesterday 😂

could i contribute some to it

could I contribute some to it

Hey mate. I'm already most of the way through sorting the icons for the multi-page select features and have included tooltips in doing so but you're more than welcome to do pick up #2195 and sort tooltips for the existing icons.


ssl profiles and parent profile inheritance

I've found what I believe to be a limitation to the current ssl profile implementation.  When I run update on a profile, it sets the custom flag to enable on all attributes, breaking the inheritance from the parent profile on options I did not intend to modify.
Example, take an existing ssl profile, which has the following configuration:
ltm profile client-ssl /Common/test {
    app-service none
    cert /Common/mycert.crt
    cert-key-chain {
        mycert_ca-bundle {
            cert /Common/mycert.crt
            chain /Common/ca-bundle.crt
            key /Common/mycert.key
        }
    }
    chain /Common/ca-bundle.crt
    defaults-from /Common/clientssl
    inherit-certkeychain false
    key /Common/mycert.key
    passphrase none

Now perform an update via the SDK
profile = mr.tm.ltm.profile.client_ssls.client_ssl.load(name='test', partition='Common')
profile.secureRenegotiation = 'require-strict'
profile.update()

The result will be that all options are 'checked' in the WebUI, and the resulting config now looks like this:
ltm profile client-ssl /Common/test {
    alert-timeout indefinite
    allow-dynamic-record-sizing disabled
    allow-expired-crl disabled
    allow-non-ssl disabled
    app-service none
    authenticate once
    authenticate-depth 9
    ca-file none
    cache-size 262144
    cache-timeout 3600
    .... shortened, you get the idea ...

I understand the REST interface doesn't have the inherited flag like SOAP, but you can just PUT the option you want to modify leaving the other options as is.  the update method apparently does a PUT on every option(having no reference to what was inherited and what was not), and thus removes the inherited flag.  This will really hamper the ability to use the update method and preserve parent profile inheritance.
Is there some other way to do this without breaking the inheritance on options I do not want to modify and need to continue to inherit from the parent profile?
Thanks

hmm. this is a head-scratcher. I need to ask the REST developers about this one as I dont think it's an sdk limitation.

@waffie1 what version of BIG-IP are you using??

@waffie1 Upon reading the REST user guide, it can be concluded that PATCH should be used for such modifications. I will open an issue for that to have this method implemented:
From the REST guide:
https://devcentral.i131.f5.com/d/icontrol-rest-api-user-guide-version-1210
'''
UsingthePATCHmethod,youcanmodifypropertiesofaresourcewithoutaffectinganyotherproperties.
'''

I can verify that according to our REST overlords, it is probably due to us not using PATCH. We'll address this

I was testing using v12.1.    I can confirm with native REST(requests) that using PATCH only updates the parameters in the request.
If I am reading the update code properly, it looks like it adds the entire object dictionary to the request(from the load method, minus collections and a few other things it removes prior to the request)   If you do this, it will still set the 'custom' flag and break inheritance.   For objects with inheritance like ssl profiles, you need to make sure only the options that have changed are part of the request, otherwise you will break the inheritance.
Example:
Start with a ClientSSL Profile with Secure Renegotiation set to require, inherited from the parent clientssl.
s = requests.session()
r = s.get(baseurl + '/tm/ltm/profile/client-ssl/~Common~test')

r.json()['secureRenegotiation'] has a value of u'require'
Now PATCH the same value in.
data = {'secureRenegotiation' : 'require' }
s.patch(baseurl + '/tm/ltm/profile/client-ssl/~Common~test', data = json.dumps(data))
r = s.get(baseurl + '/tm/ltm/profile/client-ssl/~Common~test')

The value of r.json()['secureRenegotiation'] is still require, however it is no longer inherited, the check box is checked in the WebUI, and the option is explicitly set in the bigip.conf
We are going to need update to be a little smarter, or perhaps have another way to modify profile objects types that have inheritance.  Either that or I am wrong about how update works, in which case please correct me.

@waffie1 we've changed put to patch. Can you run development and see if it fixes your test? We should also add a test to the sdk for this

Let's use this issue, and as much of @waffie1 's example code as we can to track and implement the necessary functional test.

Doesn't look like this fixes the problem.  Simply changing to PATCH isn't going to fix the problem.
We need a method of updating that doesn't pass the entire loaded dictionary in the request, but only includes the variables that need modified(the ones the users specifies).  If you PATCH every single option, it will still unset the inheritance for everything.  See my last example above where patching an inherited value back in unsets the inherited flag.
I don't think var = value followed by update is going to work well for this, unless you want to diff the parent profile from the current to see what changed before the patch request.  I would suggest what was suggested earlier, a modify method that accepts a dictionary of what needs modified.
This is going to be required by every profile type that includes a parent and inheritance.

OK, folks after some consideration I'd like to propose that we make update behave as a targeted configuration operation.  In particular I'd like for a call to update to ONLY submit the explicitly passed (kwarg) attributes in the PATCH json.    Concurrently we'll add a replace operation that does the thing that update used to do.

OK, I've opened a couple of issues that (in combination) should address this one:
https://github.com/F5Networks/f5-common-python/issues/608
AND
https://github.com/F5Networks/f5-common-python/issues/609

@zancas Not sure I am in favor of the proposed solution here.  You need to really think about this because you are going to break the API and force a bump in the major version again.
Second you are going to break this functionality which is in use by your largest user of the SDK (OpenStack):
a.name = "new_name"
a.description = "new_description"
a.address = "<IP_ADDRESS>"
a.update()

@swormke 's point makes me think that the update == [HTTP PUT / replace the config], and modify == [HTTP PATCH / configure selected attributes] pattern is probably a better way to go.

OK @waffie1 install f5-sdk version 1.2.0 and retry your example with:
profile.modify(secureRenegotiation='require-strict')
Do you now get the required behavior?

I'm going to add a functional test based on this use-case.

OK @waffie1 we now have a functional test that verifies that your specific issue is fixed.
In order to selectively modify the value of secureRenegotiation without affecting other attributes do the following:
profile = mr.tm.ltm.profile.client_ssls.client_ssl.load(name='test', partition='Common')
profile.modify(secureRenegotiation='require-strict')

Thanks everyone.  Everything looks to be working properly with my initial tests.

W000T!


Allow for a way to disable the automated calculations derived from levels of exhaustion

Probably makes sense to have a world setting to disable all of the new automatic status effect calculations.

Kim and I discussed this briefly, and I feel quite strongly that a config key is the way to go.

They are not mutually exclusive. I think a world setting to disable condition automation makes sense, similar to the various other settings we have that disable various automations. A config key to turn off specific condition automations is fine too, so long as it's not very complex to implement (I don't see why it would be though).

Yeah the new Exhaustion handling - both from a UI as well as data perspective - seems to have voided my attempts to use the playtest Exhausted rules (even though those rules are no longer going to be in the revised core books I like them anyways)

Would also like to be able to disable PHB exhaustion rules from being automatically applied. I want to use to the playtest rules as well, but not double penalize my players with PHB penalities

Would also like to be able to disable PHB exhaustion rules from being automatically applied. I want to use to the playtest rules as well, but not double penalize my players with PHB penalities

This is now doable with a world script and should probably be closed

This is now doable with a world script and should probably be closed

Disagree. There is a benefit in including a setting in the UI without the need for a world script.


UA-7368 remove rollup-plugin-polyfill-node dependency

Context
The rollup warnings were due to importing URL from the url module instead of referencing the global variable.
The url module is a nodejs module rather than a package.json dependency. When rollup created the browser bundle, it correctly detected the mismatch, and suggested adding node polyfills to the browser bundle.
Solution
This PR removes the import in favor of use the global (note that the other instance of URL in analytics.ts was already doing this). The global is available on nodejs and modern browsers.
Aside 1
Being transparent, I did not see any difference in bundle size with or without the plugin. In both cases, the coveoua.browser bundle was 94kb. Still I think there's a benefit in not introducing the dependency.
More interesting point though is the increase in the last few months. The last build on my machine was from Aug 5th, 2022. Comparison of the bundle sizes between then and now:

file
Aug 2022 (kb)
Mar 2023 (kb)

coveoua.browser
61
94

coveoua
61
94

library.es
81
122

library
718
784

react-native
6
708

Only worth focusing on the first three since these are the ones that run in the browser. The increase has been ~50% in the last 6 months. Maybe there are good reasons, but it feels suspicious? If the size continues to increase to the point where clients start complaining about it, we'd be in reactive rather than proactive mode, which is never fun.
Just want to put this on your radar for now, but some actions could include:

Investigating what caused the recent increase
Adding a github action that reports the increase in bundle size on PRs.
Looking for optimizations and quick wins.

Aside 2
[Thought for a separate PR, curious to get your thoughts on this topic]
If we want coveo.analytics.js to be more resilient, and run in any JS runtime without crashing (e.g. [react-native]), it could be better to use a function to retrieve globals, that checks if they exist, and fails gracefully when they don't. e.g.
function getUrlGlobal() {
  return global.URL ? global.URL : null;
}

const URL = getUrlGlobal()

if (!URL) {
   // log warning or throw error or do nothing
   return;
}

new URL(...)

Alternatively, we can just let the code crash and have someone report it. Or maybe middle-ground, considering each global on a case-by-case basis.
Note: in the case of react-native specifically, we can polyfill just that bundle, but I don't like that we're operating blind. If we want to invest there, we'd ideally start with a test suite that can catch errors when unsupported globals are introduced to coveo.analytics.js, and only polyfill when we can guarantee that a) there is an error, and b) that adding the polyfill solves the error.

This is fine for when the code can opt-in into a feature.

Sounds good and agreed. The code would ideally not crash in a certain environment if it's possible to a) recover by using an alternative to the global, or b) if the pathway is not relevant for that environment (e.g. url processing is not relevant in the context or a mobile app built with react-native?).
Still there could be a nice benefit to centralize global access, retrieving them via functions: if different files rely on URL, we can look at one place and see what the assumption is, i.e. do we have a fallback in place, do we return null and let the caller deal with it, do we return the global always letting the code crash.
What do you think?

I'm closing this, since this is removing code that only was added in UA-7368. I've integrated these changes with the original PR.


src/arm/linux/aarch32-isa.c does't build for armv8

// success
$ clang -target armv7a-linux-androideabi src/arm/linux/aarch32-isa.c  -I src/ -I include -std=c99 -I deps/clog/include -c
// failure
$ clang -target armv7a-linux-androideabi src/arm/linux/aarch32-isa.c  -I src/ -I include -std=c99 -I deps/clog/include -c  -march=armv8-a
In file included from src/arm/linux/aarch32-isa.c:7:
src/arm/linux/cp.h:41:24: error: invalid operand for instruction
                __asm__ __volatile__("MRC p1, 0, %[wcid], c0, c0" : [wcid] "=r" (wcid));
                                     ^
<inline asm>:1:6: note: instantiated into assembly here
        MRC p1, 0, r0, c0, c0
            ^
1 error generated.

MRC is not available on armv8 and the function may need to use MRS instead.  To account for this, libcpuinfo for Android is built entirely for armv7-a even for armv8-a targets.

This was fixed in #117


update 'air' installation path, update golang version to 1.22

I'm a Korean reader. Thank you for the great book.
The path for the 'air' package has been updated to "github.com/air-verse/air".
As a result, an error occurs when using the existing Dockerfile.
It appears that the package can be composed without errors in Go 1.22 and later versions.

Thank you for reading my book.
And I appreciate the wonderful pull request. I believe it will help other readers as well!


Added a river containing a rat, which you can pick up.

Added four lines of code.
One defines the Item river_rat as a movable Item.
Second and third define river as a Room, containing the rat item.
The fourth adds the river Room to the mystery_floor Floor.

Extra comma has been removed from line 25. Thanks for the feedback!

@l4nz8 pull request ready to be merged


[diem framework specs] update specs and remove pragma verify = false from DiemSystem - (28)

Motivation

This PR removes pragma verify = false from DiemSystem, resolves the errors caused by the removal by adding more asserts(like asserting validator_info.last_config_update_time configs) and abort specs.
It also uses the new choose operator in some places.

spec fun spec_index_of_validator(validators: vector<ValidatorInfo>, addr: address): u64 {
        choose min i in range(validators) where validators[i].addr == addr
    }

Have you read the Contributing Guidelines on pull requests?
Yes.
Testplan
CI/CD and functional testcases are added

/canary

:sunny: Canary successful

/land


📁Docs: Add 'Skip to Main Content' Button

This would be an accessibility enhancement to the docs that would allow users navigating via a screenreader to skip the main content rather than having to go through each of the menu items. It would be visually hidden.

Is this issue about documentation by adding a section in the docs or implementing a 'Skip to main content'-button?

Is this issue about documentation by adding a section in the docs or implementing a 'Skip to main content'-button?
@huntabyte @TGlide

The latter!


k4a_DIR not found when configuring in cmake

Hello, I am trying to build my visual studio project with cmake but I'm not being able to get past the following error when I configure it in cmake:
Could not find a package configuration file provided by "k4a" with any of
the following names:
k4aConfig.cmake
k4a-config.cmake
Add the installation prefix of "k4a" to CMAKE_PREFIX_PATH or set "k4a_DIR"
to a directory containing one of the above files.  If "k4a" provides a
separate development package or SDK, be sure it has been installed.
As you can see in the attached CMakeLists.txt file, I've set the k4a_DIR path to the cmake folder where I installed this repo. However, I see that the folder has a k4aConfig.cmake,ini instead of just cmake and I think that may be causing the error. Hopelessly stuck with this so I would REALLY appreciate some help

!

This is not a lot of information, but we do have a crumb of info here about using VC2017: https://github.com/microsoft/Azure-Kinect-Sensor-SDK/blob/develop/docs/building.md#building-using-visual-studio.
If that doesn't help, then can you share repro steps so we can reproduce the problem?

@wes-b you're right, that's not enough information. Here are my retro steps:

Cloned this repo for using OpenCV with Azure Kinect: https://github.com/UnaNancyOwen/AzureKinectSample
Followed this tutorial to install OpenCV: https://www.youtube.com/watch?v=_fqpYLM6SCw
cloned this Azure Kinect SDK repo
In the project folder for point_cloud (..\AzureKinectSample\sample\c\point_cloud), edited CMakeLists.txt to set paths to the install locations of opencv and azurekinect sdk (lines 12 and 13 in the snippet above). This fixed the same error for opencv but as I already said, this repo does not contain a k4aConfig.cmake so k4a cannot be configured.

Please let me know if you're able to find any solutions after reproducing the problem. Feel free toask further questions. Thanks for your help!

@wes-b you're right, that's not enough information. Here are my retro steps:

Cloned this repo for using OpenCV with Azure Kinect: https://github.com/UnaNancyOwen/AzureKinectSample
Followed this tutorial to install OpenCV: https://www.youtube.com/watch?v=_fqpYLM6SCw
cloned this Azure Kinect SDK repo
In the project folder for point_cloud (..\AzureKinectSample\sample\c\point_cloud), edited CMakeLists.txt to set paths to the install locations of opencv and azurekinect sdk (lines 12 and 13 in the snippet above). This fixed the same error for opencv but as I already said, this repo does not contain a k4aConfig.cmake so k4a cannot be configured.

Please let me know if you're able to find any solutions after reproducing the problem. Feel free toask further questions. Thanks for your help!
Hello boy! I also meet the problem. Could you mind sharing your solving method in terms of this problem ?

@wes-b you're right, that's not enough information. Here are my retro steps:

Cloned this repo for using OpenCV with Azure Kinect: https://github.com/UnaNancyOwen/AzureKinectSample
Followed this tutorial to install OpenCV: https://www.youtube.com/watch?v=_fqpYLM6SCw
cloned this Azure Kinect SDK repo
In the project folder for point_cloud (..\AzureKinectSample\sample\c\point_cloud), edited CMakeLists.txt to set paths to the install locations of opencv and azurekinect sdk (lines 12 and 13 in the snippet above). This fixed the same error for opencv but as I already said, this repo does not contain a k4aConfig.cmake so k4a cannot be configured.

Please let me know if you're able to find any solutions after reproducing the problem. Feel free toask further questions. Thanks for your help!

Hello boy! I also meet the problem. Could you mind sharing your solving method in terms of this problem ?

Sorry I just realized this is not in the samples repo. This is @UnaNancyOwen sample; can you help please?

The Azure Kinect Sensor SDK installer doesn't include the files to find library using CMake. Therefor, You can't find Azure Kinect Sensor SDK using CMake. If you want to find Azure Kinect Sensor SDK using CMake, You need to build and install Azure Kinect Sensor SDK from source code yourself with CMake. It is usually installed under "C:\Program Files\K4A" by build INSTALL project of Azure Kinect Sensor SDK. (If you newer about CMake, Please learn how to use CMake basicaly in first. It will be helpful for you.)
rem please run command prompt with administrater.
rem please set Git and CMake path to environment variable PATH.

cd C:\
git clone https://github.com/microsoft/Azure-Kinect-Sensor-SDK.git
cd Azure-Kinect-Sensor-SDK
git checkout -b v1.4.1 refs/tags/v1.4.1
mkdir build && cd build
cmake .. -G "Visual Studio 16 2019" -A x64 -DCMAKE_INSTALL_PREFIX="C:/Program Files/K4A"
cmake --build . --config Release
cmake --build . --target install --config Release

@wes-b Please consider that including CMake files in the installer again in your team. It is useful for all developers. (e.g. OpenCV has CMake files in pre-built packages.)

@tahrir94  You can get the nuget package from here
Then you can try linking against the k4a libs from the nuget package. I have attached a example cmake file here. you may need to change the path to the k4a binaries based on your build type.

@UnaNancyOwen thanks for the instructions! these are very helpful also for your repo.
I have a little problem:
the K4A folder in Program Files is not created. Any ideas why that could be?
thanks!

@tobibaum
I seem to be having the same problem with the K4A folder not being created. Did you end up finding a solution?

I ended up switching my development over to ubuntu instead, where I was more comfortable with linking and such.
here is a cmake that worked for me:

@tobibaum
Okay thank you!


[BUG] graph_view() does not work

Describe the bug
The use of visualkeras.graph_view(model) does not produce the graph.
Minimal Code To Reproduce
import visualkeras
import tensorflow as tf

model = tf.keras.Sequential([
    tf.keras.layers.Dense(64, input_dim=10, activation='relu'),
    tf.keras.layers.Dense(1)
])
visualkeras.graph_view(model)

Expected behavior
It should show the model in graph mode.
Screenshots

Environment:

OS: Windows Version 10.0.22631.4460
Python 3.12.3
Module Version

TensorFlow 2.16.1
Keras 3.3.3
Visualkeras 0.1.3
Graphviz 0.20.3

Additional context
It works with visualkeras.layered_view(model) but not with visualkeras.graph_view(model).
Example in #67 have not worked anymore.

On it

This seems to be a compatability error between visualkeras and keras >= 3.0.0. The Tensorflow version you are using requires a version of keras greater than 3.0.0, and the Python version you are using cannot use a Tensorflow version lower than 2.16, meaning you'd have to downgrade Python to get graph_view working.
I'll try and find the change that broke compatability past keras 3.0.0 for this function. For now, if possible, I'd recommend downgrading Tensorflow to a point where you can run Keras 2 without running into dependency conflicts so you can use graph_view. This will probably mean you'll have to downgrade your Python version too.
I'll try to get this fixed today. Thank you for using visualkeras.

@Soontosh, thank you for the prompt response. I will wait for your fix and would it be available on PyPI or from this repo?
And for the suggestion, I should make new virtual environment that is able to run Keras 2, by downgrading any related modules including TensorFlow and Python, right?
Other question, why there are more examples using layered_view() than graph_view()? I like the first than the second since I just begin to learn NN and need to know the detail of a layer.

@dudung Yes, I'd recommend you make a new venv that is able to run Keras version 2.12 by downgrading Python to version 3.11 and Tensorflow to version 2.12. 2.12 is the highest version currently supported.
But there is no longer any need to do so. I am merging a fix to your issue (along with some other issues) right now. Thanks for helping me catch this, graph_view didn't work for versions Keras 2.12 and above at all.
To answer your question: The library was originally made with just layered_view. The graph_view function was added later down the line. That's why there aren't many examples for the latter. This is actually something I noticed while fixing the bug you caught. I'll be sure to add more examples for graph_view in future updates.
Once I merge the changes, run the following command to get the updates:
pip install git+https://github.com/paulgavrikov/visualkeras

Just made the merge. Let me know if you run into any issues. I'll add this plus a fix for #77 to Pypi once I'm done testing the changes.

installation
I am able to install it with
pip install git+https://github.com/paulgavrikov/visualkeras

but only after uninstall version 0.1.3 first.
result

I am expecting that the first layer is a layer with 6 neurons, and the boxes on the left and right are not required, right? It should be layers with (6 - 8 - 4 - 2) neurons.
code
import keras
from keras import Input, Model
from keras.models import Sequential
from keras.layers import Dense
import visualkeras

inputs = Input(shape=(6,))
hiddens1 = Dense(8, activation='relu')(inputs)
hiddens2 = Dense(4, activation='relu')(hiddens1)
outputs = Dense(2, activation='tanh')(hiddens2)
model = Model(inputs=inputs, outputs=outputs)
visualkeras.graph_view(model)

You have to set input_as_tensor to false to get the nodes to show properly. We use a box by default because the input shape is sometimes very large, so it looks better to display it as a single rectangle rather than, for example, 100 nodes (for a 10 by 10 input shape).

Do you mean inout_as_tensor?

But when I set it to True following result is obtained

Yes, I meant inout_as_tensor, sorry about that.
This seems to be a new bug. Could you open up a new issue for this bug? With information about your environment and venv packages?

I will do that. Thank you for the direction.

This seems to be a new bug. Could you open up a new issue for this bug? With information about your environment and venv packages?

Done in #82.

Bug has been squashed as part of the latest release. Access it at: https://pypi.org/project/visualkeras/0.1.4/
Closing this issue now. Thank you so much for your help!


refactor(regions): do not update region's OSM

Also, refactor MongoMap so it does not implement Map

Codecov Report

Merging #163 into dev will increase coverage by 0.13%.
The diff coverage is 0%.

@@             Coverage Diff              @@
##                dev     #163      +/-   ##
============================================
+ Coverage     19.35%   19.48%   +0.13%
  Complexity       75       75
============================================
  Files            58       58
  Lines          2155     2155
  Branches        191      195       +4
============================================
+ Hits            417      420       +3
+ Misses         1719     1716       -3
  Partials         19       19

Impacted Files
Coverage Δ
Complexity Δ

...n/java/com/conveyal/taui/persistence/MongoMap.java
23.28% <0%> (+5.57%)
7 <0> (ø)
:arrow_down:

...om/conveyal/taui/controllers/RegionController.java
23.91% <0%> (+3.15%)
2 <0> (ø)
:arrow_down:

...taui/controllers/OpportunityDatasetController.java
8.48% <0%> (+0.18%)
3% <0%> (ø)
:arrow_down:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update c8c9389...e43f35a. Read the comment docs.


adjust window transparent

Description of the new feature / enhancement
Just as the title, I hope I adjust window transparent #16197
But this time, i made a small program like this, to show it's possible
as the video, it requires admin
https://user-images.githubusercontent.com/62493399/208224540-c49b103c-bcf7-4005-b0ec-4f6f6a193655.mp4
Scenario when this would be used?
to view text/pictures in anther windows below at the same time
like the new conhost.exe

Supporting information
this program uses SetLayeredWindowAttributes()
->https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-setlayeredwindowattributes?redirectedfrom=MSDN
and the most important part is the following:
SetLayeredWindowAttributes(hwnd,RGB(0,0,0),(BYTE)**[transparence here]**,LWA_ALPHA);
//LWA_ALPHA told this function only focus on the 3rd parameter, 'balpha'

souce here:Documents.zip

nobody here?!

This would be tracked via /dup #1084.
If this is an issue you’d like to take up, please let’s chat about implementation there


Add None to Facets for when the Data is not Tagged

Discuss with BrianO.

Delaying since priority is refactoring accessor library.


Replace tabs with spaces

We occasionally hit a lint error:

ERROR:lint:interfaces/webdriver.idl:9: Tabs used for indentation (INDENT TABS)

Should be fixed. Reffy now replaces tabs with two spaces before it dumps the IDL.


WordCounter - Trump speeches show Clinton results

I was trying the “word counter” tool and I wanted to compare Clinton and Trump speeches. But if I select
Trump from the drop down menu I get Clinton speeches.
(verified by Catherine that this is happening)

People in workshop reported that choosing Beatles data also only showed CLinton results


Recurring messages with fixed rate

Hey!
My question is that is it possible to send recurring message via slack_bolt? I know that chat_scheduleMessage function exists, but it's only define one message in the future. My goal is to keep sending message in a channel in every 10 minutes, until someone mark a task completed. I also checked reminders, but theres no possibility for fixed rate minute configuration. Should i make a scheduling process on my backend side?
Reproducible in:
pip freeze | grep slack
python --version
sw_vers && uname -v # or ver
The slack_bolt version
slack-bolt==1.5.0
slack-sdk==3.5.0
Python runtime version
3.8.5
(Paste the output of python --version)
OS info
Darwin Kernel Version 20.4.0:
(Tell what actually happened with logs, screenshots)
Requirements
Please read the Contributing guidelines and Code of Conduct before creating this issue or pull request. By submitting, you are agreeing to those rules.

Hey @tomeszmh, thanks for asking the question!

Should i make a scheduling process on my backend side?

Yes, I think doing so is the right way to go here. As App's listeners are the functions for responding to incoming requests from Slack, they are not the solution for your use case. Therefore, the simplest example could be the one that uses only WebClient for performing Web API requests.
import time
from slack_sdk.web import WebClient

client = WebClient(token=os.environ["SLACK_BOT_TOKEN"])

while True:
    client.chat_postMessage(channel="#random", text="Hey, this is a reminder!")
    time.sleep(10 * 60)

I hope this was helpful to you. If everything is clear now, would you mind closing this issue?


db: remove tm-db

Description
Remove tm-db in favor of only badgerdb
closes #211

Can I help pushing this through the finish line by opening a PR against your branch?

so the foundation is completed. Mainly the cleanup and honing into a db configuration for badger is needed. Feel free to work against the PR otherwise I can work on it this weekend.

Nah, I was just going through the open draft PRs and was trying to understand what their story/trajectory was. Next weekend is more than soon enough for this 👍🏼 I'll look into helping Hlib to chunk up #205 instead then.

Codecov Report

Merging #241 (1dbce08) into master (eff282a) will increase coverage by 0.86%.
The diff coverage is 21.87%.

@@            Coverage Diff             @@
##           master     #241      +/-   ##
==========================================
+ Coverage   60.87%   61.74%   +0.86%
==========================================
  Files         261      264       +3
  Lines       23640    23490     -150
==========================================
+ Hits        14392    14504     +112
+ Misses       7759     7479     -280
- Partials     1489     1507      +18

Impacted Files
Coverage Δ

cmd/tendermint/commands/init.go
2.22% <0.00%> (-1.78%)
:arrow_down:

cmd/tendermint/commands/light.go
16.66% <0.00%> (ø)

cmd/tendermint/commands/run_node.go
0.00% <ø> (ø)

config/toml.go
60.86% <ø> (ø)

consensus/replay_file.go
0.00% <0.00%> (ø)

crypto/merkle/proof_value.go
0.00% <0.00%> (ø)

evidence/pool.go
65.35% <ø> (ø)

libs/db/badgerdb/db.go
75.00% <ø> (ø)

libs/db/memdb/batch.go
0.00% <ø> (ø)

libs/db/memdb/db.go
0.00% <ø> (ø)

... and 57 more

CI reported TestStateLockPOLUnlock to fail. Could this be related to the changes?
Click her for log output
--- FAIL: TestStateLockPOLUnlock (0.78s)
    state_test.go:745: #### ONTO ROUND 1
panic: Timeout expired while waiting for NewUnlock event [recovered]
	panic: Timeout expired while waiting for NewUnlock event

goroutine 73150 [running]:
testing.tRunner.func1.1(0x1ea6580, 0xc003269bf0)
	/opt/hostedtoolcache/go/1.15.10/x64/src/testing/testing.go:1072 +0x46a
testing.tRunner.func1(0xc04481d800)
	/opt/hostedtoolcache/go/1.15.10/x64/src/testing/testing.go:1075 +0x636
panic(0x1ea6580, 0xc003269bf0)
	/opt/hostedtoolcache/go/1.15.10/x64/src/runtime/panic.go:975 +0x47a
github.com/lazyledger/lazyledger-core/consensus.ensureNewEvent(0xc00321dce0, 0x1, 0x1, 0xbebc200, 0x2249389, 0x31)
	/home/runner/work/lazyledger-core/lazyledger-core/consensus/common_test.go:489 +0x43f
github.com/lazyledger/lazyledger-core/consensus.ensureNewUnlock(...)
	/home/runner/work/lazyledger-core/lazyledger-core/consensus/common_test.go:591
github.com/lazyledger/lazyledger-core/consensus.TestStateLockPOLUnlock(0xc04481d800)
	/home/runner/work/lazyledger-core/lazyledger-core/consensus/state_test.go:764 +0xdc5
testing.tRunner(0xc04481d800, 0x2397230)
	/opt/hostedtoolcache/go/1.15.10/x64/src/testing/testing.go:1123 +0x203
created by testing.(*T).Run
	/opt/hostedtoolcache/go/1.15.10/x64/src/testing/testing.go:1168 +0x5bc
FAIL	github.com/lazyledger/lazyledger-core/consensus	81.473s

I still do not understand what is happening in the above cases. Can't reproduce it locally.
Note, there also seems some data race, that might be related (not sure either yet):
Click her for log output
==================
WARNING: DATA RACE
Write at 0x00c000320c08 by goroutine 67:
  github.com/lazyledger/lazyledger-core/blockchain/v0.TestBadBlockStopsPeer()
      /home/runner/work/lazyledger-core/lazyledger-core/blockchain/v0/reactor_test.go:259 +0xa1a
  testing.tRunner()
      /opt/hostedtoolcache/go/1.15.10/x64/src/testing/testing.go:1123 +0x202

Previous read at 0x00c000320c08 by goroutine 459:
  [failed to restore the stack]

Goroutine 67 (running) created at:
  testing.(*T).Run()
      /opt/hostedtoolcache/go/1.15.10/x64/src/testing/testing.go:1168 +0x5bb
  testing.runTests.func1()
      /opt/hostedtoolcache/go/1.15.10/x64/src/testing/testing.go:1439 +0xa6
  testing.tRunner()
      /opt/hostedtoolcache/go/1.15.10/x64/src/testing/testing.go:1123 +0x202
  testing.runTests()
      /opt/hostedtoolcache/go/1.15.10/x64/src/testing/testing.go:1437 +0x612
  testing.(*M).Run()
      /opt/hostedtoolcache/go/1.15.10/x64/src/testing/testing.go:1345 +0x3b3
  main.main()
      _testmain.go:101 +0x356

Goroutine 459 (running) created at:
  github.com/lazyledger/lazyledger-core/blockchain/v0.(*BlockchainReactor).OnStart()
      /home/runner/work/lazyledger-core/lazyledger-core/blockchain/v0/reactor.go:113 +0x132
  github.com/lazyledger/lazyledger-core/libs/service.(*BaseService).Start()
      /home/runner/work/lazyledger-core/lazyledger-core/libs/service/service.go:140 +0x538
  github.com/lazyledger/lazyledger-core/blockchain/v0.(*BlockchainReactor).Start()
      <autogenerated>:1 +0x44
  github.com/lazyledger/lazyledger-core/p2p.(*Switch).OnStart()
      /home/runner/work/lazyledger-core/lazyledger-core/p2p/switch.go:226 +0x12e
  github.com/lazyledger/lazyledger-core/libs/service.(*BaseService).Start()
      /home/runner/work/lazyledger-core/lazyledger-core/libs/service/service.go:140 +0x538
  github.com/lazyledger/lazyledger-core/p2p.StartSwitches()
      /home/runner/work/lazyledger-core/lazyledger-core/p2p/test_util.go:167 +0x75
  github.com/lazyledger/lazyledger-core/p2p.MakeConnectedSwitches()
      /home/runner/work/lazyledger-core/lazyledger-core/p2p/test_util.go:88 +0x189
  github.com/lazyledger/lazyledger-core/blockchain/v0.TestBadBlockStopsPeer()
      /home/runner/work/lazyledger-core/lazyledger-core/blockchain/v0/reactor_test.go:225 +0x7f2
  testing.tRunner()
      /opt/hostedtoolcache/go/1.15.10/x64/src/testing/testing.go:1123 +0x202
==================
panic: BlockStore can only save contiguous blocks. Wanted 149, got 147

goroutine 1435 [running]:
github.com/lazyledger/lazyledger-core/store.(*BlockStore).SaveBlock(0xc002dd6440, 0xc0037fe000, 0xc001c0d2c0, 0xc003ddec80)
	/home/runner/work/lazyledger-core/lazyledger-core/store/store.go:340 +0xba5
github.com/lazyledger/lazyledger-core/blockchain/v0.(*BlockchainReactor).poolRoutine(0xc000320a80, 0x1c4e100)
	/home/runner/work/lazyledger-core/lazyledger-core/blockchain/v0/reactor.go:421 +0x107d
created by github.com/lazyledger/lazyledger-core/blockchain/v0.(*BlockchainReactor).OnStart
	/home/runner/work/lazyledger-core/lazyledger-core/blockchain/v0/reactor.go:113 +0x133

So, the only way for me to reproduce the first two cases is by reducing this timeout locally:
https://github.com/lazyledger/lazyledger-core/blob/f44378858edc79340d788009c6143767346a9c22/consensus/common_test.go#L55

So, I can confirm that these timeouts are not related to the DB being changed because the tests in question do not even init a DB ... maybe github is taking it easy today?

e2e tests failing now: https://github.com/lazyledger/lazyledger-core/pull/241/checks?check_run_id=2271497844
I'll restart tests one last time.

e2e tests failing now: https://github.com/lazyledger/lazyledger-core/pull/241/checks?check_run_id=2271497844
I'll restart tests one last time.

They are  passing now, not sure if this is a good sign

I'm wondering if we should further increase that timeout? Now I get:
--- FAIL: TestStateLockPOLSafety1 (0.49s)
    state_test.go:935: old prop hash 80EB087080D294C6D243BDCCE13E83B550FA7252C6FDB85500B22DA38B2CC897
    state_test.go:944: ### ONTO ROUND 1
    state_test.go:971: new prop hash 80EB087080D294C6D243BDCCE13E83B550FA7252C6FDB85500B22DA38B2CC897
panic: Timeout expired while waiting for NewTimeout event [recovered]
	panic: Timeout expired while waiting for NewTimeout event

We should open an issue about https://github.com/lazyledger/lazyledger-core/pull/241/files#r607875570 to not forget about it (it has super low priority).

fixed it. Tests fail on v2 without this, they pass with v3

Evan also noticed the TestTransportHandshake failure before this change: https://github.com/lazyledger/lazyledger-core/issues/216
I don't think the TestStateLockPOLUnlock etc failures can be related to this change as these tests do not even use a DB.

Evan noticed that tests fail less often now that we disabled pinning by default. It might be worth updating to the latest master. I think tests will still fail but maybe less often.

Codecov Report

Merging #241 (9877859) into master (ecf09a5) will decrease coverage by 0.31%.
The diff coverage is 36.36%.

@@            Coverage Diff             @@
##           master     #241      +/-   ##
==========================================
- Coverage   62.32%   62.00%   -0.32%
==========================================
  Files         265      269       +4
  Lines       23511    23774     +263
==========================================
+ Hits        14653    14742      +89
- Misses       7335     7504     +169
- Partials     1523     1528       +5

Impacted Files
Coverage Δ

cmd/tendermint/commands/light.go
16.66% <0.00%> (ø)

cmd/tendermint/commands/run_node.go
0.00% <ø> (ø)

config/config.go
77.74% <ø> (-0.15%)
:arrow_down:

config/toml.go
60.86% <ø> (ø)

consensus/replay_file.go
0.00% <0.00%> (ø)

crypto/merkle/proof_value.go
0.00% <0.00%> (ø)

evidence/pool.go
65.35% <ø> (ø)

libs/db/memdb/batch.go
0.00% <0.00%> (ø)

libs/db/memdb/db.go
0.00% <0.00%> (ø)

libs/db/memdb/iterator.go
0.00% <0.00%> (ø)

... and 29 more


Several feature request or idea for future Visual Studio: Code

Hello Microsoft and Visual Studio Code developer,
I'll give a several idea and feature request for future version of Visual Studio Code.

Add option to open a new window in File but Google Chrome's browser inside Visual Studio Code, not user default browser on their PC for browse Internet quickly without user opening their browser (because everyone know this app is Chrome Stable 66 based),
Allow user to install Chrome extensions inside Visual Studio Code (like other Chrome-based browsers does), and the last...
Add option to synchronize settings using Microsoft Account across devices (if user install Visual Studio Code in other PC).

If you do this, well, I will wait for those. Thank you.

FR1 can be supported by an extension, FR 3 is a duplicate of #2743. For FR 2, IMO we won't support this feature in near term.


I've got a horizontal scroll with v-motion-slide-visible-once-right

Hello, when I put v-motion-slide-visible-once-right on my code with Nuxt v3, I've got a horizontal scroll.
I followed the process to include motion on my project. Animations works, but create this bug.

I have the same bug. Did u solve the issue?

I have the same bug. Did u solve the issue?

Nope, I've got the issue again.

So apparently I discovered that for some reason the x: 100 value (which is translate on x axis 100 from right) in the preset 'v-motion-slide-visible-once-right' causes the bug.
I was able to solve it by specify the pixels directly in the directive, for example, like so:

hope it is useful.

So apparently I discovered that for some reason the x: 100 value (which is translate on x axis 100 from right) in the preset 'v-motion-slide-visible-once-right' causes the bug.
I was able to solve it by specify the pixels directly in the directive, for example, like so:

hope it is useful.

Hello, thanks for your reply @tony1c, I tested your code, but seems not working. Same issue.
However, I edited with v-motion variants, and works :
<template>
<div v-motion :initial="initial" :visibleOnce="enter">
</div>
</template>
<script setup>
const initial = ref({
  x: 10,
  opacity: 0,
  visibility: "hidden",
})

const enter = ref({
  x: 0,
  opacity: 1,
  visibility: "visible",
})
</script>

🚀


X11 Client Ctrl+Alt+Enter does not toggle full screen

I am not able to go full screen with /f nor toggle full screen with Crtl+Alt+Enter.

I'll try to do some more digging on the weekend to get more details.

@andreesteve could you post the output of /buildconfig and try with our nightly builds as a reference?

I'll try the nightly build tonight.
Is there a specific build config that enables full screen?
Maybe me and my distro package maintainer just forgot to include that one?
This is FreeRDP version 2.0.0-dev3 (b228deb99)
Build configuration: BUILD_TESTING=OFF BUILTIN_CHANNELS=ON HAVE_AIO_H=1 HAVE_EXECINFO_H=1 HAVE_FCNTL_H=1 HAVE_INTTYPES_H=1 HAVE_JOURNALD_H=TRUE HAVE_MATH_C99_LONG_DOUBLE=1 HAVE_POLL_H=1 HAVE_PTHREAD_MUTEX_TIMEDLOCK=ON HAVE_PTHREAD_MUTEX_TIMEDLOCK_LIB=1 HAVE_PTHREAD_MUTEX_TIMEDLOCK_SYMBOL= HAVE_SYSLOG_H=1 HAVE_SYS_EVENTFD_H=1 HAVE_SYS_FILIO_H= HAVE_SYS_MODEM_H= HAVE_SYS_SELECT_H=1 HAVE_SYS_SOCKIO_H= HAVE_SYS_STRTIO_H= HAVE_SYS_TIMERFD_H=1 HAVE_TM_GMTOFF=1 HAVE_UNISTD_H=1 HAVE_XI_TOUCH_CLASS=1 WITH_ALSA=ON WITH_CCACHE=ON WITH_CHANNELS=ON WITH_CLIENT=ON WITH_CLIENT_AVAILABLE=1 WITH_CLIENT_CHANNELS=ON WITH_CLIENT_CHANNELS_AVAILABLE=1 WITH_CLIENT_COMMON=ON WITH_CLIENT_INTERFACE=OFF WITH_CUPS=OFF WITH_DEBUG_ALL=OFF WITH_DEBUG_CAPABILITIES=OFF WITH_DEBUG_CERTIFICATE=OFF WITH_DEBUG_CHANNELS=OFF WITH_DEBUG_CLIPRDR=OFF WITH_DEBUG_DVC=OFF WITH_DEBUG_KBD=OFF WITH_DEBUG_LICENSE=OFF WITH_DEBUG_MUTEX=OFF WITH_DEBUG_NEGO=OFF WITH_DEBUG_NLA=OFF WITH_DEBUG_NTLM=OFF WITH_DEBUG_RAIL=OFF WITH_DEBUG_RDP=OFF WITH_DEBUG_RDPDR=OFF WITH_DEBUG_RDPEI=OFF WITH_DEBUG_REDIR=OFF WITH_DEBUG_RFX=OFF WITH_DEBUG_RINGBUFFER=OFF WITH_DEBUG_SCARD=OFF WITH_DEBUG_SND=OFF WITH_DEBUG_SVC=OFF WITH_DEBUG_SYMBOLS=OFF WITH_DEBUG_THREADS=OFF WITH_DEBUG_TIMEZONE=OFF WITH_DEBUG_TRANSPORT=OFF WITH_DEBUG_TSG=OFF WITH_DEBUG_TSMF=OFF WITH_DEBUG_WND=OFF WITH_DEBUG_X11=OFF WITH_DEBUG_X11_CLIPRDR=OFF WITH_DEBUG_X11_LOCAL_MOVESIZE=OFF WITH_DEBUG_XV=OFF WITH_DIRECTFB=OFF WITH_EVENTFD_READ_WRITE=1 WITH_FFMPEG=ON WITH_GFX_H264=ON WITH_GPROF=OFF WITH_GSM=OFF WITH_GSSAPI=OFF WITH_GSTREAMER_0_10=OFF WITH_GSTREAMER_1_0=ON WITH_ICU=OFF WITH_IPP=OFF WITH_JPEG=OFF WITH_LIBRARY_VERSIONING=ON WITH_LIBSYSTEMD=ON WITH_MACAUDIO=OFF WITH_MACAUDIO=OFF WITH_MACAUDIO_AVAILABLE=0 WITH_MANPAGES=ON WITH_MBEDTLS=OFF WITH_OPENH264=OFF WITH_OPENSLES=OFF WITH_OPENSSL=ON WITH_OSS=ON WITH_PCSC=OFF WITH_PROFILER=OFF WITH_PULSE=OFF WITH_SAMPLE=OFF WITH_SANITIZE_ADDRESS=OFF WITH_SANITIZE_ADDRESS_AVAILABLE=1 WITH_SANITIZE_LEAK=OFF WITH_SANITIZE_MEMORY=OFF WITH_SANITIZE_MEMORY_AVAILABLE=1 WITH_SANITIZE_THREAD=OFF WITH_SANITIZE_THREAD_AVAILABLE=1 WITH_SERVER=OFF WITH_SERVER_INTERFACE=ON WITH_SMARTCARD_INSPECT=OFF WITH_SSE2=ON WITH_THIRD_PARTY=OFF WITH_VALGRIND_MEMCHECK=OFF WITH_VALGRIND_MEMCHECK_AVAILABLE=1 WITH_WAYLAND=ON WITH_X11=ON WITH_X264=OFF WITH_XCURSOR=ON WITH_XEXT=ON WITH_XFIXES=ON WITH_XI=ON WITH_XINERAMA=ON WITH_XKBFILE=ON WITH_XRANDR=ON WITH_XRENDER=ON WITH_XSHM=ON WITH_XV=ON WITH_ZLIB=ON
Build type:          Debug
CFLAGS:               -fPIC -Wall -Wno-unused-result -Wno-unused-but-set-variable -Wno-deprecated-declarations -fvisibility=hidden -Wimplicit-function-declaration -Wredundant-decls -g
Compiler:            GNU, 7.3.1
Target architecture: x64

If you feel comfortable, in xf_SetWindowFullscreen there are 2 paths setting fullscreen, maybe your wm is doing something different and the detection fails. (great, another one, X11 is really annoying in regard to that)

I really don't know anything about X. I don't know how much of this problem is due to my window manager (i3). What I see:

If I don't start with /f, then the window is a floating one (no tilling) - but if I toggle full screen (crtl+alt+enter) the window vanishes! The process is still alive :(
When I start with /f it opens tilled (before, it used to just open full screen). In this situation, toggling does nothing.

When I tried debugging and had a breakpoint on the toggle full screen function, I lost all keyboard input everywhere, has anyone else experienced that? I think the xfreedrp process captures all input and cannot release it because I have the debugger attached and the process on hold.
I guess I will have to find a GUI for gdb and see if I can debug purely with the mouse or figure out how to recover keyboard input when debugging. Any tips are really welcomed!

I have the same issue with dwm window manager.

I also see this with the "matchbox" window manager.  It is a strange bird because it forces all top-level windows to be maximized. This did work properly in the past though.

@nikkez , @geiseri would you guys be able to help testing my proposed fix ?

@andreesteve I will test it.  I am not sure I follow the logic, but will this also work for multiple monitors?

@andreesteve I just tested the proposed fix and it works on the dwm window manager.

@nikkez , thank you!
@geiseri I am not sure we will have to test. I would expect your WM to not have support for _NET_WM_FULLSCREEN_MONITORS but still allow a window spamming two monitors (this is assuming it worked for you before). i3 doesn't do either it seems and gnome supports the former. So the code path that I believe would run for your WM is the one I didn't have a way to test (also I did not change anything there, so the prospect is grim :( ). If you can share any screenshots of problems you run into, let me know I can try to have a look.

@andreesteve it tested out fine in matchbox.  It shouldn't impact "normal" window managers with dual screen, right?

@geiseri I've tested this extensively in gnome (fair to assume that if there is a WM that implements the heck out of X extensions, it would be it :) and it works fine on my 3 screen (i.e. I couldn't find any regressions).
When building WITH_XRANDR=ON, there is a bug when using multi monitor fullscreen when selecting a subset of monitors (e.g. full screen on monitor 0 and 1 but not 2). It fails to correctly order the screens. But that is the case with or without my changes (i.e. my change is not fixing that).

I am having similar issues on my notebook (one screen only) running Linux Mint 19 with Cinnamon 3.8.8 with both, the nightly Build and a self generated build from the PR #4600. I do start freerdp with xfreerdp -u user@domain -f host, trying to get out of the full screen mode by pressing CTRL+ALT+ENTER vanishes the freerdp window, but it seems to still grab all inputs as I am not able to do anything in linux, what i am seeing, anymore.

Same problem as @mmattes described earlier. Debug log shows nothing interesting, just drawing messages.


Reloading a morphing frame should trigger reloads on its child morphing frames recursively

Hi folks, here's what seems to me to be the next obvious step after #1192 changed reload() to morph a morphing frame.
Example scenario
Imagine the following page structure: a morphing page with a morphing frame that itself includes another morphing frame, i.e.
Morphing Page > Morphing Frame Child > Morphing Frame Grandchild

Status Quo
Refreshing Morphing Page already triggers morphing reload()s on both the Morphing Frame Child and on Morphing Frame Grandchild. However, manually triggering reload() on Morphing Frame Child does NOT trigger a reload() on Morphing Frame Grandchild, but rather does a full non-morphing render. This seems inconsistent and surprising.
 This makes the reload behavior consistent no matter where the reload is initially triggered.
What do you think?

Just pushed another two commits that expose and fix an adjacent bug that's been in Turbo for a while. Page refreshes didn't check to see if the new version of the page actually has the frame before calling reload() on it. So if a page refresh's new version would have different frames, the original frames would be "stuck" in place. This is fixed by checking to see if the replacement element actually is the same turbo frame before calling reload(). Otherwise, it just gets morphed as normal.


json2hcl: init at 0.0.6

Fixes #36416

@GrahamcOfBorg eval

Success on x86_64-linux (full log)
Partial log (click to expand)
strip is /nix/store/b0zlxla7dmy1iwc3g459rjznx59797xy-binutils-2.28.1/bin/strip
stripping (with command strip and flags -S) in /nix/store/dck3jyklnk68qjnrqpbhxfqrcafvj08r-json2hcl-0.0.6-bin/bin
patching script interpreter paths in /nix/store/dck3jyklnk68qjnrqpbhxfqrcafvj08r-json2hcl-0.0.6-bin
checking for references to /tmp/nix-build-json2hcl-0.0.6.drv-0 in /nix/store/dck3jyklnk68qjnrqpbhxfqrcafvj08r-json2hcl-0.0.6-bin...
cannot find section .dynamic
shrinking RPATHs of ELF executables and libraries in /nix/store/ymnk8l4m8z7wpyn1f7pnamklnia63f0h-json2hcl-0.0.6
strip is /nix/store/b0zlxla7dmy1iwc3g459rjznx59797xy-binutils-2.28.1/bin/strip
patching script interpreter paths in /nix/store/ymnk8l4m8z7wpyn1f7pnamklnia63f0h-json2hcl-0.0.6
checking for references to /tmp/nix-build-json2hcl-0.0.6.drv-0 in /nix/store/ymnk8l4m8z7wpyn1f7pnamklnia63f0h-json2hcl-0.0.6...
/nix/store/dck3jyklnk68qjnrqpbhxfqrcafvj08r-json2hcl-0.0.6-bin

Success on aarch64-linux (full log)
Partial log (click to expand)
strip is /nix/store/lvx1acn1ig1j2km8jds5x3ggh3f2wa8v-binutils-2.28.1/bin/strip
stripping (with command strip and flags -S) in /nix/store/km43g4xgxr19m0987admdws50mzb46p4-json2hcl-0.0.6-bin/bin
patching script interpreter paths in /nix/store/km43g4xgxr19m0987admdws50mzb46p4-json2hcl-0.0.6-bin
checking for references to /build in /nix/store/km43g4xgxr19m0987admdws50mzb46p4-json2hcl-0.0.6-bin...
cannot find section .dynamic
shrinking RPATHs of ELF executables and libraries in /nix/store/j7s84y5mrrfivjzp5prd91niaha3lqri-json2hcl-0.0.6
strip is /nix/store/lvx1acn1ig1j2km8jds5x3ggh3f2wa8v-binutils-2.28.1/bin/strip
patching script interpreter paths in /nix/store/j7s84y5mrrfivjzp5prd91niaha3lqri-json2hcl-0.0.6
checking for references to /build in /nix/store/j7s84y5mrrfivjzp5prd91niaha3lqri-json2hcl-0.0.6...
/nix/store/km43g4xgxr19m0987admdws50mzb46p4-json2hcl-0.0.6-bin

@GrahamcOfBorg build
/cc @ryantm
I think it's okay to merge

Cool, I don't have merge permissions. @joachifm seems to be on a merging kick currently...


Bug On External Map IOS

Hi there,
been using external since a while, but since xamarin forms 2, it did not work well on IOS.
I Got error like
...
Foundation.NSErrorException: Exception of type 'Foundation.NSErrorException' was thrown.
2015-12-02 09:06:29.717 SnefBusinessiOS[2722:48677] Warning: Unhandled exception: Foundation.NSErrorException: Exception of type 'Foundation.NSErrorException' was thrown.
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in /Users/builder/data/lanes/2356/3c0ec355/source/maccore/_build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/src/mono/external/referencesource/mscorlib/system/runtime/exceptionservices/exceptionservicescommon.cs:143
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x00047] in /Users/builder/data/lanes/2356/3c0ec355/source/maccore/_build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/src/mono/external/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:201
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x0002e] in /Users/builder/data/lanes/2356/3c0ec355/source/maccore/_build/Library/Frameworks/Xa
marin.iOS.framework/Versions/git/src/mono/external/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:170
at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x0000b] in /Users/builder/data/lanes/2356/3c0ec355/source/maccore/_build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/src/mono/external/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:142
at System.Runtime.CompilerServices.TaskAwaiter1[TResult].GetResult () [0x00000] in /Users/builder/data/lanes/2356/3c0ec355/source/maccore/_build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/src/mono/external/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:372    at Plugin.ExternalMaps.ExternalMapsImplementation+<NavigateTo>d__1.MoveNext () [0x00156] in <filename unknown>:0  --- End of stack trace from previous location where exception was thrown ---   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in /Use rs/builder/data/lanes/2356/3c0ec355/source/maccore/_build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/src/mono/external/referencesource/mscorlib/system/runtime/exceptionservices/exceptionservicescommon.cs:143    at System.Runtime.CompilerServices.AsyncMethodBuilderCore.<ThrowAsync>m__0 (System.Object state) [0x00000] in /Users/builder/data/lanes/2356/3c0ec355/source/maccore/_build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/src/mono/external/referencesource/mscorlib/system/runtime/compilerservices/AsyncMethodBuilder.cs:994    at UIKit.UIKitSynchronizationContext+<Post>c__AnonStorey0.<>m__0 () [0x00000] in /Users/builder/data/lanes/2356/3c0ec355/source/maccore/src/UIKit/UIKitSynchronizationContext.cs:24    at Foundation.NSAsyncActionDispatcher.Apply () [0x00000] in /Users/builder/data/lanes/2356/3c0ec355/source/maccore/src/Foundation/NSAction.cs:163    at (wrapper managed-to-native) UIKit.UIApplication:UIApplicationMain (int,string[],intptr,intptr)   at UIKit.UIApplication.Main (System.Stri ng[] args, IntPtr principal, IntPtr delegate) [0x00005] in /Users/builder/data/lanes/2356/3c0ec355/source/maccore/src/UIKit/UIApplication.cs:77    at UIKit.UIApplication.Main (System.String[] args, System.String principalClassName, System.String delegateClassName) [0x00038] in /Users/builder/data/lanes/2356/3c0ec355/source/maccore/src/UIKit/UIApplication.cs:61    at SnefBusiness.iOS.Application.Main (System.String[] args) [0x00001] in D:\WORK\SNEF\Conseil\POC\Snef-business\trunk\SnefBusiness.iOS\Main.cs:12  xamarin_start_wwan not implemented 2015-12-02 09:06:29.724 SnefBusinessiOS[2722:48707] Warning: Could not post to webapi: Network state is disabled. Can not ping webapi 2015-12-02 09:06:29.739 SnefBusinessiOS[2722:48677] Unhandled managed exception: Exception of type 'Foundation.NSErrorException' was thrown. (Foundation.NSErrorException)   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in /Users/builder/data/lanes/2356/3c0ec355/source/maccore/_build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/src/mono/external/referencesource/mscorlib/system/runtime/exceptionservices/exceptionservicescommon.cs:143    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x00047] in /Users/builder/data/lanes/2356/3c0ec355/source/maccore/_build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/src/mono/external/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:201    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x0002e] in /Users/builder/data/lanes/2356/3c0ec355/source/maccore/_build/Library/Frameworks/Xa marin.iOS.framework/Versions/git/src/mono/external/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:170    at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x0000b] in /Users/builder/data/lanes/2356/3c0ec355/source/maccore/_build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/src/mono/external/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:142    at System.Runtime.CompilerServices.TaskAwaiter1[TResult].GetResult () [0x00000] in /Users/builder/data/lanes/2356/3c0ec355/source/maccore/_build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/src/mono/external/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:372
at Plugin.ExternalMaps.ExternalMapsImplementation+d__1.MoveNext () [0x00156] in :0
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in /Use
rs/builder/data/lanes/2356/3c0ec355/source/maccore/_build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/src/mono/external/referencesource/mscorlib/system/runtime/exceptionservices/exceptionservicescommon.cs:143
at System.Runtime.CompilerServices.AsyncMethodBuilderCore.m__0 (System.Object state) [0x00000] in /Users/builder/data/lanes/2356/3c0ec355/source/maccore/_build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/src/mono/external/referencesource/mscorlib/system/runtime/compilerservices/AsyncMethodBuilder.cs:994
at UIKit.UIKitSynchronizationContext+c__AnonStorey0.<>m__0 () [0x00000] in /Users/builder/data/lanes/2356/3c0ec355/source/maccore/src/UIKit/UIKitSynchronizationContext.cs:24
at Foundation.NSAsyncActionDispatcher.Apply () [0x00000] in /Users/builder/data/lanes/2356/3c0ec355/source/maccore/src/Foundation/NSAction.cs:163
at (wrapper managed-to-native) UIKit.UIApplication:UIApplicationMain (int,string[],intptr,intptr)
at UIKit.UIApplication.Main (System.Stri
ng[] args, IntPtr principal, IntPtr delegate) [0x00005] in /Users/builder/data/lanes/2356/3c0ec355/source/maccore/src/UIKit/UIApplication.cs:77
at UIKit.UIApplication.Main (System.String[] args, System.String principalClassName, System.String delegateClassName) [0x00038] in /Users/builder/data/lanes/2356/3c0ec355/source/maccore/src/UIKit/UIApplication.cs:61
at SnefBusiness.iOS.Application.Main (System.String[] args) [0x00001] in D:\WORK\SNEF\Conseil\POC\Snef-business\trunk\SnefBusiness.iOS\Main.cs:12
...
Thanks in advance for any informations

Do you have the code from where you are calling this?
What version of iOS?

Having absolutely no issues in my test app. Ensure that you upgrade all your nugets and they are in all of your projects.

I'm getting this exception as well, when trying to navigate to one address it works without a problem, calling the method on another one throws a Foundation.NSErrorException, I've put the call in a trycatch block, but the app still crashes.

Can you post the address that fails so I can test it?
On Jan 16, 2016 2:46 AM, "Devin van Nieuwenhoven"<EMAIL_ADDRESS>wrote:

I'm getting this exception as well, when trying to navigate to one address
it works without a problem, calling the method on another one throws a
Foundation.NSErrorException, I've put the call in a trycatch block, but the
app still crashes.
—
Reply to this email directly or view it on GitHub
https://github.com/jamesmontemagno/Xamarin.Plugins/issues/147#issuecomment-172182351
.

Looks like it's not a real address, but shouldn't crash anyways so here it is:
NavigateTo(
"Granery Quality Products Ltd.",
"Kornglakelane 20",
"Massachutas",
null,
"KR 12385",
null,
"US")


Add War and Peas

https://warandpeas.com/ (first picture link to https://i0.wp.com/warandpeas.com/wp-content/uploads/ on that page, e.g. https://i0.wp.com/warandpeas.com/wp-content/uploads/2022/07/war-and-peas-underneath-the-hat-1.jpg?ssl=1)
or at https://www.webtoons.com/en/challenge/war-and-peas/list?title_no=63305 (first link to https://www.webtoons.com/en/challenge/war-and-peas/majestic/viewer?title_no=63305&episode_no= on that page, e.g. https://www.webtoons.com/en/challenge/war-and-peas/majestic/viewer?title_no=63305&episode_no=446).
Background information: https://en.wikipedia.org/wiki/War_and_Peas
Archive of comic strips (most recent ones are missing, in contrast to aforementioned front-page): https://warandpeas.com/category/war-and-peas/
ToDo: Analyse page source, design and implement an extraction rule in JavaScript and pose a PR.

Done via PR #132.


Ports / JS Interop

There is currently no canonical way to interoperate with JavaScript / the underlying platform, that does not break the event loop.
A workaround has occurred to me:
You could create a subsystem that accepts and emits events on the Indigo event loop but is actually calling down to the platform.
It would be easy to implement this for a specific library (say you had a specific analytics js lib you wanted to use or something), and the pattern isn't terrible if we could find a way to generalise and formalise it.

Closing - I think I've decided that subsystems are the way to go. No plans to add ports when we have Scala.js and encapsulation via SubSystems.