Adds CloudWatch security gotcha

🔸CloudWatch does not have a VPC Endpoint. If you have a security requirement to lockdown outbound traffic from your VPC then you may want to look at alternative logging solutions or use DNS filtering to control outbound traffic.

Thanks for the contribution!
I'm on the fence about this one-- you're absolutely correct in your assessment. The challenge I've got is that this applies to every service except S3 and DynamoDB (in preview).
Does generalizing it and making it a larger point beyond CloudWatch make sense, do you think?

Thank you, @zekizeki.
I agree with @QuinnyPig's thinking on this. Noting the absence of VPC endpoints for CloudWatch seems like it would be likely to lead readers to believe that that they are there for other services, which is (mostly) not the case.
I'd be very supportive of a modified PR that notes the general lack of VPC endpoints (besides the ones that @QuinnyPig mentioned) - the "VPC and Network Security Gotchas and Limitations" section seems like the right place to me, but I'm open to other ideas.

As I quoted a couple of weeks ago in https://lastweekinaws.com, "Two years after AWS debuted VPC endpoints for S3, a second service now offers them in a limited preview. At this rate, Amazon's rollout of VPC endpoints for all its service offerings should be completed roughly three weeks after the Earth crashes into the Sun. "

Thanks @zekizeki!

@QuinnyPig @ThanosBaskous I've created a new pull request here https://github.com/open-guides/og-aws/pull/438


New command: spo commandset get

Usage
spo web commandset get [options]
Description
Get a ListView Command Set that is added to a site.
Options

Option
Description

-u, --webUrl <webUrl>
The url of the site.

-t, --title [title]
The title of the ListView Command Set. Specify either title, id or clientSideComponentId.

-i, --id [id]
The id of the ListView Command Set. Specify either title, id or clientSideComponentId.

-c, --clientSideComponentId  [clientSideComponentId]
The Client Side Component Id (GUID) of the ListView Command Set. Specify either title, id or clientSideComponentId.

-s, --scope [scope]
Scope of the ListView Command Set. Allowed values: Site, Web, All. Defaults to All.

Examples
Retrieves an ListView Command Set by title.
m365 spo commandset get --title "Some customizer" --webUrl https://contoso.sharepoint.com/sites/sales

Retrieves an ListView Command Set by id.
m365 spo commandset get --id 14125658-a9bc-4ddf-9c75-1b5767c9a337 --webUrl https://contoso.sharepoint.com/sites/sales

Retrieves an ListView Command Set by clientSideComponentId.
m365 spo commandset get --clientSideComponentId 7096cded-b83d-4eab-96f0-df477ed7c0bc --webUrl https://contoso.sharepoint.com/sites/sales

Additional Info
While developing we want to reuse the getCustomActions and getCustomActionById functions of the spo util class.

If the found custom action is not an command set: throw an error.
If two or more command set custom actions are found: prompt the user to disambiguate.

We can use the shared code to only query the commandset customaction we want: with a location value of ClientSideExtension.ListViewCommandSet, ClientSideExtension.ListViewCommandSet.CommandBar or  ClientSideExtension.ListViewCommandSet.ContextMenu based on the value that's used.

Could I work on this?


Click "View All" will crash

Describe the bug
A clear and concise description of what the bug is.
SDK Version

Client: Swift
Version:  1.8.4

To Reproduce
Steps to reproduce the behavior:

Click "View All" to view all wallet
crash

Expected behavior
A clear and concise description of what you expected to happen.
Screenshots
If applicable, add screenshots to help explain your problem.
Device (please complete the following information):

Device:  iPhone12
OS: iOS 16.4.1

Additional context
OS Version: iOS 17.0.3 (21A360)
Report Version: 104
Exception Type: EXC_BREAKPOINT (SIGTRAP)
Crashed Thread: 0
Application Specific Information:
Exception 6, Code 1, Subcode<PHONE_NUMBER> >
Stack overflow in (null)
Thread 0 Crashed:
0   WalletConnectSwiftV2            0x10659cdc0         [inlined] value
1   WalletConnectSwiftV2            0x10659cdc0         WalletList.gridItem (WalletList.swift:172)
2   WalletConnectSwiftV2            0x106599f38         [inlined] $s7SwiftUI6VStackV9alignment7spacing7contentACyxGAA19HorizontalAlignmentV_12CoreGraphics7CGFloatVSgxyXEtcfCAA9TupleViewVyAA15ModifiedContentVyAQyAQy013WalletConnectA2V20P5ImageVAA12_FrameLayoutVGAA11_ClipEffectVyAA16RoundedRectangleVGGAA16_OverlayModifi...
3   WalletConnectSwiftV2            0x106599f38         WalletList.gridItem (WalletList.swift:163)
4   WalletConnectSwiftV2            0x10659b0b0         WalletList.viewAll (WalletList.swift:91)
5   SwiftUI                         0x31d36a460         OUTLINED_FUNCTION_21
6   SwiftUI                         0x31d374d24         OUTLINED_FUNCTION_21
7   SwiftUI                         0x31cc0afac         OUTLINED_FUNCTION_52
8   SwiftUI                         0x31d374d44         OUTLINED_FUNCTION_21
9   libswiftCore.dylib              0x3070be0f8         withUnsafeMutablePointer
10  SwiftUI                         0x31d369850         OUTLINED_FUNCTION_21
11  SwiftUI                         0x31d36c160         OUTLINED_FUNCTION_21
12  SwiftUI                         0x31d36dac0         OUTLINED_FUNCTION_21
13  SwiftUI                         0x31d372274         OUTLINED_FUNCTION_21
14  SwiftUI                         0x31d3726b0         OUTLINED_FUNCTION_21
15  SwiftUI                         0x31dc00808         OUTLINED_FUNCTION_4
16  SwiftUI                         0x31dbff064         OUTLINED_FUNCTION_4
17  SwiftUI                         0x31c42ffc0         OUTLINED_FUNCTION_37
18  SwiftUI                         0x31c42ed8c         OUTLINED_FUNCTION_37
19  SwiftUI                         0x31c6a5c48         _swift_stdlib_malloc_size
20  AttributeGraph                  0x363ed5850         AG::Graph::UpdateStack::update
21  AttributeGraph                  0x363ecc500         AG::Graph::update_attribute
22  AttributeGraph                  0x363ecbdd8         AG::Graph::input_value_ref_slow
23  AttributeGraph                  0x363ecb96c         AGGraphGetValue

The wallet with empty wallet name is  this one: https://explorer.walletconnect.com/secux
And the excatlly line is: https://github.com/WalletConnect/WalletConnectSwiftV2/blob/c2802116f6e21df8d4fe587e289309776e8b015c/Sources/WalletConnectModal/Modal/Screens/WalletList.swift#L218

Thanks for your report @ngn999 🙏 The missing name field issue on the API should be resolved, which should hopefully avoid this crash from being triggered.
The Swift SDK fix to make behaviour more tolerant and avoid crashing unnecessarily here will still need to be addressed separately.


Image classification with Vision Transformer

Hey as I see this issue being open, can I take on this one? Thanks

@Anindyadeep this is outdated, never mind. But we're going to post a "getting started" explainer on contributions, so stay tuned!

Sure thanks for the update.


fix: start implementing css principles

✅ Changes to only Alert, Button, Divider and Link to demonstrate principles :)
✅ Using the pattern dsc-button-background and dsc-button-background--active for recognition of state variables
✅ Using pseudo elements with mask instead of inline <svg> elements for easy reconstruction in other frameworks
✅ Alphabetically sorting CSS properties for consistent setup - or whatever is automated by our formatter <3
✅ Using attributes for setting size, variant or colors - aligning the props interface across frameworks and avoiding invalid states (▶ Move to data-ds-variant="" aka element.dataset.dsVariant)
✅ Moving to :focus-visible styling to CSS token as well as utility class, using box-shadow only to avoid half pixels
✅ Moving default styling to main class name, as this allows skipping setting data-size="md" on all components
✅ Moving to color instead of severity for Alert as this aligns with other components props API
✅ Rendering Alert icon inside first heading if present as this makes typographic alignment better (worked with Øyvind)
✅ Several TODO/questions added to code we should discuss, and font sizing is being discussed with designers 23.08.24
Closes #2320
Closes #1992
Closes #2065

related to #2065, #2295, #2221

To summaries our meeting on 26.08.24 with @Barsnes @Thuneer @eirikbacker:
Lots of good improvements we agreed on.

Make sure to make separate changesets for each of the changes to the React component props.
We'll remove some classes and add them back if needed, such as -md.

We probably need to omit loading in ToggleGroupItem. Since you already updated the Button docs, could you also remove the duplicate info for icons 😅

Just realized this was not duplicate, so it's all good 😄
ToggleGroup still needs to be updated


Memory Leak

I'm processing about 2000 images per minute across 8 nodes in production and noticed that system memory is going up.
:erlang.memory() is stable, but system memory goes up by about ~50mb per hour per node until the VM just crashes.
It seems that the NIF bindings from exmagick might be the issue here where memory is not being freed up somewhere.
The commands I'm using are init! image_load!, image_dump!, and size!
0.0.5

looking at the code my guess is image_dump!. enif_make_resource_binary requires enif_release_resource which is missing. i'll make a test to verify and if that is the case i'll make a patch fixing.
thanks!

@weixiyen could you test #10 and let me know if it fixes your problem?

I just updated my prod environment with the latest changes.  Will let you know in 24 hours!

Yep, trying it again.
I just updated my erlang distribution to erts-9.3 with the env flag turned on.
Will get back to you in about ~12 hours with some graphs to compare before / after.
Thank you!

Hi @dgvncsz0f - just checking back in.
I think there is still a memory leak, and it's kind of hard to tell how much effect there is.
After running in prod for roughly 24 hours, there is still a big difference between what Erlang thinks it is using versus what the Linux Kernel thinks.
For example, on one node, Erlang thinks it is using 300MB of memory while the Linux Kernel thinks Erlang is using 5GB of memory.
According to Fred Herbert, this type of symptom could be caused by a NIF:
http://erlang.org/pipermail/erlang-questions/2013-September/075401.html
Although, I can't be 100% sure.
Is it possible that there are minor leaks related to either init!, image_load!, or size! functions?
I'll try to do some more testing on my end as well to see if I can get more helpful information

@weixiyen thanks. if you can provide more information it will be valuable. later today i'll continue investigating looking for other possible leaks. i'll get back to you as soon as i have something up.
Thanks!

sorry, accidentally closed when merged the pr...


Helper functions

@all-contributors
please add @SamueleBolotta for code.
please add @courtneydean33 for project management.
please add @iamzoltan for infrastructure and maintenance

https://github.com/all-contributors
please add @SamueleBolotta for code.
please add @courtneydean33 for projectManagement.
please add @iamzoltan for infrastructure.

@all-contributors
please add @SamueleBolotta for code.
please add @courtneydean33 for projectManagement.
please add @iamzoltan for infra and maintenance.

@all-contributors
please add @SamueleBolotta for bug.
please add @patrickmineault for content.
please add @iamzoltan for review.

