Loading indicator in Teams personal bot

Similar to Issue #4249, we are seeing an issue in Teams with personal bots where the loading indicator persists and doesn't disappear.
We've tested on four bots on two tenants and the indicator appears on all of the bots when used via the Teams desktop client. This issue doesn't present itself when used via the web version of Teams.

@StevieBleeds - Could you please update the teams desktop client version and check again? If you are still facing this issue please share your Teams desktop client version.

Sure, it's <IP_ADDRESS>376 (64-bit) and is the latest installed version.

@StevieBleeds - Could you please share the repro steps to try at our end?

The issue just started happening to our bots. We haven't changed anything. I did notice that when using the pop out app option in the client, the issue doesn't persist, it just appears in the main window in the teams desktop client.
We're using a mix of 1.7, 1.9 and 1.11 for our bot manifests and it's happening on all of them.

@StevieBleeds - We will try at our end to repro this issue and update you accordingly.

Thanks Stevie for starting this, I have the same exact issue and it just started yesterday. Naturally we just rolled out a custom chatbot to the company through Teams yesterday :(  The issue was not present during the dev and pilot testing of this bot.
I just updated to the latest version but the issue remains and is affecting everyone in our company that I've spoken to. Same as Stevie, the issue only occurs when clicking the chatbot pinned on the left side of Teams. The issue is not present when using the chatbot from the 'Chat' section of Teams, or when using a pop-out, or when using the chatbot in the browser.
I have opened a MS support ticket for this as well:
Case #: 28239336

The teams client is on the latest version <IP_ADDRESS>376 (64-bit) and the issue persists. It's a conversational bot built on the Bot Framework.

@StevieBleeds - The latest Microsoft Teams Version is <IP_ADDRESS>066 (64-bit).Could you please try to update it.

@Nivedipa-MSFT - I've update the client and the latest one it's installed is <IP_ADDRESS>469 (64-bit) and the issue persists.

Similar issue for my bot app. Perhaps it's not Teams desktop client issue. My bot app released a month ago and always kept normal. From Nov 1st, loading indicator persists in chat bot if click app icon pinned on the left side of Teams, and same issue in 'Who' app.
My Microsoft Teams Version <IP_ADDRESS>72 (64-bit). It was last updated on 2021/8/10.
I have opened a MS support ticket for this as well: #28254292

same problem... since a few days in the personal bot.
reinstall and all the other suggestions in the thread do not help. hope, that it will be fixed soon.

This appears to be resolved in the tenants I've been using.

The issue seems removed for me and others I have checked with as well. I had them update to the latest Teams client if the issue persisted and so far that seems good. Hoping this time the issue is gone for good  :)

We are closing this issue for now, Please feel free to reopen it, if required.


FEAT: Disable focus now reverts splits back to default state. REFACTO…

FEAT: Disable focus now reverts splits back to default state. REFACTOR: Moved require to autoload. FIX: Resizes splits even when have single buffer

We can now run :DisableFocus at any time.
Splits are resized even when only single buffer
Splits reverted back to original size after :DisableFocus ran and then normalised.
Last remaining 'bug' is the issue with Telescope, not liking vim.o.winheight being set


Allow DataFrame.new/1 to receive the dtypes option

This PR resolves https://github.com/elixir-nx/explorer/issues/458.

@Jhonatannunessilva thank you! :purple_heart:


docker ps hang on 1.13.1

Description

docker ps hangs
Steps to reproduce the issue:
Use docker with Kubernetes
run docker ps
Describe the results you received:
Status of containers
Describe the results you expected:
Hanging command
Additional information you deem important (e.g. issue happens only occasionally):
Output of docker version:
Client:
 Version:      1.13.1
 API version:  1.26
 Go version:   go1.7.3
 Git commit:   092cba3
 Built:        Fri Mar 17 08:05:24 2017
 OS/Arch:      linux/amd64

Server:
 Version:      1.13.1
 API version:  1.26 (minimum version 1.12)
 Go version:   go1.7.3
 Git commit:   092cba3
 Built:        Fri Mar 17 08:05:24 2017
 OS/Arch:      linux/amd64
 Experimental: false

Output of docker info:
Containers: 102
 Running: 65
 Paused: 0
 Stopped: 37
Images: 28
Server Version: 1.13.1
Storage Driver: overlay2
 Backing Filesystem: extfs
 Supports d_type: true
 Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: bridge host macvlan null overlay
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: aa8187dbd3b7ad67d8e5e3a15115d3eef43a7ed1
runc version: 9df8b306d01f59d3a8029be411de015b7304dd8f
init version: N/A (expected: 949e6facb77383876aeff8a6944dde66b3089574)
Security Options:
 seccomp
  Profile: default
 selinux
Kernel Version: 4.10.1-coreos
Operating System: Container Linux by CoreOS 1353.1.0 (Ladybug)
OSType: linux
Architecture: x86_64
CPUs: 4
Total Memory: 15.68 GiB
Name: kubernetes-cit-kubernetes-cr0-0-1490197314
ID: AFAL:UR6W:I4W6:NCSW:MZ5A:NUDY:UIF6:ZEOW:EOGG:LPNV:64VE:7M2G
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Http Proxy: http://proxy.ocado.com:8080
Https Proxy: http://proxy.ocado.com:8080
No Proxy: .ocado.com,.lastmile.com
Registry: https://index.docker.io/v1/
Experimental: false
Insecure Registries:
 <IP_ADDRESS>/8
Live Restore Enabled: false

Additional environment details (AWS, VirtualBox, physical, etc.):
CoreOS on Openstack
containerd.txt
goroutine-stacks-2017-03-22T162146Z.txt
daemon-data-2017-03-22T162146Z.txt

The CoreOS packages are not maintained here (I also notice that it looks like containerd was built with a different Go version (1.6 instead of 1.7), not sure if that affects this).
Have you also reported this with the CoreOS maintainers?

No, I can report it there as well if you like?

I think that's best; their version has modifications from the "vanilla" version of docker, and it would be hard for us to tell what differences that are, and to reproduce. I'm not excluding the possibility that there's an issue that needs to be fixed "upstream" here, but it's easier for them to do the initial triage, because they're familiar with the changes, and configuration of docker on CoreOS.
I'll go ahead and close this here for now, but keep us posted, and we can re-open if more information becomes available 👍

@thaJeztah As a sorta FYI, docker 1.13.1 on Container Linux currently doesn't carry any additional patches. We used to have a few, but at this point our 1.13.1 branch is identical to upstream's.
We do have small selinux patch on runc (which fedora also carries), but otherwise containerd/runc should both match upstream's too.

Thanks for the heads up @euank; am I right that containerd is compiled with Go 1.6?
Let me know if more is known on this issue, or if you need help :+1:

@thaJeztah yeah, you're right about that go 1.6 bit. If you know of a reason that might cause this issue, a pointer there would be appreciated. We'll be updating it to 1.7 soon regardless though.
Unless it's related to go 1.6 somehow, I would expect this to not be Container Linux specific. Help digging into these issues is always appreciated!

There are locking issues, which can sometimes lead to issues (being worked on, but non trivial); @mlaventure may be able to provide more info on the containerd part, but he's on PTO this week

@euank if you see a hang/lock of the daemon, the best solution is to send a SIGUSR1 to both dockerd and docker-containerd and to open an issue with the traces, the logs and other info as requested in the issue template.

@mlaventure this is the issue. It has the logs and traces and template and so on in the first post.
@thaJeztah

we can re-open if more information becomes available

What additional information would be helpful to re-open and have Docker's help in figuring out the root cause?

I believe we've got an idea of exactly what's causing this.
On the affected nodes we have some containers mounting network volumes. The IOps limits on these volumes are rather low, and they've accumulated a large amounts of files.
Our hypothesis is that the docker daemon is stuck in selinux relabelling.

Inspection of the code for the given version, and master branch, of docker indicates this code path is holding a container lock: https://github.com/docker/docker/blob/daaf9ddfa9a53fb82511accb8ad0fed381670a54/daemon/start.go#L100
This then blocks docker ps etc.
So, it's not hung forever, but it's taking a significant amount of time (10s of minutes)
During this time, the docker daemon doesn't respond to any queries that need to iterate over all containers. This means for example, that Kubernetes isn't able to query the status of containers, and ends up reporting as unhealthy.
See also this bug (which helped point us in this direction): https://github.com/coreos/prometheus-operator/issues/239
@thaJeztah Please can you reopen this bug, as all the code paths listed exist upstream. My belief is that this would affect all operating systems, not just CoreOS.

Thank you for digging into this!
Running dockerd with selinux disabled might work around this.
It also sounds like moving that selinux relabeling out of the docker daemon containerList lock (e.g. to containerd) could end up with docker ps continuing to be responsive.
Does that sound like the proper fix for this issue?

We'll have a look into disabling selinux, thanks for the suggestion.
That sounds like a reasonable fix. (Though I guess you'd still want to make sure that the containerd list operation still functions while such a relabel is in progress? Assuming it has a list operation, I don't know much about containerd)

@euank Is there another issue open for this somewhere?
If not can you reopen this one?

@mikebryant are you sure about that the volume is mounted with :Z (selinux relabeling)? I have experienced a similar/the same issue where docker hangs (due to a lot of files from Prometheus I think), but now I just checked with docker inspect and the Prometheus volume isn't mounted with :Z.
Spec:
Container Linux by CoreOS stable (1298.6.0)
Docker version 1.12.6, build d5236f0
Server Version: version.Info{Major:"1", Minor:"5", GitVersion:"v1.5.4+coreos.0", GitCommit:"97c11b097b1a2b194f1eddca8ce5468fcc83331c", GitTreeState:"clean", BuildDate:"2017-03-08T23:54:21Z", GoVersion:"go1.7.4", Compiler:"gc", Platform:"linux/amd64"}