@all-contributors
please add @patrickmineault for content.
please add @iamzoltan for review.

@all-contributors please add @iamzoltan for review.


Open source

Instead of checking in the sources, how about we use Mint instead? Both tools support this, and it's backed by SPM completely. I love that tool :D


Better support for mypy.

Currently many more Python projects like dask and optuna are using Python type hints. With the Python package of xgboost gaining more and more features, we should also adopt mypy as a safe guard against some type errors and for better code documentation.

I marked this as good first issue.  Adding type checks for Python is an incremental process, parameter by parameter and function by function.  It would be a good chance to review existing code base and make improvement during the process.  I have made some progress on https://github.com/dmlc/xgboost/pull/6519 with the dask module, which is by far the most dynamic module in xgboost.  Other modules can use it as a base line.
Contributions are welcomed!

Hi, I was wondering if I could work on this as a first issue. Thanks!

@jjwang01 Please do. ;-)  ping me if you need any help

Is it alright if I split this into multiple PRs?

@jjwang01 As many as you need.  In fact, it's a good idea to have multiple PRs so we can communicate better around details.

@trivialfis Is there some sort of local build script that I can use to test locally rather than after submitting a commit to PR?

Hi, just wanted to follow up on this comment.

Hi, sorry for missing the message.

Install mypy in your python envorinment.
cd python-package in xgboost source directory.
Run mypy .

The only module that's lacking the support for mypy is the pyspark interface now.

Notes:

Use TypeGuard in Python 3.10 for data dispatching.
Use ParamSpec in Python 3.10 for decorators.
Use collections.abc.Iterator to replace Iterator (pyspark).

Will not cover pyspark at 2.0. mypy is not ready for pyspark's deep inheritance style.

Should this be marked as closed? Referring to the comments 'The only module that's lacking the support for mypy is the pyspark interface now' and 'Will not cover pyspark at 2.0'. If there's anymore locations where this is needed I'm happy to pick it up

I think we will keep it opened until xgboost is fully covered, including the pyspark module. You are more than welcome to work on it. I think there's still some parts of the pyspark interface can be typed.

I am new to open source and am willing to work over it , provided someone helps me in knowing what has to be done ,
@trivialfis  is this still going on ? or are there any other issues that I might be able to work on ,

Hi, thank you for volunteering @SANTHOSH-MAMIDISETTI ! Currently, XGBoost has type hint for the core Python library, but not yet for most of the demos and tests. In addition, the PySpark module is not yet typed. Feel free to pick an untyped file and start adding type hints.

Hi, thank you for volunteering @SANTHOSH-MAMIDISETTI ! Currently, XGBoost has type hint for the core Python library, but not yet for most of the demos and tests. In addition, the PySpark module is not yet typed. Feel free to pick an untyped file and start adding type hints.

Dear @trivialfis ,
Thank you for your prompt response. I am excited to contribute to the XGBoost project and would like to request assignment for the issue regarding adding type hints to the PySpark module, as mentioned earlier.
As a beginner in open source, I anticipate that I may encounter challenges along the way. Therefore, I would appreciate some guidance on whom I can reach out to for assistance when faced with difficulties. It would be reassuring to know that there is a support system in place to help newcomers like myself navigate any obstacles that may arise during the contribution process.
Thank you once again for the opportunity to contribute. I am eager to make a meaningful impact on the project.
Sincerely,
@SANTHOSH-MAMIDISETTI

Hi @SANTHOSH-MAMIDISETTI , there's an on-going effort for the pyspark module here: https://github.com/dmlc/xgboost/pull/9156

I would appreciate some guidance on whom I can reach out to for assistance when faced with difficulties.

Feel free to ping me or @hcho3 for assistance when needed. I should be able to reply unless away from my working devices.

Looks like I was too slow off the mark - is there anything left to type for the pyspark module? Or elsewhere for that matter?

Tons of! Examples under the demo directory, tests under the tests directory. Also, the cor package contains many use of type:ignore and the Any, removing them can help make the code more rigorous.

Thanks a lot - will contribute on this PR. This will be my first attempt at an open source contribution so would value some guidance on if I'm on the right track


Html anchor tag is interpreted as , breaking link

Describe the bug
For some reason, when i try to use https://discord.com/invite/xxxxxx/, I get this error:
<pymodules>\pygame_gui\core\text\html_parser.py:149: UserWarning: Unsupported HTML Tag <module>. Check documentation for full range of supported tags.
We use anchor tags in another place in the same module, via CC-BY-NC 4.0 and the link works exactly as expected. Both the working and not-working are inside UITextBox-es, albeit seperate. An oddity in this is that the broken link still follows the link_text and link_hover theming...
Expected behaviour
Link will function as normal.
Screenshots
Bad link:

Working link:

Platform and software (please complete the following information):

OS: Windows, occurs on linux hyperv vm
Pygame GUI version: 0.6.8
Pygame version: pygame 2.1.3.dev8 (SDL 2.0.22, Python 3.10.10)

Hmm, are you sure it is firing from that link?
The error in your screenshot is from the HTML parser which thinks it has tried to parse a tag that looks something like <module>.
If you do have any text that looks like <module> you can use "my text " + html.escape("<module>") + " other text here" to fix it.

Oh, sorry 😓 it appears the  part is from putting a raw traceback output into a textbox

Sadly that still doesnt explain why nothing happens when you click the broken link. Ive tried messing around with the layering to no avail.

If it helps, heres the layering overlay:

Also sorry to combine two bug reports into one, but if you have a usecase where a link is accross multiple lines, only the last line will change colors on hover/click

Adding a debug print to html_parser.py ln131 reveals that it is detecting the correct href attribute
print("link href: ", attributes['href']) style["link_href"] = attributes['href']
link href:  https://discord.com/invite/x
link href:  https://www.mozilla.org/en-US/MPL/2.0/ link href:  https://creativecommons.org/licenses/by-nc/4.0/legalcode

Hello there, i found the problem 😅 I was under the impression that pyg_gui handled opening links, and not that it was an event, I had copied the code from a different class in the module, and seem to have just glazed over UI_TEXT_BOX_LINK_CLICKED. Im so sorry for wasting your time


Document how to add new widget types & validation

There's an event mechanism in content.js but it's not documented.

Tom, I just added a new section:
https://github.com/punkave/apostrophe-forms#adding-new-widget-types--validation
Is that clear?

Sam, that looks good for the most part. A few notes:

You should clarify where this code goes. The configuration code goes in
app.js as your configuration of the apostrophe-forms module. The
browser-side code can go in public/js/site.js or any other js file you're
pushing as an asset in app.js, or you can put it in
lib/modules/apostrophe-forms/public/js/content.js to namespace it a little
better.

Since this is about validation, you should add an example of reporting an
error in a sanitizeFormField handler.

There's a typo here:

can be added with the sanitizeForm` emitter
I think you wanted a leading backtick to make sanitizeForm look like code.
On Thu, Sep 24, 2015 at 2:24 PM, Samantha Combs<EMAIL_ADDRESS>wrote:

Tom, I just added a new section:
https://github.com/punkave/apostrophe-forms#adding-new-widget-types--validation
Is that clear?
—
Reply to this email directly or view it on GitHub
https://github.com/punkave/apostrophe-forms/issues/15#issuecomment-143011355
.

--
*THOMAS BOUTELL, *DEV & OPS
P'UNK AVENUE |<PHONE_NUMBER>  |  punkave.com


[BUG] Account got suspended again!

My account got suspended again just like it suspended using python-aternos. I even configured the server correctly, everything was working fine but after an hour or so it stopped working and when I tried to log in to aternos to see what's going on, it says account suspended...blah..blah..automation..blah...! Is there way to bypass it?

So are you using this discord bot now or the CLI that comes with sleeyax/aternos-api? Are you self-hosting/running this bot or the CLI on some server? I find it odd that you got flagged so soon, to me it looks like your IP got flagged which would make sense if it's tge same IP you used to run the python bot from.

Try the following:

create a brand new account with a totally different email
create a new MC server
start the server normally and play for ~ 10 minimutes
change your IP (VPN or different server, proxies ate not supported yet)
run the bot or aternos-api CLI again

If you still get suspended after these steps, then I suppose there's a real issue at play...

I'm still interested to hear what you did to cause the ban exactly, because a ton of people's accounts started to get suspended suspiciously close after you opened this issue :sweat_smile:

Server bot went offline

i think this made the aternos admins to look closely on the ips of the people who are making servers and their server is running but they are not getting money from advertisement 😅😅😅😅


[MAINT] Removed unused Language Aliases

Remove unused language aliases and add tags. Also, need to change the language alias Fortran from Fixed Form to Free Form. Changes that need to be made are as follows:
Language Aliases
Removed

FORTRAN77
fortran_fixed-form

Changed

Fortran: to F90 from F77. Is now the primary alias for FreeForm
Fortran77: default alias for FixedForm

Keywords
Added

Modern Fortran
fortls
fpm

This will cause breaking changes to anyone using the aliases instead of the language IDs. We will keep Fortran90 as an alias for FortranFreeForm to keep things consistent with fortls.

Thank you


Aspect ratio of multimedia

The video and audio multimedia has a different aspect ratio than the original: here a good example of the correct behaviour

Final results after changes


Slow-ish phantomjs interaction times (a single fill_in takes ~500ms)

This is with current master, elixir 1.4.0, erlang 19.1 and phantomjs version 2.1.1 (installed via npm install -g phantomjs-prebuilt) on Linux Mint 18.1 (basically Ubuntu 16.04).
I wrote an acceptance test for our application and noticed how our tests took so much longer, at first I thought it was the phantomjs startup but then measured just in the test - it took 12 seconds. Now the test is pretty thorough, and fills out a big form.
Still, that is way longer than it should take in my opinion (and feel like it'd take with capybara in ruby but of course I haven't tested it, maybe I'm just sensitive to test run times in our elixir applications).
I created a little reproduction script for wallaby:
{:ok, server} = Wallaby.TestServer.start
Application.put_env(:wallaby, :base_url, server.base_url)

use Wallaby.DSL

{:ok, session} = Wallaby.start_session

session = visit(session, "forms.html")

IO.puts "fill_in start"
{time, _} = :timer.tc fn -> fill_in(session, Query.text_field("name"), with: "Chris") end
IO.puts "Finale fill in time #{time / 1000} ms"

Wallaby.end_session(session)

I also added a couple of targeted timers to see where the slowness is coming from (you can check them out on my slowness branch)
The result is somewhat as expected, the slowdown seems to come from the communication with the phantomjs browser:
fill_in start
make_request of driver - 76.92 -body: {"value":".//*[self::input | self::textarea][not(./@type = 'submit' or ./@type = 'image' or ./@type = 'radio' or ./@type = 'checkbox' or ./@type = 'hidden' or ./@type = 'file')][(((./@id = \"name\" or ./@name = \"name\") or ./@placeholder = \"name\") or ./@id = //label[contains(normalize-space(string(.)), \"name\")]/@for)] | .//label[contains(normalize-space(string(.)), \"name\")]//.//*[self::input | self::textarea][not(./@type = 'submit' or ./@type = 'image' or ./@type = 'radio' or ./@type = 'checkbox' or ./@type = 'hidden' or ./@type = 'file')]","using":"xpath"}
make_request of driver - 48.024 -body: {"type":"browser"}
driver find_elements 125.729
make_request of driver - 78.834 -body:
make_request of driver - 47.898 -body: {"type":"browser"}
Browser.execute_query execution time 256.394 ms
make_request of driver - 72.57 -body:
make_request of driver - 46.537 -body: {"type":"browser"}
make_request of driver - 73.669 -body: {"value":["Chris"]}
make_request of driver - 44.03 -body: {"type":"browser"}
Element.fill_in time: 239.773 ms
Full fill_in time 496.354 ms

E.g. It seems every interaction takes ~ 250ms - first finding the element (first Browser.execute_query) takes that time and then filling in an element takes about the same time as well.
Can anything be done here? Are these times normal and  I'm just unaware of it and everything is slow? ;P
E.g. could some of these requests be saved? Is there a faster way of interaction? Could look to capybara/hound for checking what might be done.

Other than getting the number of requests down, it seems like there are different interaction methods: http://phantomjs.org/inter-process-communication.html
If my glance at the code didn't betray me poltergeist (the capybara phantomjs driver) uses the socket interaction out of all of these.

Poltergeist is somewhat different in that it implements an entire client in javascript and then connects to the tests via websockets. I would definitely like to speed up test times as much as we can but building a bespoke client hasn't seemed worth it yet :).
I think there are a couple of ways to help optimize wallaby + phantom. The first is to remove the explicit checks for JS logs. We should be able to get those from the phantom server as output. That will save us an extra http request per operation which should be an easy time savings.
We also do several extra queries during "finding". This is typically stuff like checking for inner text or visibility. We could probably optimize some of that as well. We would need to do more profiling first obviously.

Couldn't we also just "borrow" the poltergeist JS client and then just implement the elixir websocket part of it? Would save us some of the trouble... hoping that wallaby's requirements can be satisified with whatever poltergeist can do :) (I'm an optimist, but enough of a realist to fear that there is some very capybara specific stuff in there)
Thanks for the quick answer!
I'm also happy to add benchee and a couple of relevant benchmarks :)

Having benchmarks with benchee would be awesome! I think we should start there so that we know what we're dealing with. If we can optimize in a few places then we might be able to avoid implementing our own version of webdriver.
If we do need to start thinking about going the poltergeist route then its probably worth looking at what they have for inspiration. Right now we check a lot of properties on an element whenever we query for something. Each of those checks is an http call. We also have to retry a lot to stay in sync with the browser. I've thought for a while that it might make sense to send over queries and actions to the browser but do all of the synchronization and querying in the browser. That removes all of the overhead of extra http calls and also makes syncing easier. It would also allow us to handle some of the issues with webdriver.
I've also thought about automatically transforming all queries into xpath queries. Right now you might end up doing an http call to check visibility or to check text (counting is done in elixir without needing to do an webdriver call). We could do all of that with xpath. That would eliminate all the other webdriver calls and it would help to reduce some of the issues with checking all these elements.
Anyway those are just some ideas. I'm open to lots of solutions. We should benchmark and see if there are some easy wins. At least that way we'll know what we're dealing with.

As an update here I ran and wrote benchmarks for capybara and wallaby, hound still needs some work: https://github.com/PragTob/acceptance_test_speed
TLDR; is filling a form field in is almost a hundred times faster atm with capybara, so we have some space to improve (that's the full blown poltergeist appraoch though which will take A_LOT of time when/if we get to it)

Hey guys,
I'm sorry for what I'm about to say. Unfortunately, despite I love Wallaby's syntax, I'm going to have to switch back to Hound mostly due to the following issues

Constant connection refused errors. I don't know if something related to how the :poolboy stuff is being handled by PhantomJS crashes and I it's really complicated to debug. It's so weird that for example, these tests sometimes work when I take_screenshot but other don't.
Tests in Wallaby are very slow compared to Hound. I'm running scenarios for a SPA and the difference is about 60 secs.

That said, I'm keeping an eye on this project and on this issue in particular because I think I'd like to contribute to it to try to fix the above mentioned issues.
Besides, I was trying to write a Driver for NightmareJS but currently that's something beyond my time and abilities, and also because NightmareJS API is mostly for scripting and not actually a web driver or something you can make requests to.

@hisapy If Hound suits your needs then you should use it. Its a fine library. If you want to provide more detail about the connection refused issues I can take a look at it. If PhantomJS is crashing then that seems like a major issue. I haven't seen that before so it would be good to know about.
If you ever want to contribute feel free to just jump in. If you have any questions I'm sure all of us would be happy to help. 👍

:wave:
With the new benchee version with hooks I could finally benchmark hound vs. wallaby and yup we are indeed slower :'( Full results/benchmarks at https://github.com/PragTob/acceptance_test_speed
This is the direct comparison result:
##### With input filling a form field #####
Name              ips        average  deviation         median         99th %
hound            7.28      137.30 ms     ±1.62%      136.02 ms      144.03 ms
wallaby          2.79      358.74 ms     ±1.13%      356.10 ms      376.06 ms

Comparison:
hound            7.28
wallaby          2.79 - 2.61x slower

##### With input find css by id #####
Name              ips        average  deviation         median         99th %
hound           22.63       44.18 ms     ±1.95%       44.00 ms       48.01 ms
wallaby          5.66      176.66 ms     ±1.04%      176.00 ms      187.55 ms

Comparison:
hound           22.63
wallaby          5.66 - 4.00x slower

##### With input visit url #####
Name              ips        average  deviation         median         99th %
hound           19.02       52.59 ms     ±2.69%       52.01 ms       56.06 ms
wallaby         10.35       96.66 ms     ±1.65%       96.00 ms      103.97 ms

Comparison:
hound           19.02
wallaby         10.35 - 1.84x slower

-> For my simplish scenarios we are ~2 to 4 times slower than hound. Especially a find operation seems to be expensive.  We are a lot slower there than hound and do about 6 iterations per second. As an (even worse) comparison capybara with poltergeist does more than 1200 - so it's 200 times faster.
So, we have quite some potential for improvements :D

@stevegraham What do you mean when you say "adding a visibility check to the Path query"? I generated some flame graphs a while ago and wallaby spends the majority of its time checking for visibility of elements. This is because checking for visibility is pretty hard. Its not enough to check the element itself. The algorithm also needs to check each of the elements parent elements. I'm nervous to remove the visibility check altogether because it may allow tests to interact with dom elements that are hidden. We should test that out though and ensure that my assumptions are correct. If we could remove the visibility check altogether I believe that would give us a pretty substantial speed increase. Maybe you can benchmark that on your branch to confirm that assumption?

I'm not making any assumptions. I'm asking questions.

Sorry! I didn't mean to imply that you were making assumptions. More that I've made assumptions and those assumptions might be wrong. You're totally correct to ask those questions. I wrote this code a while ago and I can't quite remember why I made all of the decisions that I made :heart:

@hisapy @stevegraham We now have a way to skip checking element visibility with the visible: :any option. Additionally if tests are very slow when written in a declarative way, if there are multiple interactions with one element, and the element on the page is not modified in the DOM, a possible optimization is finding the element first and memoizing the Element struct instead of always passing the query. Let us know if you have any ideas on what we can do to improve Wallaby performance, all feedback and ideas are very appreciated!
@PragTob @keathley We need to check if the issue in question affects WebDriver as well. There's a plan to deprecate PhantomJS backend altogether (see #437)

@michallepicki I'm pretty sure it affects web driver as well as iirc the root cause I found is us making a lot of requests and the requests just taking its time. In my experience webdriver was even slower than phantomjs which is why I wasn't on the "deprecate phantom" wagon too early. I fear the only way to make it really fast would be a different architecture. Short term what you mentioned and/or other APIs for mass interactions could alleviate the problem.


refactored environment and variable to own objects

This is a work in progress.
We should change environment to "persist" the values only after the validation has run.
Loader now is just a file reader, so probably best with a SplFileObject.
Lots of tests missing, but easy writeable.
This PR works with current tests and no code change required.
Please comment if I should continue.

This PR is quite large. Is there any chance you could separate it install smaller, non-breaking chunks?

not easy to split, but will give it a try


Release gax-java v1.50.0

This pull request was generated using releasetool.
11-06-2019 07:29 PST
New Features

Track number of failure in batching when Batcher#close is called (#800)

Dependencies

Update error_prone (#813)
deps: update protobuf to 3.10.0, grpc to 1.24.1 (#809)

Internal / Testing Changes

Bump next snapshot (#808)

Release is at https://github.com/googleapis/gax-java/releases/tag/v1.50.0

The release build has started, the log can be viewed here. :sunflower:

The release build failed! Please investigate!


A way to update non primary email adresses signature ?

Using "gam all users signature" we can setup the default signature to our GSuite users
but if they have multiple accounts (like the default in .com and an alias in .fr), we can't programatically setup the .fr alias account signature ?
Am I wrong ?
Any help appreciated

Please post "how do I" or "can I"? questions to the discussion group:
https://groups.google.com/forum/?nomobile=true#!forum/google-apps-manager


Add check for valid identifiers (Closes #179)

Codecov Report

Merging #253 into develop will not change coverage.
The diff coverage is 50%.

@@           Coverage Diff            @@
##           develop     #253   +/-   ##
========================================
  Coverage    71.77%   71.77%
========================================
  Files           22       22
  Lines         1658     1658
  Branches       361      361
========================================
  Hits          1190     1190
  Misses         390      390
  Partials        78       78

Impacted Files
Coverage Δ

petab/parameters.py
85% <ø> (+0.68%)
:arrow_up:

petab/conditions.py
54.54% <50%> (ø)
:arrow_up:

petab/lint.py
73.68% <50%> (-0.2%)
:arrow_down:

Continue to review full report at Codecov.

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

What about
re.match(r'^[a-zA-Z]|(_+[a-zA-Z\d])\w*$', x)
to avoid only underscores?

What about
re.match(r'^[a-zA-Z]|(_+[a-zA-Z\d])\w*$', x)
to avoid only underscores?

Agreed that only underscores would make pretty bad IDs. On the other hand, _1, _2, ... are probably not much better. Only underscores are allowed e.g. in SBML. Would only exclude things that cause technical problems later on, and have some trust in the sanity of the user.


Handle missing HTTPRequests in S.request

This fixes https://github.com/lift/framework/issues/1831
Mailing List thread:
Description
Discussion
Sometimes S.req returns a Req without a HTTPRequest inside. Ergo, when we call HttpRequest.snapshot in Req.snapshot, we get a NPE.
To fix this, we modify currentReq in both definitions of buildDeferredFunction so that they filter out null requests.

@farmdawgnation thanks for the comments.

I'm not only unsure whether or not buildDeferredFunction is the only place we're at risk of hitting a NPE but I'm sure how to rigorously answer that question. I'll start thinking about it :)

I'll also look into adding a spec to LiftSessionSpec.

'course it may take me a bit :bowtie:.

I suggest if possible we put in the time to add the spec, but perhaps file an issue for searching for additional missing null guards. This seems like a win on its own, and would be nice to roll into 3.1.

Agreed, I think I would be happy at the very least adding a test for buildDeferredFunction itself or around the calling code that calls buildDeferredFunction that demonstrates the issue.

@arigoldx Would be v cool to get this into 3.1 if possible. Have you had any time to take a further look here? If not I can take a look myself. =)

@farmdawgnation Sadly last week escaped me -- the busy-ness at work & home was too much.
'not sure when 3.1 is planning on going in but I sure as heck wanna get this in ASAP.  I actually have been working on this from time to time and, as I'm pretty darn new-new to writing tests, I posted some questions there. Gonna give it a bigger whirl today.
All that said, I'm cool with anything..

Hmm.. this is where I'm at:
  "LiftSession when building deferred functions" should {

    "not fail when the underlying container request is null" in {
      val session = new LiftSession("Test Session", "", Empty)

      def stubFunction: () => Int = () => 3

      S.init(Empty, session) {

        val attempt = tryo(session.buildDeferredFunction(stubFunction))

        attempt must beEmpty
      }
    }
  }

I've still got the old code in.. the ol write a failing test routine. (So that should fail).
I'm getting a Full but I expected a Failure: Full(net.liftweb.http.LiftSession$$Lambda$10412/1748374708@261d80ea)' is not empty (LiftSessionSpec.scala:107). Reason is, I thought buildDeferredFunction would fail, giving the tryo a Failure.
What am I missin'?

The changes you made actually ensure that buildDeferredFunction does not fail.
This line:
val currentReq = S.request.filter(_.request != null).map(_.snapshot)

Just makes currentReq empty if there's no underlying request and _.snapshot never attempts to run at all. So, your test should instead read:
        val attempt = session.buildDeferredFunction(stubFunction)

        attempt() mustBe 3

based on how you set this test up, I believe.

Thanks for writin' back!

The changes you made actually ensure that buildDeferredFunction does not fail.

Yep, but I reverted for testing purposes:

I've still got the old code in.. the ol write a failing test routine. (So that should fail).

That's why I thought that I'd get a Failure in the tryo. Hmm.. I'll :eyes: in a bit.

(oops, mis-clicked)

@arigoldx Ah, I see. Let me know if I should take a look.

yes please.

@farmdawgnation I think we might be there! My first spec2 (or spec at all) ever! :muscle:

Woohoo. Will review when I'm back at my computer.

Unless there are any objections / concerns surfaced in the next few days, we'll merge this puppy.

IT'S A NEW DAWN


Hard time importing 20 mb json file

I'm uploading a json file that is right around 20mb and it's loading at a snails pace.  I also tried using the firebase-streaming-import tool and for whatever reason that couldn't handle a 1.7 mb json file.  It was just stuck at 'starting at'.  What can I do to improve the upload speed of firebase-import and is there anything I can do to fix firebase-streaming-import?
My import is currently at (164/48513) and it's been running for 15 minutes.
Thanks!

@kyleabens are you still facing this issue?
I have loaded 1.4mil records(400MB) in about 15mins using the tool.
Hows your internet connectivity? Primarily your upload speeds? try running the import from another source.


Static file example allows traversal outside static file root

Bug Report
Current Behavior

The static file server example is flawed in a way that will allow access to all files on the system.
Code/Gist

cargo +nightly run --example staticfile

Then run this Python script:
#!/usr/bin/env python3
import socket

s = socket.create_connection(('<IP_ADDRESS>', 8000))

s.sendall(b'GET /%2fetc%2fpasswd HTTP/1.0\r\nHost: localhost\r\n\r\n')

data = b''
while True:
    tmp = s.recv(1024)
    if not tmp: break
    data += tmp

print(data.decode('utf8'))

Expected behavior/code

I expected an HTTP 404 error instead of my /etc/passwd file.
Environment

Linux (but almost certainly affects Windows as well)
Possible Solution

Do what the Iron example does and urldecode it before parsing. Alternatively, check that each path component still consists of only a single normal path element after decoding.
In the long run a URL-specific pathbuf variant is probably the proper solution, but is not needed to fix the problem here.
Additional context/Screenshots

Reporting this in public because it's just an example and Tide is not marked as ready for production use. Still, it should be fixed as example code ends up being copy/pasted around for a long time.

I am not completely clear on the interaction with URL encoding, but there was an attempt to protect against this in tide-static-files. I hope I can find the time to see how this can be contributed to tide soon.

looks like this issue no longer applies
[2020-04-23T03:17:55Z WARN  tide::server::serve_dir] File not found: "/path/to/project/src/%2fetc%2fpasswd"


Firefox 58.0.2 is notified as outdated

I get a notification that I need to update my browser when visiting a site using this browser detection script. My version is Firefox <IP_ADDRESS> running on Android 6.0.1

Hi!
On which site did you see the notification?
2018-02-18 15:40 GMT+02:00 chogberg<EMAIL_ADDRESS>
I get a notification that I need to update my browser when visiting a site
using this browser detection script. My version is Firefox <IP_ADDRESS> running
on Android 6.0.1
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/browser-update/browser-update/issues/377, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AIErKixE7qiGsGrOqyyD07Ap3Tr_o6W_ks5tWCg3gaJpZM4SJsVH
.

Cannot reproduce. Must be a problem with a specific site using the script. But I have no information on this.


Bot stops recording after couple of seconds

Got the bot running, detects and records audio, but after a couple of seconds the messages of started and stopped speaking stop and it seems the audio doesnt get recorded as well.

This is mostly a problem with your network.


Theme with TS doesn't accept Partial

Describe the bug
I'm trying to extend the FlowbiteTheme to create my own theme using Typescript but it doesn't seems to be work as expected.
To Reproduce
Steps to reproduce the behavior:

Create a CRA project with TypeScript
Install flowbite-react 0.3.*
Create a custom theme.ts (sample code bellow)
See it fail

import { FlowbiteTheme } from 'flowbite-react';

const theme: Partial<FlowbiteTheme> = {
  navbar: {
    base: 'border-gray-50 bg-white px-2 py-2.5 sm:px-4',
    rounded: {
      on: 'rounded',
      off: '',
    },
  },
};

export default theme;

Expected behavior
It should be possible to partially extend the theme without need to declare all theme properties.
Screenshots

System information:
N/A
Project information:

Tailwind: 3.0.0
Flowbite: 1.4.7
Flowbite React: 0.3.2
Type: CRA

Additional context
N/A

@tulup-conner could you please help on this one? Am I doing something wrong?

Yeah, Partial is a shallow TypeScript Partial. In other words, it won't look for deeply nested members (i.e., further than one level deep). What you want is either the custom DeepPartial type I created, or to just use the CustomFlowbiteTheme type I also created. @rluders


:sparkles: Introduce themed icon

Issue

close #553

Overview (Required)

As the title says.

Links

https://github.com/DroidKaigi/conference-app-2023/pull/616
https://github.com/DroidKaigi/conference-app-2023/pull/773

Screenshot (Optional if screenshot test is present or unrelated to UI)

Before API 25
After API 25

Before API 26
After API 26

Before API 30
After API 30

Before Disable API 31
After  Disable API 31

Before Disable API 33
After Disable API 33

Before Enable API 31
After  Enable API 31

Before Enable API 33
After  Enable API 33

BTW...I can't take a screenshot because I don't know how to turn on/off the themed icons on my API31 device. 😔


IncorrectThreadException when using objectForPrimaryKey

Goals
I want to be able to call objectForPrimaryKey: on a background thread and not have the app crash. This occurs very infrequently. I left my app running for an hour with a background update every 3 minutes which does quite a few Realm transactions.
Expected Results
I expected the app to not crash when using objectForPrimaryKey:.
Actual Results
It crashed. Here's the relevant part of the stack trace:
#0	0x0000000110690c3e in _dispatch_once(long*, void () block_pointer) [inlined] at /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator10.0.sdk/usr/include/dispatch/once.h:74
#1	0x0000000110690c3e in ::__cxa_throw(void *, std::type_info *, void (*)(void *)) at /Users/benny/Repositories/MS/HockeySDK-iOS/Classes/BITCrashCXXExceptionHandler.mm:80
#2	0x00000001102be4c3 in realm::Realm::verify_thread() const at /Users/schapman/Workspace/project/Pods/Realm/Realm/ObjectStore/src/shared_realm.cpp:423
#3	0x000000011026676e in ::-[RLMRealm verifyThread]() at /Users/schapman/Workspace/project/Pods/Realm/Realm/RLMRealm.mm:144
#4	0x000000011014e453 in RLMVerifyRealmRead(RLMRealm*) at /Users/schapman/Workspace/project/Pods/Realm/Realm/RLMObjectStore.mm:59
#5	0x000000011014e4d7 in ::RLMGetObject(RLMRealm *, NSString *, id) at /Users/schapman/Workspace/project/Pods/Realm/Realm/RLMObjectStore.mm:485
#6	0x000000011013a981 in ::+[RLMObject objectForPrimaryKey:](id) at /Users/schapman/Workspace/project/Pods/Realm/Realm/RLMObject.mm:138
#7	0x000000010fe3c137 in __64-[MyClass myMethod]_block_invoke.55 at .../MyClass.m:93

The offending line is: MyRealmClass* object = [MyRealmClass objectForPrimaryKey:@"primary_key"];
I'm not accessing the realm directly. It appears that the RLMRealm's defaultRealm call is returning the incorrect realm for the given thread.
I've done a bit of initial investigation when the debugger was attached which this happened:
Within the context of the RLMRealm object note that self and the response from RLMRealm.defaultRealm are identical, however, the m_thread_id and pthread_self() return different thread IDs.
(lldb) po self
<RLMRealm: 0x6080002ba100>
(lldb) po RLMRealm.defaultRealm
<RLMRealm: 0x6080002ba100>

(lldb) print (__thread_id)m_thread_id
(std::__1::__thread_id) $27 = {
  __id_ = 0x00007000002a0000
}
(lldb) print (__thread_id)pthread_self()
(std::__1::__thread_id) $28 = {
  __id_ = 0x00007000005b2000
}

Steps to Reproduce
Not sure how to reproduce. It seems like the defaultRealm call is returning a RLMRealm instance for the wrong thread. Maybe the thread local caching isn't working as expected? I don't really know enough how how the defaultRealm access works to give an informed use case.
Code Sample
I don't have an available sample. My code is executing this code on a dispatch_queue_t which was created with this: _syncQueue = dispatch_queue_create("Sync Queue", DISPATCH_QUEUE_CONCURRENT);
I use many calls to this same queue simultaneously to parse HTTP JSON response into Realm objects in parallel.
Version of Realm and Tooling
Realm version:

Realm (2.1.0):

Realm/Headers (= 2.1.0)

Realm/Headers (2.1.0)

Xcode version: Version 8.1 (8B62)
iOS/OSX version: iOS 10.1 iPad Air 2 simulator
Dependency manager + version: Cocoapods 1.1.1
Questions
Would manually catching this exception and calling RLMClearRealmCache be a suitable work around?

Hi @SandyChapman!
Sorry to hear that you're bumping into a potential threaded issue with [RLMRealm defaultRealm].
@tgoyne: Do you have any idea how this could potentially be happening?
Thanks!

Keep in mind that a GCD queue doesn't always guarantee to operate on the same thread. If you're making that assumption, it could manifest itself as this exception.
It's hard to say without the relevant code being shared...

The cache does store its own copy of the threadid for the Realm, so I suppose it's theoretically possible that there could be a mismatch between the threadid there and the value stored in m_thread_id. You could investigate if this is the case by printing _realm->m_coordinator->m_weak_realm_notifiers and checking that the entry for your local Realm instance has the same threadid as the instance itself.
If that does turn out to be the problem, I'm still not really sure how it would happen; the cache management code is all pretty simple (and there's not much of it).

@jpsim : Since this is using a concurrent GCD queue it's pretty much guaranteed that it will definitely be running on a different thread if I make several simultaneous dispatches on the queue. That's why I don't store RLMRealm or RLMObject instances and am attempting to use the class method objectWithPrimaryKey: to re-retrieve my instance within the context of the thread it's running on. This should be thread-safe.
@tgoyne : the next time I catch this happening, I'll gather the debug info you're asking for. I've validated that the thread ID on the RLMRealm instance doesn't match the current thread (which makes sense as that's why the exception is thrown), but I'll double check the coordinator next time. Hopefully, it's just a matter of leaving my app running for an hour or two like last time I saw this happen.

Thanks @SandyChapman! If you could collect that debug data for us, that would be really helpful. Please let us know when you're able to collect it. :)
Happy holidays!

@TimOliver : I left my app running for a while on Friday with no crash happening. I'll turn up the frequency of the REST calls which resulted in this crash and try again when I'm back at work in the new year. Will follow up with any progress I make.

@TimOliver @tgoyne
Our QA just reproduced this bug. Unfortunately since it happened outside of a debug session, I have no further details except the crash log. At least it shows there's some reproducibility to the problem.
Incident Identifier: D2450BE4-5302-418E-9C45-B045EF809254
CrashReporter Key:   4D6BB64F-9973-4866-8605-B7C44B3B7E16
Hardware Model:      iPad5,3
Process:         My App [274]
Path:            /var/containers/Bundle/Application/B87D9196-0284-49BF-9E30-28EF80D15F66/My App.app/My App
Identifier:      my.app
Version:         1.1.0 (1.13.19)
Code Type:       ARM-64
Parent Process:  ??? [1]

Date/Time:       2016-12-30T17:45:27Z
Launch Time:     2016-12-27T17:28:30Z
OS Version:      iPhone OS 10.2 (14C92)
Report Version:  104

Exception Type:  SIGABRT
Exception Codes: #0 at 0x19170f014
Crashed Thread:  7

Application Specific Information:
*** Terminating app due to uncaught exception 'realm::IncorrectThreadException', reason: 'Realm accessed from incorrect thread.'

Last Exception Backtrace:
0   My App                             0x00000001002667e8 realm::Realm::verify_thread() const (shared_realm.cpp:433)
1   My App                             0x00000001001e338c RLMGetObject (RLMObjectStore.mm:59)
2   My App                             0x00000001001da15c +[RLMObject objectForPrimaryKey:] (RLMObject.mm:138)
...

@tgoyne, @TimOliver, @jpsim  : I've hit this once more with the debugger attached. Here's some additional details:
_ream->m_coordinator->m_weak_ream_notifiers has 9 items. This sounds reasonable as I am running many background threads concurrently.
Some print statements:
(lldb) print (__thread_id)pthread_self()
(std::__1::__thread_id) $0 = {
  __id_ = 0x000070000021d000
}

# Printing element 7's m_thread_id:
Printing description of ((pthread_t)0x70000021d000):
(pthread_t) __id_ = 0x000070000021d000

Printing description of self->_realm.__ptr_->m_thread_id.__id_:
(pthread_t) __id_ = 0x000070000052f000

# Printing element 5's m_thread_id
Printing description of ((pthread_t)0x70000052f000):
(pthread_t) __id_ = 0x000070000052f000

So this seems to confirm that we're getting the wrong Realm for the given thread.
Stack trace:
#0	0x000000010f8199ae in _dispatch_once(long*, void () block_pointer) [inlined] at /Applications/Xcode-Archiv/Xcode80.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator10.0.sdk/usr/include/dispatch/once.h:74
#1	0x000000010f8199ae in ::__cxa_throw(void *, std::type_info *, void (*)(void *)) at /Users/benny/Repositories/MS/HockeySDK-iOS/Classes/BITCrashCXXExceptionHandler.mm:80
#2	0x000000010f43ff73 in realm::Realm::verify_thread() const at ../project/Pods/Realm/Realm/ObjectStore/src/shared_realm.cpp:433
#3	0x000000010f3e805e in ::-[RLMRealm verifyThread]() at ../project/Pods/Realm/Realm/RLMRealm.mm:144
#4	0x000000010f2cc763 in RLMVerifyRealmRead(RLMRealm*) at ../project/Pods/Realm/Realm/RLMObjectStore.mm:59
#5	0x000000010f2cc117 in ::RLMGetObjects(RLMRealm *, NSString *, NSPredicate *) at ../project/Pods/Realm/Realm/RLMObjectStore.mm:464
#6	0x000000010f2b7d44 in ::+[RLMObject allObjects]() at ../project/Pods/Realm/Realm/RLMObject.mm:98
...

Also note that this is happening in allObjects now instead of just objectForPrimaryKey:. Reading the pthread_self documentation here, it states:

Thread IDs are guaranteed to be unique only within a process.  A
thread ID may be reused after a terminated thread has been joined, or
a detached thread has terminated.

Is it possible that we're just hitting a collision and the static s_realmsPerPath isn't being cleaned up properly when a realm is no longer needed? I have 76 items in the single value in that map, which is certainly more than the 9 notifiers in the m_coordinator.
According to Wolfram Alpha, there's roughly a 4.25% chance of collision with 76 items bounded to the range 65536 (which the thread IDs appear to be). Could this be the problem here?
I'm guessing we could add some validation logic to RLMGetThreadLocalCachedRealmForPath to validate that the Realm retrieved from s_realmsPerPath has the correct thread ID and remove it from the cache and return null if it doesn't. I'm not sure if this is the best solution, but it's at least one that I see as non-intrusive and I think will work
Let me know if you guys have any other ideas. I'm willing to put the validation fix in if you think it's suitable.

There could be an issue with threadid reuse related to that we get the thread id in two different ways (pthread_mach_thread_np() for the cache and std::this_thread::get_id() for verifying the thread), and if the former happens to reuse IDs when the latter doesn't you'd get the problem you're encountering. I'll investigate if that is possibly the case.

Thread id reuse does appear to be the problem, as std::this_thread::get_id() actually just returns the pthread_t and not the thread id at all, that'll happen to return a reused value at completely different times. Should be simple to fix.

Thanks @tgoyne : when should we expect this to get into a release? I'll try to confirm the fix once it's ready.

We'll be making a release next week, but until then you could build from source to incorporate this fix.


When switching the view (e.g. pres -> camera) while a video is playing, the livestream should continue without an additional press of a button

Is your feature request related to a problem? Please describe.
When switching the view (e.g. pres -> camera) while a video is playing, the livestream should continue without an additional press of a button.

Describe the solution you'd like
Automatically continue the video
Describe alternatives you've considered
A setting on the setting page
Additional context
Firefox 112, (arch/manjaro linux)

More often than not autoplay of videos is blocked by browsers automatically. For Firefox see https://support.mozilla.org/en-US/kb/block-autoplay to change this default behavior.


feat(coral): Add preview banners for Approvals

About this change - What it does
Add PreviewBanner to each pages/approvals/* page component: there is no central Approval page in the Angular app, so we need to granularily redirect to /execAcls, /execTopics etc.
https://user-images.githubusercontent.com/20607294/221599016-7afc414d-bc89-4450-8f70-6f82007f3187.mov
Resolves: #708

These recordings are SO USEFUL!


Fix pathconv issues related to relative paths in path lists

I'm not sure if I got it right, but it seems that the fix proposed in https://github.com/msys2/msys2-runtime/pull/212 doesn't handle values (e.g. potential path lists) being assigned to a process local environment variable, like in a call VARNAME=.:../foo ./my-script.sh.
This tries to add an additional check to cover this case.
@dscho What's your opinion on that?

@lazka

@dscho Could you please have a look at this?


[minizip] Fix BZip2 Dependency on Linux

It was spelled Bzip2 when the dependency was BZip2.
Fixes #3310.

Thank you for fixing this!


Enhance PSUseConsistentWhiteSpace to exclude more special cases when using unary operators

Found when discussing PR #949 , which already tweaked PSUseConsistentWhiteSpace when using unary operators inside parenthesis.
This adds another special case where the rule should be excluded. The community is welcome to provide more cases that need to be treated specially.
Steps to reproduce
Invoke-Formatter -ScriptDefinition '$r = $a -lt -$var'

Expected behavior
$r = $a -lt -$var

Actual behavior
$r = $a -lt - $var

Environment data
This applies also to the latest version of the development branch.
> $PSVersionTable
Name                           Value
----                           -----
PSVersion                      5.1.16299.251
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.16299.251
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           <IP_ADDRESS>

> (Get-Module -ListAvailable PSScriptAnalyzer).Version | ForEach-Object { $_.ToString() }
1.16.1

@bergmeister Is the issue fixed in #949 ? If you are working at the issue or solved it, could you, please, assign it to you / close it etc. ? It would be easier to find issues that are not solved yet and nobody works at them.

@kalgiz No, this issue was created as part of #949 as James was thinking about other special cases that need to be tweaked as well. The PR fixed unary operators, but we thought that e.g. comparison operators would need a similar treatment as well.
Feel free to take any issue that is not assigned to me or where a PR is open against it. Yes, let's start using the rule of assigning issues to ourselves from the point that we start working on it. I left a few comments on some issues and keep some of them in the back of my mind but currently I am not actively working on them. Usually I only work for some time like an hour to do some analysis/repro on an issue and might decide to only leave a comment there so that anyone can start picking it up/continue in the future.


A request for a small tweak in order to support the JinjaX flavor

Hi, @davidodenwald, thanks for the great plugin!
We are using a Jinja2-based component library called JinjaX, which almost plays well with prettier-plugin-jinja-template besides that prettier-plugin-jinja-template ends up quoting variables being passed into the components. That is, a component invocation like this:
<Paginator items={products} />

Ends up being reformatted to this:
<Paginator items="{products}" />

Which changes the code from passing the context variable products into the component as the items parameter, to sending the actual literal string "{products}" in instead.
Do you think it could be possible to either:

Don't quote values that are enclosed by curly brackets.
Allow users to disable this specific feature of quoting values.
Some other solution?

Hey @JakobGM,
I found a similar issue in the prettier project (https://github.com/prettier/prettier/issues/5627) which was solved by adding the parser "lwc" to prettier. This parser removes quotes on attributes if they are surrounded by {} and contain no spaces.
Which should solve the problem you are having with this plugin.
I created a branch that adds support for this parser -> https://github.com/davidodenwald/prettier-plugin-jinja-template/pull/22
The option to switch is named "quoteAttributes".
Feel free to try the feature and provide feedback.

Thank you very much, I have responded directly on #22, it works perfectly :tada:

I merged the branch and released version 1.1.0.


Gitlab pipeline to update 4 instances falls in timeout after 10 min.

Terraform Version
0.13.3
Affected Resource(s)
subscription
Terraform Configuration Files
resource "rediscloud_subscription" "subscription" {
  name                          = terraform.workspace == "prd" ? var.theseus_back_project_id : "${var.theseus_back_project_id}-${terraform.workspace}"
  persistent_storage_encryption = terraform.workspace == "prd" ? false : true
  cloud_provider {
    provider = "GCP"
    region {
      region                       = var.region
      networking_deployment_cidr   = var.redis_subnet
      multiple_availability_zones  = terraform.workspace == "prd" ? true : false
      preferred_availability_zones = terraform.workspace == "prd" ? ["europe-west1-d", "europe-west1-b", "europe-west1-c"] : ["europe-west1-d"]
    }
  }
  dynamic "database" {
    for_each = var.redis_db
    content {
      name                         = database.value["name"]
      protocol                     = "redis"
      memory_limit_in_gb           = database.value["memory_limit_in_gb"]
      data_persistence             = database.value["data_persistence"]
      throughput_measurement_by    = database.value["throughput_measurement_by"]
      throughput_measurement_value = database.value["throughput_measurement_value"]
      password                     = terraform.workspace == "prd" ? data.vault_generic_secret.prd_redis_password[0].data["db_password"] : random_password.redis_password[0].result
      source_ips                   = local.source_ips
      replication                  = try(database.value["replication"], false)
      dynamic "alert" {
        for_each = try(database.value["alert"], [])
        content {
          name  = alert.value["name"]
          value = alert.value["value"]
        }
      }
    }
  }
  depends_on = [google_project_service.rediscloud_service]
}

Debug Output
...
rediscloud_subscription.subscription: Still modifying... [id=1472873, 9m40s elapsed]
rediscloud_subscription.subscription: Still modifying... [id=1472873, 9m50s elapsed]
rediscloud_subscription.subscription: Still modifying... [id=1472873, 10m0s elapsed]
Error: context deadline exceeded
  on rediscloud.tf line 43, in resource "rediscloud_subscription" "subscription":
  43: resource "rediscloud_subscription" "subscription" {

Panic Output
Expected Behavior
The job shoud continue at least 30 min. (timeout value set to 30m) or until the end of the subscription update
Actual Behavior
The job failed after 10 minutes with the error message above.
Steps to Reproduce
On a subscription with 4 micro instances with replicas, update the subscription to 4 high throughput instances with replicas.
Important Factoids
Running on Gitlab pipeline.
Instances on Redis Enterprise Cloud at GCP.
References

Related incident in Redis Labs support: https://support.redislabs.com/hc/en-us/requests/75536


Sheet is not defined

Hi,
I try to take advantage of the keyboard to navigate through the fields. But I have a problem. There's an error "sheet is not defined".
Here is the code (from my page https://www.fluidtopics.com/roi-2/) :
jQuery('#roi').on('keydown', 'input', function(e) {
    var self = jQuery(this)
      , form = self.parents('form:eq(0)')
      , focusable
      , next
      ;
    if (e.keyCode == 13) {
        console.log("enter pressed");
        jQuery(".roiquestion:visible").toggle("slide", { direction: "left" }, 300, function(){
            jQuery(this).next(".roiquestion").toggle("slide", { direction: "right" }, 300);
        });
        focusable = form.find('input').filter(':visible');
        console.log(focusable);
        next = focusable.eq(focusable.index(this)+1);
        if (next.length) {
            next.focus();
        } else {
            sheet.calculate();
            jQuery(".roiquestions").fadeOut(function(){
                jQuery(".roiresult").delay(400).fadeIn();
            });
        }
        return false;
    }
});

Thanks a lot for your help !
PS : I'm working with the 2.0.5 version as this code doesn't work at all with the last revision.

Hi @vguenichon
you should get the sheet object first, since you apply jQuery event handler instead of calx event, based on your code, you can do
var sheet = self.calx('getSheet');

Thanks a lot for your help.
I inserted this line before sheet.calculate(); but now there's another error : sheet.calculate is not a function. Really ? I thought it was ;-)

Errr, sorry its my bad
it should var sheet = jQuery('#roi').calx('getSheet');

No it's mine... ;-) I don't know why I didn't see this before ! Thanks a lot.
Another tjing : I saw there's a new version (2.2.2) with a different approach for calculation. Do you think it would be a big deal to switch to this version from 2.0.5 ?

it should be no problem to just replace the 2.0.5 with 2.2.2, since it is on same 2.x release

Thanks a lot !


Performance issues on Library Refresh

On OS X El Capitan, with Electron v1.4.3, Museeks be2ad47
Refreshing Library takes approximately forever.
With a folder of 25go and about 3200 tracks, it's been more than an hour and the process seems to have completely halt.
I've got events.js:160 Uncaught Error: EMFILE: too many open files, open 'some_path' errors and on resource monitor, the amount of data read by the Electron Helper process is about 220GB, and the computer was dead slow when scanning the folder ...
I'll update this issue as soon as I've discovered something

I would say that it's kind of known issue, it is due to how we extract metadata.
I would recommend trying to profile the app on smaller subset of your collection to see where time is spent. That would be very useful.
Also, can you try building older experimental branch and trying it on your collection?

Yup ! I'll work on that this week-end :)
I suspect some recent changes to be responsible of that because it worked on 0.7 and last time I checked, it also worked at home, on Ubuntu. Just took about 2 ou 3 minutes

This metadata issue should not happen anymore, it's been fixed releases ago.
Here, it's probably a matter of concurrency. In LibraryActions.js:123, can you change the fsConcurrency to a lower value and tell me how it goes ?

That's what causes the issue. Defining const fsConcurrency = 32; does not block the refresh.
More, the perfs are substentially better, I could scan the whole folder ( 3207 tracks for a 26GB folder ) in 1mn 33 seconds.

That's the expected time


Remove me from CDN codeowners

No one from CLI team owns the CDN commands or SDK.

Can one of the admins verify this patch?

Can one of the admins verify this patch?


Adding bottom reached events + fix start event flood on bottom limit reached

Hello,

start event is now triggered only once when the real start begins. It was flooding when bottom limit is reached and the top css property have to be updated to push up the sticked element.
To keep the event triggering when top is updated after start, the update event have been added. So it floods like start did before.
bottom-reached is triggered when sticked element reached the bottom space limit
bottom-unreached is triggered when sticked element is not reaching the bottom space limit

Hope you will find this usefull...

Made my pull request from my master branch.
Closing PR as other changes are coming into this pull request


Redesign SDLEnums to not be objects

tl;dr Lots of enum objects permanently in memory now, could do conversion between String Enum <–> Integer Enum instead. Less memory overhead, probably more CPU overhead, likely negligible. Removes an enormous amount of code.
Right now, Enums are designed as objects. From what I understand, there are a few reasons for this:

Namespacing. You can type SDLAmbientLightStatus and get a list of the component enums.
Typechecking. You can call the [valueOf:] method on an enum and get the object, or nil if it is not a component object.

I feel that the cost of all of these being objects does not surpass the benefits. These objects attempt to lazily load their strings into objects in global scope. These objects will remain in existence for the lifetime of the app. In addition, they are not thread-safe to create right now.
The most elegant way I've thought of to solve this problem is to convert back and forth between Strings and Objective-C enums (Integers) at the time that a string enum is received or should be sent. This is done with a reversible NSValueTransformer that simply converts the two. This allows for very good type checking, switch statements, basically no notion to the outside developer that they're dealing with anything other than an objective-c enum. This would remove a huge amount of code as well.
The downside is that it is likely more computationally expensive to switch between the two. However, it is more scalable. There are already a huge number of enums, and continuing to add more only increases the memory overhead, however adding more enums that use the conversion method would use no additional overhead.
Doing it this way would look something like this:
+ (NSValueTransformer *)stateJSONTransformer {
    return [NSValueTransformer mtl_valueMappingTransformerWithDictionary:@{
        @"open": @(GHIssueStateOpen),
        @"closed": @(GHIssueStateClosed)
    }];
}

Note this example was taken from the README of the open source project Mantle, and the mtl_valueMappingTransformerWithDictionary method is just a helper category method for NSValueTransformer. GHIssueStateOpen / GHIssueStateClosed are defined as enums.

I have come up with a (completely untested) possible method of doing this. See the following gist for an example.
https://gist.github.com/joeljfischer/67bd1d4da444e948cb5d
There are still objects here, each SDLEnum object holds a single (enforced by a singleton pattern) dictionary held in it's overridden +[map] method. This maps a enum value to a string. The superclass SDLEnum contains class methods that are capable of converting between the two. Enum -> String is a simple dictionary lookup in 0(1) time. String -> Enum is 0(n) time worst case.
To the developer, all they ever need to deal with are the public enum values. This will help with enforcing correct values and will be very fast, since they're just integers. At runtime, when we need to, we'll convert back and forth for the protocol.

hi, Joel
Thanks for your gist. I'll hold on them and try it tomorrow and keep you
updated.
Thanks
Yingang
2015-02-02 23:09 GMT+08:00 Joel Fischer<EMAIL_ADDRESS>
I have come up with a (completely untested) possible method of doing this.
See the following gist for an example.
https://gist.github.com/joeljfischer/67bd1d4da444e948cb5d
There are still objects here, each SDLEnum object holds a single (enforced
by a singleton pattern) dictionary held in it's overridden +[map] method.
This maps a enum value to a string. The superclass SDLEnum contains class
methods that are capable of converting between the two. Enum -> String is a
simple dictionary lookup in 0(1) time. String -> Enum is 0(n) time worst
case.
To the developer, all they ever need to deal with are the public enum
values. This will help with enforcing correct values and will be very fast,
since they're just integers. At runtime, when we need to, we'll convert
back and forth for the protocol.
—
Reply to this email directly or view it on GitHub
https://github.com/smartdevicelink/SmartDeviceLink-iOS/issues/20#issuecomment-72472497
.

genivi-smartdevicelink mailing list
<EMAIL_ADDRESS>https://lists.genivi.org/mailman/listinfo/genivi-smartdevicelink

Hey Yingang, I would not recommend trying to implement the ideas presented in the gist into the library at this point. To actually do so would require a lot of work and changes to many places in the library. Many/all enums would need to be altered to work in the manner described, and lower level changes to message creation and parsing would need to be implemented. The gist was intended strictly as a presentation of ideas for discussion at this point.

Note that all NS_ENUMs could be moved to a separate public enum file, all +[map] methods could be moved into SDLEnum base class as separate methods, such as +[appHMITypeMap]. This would eliminate a crazy amount of classes, and allow the SDLEnum class to be private to the library, reducing public class exposure.

Closed in favor of #425


Payment error:The provided currency -[EGP] is not supported

Payment error:The provided currency -[EGP] is not supported with this card type. Supported currencies: []
I even tried to change the currency to USD but still no use the error appears with payment trails

2checkout say it's due to them having switched MC and Visa to paypal or whatever... Contacted them several times, takes ages to reply. Once I got a reply they told me I probably use an outdated shopify plugin... SHOPIFY? Waited 3 weeks for a useless response. Do you have any update on this?`
I think I'll look for another payment service.