Are you also using k8s 1.5.4?
I also tried to reproduce this on a single CoreOS node (which was doing almost nothing else):
$ time docker run --rm -t -i -v $PWD:/foo busybox sh -c exit
real	0m0.566s
user	0m0.016s
sys	0m0.005s
$ time docker run --rm -t -i -v $PWD:/foo:Z busybox sh -c exit
real	0m0.480s
user	0m0.012s
sys	0m0.008s
$ dd if=/dev/urandom of=masterfile bs=1M count=10
$ split -b 5 -a 4 masterfile
...
$ ls -1 -f  | wc -l
742831
$ time docker run --rm -t -i -v $PWD:/foo busybox sh -c exit
real	0m0.584s
user	0m0.015s
sys	0m0.012s
$ time docker run --rm -t -i -v $PWD:/foo:Z busybox sh -c exit
real	0m45.830s
user	0m0.023s
sys	0m0.020s

I couldn't get docker to hang forever with 742k files, how many files does your volume (@mikebryant) contain? But I think that k8s maybe did detach the volume while relabeling was ongoing, I'm not sure if that could cause a lockup, I would try a SIGUSR1 next time to get some more info.
I also stumbled on: https://github.com/kubernetes/kubernetes/issues/42257 which seems to be the same issue (?).

Yup, definitely mounted with Z:
            {
                "Source": "/var/lib/kubelet/pods/843908ae-1f59-11e7-bb5b-fa163eb19aeb/volumes/kubernetes.io~cinder/pvc-62ffd099-1b78-11e7-b59a-fa163eb19aeb/prometheus-db",
                "Destination": "/var/prometheus/data",
                "Mode": "Z",
                "RW": true,
                "Propagation": "rprivate"
            },

k8s 1.5.2
The issue for us was the number of files vs the io limit on the volume.
Our prometheus volume has 3.2M files. The io limit was by mistake set very low (100iops)
Clearly if it needs to relabel everything that's not going to work, but it shouldn't hang the daemon while doing so. Only that container should be affected.

ping @thaJeztah @mlaventure
Should I file a new issue for fixing selinux relabelling, or can this issue be reopened?

@mikebryant if you wouldn't mind opening a new one aggregating all the information you provided, it would make it easier to follow.


feat(authentication): Add Authenticator config options for session store and session cookie name.

Description
As documented in the InMemorySessions source (emphasis mine):

InMemorySessions implements the [Sessions] interface by storing the sessions
in-memory. This is obviously not suitable for production and only meant for testing purposes.

the default implementation for the session sotre is not suitable for production, thus an alternative session store implementation must be used by the end user. Currently there isn't any option to bring your own session store, so I added this option. I also added an option to change the default cookie name for completeness sake.
I don't know how you run your testing suite so I haven't added any tests yet.
Definition of Ready

[x] I am happy with the code
[x] Short description of the feature/issue is added in the pr description
[ ] PR is linked to the corresponding user story
[ ] Acceptance criteria are met
[ ] All open todos and follow ups are defined in a new ticket and justified
[ ] Deviations from the acceptance criteria and design are agreed with the PO and documented.
[x] No debug or dead code
[x] My code has no repetitions
[ ] Critical parts are tested automatically
[ ] Where possible E2E tests are implemented
[ ] Documentation/examples are up-to-date
[ ] All non-functional requirements are met
[ ] Functionality of the acceptance criteria is checked manually on the dev system.

@helpisdev thanks for this addition. This definitely makes sense.
If you like to get a gift from us, please write an email to<EMAIL_ADDRESS>


Missing vec3 * vec3

Hi,
The library is missing an operation to multiply 2 vectors component by component. It could be named vec3.mul.

It's been added in the latest commit. Thanks! (Not sure why I didn't have this originally)


Delete storage group in session

Complete a function using session to delete storage groups in iotdb. Delete all the data of this storage group after calling this function.

Rename the title to "[IOTDB-XXX]..." please.


Ask for a joke in the issue template?

Over drinks last night @jrbourbeau had the excellent idea (or at least it seemed so over drinks :) ) of asking people to include a joke or pun as part of the issue template.  The motivation was that this would be fun, and would lighten the mood.

cc'ing pun expert and old Dask dev, @cpcloud


godeps: Remove go install called on gomega

Gomega is just a matcher library and it's already in the
go.mod of our project. It need not be installed like the
ginkgo binary. Calling go install on gomega gives a
warning of matched no package.
Signedoff-by: Malay Kumar Parida<EMAIL_ADDRESS>

/ok-to-test


Jj command box

Deleted obsolete image files.

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

msteams-platform/assets/images/Command box-rest state.png
:white_check_mark:Succeeded

msteams-platform/assets/images/Command box-zoomed app state.png
:white_check_mark:Succeeded

msteams-platform/assets/images/Command box-zoomed suggestions.png
:white_check_mark:Succeeded

msteams-platform/assets/images/Command box-zoomed well.png
:white_check_mark:Succeeded

msteams-platform/resources/design/framework/command-box
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


adding new network device does not show up inside guest/container

Hi,
I am using ver 0.13 of lxd and have been trying to add a nic device to a container to no avail. This is what I have done:
$ lxc config device add p1 p1-eth1 nic nictype=bridged parent=lxcbr0
$ lxc restart p1
Then, when i check the outcome:
$ lxc exec p1 ls /sys/class/net
eth0  lo
I have tried to examine the situation on the host by inspecting the net namespaces with $ ip netns list but that commands returns an empty list. I am out of ideas and was wondering if someone would how i could troubleshoot this situation?
Thanks in advance

Try stop and start instead of restart.
Restart only sends a signal to the container, asking its init system to restart the container, this doesn't go through the configuration codepath.
We've got a couple of issues related to live updating of container configuration which once implemented will make such changes apply to the container immediately.

Thanks Stephane. This stopping-starting did the trick.


Serializing logs

Related to #94
A lot of files have been generated from OTel proto files.

Are these files mostly duplicated from the otel sdk? Do they need to be brought into our project because they are private in the otel sdk?

I don't think duplicating these files is a great long-term solution.
As on-disk buffering seems to be a common use case, can we contribute that feature to the upstream OTel SDK?

I'm up for contributing, the feature you mean is the whole disk-buffering? or this serialization one? Maybe the serialization itself might be a good feature to provide, though I'm not sure if the whole disk buffering one would be too feasible to get into the main SDK, since there might be some specific needs depending on whether it is done on Android or not. I know there are some differences in regards to file handling in Android, APIs and permissions, that are exclusive to it. I haven't taken a deep look though, maybe there's no issue, or maybe a lot of disk-managing processes can be abstracted so that each platform can provide its implementation...

I just found this repo, which wasn't listed in the main otel-java releases, which apparently just automatically fetches the protos, creates the Java files and releases them to maven central. I'm going to check if we can reuse these, though it doesn't seem like these are the exact ones used in the main OTel SDK, because the package name is different from the ones in the generated lib (they might be shadowing those) so in the end at runtime there would still be duplication, though at least it won't be in our project's source

Here are some interesting notes on how they decided to do serialization in the OTel Java SDK: https://github.com/open-telemetry/opentelemetry-specification/discussions/1996 - Apparently they aren't relying in the generated proto source to do it, It seems like the lib size was an important reason for that, especially for Android cases, which makes sense if using the full protobuf library, instead of the lite version. I'm planning to join this week's Java SIG to see if I can gather more information on this.

That would be better, although I really think we should try to contribute disk buffering upstream. We can either find a way that works for both Android and regular Java, or find a common abstraction and have two different implementations or even something more generic that lets you plug in different persistence mechanisms, such as an embedded H2 database. But if there's an easy way to just buffer via local files that work for both Android and Java, that would be the preferred option IMO.

I agree it would be very useful to have that in the main OTel SDK. Let me check in the Java SIG what's their stance on having it as an extra exporter or something the like.

This feature is intended to be contributed to OTel, so we're closing this PR.


Can the search window size be changed?

Based on this sentence in the paper, do I understand correctly that the size of the search window is essentially "baked in" to the network architecture? I.e., if I wanted to increase the size of the search window, my only option is to retrain the tracker using an updated network architecture?

As long as the target object does not become occluded and is not moving too
quickly, the target will be located within this region. For fast-moving objects, the
size of the search region could be increased, at a cost of increasing the complexity
of the network.

Thanks.

At the moment, yes!
On Wed, Dec 20, 2017 at 8:40 PM, ekcheng<EMAIL_ADDRESS>wrote:

Based on this sentence in the paper, do I understand correctly that the
size of the search window is essentially "baked in" to the network
architecture? I.e., if I wanted to increase the size of the search window,
my only option is to retrain the tracker using an updated network
architecture?
As long as the target object does not become occluded and is not moving too
quickly, the target will be located within this region. For fast-moving
objects, the
size of the search region could be increased, at a cost of increasing the
complexity
of the network.
Thanks.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/davheld/GOTURN/issues/65, or mute the thread
https://github.com/notifications/unsubscribe-auth/AEHoHHjNqQngSnhAG0ryKj-hTqX1a2eoks5tCbb6gaJpZM4RJPhx
.


spec: possibly inaccurate description of untyped case expressions

"Expression switches" section of Switch statements has the following note about untyped case expressions:

If a case expression is untyped, it is first converted to the type of the switch expression.

I have the following code that is rejected by the compiler:
package main

func main() {
	var s string = "123"
	switch s {
	case 123: // error: invalid case 123 in switch on s (mismatched types int and string)
	}
}

123 is untyped constant and it is possible to convert it to string type. This possibility is mentioned as a special case in Conversions:

As a special case, an integer constant x can be converted to a string type using the same rule as for non-constant x.

So, this makes me wonder if spec is inaccurate here and convertibility requirements for untyped case expressions should not include special cases? Sorry if I am missing something obvious.

Nice example.

Needs fix but probably in the spec, not in the compilers. We don't want this conversion to happen automatically.

This should definitively be fixed in the spec; ideally in the Conversions section. There are other places in the spec where it talks about (implicit) conversions, e.g., in assignments, and we don't want an implicit string conversion in those cases either. Will prepare a CL.


Cannot receive messages when using OAuthConfig

Maybe I'm misunderstanding how OAuthConfig should be used but the following snippet does not work for me. I receive no messages.
import SlackKit

let bot = SlackKit()
let oauthConfig = OAuthConfig(clientID: "CLIENT_ID", clientSecret: "CLIENT_SECRET")
bot.addServer(oauth: oauthConfig)
bot.notificationForEvent(.message) { (event, _) in
    print("Message received")
}
RunLoop.main.run()

When I change it to using bot.addRTMBotWithAPIToken I start receiving messages. What is the proper way of authentication?