I'm really sorry It took me that long they replied to me saying the payments are now only available through paypal and that's the way to resolve the issue not the best reply so I switched to another payment gateway

Same here, changed payment gateway... 2checkout became useless.


Use Duration instead of u32 when representing milliseconds

Fixes #691.
cc @sdroege @EPashkin

CI is unhappy

CI still unhappy. The examples need fixes


MPLUGIN-244  Help mojo generates Javadoc, which is not accepted by JDK 8...

The  close tag is causing Java 8 doclint to fail.
Stackoverflow http://stackoverflow.com/questions/13720626/is-javadoc-html-or-xhtml article suggests JavaDoc must be in html as opposed to xhtml.

Already fixed in 3.3


Issue-ovveride by server.js

Automated Review Comments
Issues in backend/package.json:

(2, 'Hardcoded string found')
(4, 'Hardcoded string found')
(5, 'Hardcoded string found')
(6, 'Hardcoded string found')
(7, 'Hardcoded string found')
(8, 'Hardcoded string found')
(9, 'Hardcoded string found')
(10, 'Hardcoded string found')
Issues in backend/server.js:
(2, 'Hardcoded string found')
(14, 'Hardcoded string found')
(26, 'Hardcoded string found')
(30, 'Hardcoded string found')
(31, 'Hardcoded string found')
(39, 'Hardcoded string found')
(40, 'Hardcoded string found')

I got it.


Unable to use @Serenity.Decorators.panel() along with onDialogOpen() event on dialog.ts

If you use the Decorators.panel on a dialog.ts and you also use the onDialogOpen() event handler, you get the following error
jquery-3.3.1.js?v=agfan66TS68_dJ6Ha7_dlg2:7856 Uncaught RangeError: Maximum call stack size exceeded
Once you remove the onDialogOpen() event handler on the dialog.ts , there is NO error and the dialog is in panel mode.

Are you calling same dialog.ts from onDialogOpen() ?

Thank You!!
Your question lead me to  realize that I had   super.dialogOpen() (instead of super.onDialogOpen())  in the onDialogOpen() code.
Fixing this resolved the issue.


Titlebar Customization: Event for knowing any time the size changes

The explainer covers using the resize event for detecting bounds changes that need to be accounted for within an application. However, there are situations that can trigger the bounds to be changed that aren't surfaced with that event. For example, display scale changes (at least on MacOS.)
Test case:

Open DevTools
Navigate to console panel
window.addEventListener('resize', (event) => console.log(event)) in the console to see events.
Resize the window to confirm it is logging
Clear console
Go to your OS display settings and change the scale.
(At least on MacOS) notice no resize events fire, yet the size and location of the window did change, along with the size of the titlebar of the browser.