You can use whichever best fits your needs, there is no one proper way to authenticate.
If you're using the OAuth setup, you'll need to authorize the Slack application you've created through the OAuth flow before you receive events. This tutorial details what that setup looks like (in node, but the idea is the same).


LinkGenerator is prepending contextPath 2x

We recently upgraded the asset pipeline plugin from version 2.5.2 to 2.6.2 and discovered that the resolution of assets with the grailsLinkGenerator (e.g. used through the resource tag) doesn't work as expected any more.
In version 2.5.2 of the plugin, the resulting link is generated correctly: /myApp/assets/customer/mail-header.jpg
In version 2.6.2, the context path is duplicated: /myApp/myApp/assets/customer/mail-header.jpg
I have tested this behavior with the following example code:
class TestController {

	def grailsLinkGenerator

	def test() {
		render grailsLinkGenerator.resource(src: 'customer/mail-header.jpg')
	}
}

In Config.groovy the serverURL is configured as follows:
grails.serverURL = "http://localhost:8080/myApp"

Edit: we are using grails version 2.5.1

We are seeing the same behavior. I created a simple test app that renders the grails_logo.png on the index.gsp.
https://github.com/longwa/grails3-asset-url
If you hit:
http://localhost:8080/myapplication/
You will see the issue. The assetBaseUrl is including the contextPath already but then the absolute link logic is also adding it again.

I can't reproduce this in dev mode using AP 2.6.10 on Grails 2.5.3.
The following call (in BootStrap.groovy) returned a URL that only contained the context path once:
grailsLinkGenerator.resource(src: 'social/addthis.png')

Returned:
http://localhost:8080/myApp/assets/social/addthis.png

I tried it both with just the following in Config.groovy:
grails.serverURL = 'http://localhost:8080/myApp'

And with both the following in Config.groovy:
grails.app.context = 'myApp'
grails.serverURL = 'http://localhost:8080/myApp'

I tried again with Grails 2.5.3 and AP 2.6.10 and I can reproduce the bug in all combinations of dev/prod and run-app/run-war.

I'll try this sometime later in the week.
Once I have free time, it shouldn't be too hard to debug & fix, given your reproduction instructions.

Fixed in PR #316

no chance for a 2.6.11? or is 2.7.0 around the corner anyway?
facing this after asset-pipeline update to 2.6.10 with plugins using the resource tag (e.g. quartz-monitor)

I am seeing this on an application while I am porting a grails application from 2.3.11 -> 3.1.1
I set the context path in application.yml:
server:
contextPath: "/myapp"
And using the resource(...)  all my images uri s look like:
"/myApp/myApp/images/myimage.gif"
If I remove the contextPath from the application the images are referenced correctly but removing the context Path at this point isn't feasible.

fixed in 2.7.0 or 3.1.0 for grails3

I still have this issue in following version:
| Grails Version: 3.1.0
| Groovy Version: 2.4.5
| JVM Version: 1.8.0_65


fix(scroller): name refactor, events behaviour and hardcoded attribute

scroller improvements
:hammer_and_wrench: Type Of Change

[x] Fix
[x] Refactoring

:book: Description

Name refactoring to achieve our naming conventions.
Events (scroll-start, scroll-end) now are triggered in a different way but same behaviour
Test update
Fixed the key-field hardcoded attribute

This improvements comes from DT-1141
Last ticket update:
When the user add information to the top of the list we just scroll the user to the previous position. For example, the user is in the position 0 (there is where we update the list) after we update the list with 10 items. we scroll 0 + 10 elements and it will be on the same place. It is imperceptible for the user the scroll.
I also created 3 functions to improve the scroller functionality.

scrollToBottom() (only accessible by the dynamic component) This function will scroll to the bottom of the scroller, this is necessary because the dynamic component has variable size.

updateItems() This function is necessary to call when the user do some update to the list (add elements from the top with unshift or update some item).

updateItemsFromBottom() This function is necessary to call when the user push some element to the array list.

Before
Merge branch 'staging-vue3' into dt-1141-scroller-improvements 3a16ff8
the a11y_tests works, but after this it fails

Yep completed successfully on re-run.

Adding @AlexLamDialpad, Can you check out the preview and see if it does what you need it to do now?


Math interpreter should be in a seperate module

Math interpreter should be in a separate module, which cleans the repository and should reduce redundant code.

Will revert this soon as, while more hierarchically pleasing, syntax highlighting has not liked it and it has been a horrible pain to work with.


Fix ajax reload on tables

Iommi ID is available in non-debug too?

Iommi ID is available in non-debug too?

Its set right next to the data-endpoint attribute (table.py, line 1459)


Better Readability

Hi. I really like your extension for converting numbers the most, because it detects the base properly in my asm code. Kudos! Other plugins (I found 3) look better but do not work better.
Could you invest some time in a nicer styling for the numbers?
Quickwins in my opinion:

use a nonproportional font
have label and value in different colors
group nibbles

Bonus points:

index every fourth bit in binary
have the stuff configureable
option to have it in a larger font

Example without nibble-grouping:

The Hex-Hover-Converter uses a markdown  string for formatting. This does not allow many options.
Markdown and plain text are the 2 formats that vscode understands for hovering.
I would love to have more options on formatting.
If you have any suggestions how to do it technically please let me know.
Or if you have a link for one or more extensions that have better formatting please put them here and I have a look.

Thanks for the reply. Here is a link to a styled hover.
https://github.com/mateuszchudyk/vscode-hexinspector

Thanks for the link. Seems hex inspector is using the 'language' feature and provides some syntax for it.
I will not go that way as I need to use the table functionality from the markdown. I.e. if the number cannot be uniquely identified as hex I will show 2 or 3 table entries next to each other. That would not easily be possible.
But if you have other links/extensions I can have a look there too. Maybe some other implementation I could use ...

This one does not work properly for my use case, but it has some formatting.
https://marketplace.visualstudio.com/items?itemName=bedrankara.hoverconverter

From the pictures in the readme I can‘t see much formatting.
There is some coloring, but from the code I can‘t see where it is coming from.
Will play a little bit with it.