Perhaps one solution (which kinda works in tandem with some of the issues in #177 to alleviate the need for introducing CSS additions up front) is for a new event to be introduced.

The application must be using this type of titlebar to receive this event. (Unless we find some compelling use-case for it externally.)
When any size of the control bounds occurs, the browser shall fire a controlsOverlayResized event.
The event shall contain the new bounds rect data. (Avoiding the need for a developer to make a call for it.)

If we could also get a new debounce option added to EventTarget.addEventListener for this, that could mean the engine can handle not firing this off too often (in case that were to somehow happen.) For example:

const resizeHandler = function(event) {
  // Update page titlebar bounds to match new overlay bounds.
};

window.addEventListener('controlsOverlayResized', resizeHandler, {debounce: 500});

This would make the engine not fire the event until the given number of milliseconds after last event trigger has happened. Giving developers an efficient way to keep up to date with JS without thrashing with every minor resize of a window.

That being said, I still think a CSS solution (as #177 is discussing) is the best long-term solution. If we can't get much headway on a course there in CSS however, something along these lines in JS could be a more amicable (and robust) solution to get in front of developers sooner.

It currently isn't a part of the viewport and is kept z-indexed on top of it. Hence why content can flow underneath it in the viewport. If it were attached to the viewport so it was technically in the content area, that introduces some slight logistical issues that now the viewport isn't a rectangle shape. (I may be mis-understanding the definition/scope of viewport here with what I as a developer generally see as the viewport compared to what a browser engine counts as a part of it.)

I think this is just a terminology disconnect — what you describe is what I mean by ”part of the viewport.” I might be using the wrong word. What I meant to contrast the current proposed approach with wasn’t a model that was polygon-aware, but rather one where the area within the titlebar that’s actually available to devs was realized as its own window/frame, as in the Picture in Picture API.
I’m confused by:

introduces some slight logistical issues that now the viewport isn't a rectangle shape

— since that’s exactly the reason I asked; the current proposal appears to introduce that exact issue? The significance of whether effectively eliminated portions of the viewport happen to be implemented (unobservably) in terms of z-index overlays at the browser chrome level or something else isn’t clear to me; that is a polygon, it’s just one that platform APIs will be lying to us about (whereas two frames would seemingly mean two “honest“ rects).

Currently, we're working on ironing out the the CSS env() solution: #177 #203 and it seems the "resize" event should suffice for anyone relying on the JavaScript APIs for layout, so it seems like this issue has been resolved. Feel free to reopen if there's something I missed


Kotlinx Immutable Collection JSON Adapters

I have created JsonAdapter classes to deserialize PersistentList and PersistentMap types from kotlinx.collections.immutable and I'm looking for the right place to share these with the community. @ZacSweers do you think these make sense to contribute to MoshiX under moshi-adapters?

I'd be open to adding them here, but as a separate artifact given the dependency. moshi-adapters-kotlinx-immutables?


All the Protobuf tests and examples should use the standard Protobuf naming conventions

All the Protobuf tests and examples should use the standard Protobuf naming conventions. For RPC methods, it's Pascal case.

Originally posted by @bernardnormier in https://github.com/icerpc/icerpc-csharp/pull/3753#discussion_r1394439715

There are still a number of bugs. For example:
package IceRpc.Protobuf.Tests;

is not a normal Protobuf package name,


Added function to expose available targets

Exposes a list of available targets; this data is currently a static copy of the data from the legacy apiport /api/targets endpoint.

@coderandhiker Looks like the CI build is failing because there should be some header, probably with the MIT information at the top of the file?

Rebuilt in VSTS - prior build failure was a transient network failure during a git fetch


handle key command doesn't fall through on false

My handleKeyCommand on the editor checks for backspace, and, given a condition, operates some actions. If the condition is not met, i'd like to apply normal backspace event.
So, as advise in the doc, i return false in my handleKeyCommand function.
But however i try, I can't get it to work, and the normal event never fires.
Is that an issue or some behavior i didn't master ?

In the current API, the way to fall through is returning not-handled in the handleKeyCommand method.


Better output (statistic) + fix NPE

Description
Better output (statistic) + fix NPE
Type of change

[ ] Refactor
[x] New feature
[x] Bug fix
[ ] CVE fix
[ ] Optimization
[ ] Documentation Update
[ ] Configuration Update
[ ] Bump-up dependent library
[ ] Bump-up library or tool used for development (does not change the final image)

/retest

/retest

/retest

/lgtm

/approve


Update README.md

Update the README with "better" readability of example code.

thanks for your contribution bro and also sorry for being so late I'll be more active from now on.

thanks for your contribution bro and also sorry for being so late I'll be more active from now on.


In the Wiki page on the operator, use vmap to bind gs to Grepper in visual mode

Was just running through the wiki page on operators and noticed that the following vimrc snippet was included:
nmap gs  <plug>(GrepperOperator)
nmap gs  <plug>(GrepperOperator)

Instead of using nmap twice in a row, you probably intended to use vmap on the second line.
Kinda wish I could open a pull request against the Wiki, but I guess an issue will have to do.
Lemme know if this was unclear, and btw; this is an awesome plugin!

Oops. Thanks for noticing!

this is an awesome plugin!

Thanks again!

By the way, most people really want xmap instead of vmap, because the former maps for visual mode and the latter for visual mode and select mode. Select mode is usually never used and it makes no difference in practice, but using xmap feels more precise.


Add go vet to the Makefile and fix its errors

Issue link

What changes have been made

Added go vet to the Makefile
Fixed its errors

Verification steps

Checks

[ ] I've made sure the tests are passing.
Testing Strategy

[ ] Unit tests
[ ] Manual tests
[ ] Testing is not required for this change

@anishasthana I think MCAD-CI is flaky as I don't think its failure related to the changes in this PR. Could you please try rerunning it?

Failed again. Same failing test "MCAD CPU Preemption Test"... 😢
https://github.com/project-codeflare/multi-cluster-app-dispatcher/actions/runs/6876210215/job/19098434211#step:8:722
It seems it is failing in other PRs as well.
https://github.com/project-codeflare/multi-cluster-app-dispatcher/actions/runs/7018959159/job/19095405569#step:8:726
https://github.com/project-codeflare/multi-cluster-app-dispatcher/actions/runs/7003208146/job/19048461449#step:8:725

Thank you for the PR. I am curious, if we are doing %-based CPU calculation then are we diverging from the way Scheduler does accounting? and would that be ok?

Hmm @asm582 are you aware of any recent issues with CI?

I usually set 2 CPUs and 8 GB RAM as resource setting in podman or docker desktop and they would run to completion locally. I am not sure if we changed resource requirement in the CI system

To be clear, tests like this are what are fragile in my opinion: https://github.com/project-codeflare/multi-cluster-app-dispatcher/blob/main/test/e2e/queue.go#L97-L125 because they are using hardwired CPU requests (not CPU requests that are calculated dynamically by the test as a fraction of the available capacity on the actual cluster when it is run).
Here it creates an AppWrapper with a 1100 CPU request (2 pods at 550 each) and then assumes that if it creates a 854 CPU request (2 pods at 427 each..the function name is misleading) it won't fit.  If docker is limited to 2 CPUs, then the worker nodes have 4000 CPU capacity, Kubernetes + the mcad operator take around 2100 CPU and the math works as expected. The slightest change in available resource (or in the resources used by the system pods) and the test doesn't work as expected.

@dgrove-oss thanks for the detailed explanation of the root cause of the CI failure!
I noticed that these fragile tests were commented out temporarily in mcad v2. Should we adopt a similar approach here? Can this PR be approved even though the CI is currently failing?


Introduce compact callback declaration

tsc: 2.1.6
Originally from: http://stackoverflow.com/posts/42322317
I can see that needing to declare the argument name in the callback function type could be redundant, and MAY BE make even less sense in higher order function.
So maybe it is beneficial to support this shorten form arrayCompare(f: (Ord) => (Ord) => boolean)?
Do you see other application?
One drawback it that the compiler need to add arbitrary names to make completion consistent:

The problem is we already have loosely typed function declaration like var eq: (a, b) => boolean where a/b only stands for arity but not type. 😞

Yes, but on the other hand we can have this rule kicks in only if the a / b can be resolved as types.
I think that is still doable.

only if the a / b can be resolved as types.

This rule is too sloppy, consider:
(str, number) => string

The first one is not a type, but the second one is. How to resolve this signature?
Also, this requires resolving new parser conflict
(Gen<A, B>) => string

Cannot be determined to be a syntax error or not.
Another confusion:
type A = ({a: string, b: number}) => string
var A = ({a: string, b: number}) => string

has totally different meaning.

(str, number) => string

Would stay this won't apply. number is still name.

type A = ({a: string, b: number}) => string

is a valid type, because you are doing a type declaration.

var A = ({a: string, b: number}) => string

this would be an implementation.
One thing TypeScript good at is a clear separation of type definition and implementation, because the implementation side is just JavaScript.
So determining which is which is not too difficult (unless I make mistakes, which always happen more then I would like to. 🌷 ).
Of course, there could be still confusing cases.
It would be great to list them out and see if this proposal make sense or not. 🌷

(Gen<A, B>) => string

Not sure what do you mean here. If this proposal is accepted and implement, would it be considered correct syntax? e.g. foo<A,B>(fn: (Gen<A,B>) => string)?

(Gen<A, B>) => string
is a syntax error now. If the proposal is accepted, this is no longer a syntax error. Error handling in parser requires rewriting (this impacts transpiling).

Another problem: we don't have types for spread arguments:
(a, ...b: any[]) => void

Another problem: we don't have types for spread arguments:

(string, ...string[]) => void ?

Now consider: merging all rules mentioned above into one rule to parse and check function type (Especially, pay attention to how errors should be reported. For example, how generic argument type error is reported as I pointed above). The final rule will quickly explode when new syntax is introduced.
I found myself perplexed when writing it out. It probably means users will be confused too.

Error handling in parser requires rewriting (this impacts transpiling).

Yes, that may need to change, but also may not. It depends on when the arbitrary argument is injected.
When (Gen<A,B>) => string is converted back to (arg1: Gen<A, B>) => string, then the error handling would be the same.

merging all rules mentioned above into one rule to parse and check function type

Actually there is only a few:

If in type declaration, the code is in the format of (Type1, Type2, ...TypeN) => TypeR (or declaration without named argument), then
add the arbitrary argument so it becomes (arg1: Type1, arg2: Type2, ...argn: TypeN) => TypeR

Then parse as normal.

When (Gen<A,B>) => string is converted back to (arg1: Gen<A, B>) => string

When? You have to know  Gen is a generic type at first because

we can have this rule kicks in only if the a / b can be resolved as types.

If it isn't, should Gen<A, B> parsed as the old style function type? So it is a syntax error, not a type error.

When? You have to know Gen is a generic type at first because

If Gen / A / B / string can be resolved as Type and generics, then yes, otherwise, no.

No, you cannot.
To resolve type information, you need to have AST because TSC is syntax driven. To have AST, you have to parse. To parse you have to know if Gen is resolved to type.
The rule you listed is not sufficient, if without specifying how type information is integrated in parsing.

I see. I'm mentally handicap when talking about AST, so I trust your judgement. 😛
In the SO post it mentioned Haskell.
So Haskell seems to support this syntax.
Can some idea be drawn from that? Or it is a radical change?
Would it be possible that when tsc parses (Gen<A, B>) => string, it recognizes the param name is missing and perform the injection there so it can continue parsing?
One key is this rule only applies during type declaration, i.e. type A = ..., fn: ..., interface X { (...) => ..., etc.

So Haskell seems to support this syntax.

Of course. And Haskell does not support untyped function type (a, b) => void so no conflict.

Would it be possible that when tsc parses (Gen<A, B>) => string,

I don't know whether it is possible without parsing conflict before thorough mulling. It requires a proposer to bring out a viable algorithm.

The requirement to give names to symbols that you will never subsequently use is one of TypeScript's biggest syntactic warts. I think it's worth rectifying even at the expense of breaking changes.

As noted by @HerringtonDarkholme, this would be a breaking change.


Strange behavior with stdout

I noticed some strange behavior with the handling of process killing in regards to stdout/stderr error.
You can reproduce it by running the example (with no timeout -c flag) and then doing a killall -9 ping during the run. You should see something like this:

The first section logs the stdout using the logging code in the select statement here: https://github.com/ShinyTrinkets/overseer/blob/master/examples/simple-overseer/main.go#L42
If you do a killall, now it appears to revert back to the built-in overseer logger (eg prefixed with INFO:) and not the logger in the example code. Maybe the process reference is breaking somehow?
I'm noticing that my monitor fails to output logs as I would expect after a process is killed which is what made me investigate this further.
Thanks for any insight!

Thanks for raising this issue
You're right, the pingCmd is deleted on every restart of the proc, when it's supervised, so the reference is lost in that example..
I didn't think about that when I wrote that example.
There is a way to intercept the log messages, by changing your logger. The Overseer needs a logger and you can provide your own. In the Supervise function, this line log := ml.NewLogger("proc") creates a separate log instance where all the logs from the current proc are written.
A quick implementation would be for the Overseer to give a more meaningful name to the logs, so that when you create your own instance, you could filter the processes by name.
But I think the best aproach would be to create log emitter in the Overseer, like we have a status emitter. You would subscribe to it, receive the logs and filter them by proc, if you want.
This will take some time to implement and I don't have that much time now. In case you want to try to implement this, I can help you. If not, you will have to wait some time.
Or maybe you have other ideas?

I still have to fix this, I didn't forget, but I don't know when I'll do it. As it is right now, it's a pretty nasty user experience and must be fixed.

WIP changes for watching logs: https://github.com/ShinyTrinkets/overseer/commit/1f67a51ea008fdc4f6b767ddd35100487435afbb
There's just a little left to do and I'll make a release.

Closing this issue due to inactivity, feel free to open again if needed.


End pointer is not correct

The end pointer value is not correct.
I get such output from printing it, using GCC/Clang on x86_64.
Value is 0xe0001, and expectation is 0x5574b697d01e.
Basic Example
Size: 14
Start: 0x5574b697d010
End: 0xe0001
Hello, World!

Hello.c.gz
Hello.dat.gz

Oops, I realized why it's wrong after examining the test code shortly. Sorry, I close it.


"Installing Virtualbox Guest Additions 5.0.4 every vagrant up

Hello,
I have this:
(lab)luis@spinoza:~/lab/sandbox/akd-iac/vagrant_akd$ vagrant --version
Vagrant 1.7.4
(lab)luis@spinoza:~/lab/sandbox/akd-iac/vagrant_akd$ vagrant plugin list
vagrant-cachier (1.2.1)
vagrant-http-basic-authentication (0.1.1)
vagrant-share (1.1.5, system)
vagrant-vbguest (0.11.0)
(lab)luis@spinoza:~/lab/sandbox/akd-iac/vagrant_akd$

My problem is that every time I do a "vagrant up" I get

an "Installing Virtualbox Guest Additions 5.0.4"
GuestAdditions versions on your host (5.0.10) and guest (5.0.4) do not match.

All this take a lot of time ;(
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
==> default: Forwarding ports...
    default: 22 => 2222 (adapter 1)
==> default: Running 'pre-boot' VM customizations...
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: <IP_ADDRESS>:2222
    default: SSH username: vagrant
    default: SSH auth method: private key
    default: Warning: Connection timeout. Retrying...
==> default: Machine booted and ready!
GuestAdditions versions on your host (5.0.10) and guest (5.0.4) do not match.
stdin: is not a tty
Reading package lists...
Building dependency tree...
Reading state information...
dkms is already the newest version.
linux-headers-3.16.0-4-amd64 is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 33 not upgraded.
Copy iso file /usr/share/virtualbox/VBoxGuestAdditions.iso into the box /tmp/VBoxGuestAdditions.iso
 ==> default: Waiting for cleanup before exiting...
mount: /dev/loop0 is write-protected, mounting read-only
Installing Virtualbox Guest Additions 5.0.4 - guest version is 5.0.4
stdin: is not a tty
Verifying archive integrity... All good.
Uncompressing VirtualBox 5.0.4 Guest Additions for Linux............
VirtualBox Guest Additions installer
Removing installed version 5.0.4 of VirtualBox Guest Additions...
Removing existing VirtualBox DKMS kernel modules ...done.
Removing existing VirtualBox non-DKMS kernel modules ...done.
Copying additional installer modules ...
Installing additional modules ...
Removing existing VirtualBox DKMS kernel modules ...done.
Removing existing VirtualBox non-DKMS kernel modules ...done.
Building the VirtualBox Guest Additions kernel modules ...done.
Doing non-kernel setup of the Guest Additions ...done.
You should restart your guest to make sure the new modules are actually used

Installing the Window System drivers
Could not find the X.Org or XFree86 Window System, skipping.
An error occurred during installation of VirtualBox Guest Additions 5.0.4. Some functionality may not work as intended.
In most cases it is OK that the "Window System drivers" installation failed.
stdin: is not a tty
Vagrant exited after cleanup due to external interrupt.
$

is that normal ?

Hi,
no, it's not. From your log, it looks like the iso file on your host machine is old.
The line Installing Virtualbox Guest Additions 5.0.4 refers to the version of the used installed script. This script was taken from your the /usr/share/virtualbox/VBoxGuestAdditions.iso.
This path is the first one the iso auto detection feature looks for an iso file. My guess is, that somehow your VirtualBox installation got messed up during an update.
If that's true, you should try to clean up your old installation. I'm not sure what's the best option here. But maybe you can try to delete/purge your current installation and the /usr/share/virtualbox directory and reinstall?
Simply deleting /usr/share/virtualbox/VBoxGuestAdditions.iso should get rid of your immediate problem (on the possible expense of the need to download the iso file for each update)

I've got a similar issue, so I'm asking here instead of open a new issue. The plugin installs the guest correctly, but after an vagrant halt && vagrant up it installs the guest again, assuming that the release is different:
Got different reports about installed GuestAdditions version:
Virtualbox on your host claims:   5.0.16 r105871
VBoxService inside the vm claims: 5.0.16
Going on, assuming VBoxService is correct...

Shouldn't there be a way to ignore that (by default, by setting) and do something like a weak comparison?

@fnordfish I would suggest adding something like this code here: https://github.com/dotless-de/vagrant-vbguest/blob/master/lib/vagrant-vbguest/machine.rb#L73
return :unmatched if host_version != guest_version && host_version.scan('/v([a-zA-Z0-9.])*/')(.*)')[0] != guest_version.scan('/v([a-zA-Z0-9.])*/')(.*)')[0]

I'm not a ruby guy so sorry if there's a syntax error...

It also downloads the same ISO file every time instead of checking for a saved copy


initial commit of readme file for content creator on how to create tutorials

I'm taking over so that I can cherry pick just the markdown file.

I think this should do it.