The color is coming again from a 'language' and the used format is not markdown.
I.e. not usable in my case.
I also experimented with using ` for plaintext or code to get a non-proportional text to use. but that results in slightly different background colors, see here:

Black on dark gray.
Doing some more research: vscode is disallowing formatting inside the hover text for markdown on purpose. They want to keep the IntelliSense experience similar.
So, I guess there is not much I can do about it.

I checked this once more.
The interface that the hex inspector is using (MarkedString with a given language) is deprecated.
But there is now the possibility to use
                    const mdText = new vscode.MarkdownString();
                    mdText.supportHtml = true;
                    mdText.isTrusted = true;

with '<span style='color:#fff>'
But the problem here is that the colors are hardcoded, it is only possible to use hex numbers.
I.e. they will not change when toggling between dark and light mode.
Furthermore it is still not possible to get the hex color string from a ThemeColor.
Conclusion:
As of vscode 1.74 there is no (future proof) way to colorize the hovers.


Missing some translation in French

I use callComposite in a non react environment. In order to translate the component in French, I followed the documentation Build your own composite js bundle files and added the locale property.
The code looks like the following:
import { AzureCommunicationTokenCredential } from '@azure/communication-common';
import { CallComposite, COMPOSITE_LOCALE_FR_FR, createAzureCommunicationCallAdapter } from '@azure/communication-react';
import React from 'react';
import ReactDOM from 'react-dom';

export const loadCallComposite = async function (args, htmlElement, props) {
  const { userId, token, groupId, displayName } = args;
  const adapter = await createAzureCommunicationCallAdapter({
    userId,
    displayName: displayName ?? 'anonymous',
    credential: new AzureCommunicationTokenCredential(token),
    locator: { groupId }
  });

  props = {
    ...props,
    locale: COMPOSITE_LOCALE_FR_FR
  };

  ReactDOM.render(React.createElement(CallComposite, { ...props, adapter }, null), htmlElement);
  return adapter;
};

I was able to create the bundle successfully.
However, I noticed that some translations were missing. Is there a way to add those missing translations? See the pictures below.
Thanks,

Hi @rceraline
Thanks for bringing this to our attention.
We will be adding the missing translations to the package in our next beta release i.e., 1.0.0-beta.8
You should also be able to see the translated strings in our nightly alpha release in a couple of days once the following PR goes in https://github.com/Azure/communication-ui-library/pull/1047


nixos/firejail: Fix order of extrsArgs in wrappedBinaries-option

This PR fixes https://github.com/NixOS/nixpkgs/issues/160480 . extraArgs should be used before profile command line argument for the firejail binary in the firejail-modul.

Motivation for this change
Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[x] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
22.05 Release Notes (or backporting 21.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[x] Fits CONTRIBUTING.md.

looks good to me.
Thank you!


Standardize HoS/Warden winter coats, add unarmored variants for printing

About the PR
Tweaks the armor values of the HoS & Warden winter coats to make them identical to their non-winter counterparts.
Discord feedback: https://discord.com/channels/310555209753690112/1202944598633087017
Changes since draft:

Tweaked armor values, DEBATABLE
Unarmored variants for the uniform printer, DONE
HoS's could use a unique description, PLS SUGGEST
New sprites would help differentiate, GO NUTS

HoS's Armored Winter Coat
Warden's Unarmored Winter Coat

Why / Balance
HoS's winter coat had default stats which is laughable.
Warden's differed in the explosion and piercing categories.
I don't play these roles so I won't pretend to be an expert, but I will pick winter coats regardless because some of us just like to look cozy.
That being said, these are roles that encounter damage often. I think the armor values should be identical so players can just choose their fit and forget about the min/maxing.
If this is too much, we can dial it back again, but at the very least HoS's winter coat is getting some proper values.
Media

[X] I have added screenshots/videos to this PR showcasing its changes ingame, or this PR does not require an ingame showcase

Changelog
:cl: Krunk

tweak: Head of Security's and Warden's winter coats now provide resistances equal to their non-winter counterparts.
tweak: Unarmored variants of the Head of Security's and Warden's winter coats are now available in uniform printers.

I think the armor values should be identical so players can just choose their fit and forget about the min/maxing.

isn't this why TG added helmet resistances to sec berets

@PursuitInAshes Thanks so much for offering! I assume I'm supposed to merge this PR to my repo somehow?
I've cloned cosmatic-drift and set it up as a remote, but when I run "git merge cosmatic-drift/HoSWinterCoatResprite" it says it's "not something we can merge."

You're welcome to create the second sprite, but it's no big deal if nobody does.
Submitting the PR for the stat fixes is more important. I'll check back on this in a day or two.


Copy edits

@clare-stanton To check extension copy (https://github.com/harvard-lil/perma-extension/blob/develop/src/_locales/en/messages.json)
@clare-stanton & @matteocargnelutti to think about Chrome Web Store:

Title
Short description
Long description
Screenshots


Add tests coverage to requireAuth component

Before submitting a pull request, please make sure the following is done:

Fork the repository and create your branch from master.
Run yarn install in the repository root.
Rename .env-template to .env and fill in the data for your environment
If you've fixed a bug or added code that should be tested, add tests!
Ensure that the code is properly formatted by running the command yarn run prettier.
Make sure your code lints with yarn run lint.
Ensure the local test suite passes yarn test.
Finally, your pull request must be validated by all project status checks(Travis, Codacy, Coveralls, etc).

Coverage increased (+1.2%) to 63.855% when pulling af88b5b167f286c571feeddd8e5b2b416610c6d8 on add-tests-coverage into f35bc31b0608e7fcd31bc7b045b70bc6e465b616 on master.


bug: No highlights for boolean values

Did you check existing issues?

[x] I have read all the tree-sitter docs if it relates to using the parser
[x] I have searched the existing issues

Tree-Sitter CLI Version, if relevant (output of tree-sitter --version)
tree-sitter 0.24.3 (bdfe32402e85673bbc693216f0a6ef72c98bb665)
Describe the bug
Seems like boolean values like true of false are not highlighted:

in other languages (rust):

Steps To Reproduce/Bad Parse Tree

Open zig file.
create a variable that holds a boolean.
no highlights.

Expected Behavior/Parse Tree
non.
Repro
No response

it seems true and false are classified as identifier, id bet if your theme highlighted those differently it would change true/false too
(ignore highlighting im not using ts for that)

these 4 variables correspond to this tree in nvims :InspectTree

notice how t and f have 2 (identifier) nodes


Feature/cplat 2023 09 01

For the ARM reviewer:
please review this PR. this is for adding 2023-09-01, its relatively large version update with 15 new feature updates.
Here is the list of feature PRs that went into this branch:
New operations (already got ARM approvals)
https://github.com/Azure/azure-rest-api-specs/pull/25543
https://github.com/Azure/azure-rest-api-specs/pull/26093
https://github.com/Azure/azure-rest-api-specs/pull/26427
New properties (no ARM approvals)
https://github.com/Azure/azure-rest-api-specs/pull/26368
https://github.com/Azure/azure-rest-api-specs/pull/26069
https://github.com/Azure/azure-rest-api-specs/pull/26067
https://github.com/Azure/azure-rest-api-specs/pull/26090
https://github.com/Azure/azure-rest-api-specs/pull/26131
https://github.com/Azure/azure-rest-api-specs/pull/26145
https://github.com/Azure/azure-rest-api-specs/pull/26315
https://github.com/Azure/azure-rest-api-specs/pull/26350
https://github.com/Azure/azure-rest-api-specs/pull/26378
https://github.com/Azure/azure-rest-api-specs/pull/26469
https://github.com/Azure/azure-rest-api-specs/pull/26574
ARM (Control Plane) API Specification Update Pull Request
PR review workflow diagram
Please understand this diagram before proceeding. It explains how to get your PR approved & merged.

[1] ARM review queue (for merge queues, see [4])
The PRs are processed by time opened, ascending. Your PR may show up on 2nd or later page.
If you addressed Step 1 from the diagram and your PR is not showing up in the queue, ensure the label ARMChangesRequested
is removed from your PR. This should cause the label WaitForARMFeedback to be added.
[2] https://aka.ms/azsdk/support/specreview-channel
[3] List of SDK breaking changes approvers in pinned Teams announcement
[4] public repo merge queue, private repo merge queue (for ARM review queue, [1])
If you need further help with anything, see Getting help section below.
Purpose of this PR
What's the purpose of this PR? Check all that apply. This is mandatory!

[x] New API version. (Such PR should have been generated with OpenAPI Hub).
[ ] Update existing version for a new feature. (This is applicable only when you are revising a private preview API version.)
[ ] Update existing version to fix swagger quality issues in S360.
[ ] Other, please clarify:

edit this with your clarification

Due diligence checklist
To merge this PR, you must go through the following checklist and confirm you understood
and followed the instructions by checking all the boxes:

[x] I confirm this PR is modifying Azure Resource Manager (ARM) related specifications, and not data plane related specifications.
[x] I have reviewed following Resource Provider guidelines, including
ARM resource provider contract and
REST guidelines (estimated time: 4 hours).
I understand this is required before I can proceed to Step 2, "ARM Review", for this PR.

Breaking changes review (Step 1)

If the automation determines you have breaking changes, i.e. Step 1 from the diagram applies to you,
you must follow the breaking changes process.
IMPORTANT This applies even if:

The tool fails while it shouldn't, e.g. due to runtime exception, or incorrect detection of breaking changes.
You believe there is no need for you to request breaking change approval, for any reason.
Such claims must be reviewed, and the process is the same.

ARM API changes review (Step 2)

If this PR is in purview of ARM review then automation will add the ARMReview label.
If you want to force ARM review, add the label yourself.
Proceed according to the diagram at the top of this comment.

Viewing API changes
For convenient view of the API changes made by this PR, refer to the URLs provided in the table
in the Generated ApiView comment added to this PR. You can use ApiView to show API versions diff.
Suppressing failures
If one or multiple validation error/warning suppression(s) is detected in your PR, please follow the
Swagger-Suppression-Process
to get approval.
Getting help

For general PR approval workflow, see the diagram at the top of this comment.
For guidance on fixing this PR CI check failures, see the hyperlinks provided in given failure
and https://aka.ms/ci-fix.
If the help provided by the previous points is not enough, post to https://aka.ms/azsdk/support/specreview-channel and link to this PR.

For the ARM reviewer:
please review this PR. this is for adding 2023-09-01, its relatively large version update with 15 new feature updates.
Here is the list of feature PRs that went into this branch:
New operations (already got ARM approvals)
https://github.com/Azure/azure-rest-api-specs/pull/25543
https://github.com/Azure/azure-rest-api-specs/pull/26093
https://github.com/Azure/azure-rest-api-specs/pull/26427
New properties (no ARM approvals)
https://github.com/Azure/azure-rest-api-specs/pull/26368
https://github.com/Azure/azure-rest-api-specs/pull/26069
https://github.com/Azure/azure-rest-api-specs/pull/26067
https://github.com/Azure/azure-rest-api-specs/pull/26090
https://github.com/Azure/azure-rest-api-specs/pull/26131
https://github.com/Azure/azure-rest-api-specs/pull/26145
https://github.com/Azure/azure-rest-api-specs/pull/26315
https://github.com/Azure/azure-rest-api-specs/pull/26350
https://github.com/Azure/azure-rest-api-specs/pull/26378
https://github.com/Azure/azure-rest-api-specs/pull/26469
https://github.com/Azure/azure-rest-api-specs/pull/26574

Nonblocking feedback: booleans called 'enabled' are usually clear enough in meaning, but they are relatively hard to extend to allow new behavior - in case you ever have multiple behaviors you want to selectively enable in the future.

    "location": "westus"

why does it need to have location in the body?

Refers to: specification/compute/resource-manager/Microsoft.Compute/ComputeRP/stable/2023-09-01/examples/virtualMachineScaleSetExamples/VirtualMachineScaleSetVM_AttachDetachDataDisks_MaximumSet_Gen.json:34 in 44b9d98. [](commit_id = 44b9d984b97246a2cd86743e27279aa06c95ab9d, deletion_comment = False)

you have examples for this API but I don't see the declaration of the generate SSH key pair API itself?

Refers to: specification/compute/resource-manager/Microsoft.Compute/ComputeRP/stable/2023-09-01/examples/sshPublicKeyExamples/SshPublicKey_Create.json:37 in 44b9d98. [](commit_id = 44b9d984b97246a2cd86743e27279aa06c95ab9d, deletion_comment = False)

    "location": "westus"

why does it need to have location in the body?
Refers to: specification/compute/resource-manager/Microsoft.Compute/ComputeRP/stable/2023-09-01/examples/virtualMachineScaleSetExamples/VirtualMachineScaleSetVM_AttachDetachDataDisks_MaximumSet_Gen.json:34 in 44b9d98. [](commit_id = 44b9d98, deletion_comment = False)

thank you for pointing that out. It has been removed.

you have examples for this API but I don't see the declaration of the generate SSH key pair API itself?
Refers to: specification/compute/resource-manager/Microsoft.Compute/ComputeRP/stable/2023-09-01/examples/sshPublicKeyExamples/SshPublicKey_Create.json:37 in 44b9d98. [](commit_id = 44b9d98, deletion_comment = False)

this comment is not showing me exactly where you are pointing, but generate ssh API is defined: https://github.com/csassasin/azure-rest-api-specs/blob/6a7acfd57c0b047d63ca2cd89f3773d15afaa2a9/specification/compute/resource-manager/Microsoft.Compute/ComputeRP/stable/2023-09-01/sshPublicKey.json

please review @TimLovellSmith

d property for the return object. It gets modelValidation error without

That puzzles me because I thought this is a POST API, so it shouldn't need to return a tracked resource, necessarily. Also if you are using this POST api as a round-about way of reading the state of a resource they could normally GET, that's slightly worrying me from an RBAC perspective, it would probably be better to have people only get that info with a GET request.

d property for the return object. It gets modelValidation error without

That puzzles me because I thought this is a POST API, so it shouldn't need to return a tracked resource, necessarily. Also if you are using this POST api as a round-about way of reading the state of a resource they could normally GET, that's slightly worrying me from an RBAC perspective, it would probably be better to have people only get that info with a GET request.

@TimLovellSmith, yeah it is a post and is returning the post object for 200. I see many examples that do that throughout compute.
Also i want to note, that this was already ARM approved here: https://github.com/Azure/azure-rest-api-specs/pull/26093

@TimLovellSmith please let me know if you suggest any changes. other please approve!

d property for the return object. It gets modelValidation error without

That puzzles me because I thought this is a POST API, so it shouldn't need to return a tracked resource, necessarily. Also if you are using this POST api as a round-about way of reading the state of a resource they could normally GET, that's slightly worrying me from an RBAC perspective, it would probably be better to have people only get that info with a GET request.

latest commit addressing this comment by Tim

@rkmanda, please review/merge !

/pr RequestMerge


Serverless keyword updates

Based on https://github.com/pulumi/docs/pull/2635, which seems to have failed CI, and I'm not able to re-run the jobs in the GitHub UI. So just resubmitting here.

Merging this based on approvals of https://github.com/pulumi/docs/pull/2635.


Firefox freezes completely

Vue devtools version
6.4.5
Steps to reproduce & screenshots
Basically I open the Vue devtools. After a minute my whole browser freezes. Nothing is possible anymore.
I do go to other windows on my desktop like my IDE. Not sure if it has to do with the other issue where the devtools keep reloading.
It only happens with the Vue devtools open.
What is expected?
Browser doesn't freeze and keeps working.
What is actually happening?
Browser completely freezes to the point that any interaction doesn't work anymore. (Except for the window manager part where you minimize or resize the window).
System Info
Firefox 108.0.1
Windows 11

Seems it now also happens when you close the devtools in Firefox with the Vue Devtools open.

From my own tests, the problem seems to be caused by this issue: https://github.com/vuejs/devtools/issues/2002


NL: Support showing maps for cities in  queries

@chejennifer @beets

e.g. "income inequality in cities of california" should have the same map treatment as "income inequality in counties of california"

Just to note, when FE can support it, we need to add CITY to https://github.com/datacommonsorg/website/blob/03ab5f90beb6d0c182ced78fb53e4710bfda1945/server/lib/nl/constants.py#L464-L467.


Vector.of() is ambiguous with GWT compiler

There are two static methods overloading Vector.of(). One is accepting a single T element, the other a varargs T... elements. The GWT compiler creates a method reference to the wrong method (T element instead of the varargs version) when inferring the method reference from the body of Vector.tabulate. This way, under GWT, the tabulate method will create a Vector of arrays instead of Vector of T.
Since AFAIK GWT uses the eclipse compiler, this probably causes problems with older version of eclipse too (haven't tested).
I think it's a bit unfortunate that the two methods share the same name since ambiguity can happen. What if I want a Vector of arrays? What if I want a vector of elements of the array. I think renaming the varargs version to ofAll would make sense and would align it to the other methods which accept either primitive varargs or iterables or streams.
Another solution could be to remove the Vector.of(T element) version altogether, since the varargs version should be enough, that's what varargs was invented for in the first place.
Personally, I like the first (rename) solution more , but the second one (remove) could be backwards source-compatible, while the rename will not.

There might be other collections with the same ambiguity, I haven't looked thoroughly, but List has the same issue.

All collections will have that issue. We aligned the naming to standard Java.
Example:

java.util.stream.Stream.of(T... values)
java.util.stream.Stream.of(T value)

We reworked already the factory method API because of ambiguities, see #721.
For special cases, like array of arrays, an explicit cast or type hint behind the '.' has to be provided.
Maybe it is an Eclipse Compiler bug. Java's Stream has the same problem.

@ruslansennov could you please add the following gwt/javascript tests to javaslang-gwt project:
Factory method tests:

assertThat(Set.of(1).contains(1)).isTrue()
assertThat(Set.of(1, 2).contains(2)).isTrue()

API alias tests:

assertThat(Set(1).contains(1)).isTrue()
assertThat(Set(1, 2).contains(2)).isTrue()

These should ensure that the generated javascript code calls the right methods.

sure

You could add this as well
assertThat(Vector.tabulate(2, Function.identity()).contains(1)).isTrue()

@nfekete, thank you I confirm the problem. This test passes in GWT and of course fails in Java
// GWT scope
public void testTabulate() {
    Vector<?> v = Vector.tabulate(2, Function.identity());
    // actually v is not {0, 1} but is {{0, 1}}
    assertTrue(v.size() == 1);  // true in GWT, false in Java
    Object[] head = (Object[]) v.get(0);
    assertEquals(head[1], 1);
}

@ruslansennov isn't this a general problem for javascript? How to choose the right method in an untyped language:
function of(element) { ... }

function of(elementArray) { ... }

In Javascript these are the same.

Daniel, you're right, JavaScript is funny...
We can change signature of internal Collections.tabulate(...) from
C tabulate(int n, Function<? super Integer, ? extends T> f, C empty, Function<T[], C> of)

to something like
C tabulate(int n, Function<? super Integer, ? extends T> f, C empty, Function<java.util.List<T>, C> of)

and this solves the problem.

@ruslansennov thank you, that sounds good!
of will then be ofAll. It should be sufficient if it takes an Iterable (does not matter much here):
C tabulate(int n, Function<? super Integer, ? extends T> f, C empty, Function<Iterable<T>, C> ofAll)

I would stay with the array:
final T[] elements = (T[]) new Object[n];

and finally wrap the array as List:
return ofAll.apply(Arrays.asList(elements));

... and we should check all other factory methods in GWT

Are you sure it's a JS problem? Somehow I assumed that the GWT compiler is there for us to work around JS funkyness (I'm using a mild word here), and was totally convinced that this bug is the GWT compiler's fault, more precisely the Eclipse compiler embedded and used by GWT.

GWT compiler actually creates differently named js methods for overloaded java methods, so I really think this is not a JS problem. GWT (relying on info from the ECJ) just generates a reference to the wrong method.

@nfekete To report a GWT bug we need a minimal example. S.th. like this:
import java.util.function.Function;

public class Test {

    public static void main(String[] args) {
        new Test().run();
    }

    void run() {
        String result = test(this::of);
        if ("one".equals(result)) {
            throw new Error("'many' expected but found 'one'");
        }
    }

    <T> String of(T t) {
        return "one";
    }

    <T> String of(T[] ts) {
        return "many";
    }

    static <T> String test(Function<T[], String> of) {
        T[] ts = (T[]) new Object[] { null };
        return of.apply(ts);
    }

}

@ruslansennov could you run that code please in a GWT test/example (on the client side)?

Now I'm really baffled. Something deeper is going on here. I tried your example by including it into the javaslang-gwt-example project and it works. The bug doesn't manifest itself.

Interesting. Then we should strip down the Javaslang library to the classes and methods that are called (but keep the implementations as far as possible).
There are still differences, for example the Collections class is package private and so on.
I will create a stripped down example tomorrow, need some sleep.

Okay, I figured out something. The method reference GWT generates is actually good. The Test.of(T...) gets referenced but the passed-in array of Ts is actually a one-element array consisting of the array of elements that should get passed wrapped in as the first element of the array. So, in practice, the array argument gets wrapped in another array.

Here's a small test case to reproduce the behavior:
import java.util.function.Function;

public class Test {

    public static void main(String[] args) {
        String[] array = new String[] { "1", "2" };
        first(array);
        Function<String[], String> fn = Test::first;
        fn.apply(array);
    }

    static String first(String... strings) {
        return strings[0];
    }

}

It seems this is a GWT problem, not Eclipse Compiler for Java problem. I'm gonna file a bug for GWT based on this.
Sorry for wasting your time with this, it has nothing to do with Javaslang.

GWT issue filed at: https://github.com/gwtproject/gwt/issues/9497

This blocks javaslang-gwt release. I'm not sure we should fix javaslang internals or should wait for next version of GWT, but I would reopen this issue for a while

@ruslansennov it should not affect our 2.1.0 release. It will be fixed in GWT 2.8.1. If GWT 2.8.1 isn't out before Javaslang 2.1.0, we are able to release javaslang-gwt-2.1.1 without changing javaslang-2.1.0.
I would close this ticket.

"The fix should be straightforward" - good news :)

GWT fix landed in HEAD, which has snapshots built as maven version HEAD-SNAPSHOT, see here:
https://oss.sonatype.org/content/repositories/google-snapshots/com/google/gwt/gwt-servlet/HEAD-SNAPSHOT/
I tried the above repro snippet and it works correctly.

Vector.tabulate() also works correctly with gwt-HEAD-SNAPSHOT.

Great to hear!


@Sharable should also support @Target(ElementType.TYPE_USE)

Expected behavior
@Sharable should also be usable with anonymous inner types, so that it is no longer necessary to make named classes (top-level or nested) for sharable handlers. Since Java 8, this is possible with the new ElementType TYPE_USE.
The practical problem here is that either (a) Netty would have to, at some point, require Java 8 (don't think that's the case yet), or (b) an additional Java-8-specific @Sharable annotation would have to be introduced.
Actual behavior
@Sharable only targets ElementType TYPE and requires a proper (i.e., named) class.
Steps to reproduce
Add @Sharable annotation to inner class, observe compilation error.
Minimal yet complete reproducer code (or URL to code)
ChannelInboundHandler echoHandler = new @Sharable ChannelInboundHandlerAdapter() {
      @Override
      public void channelRead(ChannelHandlerContext context, Object message) {
           context.write(message);
      }
}

Netty version
4.1.22.Final
JVM version (e.g. java -version)
1.8.0_152
OS version (e.g. uname -a)
Darwin Kernel Version 16.7.0: Wed Oct  4 00:17:00 PDT 2017; root:xnu-3789.71.6~1/RELEASE_X86_64 x86_64 (MacOS 10.12.6)

Yes, this is the excellent feature. Also, I would like to have ElementType.TYPE_PARAMETER as well.
The main problem that netty currently support Java 6.

This makes perfect sense and we are planing to start work on the next major version of netty very soon which will hopefully be able to fix this.
Stay tuned, I will start a proposal for all of this soon.


Play/sbt version of 2.25.4 does not contain minified file

The webjar for Play/sbt version of 2.25.4 does not seem to contain the minified version jquery.tablesorter.min.js
Is this something the user should take care of, or can it be packaged in the webjar as it was for older versions. Or perhaps I am doing something wrong on my side. I am currently working around by referencing the unminified version jquery.tablesorter.js
Thanks in advance

Can you find that file published as an artifact somewhere?  Then I can update this WebJar.

James, I don't know the process, so not sure how to find or create it from https://github.com/Mottie/tablesorter, other than minify it  myself. Who would typically create the .min file, surely part of the tablesorter build process? I am not looking for that version in particular, even the latest 2.28.15 would be fine. Let me know how I can assist.

Most projects distribute minified artifacts but not all.  In some cases we run builds or minifiers to do this in the WebJar creation process.  Seems like we might need to do that here.


[FEATURE REQ] Make Azure AD related RestTemplate can be configured by RestTemplate bean

Context
Now Azure AD (and Azure AD B2C) related RestTemplates are created by static method in AadRestTemplateCreator, so customer cannot configure each RestTemplate according to their requirement. For example: set different http header for each RestTemplate.
Goal
Make Azure AD (and Azure AD B2C) related RestTemplate can be configured by RestTemplate bean.

After discussion with @saragluna , we will not provide this feature for now, here are the reasons:

Change to RestTemplate bean may have bad effect to customer's code. For example, customer have to specify bean name if their code requires a RestTemplate bean:
Before:
@Bean
public someBeanMethod(RestTemplate restTemplate) {
    ...
}

After:
public someBeanMethod(@Qualifier("...")RestTemplate restTemplate) {
    ...
}

The priority is not high. We can provide this feature when there is customer ask for this feature.

I'll change the Milestone to backlog.


Overview of adding snippets to Playground (#25506)

Resolves #25506

Thank you for your contribution! Follow this checklist to help us incorporate your contribution quickly and easily:

[ ] Mention the appropriate issue in your description (for example: addresses #123), if applicable. This will automatically add a link to the pull request in the issue. If you would like the issue to automatically close on merging the pull request, comment fixes #<ISSUE NUMBER> instead.
[ ] Update CHANGES.md with noteworthy changes.
[ ] If this contribution is large, please file an Apache Individual Contributor License Agreement.

See the Contributor Guide for more tips on how to make review process smoother.
To check the build health, please visit https://github.com/apache/beam/blob/master/.test-infra/BUILD_STATUS.md
GitHub Actions Tests Status (on master branch)

See CI.md for more information about GitHub Actions CI.

Thinks that are left:

How to use external data and code with no internet
How to add ToB learning materials in addition to snippets
Real example of ToB snippet link
Real snippet with named sections
Verify metadata reference

R: @pabloem

Run Website PreCommit

Run Website_Stage_GCS PreCommit


Fixing viewer problems: one point tree viewer and documentation of viewers. Fixes #166

Current coverage is 100.00%

Merging #183 into master will not affect coverage as of 5e46ff2

@@            master    #183   diff @@
======================================
  Files           33      33
  Stmts         1333    1337     +4
  Branches         0       0
  Methods
======================================
+ Hit           1333    1337     +4
  Partial          0       0
  Missed           0       0

Review entire Coverage Diff as of 5e46ff2

Powered by Codecov. Updated on successful CI builds.

This fixes #166 right?


Update README

To make the example of use function checkIsAuthorized() more explicative.

how about
await checkIsAuthorized();
console.log(GoogleFit.isAuthorized);

hopefully they know how to use async


Socket Client Multithreading Problem

import socket
ClientSocket = socket.socket()
host = '<IP_ADDRESS>'
port = 1233
print('Waiting for connection')
try:
ClientSocket.connect((host, port))
except socket.error as e:
print(str(e))
Response = ClientSocket.recv(1024)
while True:
Input = input('Say Something: ')
ClientSocket.send(str.encode(Input))
Response = ClientSocket.recv(1024)
print(Response.decode('utf-8'))
ClientSocket.close()
I used this codes for creating thread using while loop but It did not work.

I used this codes for creating thread using while loop but It did not work.

First initialize everything like class , variable and exiption handling lib
the sever ip  and port no and the Client IP  and port no will BE same
then create your Server class in another package
Now run server and client
inshallah it will work


Incorrect detection of variable's identifier with double commas

This language construct is supported in bash 4.0.
Steps to reproduce:

create new bash script
type:

var1="Some Text"
var2=${var1,,}

Expected:
Inspection is okay.
Actual:
I got inspection: 'var1,,': not a valid identifier
Version: <IP_ADDRESS>

Fixed for the next update


Allow manual input on text field

Add a prop to allow users to manually input the desired date and time with their keyboard.

When the prop is set to true:

Set readonly prop on text field to false.
Only open the dialog when clicking the calendar icon, not the text field.
On text field @blur event, validate input (input should have the format dateFormat + " " + timeFormat):

If no input, don't do anything.
If input isn't correct, display format error using vuetify's error-messages.
If input is correct, update datetime picker value and emit @input event.

On text field @focus event:

Clear vuetify error-messages prop.

When users select a new value from the dialog:

Update the text field value.

That may look too specific, but I'm open to changes. Please let me know what you think, I'm willing to open a PR myself if this is approved.

Also looking for this behavior.  @Vontus did you have a fork you're working off of?

@gabaum10 I haven't started yet. We changed priorities in our project and this isn't so important anymore, but we'll probably need manual date input in the near future anyway so I'm still open to do it.


Bug: View parser throws view exception with nested 'if' within javascript code

PHP Version
8.0
CodeIgniter4 Version
4.1.8
CodeIgniter4 Installation Method
Composer (using codeigniter4/appstarter)
Which operating systems have you tested for this bug?
Windows
Which server did you use?
apache
Database
mysql
What happened?
when parsing a view with inline javascript (within a script tag, specifically an if statement within outer braces {})
the view parser mis-interpretes this code as a view conditional and improperly transforms the code to a php conditional.
Steps to Reproduce
controller code:
public function test(){
		$parser = service('parser');

        $somedata = [
            'message' => 'massagee'
        ];
        $view = <<<'EOL'
                 <script type="text/javascript">
                     var f = function(){
                         if(true){
                             alert('{message}');
                         }
                     }
                 </script>
                 EOL;

        return $parser->setData($somedata)->renderString($view);
    }

error message:
You have a syntax error in your Parser tags: <script type="text/javascript">
var f = function()if ((true){
alert('{message): ');
}
}
</script>

problem:
the nested javascript if statement has been parsed
and php tags have been placed around it
(observed by printing the output directly pre-evaluation in the parser class)
Expected Output
Expected output would be the non-modified javascript,
with the substituted tag within.
<script type="text/javascript">
                     var f = function(){
                         if(true){
                             alert('massagee');
                         }
                     }
                 </script>

Anything else?
No response

Related: #5825

The error is because you write if condition in the template:
{
     if(true){
        alert('{message}

Workaround is to use {noparse}:
{noparse}if(true){{/noparse}

I recommend you don't write JavaScript code in templates.

@kenjis
Thank you for your assessment.
With all do respect I think the recommendation of not writing JavaScript code within templates is ridiculous;
and would recommend reconsidering that stance in a view template parser.
That being said, if that is the stance of CI4 I would suggest a few features:

making mention that this is a porting concern from CI3 applications to CI4 on this page: https://codeigniter4.github.io/userguide/installation/upgrade_view_parser.html at least
making conditional parsing an optional 'on by default' argument for the parser render/renderString functions

Thank you again for your help with the issue

@RaymondFJ Thank you for comment.
Not writing JavaScript code within templates is a common practice.
You write JavaScript in js files and include it in a template.
You could get a value in a tag in the template from the JavaScript code.
I don't know the porting concern from CI3 applications to CI4.
Do you mean the sample code works on CI3?
You could send a PR to change the documentation.
https://github.com/codeigniter4/CodeIgniter4/blob/develop/contributing/README.md
Contributions are welcome.

@kenjis

Not writing JavaScript code within templates is a common practice.

Writing JavaScript within HTML is a common practice, inline

Yes, you can write JavaScript readily within templates in CI3 without issue; so this was a surprise when discovered in CI4.

Okay, I'm not sure the error would be fixed, but reopen this issue for now.

@kenjis
Thanks, I suppose this is at least an opportunity for others to comment if they encounter the same issues as CI4 gains traction

I sent a PR to add option to disable Parser conditionals: #5841

@RaymondFJ I sent another PR: #5842
It can solve the syntax error and you can still use Parser conditionals if you want.


添加yolact++

添加yolact++

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.


Allow multiple library cards from the same regional library system

It is possible that someone could have library cards from two or more branches of the same regional library system.  E.g., Glendale and Mesa in the Greater Phoenix District Library. Currently only one library card can be provided in the config file for a regional library.  This probably happens rarely.

It is possible that someone could have library cards from two or more branches of the same regional library system. E.g., Glendale and Mesa in the Greater Phoenix District Library. Currently only one library card can be provided in the config file for a regional library. This probably happens rarely.

Did you get it to work with one branch? Specifically the Mesa branch? That's my library as well and I could not get it to work.

@2AbbyNormal You should be able to select the Mesa branch of the Greater Phoenix District Library, as seen in this transcript:
Initializing webdriver.
Reading library card configuration file.
Loading library page for 'phoenix'
Starting signin to Greater Phoenix Digital Library.
Branch libraries are:
    1. Apache Junction Public Library
    2. Casa Grande Public Library
    3. Glendale Public Library
    4. Maricopa County Library District
    5. Mesa Public Library
    6. Peoria Public Library
    7. Phoenix Public Library
    8. Scottsdale Public Library System
Where do you use your library card (Enter a number 1-8)? 5
Okay, signing in to Mesa Public Library.
Library card number entered.
PIN entered.
....

If it isn't working for you please share details of the behavior you are seeing.

I have two cards from the Orange County Library System and I added some code to the original to make it ask me which file I wanted to use and then use shutil to copy and paste in the config file so I can easily switch cards.
#
# LibbyFetch - Download MP3 audiobooks from libbyapp.com
#
# Copyright (c) 2024 John Dalbey
#

# pip install selenium selenium-wire pycurl
# Note: must uninstall Blinker 1.9 and install v1.7
import time, os, pycurl, traceback, shutil
from selenium.common import TimeoutException
from seleniumwire import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.keys import Keys

#global variable for webdriver
driver = None

# Browse to the library page and perform the actions to login to libbyapp.com
def select_account():
    accounts = {
        "1": "library_card_config_1.txt",  # Nancy
        "2": "library_card_config_2.txt",  # Scooter
    }
    account_names = {
        "1": "Nancy",
        "2": "Scooter",
    }
    print("Select account:")
    print("1. Nancy (Account 1)")
    print("2. Scooter (Account 2)")
    choice = input("Enter your choice (1 or 2): ").strip()
    if choice in accounts:
        shutil.copy(accounts[choice], "library_card_config.txt")
        print(f"Using {account_names[choice]} for this session.")
    else:
        print("Invalid choice. Exiting.")
        exit(1)

# Call the function to select an account
select_account()
def do_login_steps(driver):
    config_filename = "library_card_config.txt"
    try:
        print ("Reading library card configuration file.")
        library_config = []
        # Read library card configuration info: library code, card number, and PIN
        f = open(config_filename, 'r')
        library_config = f.readline().split(",")
        library_id = library_config[0].strip()
        library_cardnum = library_config[1].strip()
        library_pin = None
        # Check if a PIN parameter is included
        if len(library_config) == 3:
            library_pin = library_config[2].strip()

        print (f"Loading library page for '{library_id}'")
        driver.get(f"https://libbyapp.com/library/{library_id}")
        WebDriverWait(driver, 10)

        # Find the "Sign In" button by its class name and text content
        button_xpath = "//button[contains(@class, 'interview-answer-action') and contains(@class, 'halo') and .//span[@role='text' and (text()='Sign In With My Card' or text()='Try Again')]]"
        try: # Find the button using XPath
            button = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, button_xpath)))
            # Locate the prompt element
            span_element = driver.find_element(By.CSS_SELECTOR, '.interview-episode-say span')
            # Get the text from the span element
            span_text = span_element.text
            if span_text.endswith("details about this library."):
                print (f"Sorry, can't find details for library '{library_id}'")
                print ("Please confirm the library abbreviation and try again.")
                terminate()
            else:
                button.click()
                print("Starting signin with your library card.")
        except Exception as e:
            print(f"Unable to find 'Sign In With My Card' button.")
            terminate()

        # Find and fill the Card Number input field
        input_xpath = "//input[@class='shibui-form-input-control shibui-form-field-control' and @placeholder='card number']"
        try:  # Wait for the input field to be present
            input_field = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.XPATH, input_xpath)) )
            # Fill in the value
            input_field.send_keys(library_cardnum)
            time.sleep(1)
            input_field.send_keys(Keys.ENTER)
            print ("Library card number entered.")
            time.sleep(1)
        except Exception as e:
            print(f"An error occurred entering card number: {e}")
            terminate()

        # If the configuration has a PIN, enter it
        if library_pin is not None:
            # Find and fill the PIN input field
            input_id = "shibui-form-input-control-0002"
            try:  # Wait for the input field to be present
                input_field = WebDriverWait(driver, 10).until( EC.visibility_of_element_located((By.ID, input_id)) )
                # Fill in the value
                input_field.send_keys(library_pin)
                time.sleep(1)
                input_field.send_keys(Keys.ENTER)
                print("PIN entered.")
                time.sleep(1)
            except Exception as e:
                print(f"An error occurred filling PIN:")
                traceback.print_exc()
                terminate()

        # if no PIN continue here
        retry_count = 0
        signin_complete = False
        # Repeat until signin succeeds, or the retry count is exceeded
        while not signin_complete and retry_count <= 3:
            # "Next" button will appear at this point.
            button_xpath = "//button[contains(@class, 'interview-answer-action') and contains(@class, 'halo') and span[contains(@class, 'interview-answer-action-flex')] and .//span[@role='text']]"
            try: # Find the button using XPath
                button = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, button_xpath)))
                # Locate the prompt element
                span_element = driver.find_element(By.CSS_SELECTOR, '.interview-episode-say span')
                # Get the text from the prompt element
                span_text = span_element.text
                # Determine which prompt appeared
                if span_text.startswith("Unfortunately"):
                    print("Card not verified, probably a Libby error, we will retry in a few seconds.")
                    retry_count += 1
                    time.sleep(5)
                    print ("Retrying...")
                    # Click "Try Again" to make the card number and pin fields reappear.
                    button.click()
                elif span_text.startswith("We could not verify your card"):
                    print (f"Sorry, your library card (or PIN) could not be verified.")
                    print(f"Please confirm these credentials and try again: {library_config}")
                    terminate()
                elif span_text.startswith("Enter"):
                    button.click()
                else:  #span_text.startswith("Okay")
                    button.click()
                    print("Sign In completed.")
                    signin_complete = True
            except Exception as e:
                print(f"Login seems to have failed. ")
                print (f"Please verify these credentials and retry: {library_config}")
                abnormal_exit(e)
        if retry_count > 3:
            print (f"Giving up after {retry_count} retries.")
            terminate()
    except FileNotFoundError:
        print(f"Missing or malformed configuration file: {config_filename}")
        terminate()
    except IndexError:
        print(f"Malformed configuration file: {config_filename}")
        terminate()
    except Exception as e:
        print (f"Login failed, sorry.")
        print (type(e))
        abnormal_exit(e)

# Display the list of book titles in 3 columns
# @param a list of DIV elements from the loans page, one for each book.
def display_in_columns(div_list):
    # Determine the number of rows needed
    rows = (len(div_list) + 2) // 3

    for i in range(rows):
        # Get the items for the current row
        row_items = []
        for j in range(3):
            index = i*3 + j
            if index < len(div_list):
                # Extract the text from the span with class "title-tile-title"
                title_text = div_list[index].find_element(By.CLASS_NAME, "title-tile-title").text
                # Preface the title with an index number
                brief_title = str(index+1) + ". " + title_text.strip()[:23]
                row_items.append(brief_title)
            else:
                row_items.append("")

        # Format the row items to be 26 characters wide
        formatted_row = f"{row_items[0]:<26} {row_items[1]:<26} {row_items[2]:<26}"
        # Print the formatted row
        print(formatted_row)

# Get the page elements for the books and display the titles
def list_titles(driver):
    # Find all title-tile divs
    book_divs = driver.find_elements(By.CLASS_NAME, "title-tile")
    # Check that books exist
    if len(book_divs) == 0:
        print ("\nIt appears you have no audiobooks on loan at this library.")
        print ("Nothing to download, quitting.")
        terminate()

    # Display the list in columns
    display_in_columns(book_divs)

# Open the audiobook
# @param list of book divs
# @param user's choice of an item in the list
def open_audiobook(book_divs, choice):
    try:
        if choice < 1:
            raise IndexError
        # Find the specific title-tile div based on user choice
        chosen_title = book_divs[choice - 1]
        # Find and click the "Open Audiobook" button within the chosen div
        open_button = chosen_title.find_element(By.XPATH, ".//button[span[text()='Open Audiobook']]")
        open_button.click()
        print("Opening Audiobook.")
    except IndexError:
        print("Sorry your choice is not in the list.")
        terminate()

# Display list of books and get user's selection
# @return a list of div elements for the books
# @return an integer the user chose from the list
def choose_book(driver):
    try:
        # Navigate to the page listing audiobooks on loan
        driver.get("http://libbyapp.com/shelf/loans/default,audiobook")

        try:
            # Wait for the <h1> Loan element
            # NB: Even after the H1 element is present it never becomes "visible".  There's a graphical fade-in
            # effect that is probably interfering.
            WebDriverWait(driver, 15).until(
                EC.presence_of_element_located((By.CLASS_NAME, "screen-shelf-collation-heading"))
            )

            # The following sleep() allows the animation to complete
            # at which time the audiobook titles can be viewed and accessed.
            # There may be a better way to achieve this than a hardcoded sleep.
            time.sleep(2)
            print("Loans page loaded.")
        except TimeoutException:
            print("Loans page seems to not have loaded.  Try again.")
            terminate()

        # List all titles and get the titles elements
        list_titles(driver)
        book_divs = driver.find_elements(By.CLASS_NAME, "title-tile")

        # Prompt the user to enter the number of the desired title
        choice = int(input("Enter the number of the desired title: "))
        return book_divs, choice
    except ValueError:
        print ("Choice must be a number. Quitting.")
        terminate()

# Obtain the URL for the desired book
# @param a list of divs for the books
# @param an integer representing the user's choice from the list
# @return the URL for the first MP3 of the audiobook
# @return list of cookies needed to fetch the URL
def obtain_book_url(book_divs, choice):
    try:
        # Open the audiobook for the chosen title
        open_audiobook(book_divs, choice)
        # This is the 'secret' that allows this script to do its magic
        # Once the audiobook is opened in the browser, libbyapp will use a GET request to obtain the MP3 file.
        # Our script will snoop on the network requests looking for a GET request with an URL that contains
        # a specific phrase that identifies the MP3 file.
        print ("Retrieving audiobook url...")
        magic_phrase = "Fmt425-Part"  # a unique phrase that identifies Libby's request for an MP3
        cookies = None
        book_url = ""
        while (cookies == None):
            time.sleep(2)
            print (f"waiting")
            for request in driver.requests:
                if request.method == "GET":
                    book_url = request.url
                    # Look for the request that has the MP3 name
                    if book_url.find(magic_phrase) > 0:
                        cookies = request.headers["cookie"]
                        break
        return book_url, cookies

    except Exception as e:
        print (f"Exception retrieving book")
        abnormal_exit(e)

# Initialize a variable to track the last reported percentage
last_reported_percent = -1

# Perform the cURL command needed to download one MP3 file
def do_pycurl_cmd(book_title, deweyURL, cookie):
    # Progress callback function to print only at multiples of 10%
    def progress(download_t, download_d, up_t, up_d):
        global last_reported_percent

        if download_t > 0:  # Only calculate percentage if total size is known
            percent = int((download_d / download_t) * 100)

            # Print progress if it is a multiple of 10 and hasn't been reported yet
            if percent % 10 == 0 and percent != last_reported_percent:
                print(f" {percent}% ", end='', flush=True)
                last_reported_percent = percent

    # Initialize pycURL object
    c = pycurl.Curl()
    # Set URL
    c.setopt(c.URL, deweyURL)

    # Follow redirects (equivalent to `-L`)
    c.setopt(c.FOLLOWLOCATION, True)

    # Set custom headers
    c.setopt(c.HTTPHEADER, [
        'User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:132.0) Gecko/20100101 Firefox/132.0',
        'Accept: audio/webm,audio/ogg,audio/wav,audio/*;q=0.9,application/ogg;q=0.7,video/*;q=0.6,*/*;q=0.5',
        'Accept-Language: en-US,en;q=0.5',
        'Range: bytes=0-',
        'DNT: 1',
        'Connection: keep-alive',
        'Sec-Fetch-Dest: audio',
        'Sec-Fetch-Mode: cors',
        'Sec-Fetch-Site: same-origin',
        'Sec-GPC: 1',
        'Accept-Encoding: identity',
        'Priority: u=4',
        'TE: trailers'
    ])
    # Set cookies as a single string (format: "cookie1=value1; cookie2=value2")
    c.setopt(c.COOKIE, cookie)
    # Specify the path to your CA certificates bundle
    c.setopt(c.CAINFO<EMAIL_ADDRESS>
    # Save the output retrieved by cURL to a file
    with open(book_title, 'wb') as f:
        c.setopt(c.WRITEDATA, f)
        # Set up the progress function callback
        c.setopt(c.XFERINFOFUNCTION, progress)
        c.setopt(c.NOPROGRESS, False)  # Enable the progress function
        print ("Download progress: ", end='')
        # Perform the request
        c.perform()
        print ()
        c.close()

# Fetch the MP3 files that comprise the audiobook
# @param title is the string representing the book (with blanks replaced by underscores)
# @param deweyURL is the book URL in form expected by libbyapp
# @param cookie the cookie string
# @result the MP3 files are downloaded into the current folder
def fetch_audio_files(title, deweyURL, cookie):
    audio_filename = title + "_Part01.mp3"
    filesize = 99
    part_counter = 1
    # Since we don't know in advance how many mp3 files comprises the audiobook
    # we just iterate fetching files until we get one with a size of 1 byte.
    while filesize > 1:
        # Rename the command with the current part number
        part_num = "Part" + f"{part_counter:02}"
        audio_filename = title + "_" + part_num + ".mp3"
        currentURL = deweyURL.replace("Part01",part_num)
        print (audio_filename)
        do_pycurl_cmd(audio_filename, currentURL, cookie)
        # Retrieve the filesize of the downloaded .mp3 file
        filesize = os.path.getsize(audio_filename)
        # increment the part number for the next iteration
        part_counter += 1

    print(f"Fetch completed.  {part_counter - 1} files downloaded.")
    # Delete the last file since it is only 1 byte long.
    print("Removing scrap file: ", audio_filename)
    try:
        os.remove(audio_filename)
    except FileNotFoundError:
        print("Failed to delete scrap file - probably programmer error")
        terminate()

def terminate():
    driver.quit()
    exit()

def abnormal_exit(e):
    print ("An error occurred for an unknown cause.")
    print ("Exception type: ",type(e))
    print (f"Message: {e}")
    traceback.print_exc()
    driver.quit()
    exit(-1)

# Entry point for the application
if __name__ == "__main__":
    try:
        # Initialize the WebDriver
        # Known Issue: Apparently there's a known issue with the Chrome webdriver. If the user manually minimizes
        # the browser window while the script is running it causes the driver to lose focus or fail to interact with
        # the page elements properly.  Firefox doesn't have this problem.  The workaround is to run in headless mode,
        # as shown below.
        print ("Initializing LibbyApp.")
        from selenium.webdriver.chrome.options import Options as ChromeOptions
        options = ChromeOptions()
        options.add_argument("--headless")
        driver = webdriver.Chrome(options=options)
        do_login_steps(driver)
        # Get user's book choice
        book_divs, choice = choose_book(driver)
        book_name = book_divs[choice - 1].find_element(By.CLASS_NAME, "title-tile-title").text
        # Hunt down the URL of the book
        deweyURL, cookie = obtain_book_url(book_divs, choice)
        book_title = book_name.replace(" ", "_")
        # Go retrieve the MP3 files
        print (f"Ready to fetch audio book {book_name}.")
        fetch_audio_files(book_title, deweyURL, cookie)
        print ("That's all Folks!")
        driver.quit()
    except Exception as e:
        abnormal_exit(e)

@lsixecho That's great that you took the initiative to hack the code to get it to work for your specific situation.  (Don't you love open source?)  Thanks for sharing your solution.


Tracking issues of RFC-3734: Buffered reader

RFC

[x] #3734
[ ] #3811
[ ] Implement the blocking reader.
[ ] Adapt the CompleteReader
[ ] Add behavior test cases for buffer read/reader
[ ] Add fuzz test

Hi @WenyXu, do you plan to implement RFC-3734 by yourself?

Hi @WenyXu, do you plan to implement RFC-3734 by yourself?

Yes, would you happen to have any suggestions?

Yes, would you happen to have any suggestions?

No, I'd just like to know your plan in advance. :love_letter:

Perfect!


Allow error console icons to both open and close the panel

nsims
https://jira.jpl.nasa.gov/browse/AERIEQS-432
Moderate
When trying to close the error console, users click on the same icon used to open it. It takes them a moment to find the arrow to collapse it, which is on the opposite side of the screen.

Related: Toast notification obscures the clickable area of the "All Errors" tab. This is an error generated trying to merge plans.


InfoWindow does not work when marker is animated

Setting the infoWindow property of an animated marker has no effect. Tapping on the marker does not open the info window.
Note: I've only tested this on iOS.

hi @orkun1675,
I could not replicate this issue while testing the example app. Could you provide more info on how you are implementing it?
But, I found that the staticMarker's onTap on InfoWindow was not being called, so I fixed that in v0.1.4.

Simplified code snippet for animated marker with InfoWindow:
static const int _vehicleZIndex = 20;

// This happens once in addPostFrameCallback
final vehicleIcon = await AssetMapBitmap.create(
        createLocalImageConfiguration(context),
        'assets/images/vehicle_icon.png',
        width: 60,
      );

Marker(
        markerId: const MarkerId('vehicle'),
        icon: vehicleIcon,
        infoWindow: InfoWindow(
          title: vehicle.label ?? 'Your Vehicle',
          snippet: null,
          anchor: const Offset(0.5, 0.5),
        ),
        anchor: const Offset(0.5, 0.5),
        position: vehicle.position.position,
        rotation: vehicle.course.degrees,
        zIndex: _vehicleZIndex.toDouble(),
      )


AutoUnattend Extend Partition

Hello.  I would recommend setting extend to true for the primary partition so it fills in the size of the virtual box disk.

closing as there was no feedback in three months, please let me know if you can provide more details and I will reopen


nixos/switch-to-configuration: Restart systemd when system.conf is changed

Motivation for this change
systemd doesn't apply some changes from system.conf when it's just reloaded and not restarted.
This replaces #35036 with slightly nicer Perl and no conflicts.
Closes #35036
Things done

Built on platform(s)

[ ] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
22.05 Release Notes (or backporting 21.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[ ] Fits CONTRIBUTING.md.

@GrahamcOfBorg test switchTest

Should this not compare the contents instead of the paths? Or is the config stored under its output hash?

It could do that but I don't really see a point in doing so. It's slower and it probably doesn't prevent a lot of restarts.
When the contents are not changed but the store path changes, the reason for this is that one dependency of writeTextFile changed. When one of these happens (it's just runCommand) it's extremely likely that systemd would get restarted anyway because systemd itself changed.

NOTE: I'd consider using File::Spec rather than Cwd::abs_path since abs_path won't resolve the path to a file if it's parent directory doesn't exist.
use Cwd qw(abs_path);
use File::Spec;

chdir("/");
my $a = abs_path("non-existing-dir/file");
my $b = File::Spec->rel2abs("non-existing-dir/file");

warn "a: $a\n";
warn "b: $b\n";

Returns:
a:
b: /non-existing-dir/file

@stigtsp is this relevant in this case? I thought the // should catch this issue. I'm not really keen on introducing another Perl dependency into switch-to-configuration.pl

is this relevant in this case?

It's not a showstopper for this PR imho (hence the approval and "NOTE:" prefix for my comment).

I thought the // should catch this issue. I'm not really keen on introducing another Perl dependency into switch-to-configuration.pl

Setting /unknown in some cases seems fragile, especially if paths are compared.

File::Spec is included with perl as a core module, and is fortunately an additional dependency.

Yeah since you know a lot more about writing nice Perl than I do I changed it to your proposal ;)

Yeah since you know a lot more about writing nice Perl than I do I changed it to your proposal ;)

Oh - I'm not sure about that. :)
Hm it seems that File::Spec::rel2abs doesn't resolve symlinks like Cwd::abs_path does, so it wouldn't work for abs_path("/proc/1/exe").

Umm that might be an issue here because I can't tell if the store paths these paths are referring to are different

Umm that might be an issue here because I can't tell if the store paths these paths are referring to are different

Yes you're right, that would be a problem. The previous approach would be better in that case.

Let's cook this a bit in unstable :-)


Fix typos

CLA signed by all contributors.

Closing this in favor of https://github.com/puppetlabs/puppet/pull/7207


Support for Candlestick Chart

I would like to see support to candlestick chart. Right now I don't see a way to make this graph, or I am wrong?

+1

try this
https://gist.github.com/jeddi/96b1388421449de00e46


Self-host via HTTP: initial working commit

Resolves https://github.com/mihaigalos/aim/issues/15.

Codecov Report

Merging #27 (df68c7c) into main (05c0323) will decrease coverage by 1.03%.
The diff coverage is 38.46%.

@@            Coverage Diff             @@
##             main      #27      +/-   ##
==========================================
- Coverage   95.85%   94.81%   -1.04%
==========================================
  Files          12       13       +1
  Lines         723      733      +10
==========================================
+ Hits          693      695       +2
- Misses         30       38       +8

Impacted Files
Coverage Δ

src/http_serve_folder.rs
0.00% <0.00%> (ø)

src/driver.rs
98.09% <60.00%> (-1.91%)
:arrow_down:

src/ftp.rs
100.00% <100.00%> (ø)

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 05c0323...df68c7c. Read the comment docs.