Layered box-shadows

Hi all,
I stumbled upon this article https://tobiasahlin.com/blog/layered-smooth-box-shadows/ and thought this approach might be an idea to improve our .shadow utilities.
Whether those additional bytes are worth it, depends on your comments about this topic.
Have a nice day
midzer

From an aesthetic point of view, I like it. We'll have to see the difference to really decide if it's worth it.

I think it's a great suggest by @midzer; I normally use this approach when I building enterprise web apps

Awhile back I created a function and mixin after reading Tobias's post. See https://codepen.io/emdeoh/pen/zYYGZGx.
@function diffuse-shadows($size, $color: rgba(0,0,0,.125), $multiply: false) {
  $val: 0 1px 1px $color;
  @for $i from 1 through $size {
    @if $i % 2 == 0 {
      @if $multiply == true {
        $i: $i * 2;
      }
      $val: #{$val}, 0 #{$i}px #{$i}px #{$color};
    }
  }
  @return $val;
}

@mixin diffuse($size, $color, $multiply) {
  box-shadow: diffuse-shadows($size, $color, $multiply);
}

.mixin-sm { @include diffuse(4, rgba(0,0,0,.1), false); }
.mixin    { @include diffuse(8, rgba(0,0,0,.075), false); }
.mixin-lg { @include diffuse(16, rgba(0,0,0,.05), false); }
.mixin-xl { @include diffuse(16, rgba(0,0,0,.05), true); }

Closing as a won't fix, thanks for the idea though!


Drop Redis KEYS command usage in watcher and twitter

There has been no activity on this issue for more several months. We are closing it. If you think this still needs to be addressed please open a new issue.


Update of ar-tu-do

Hi this is Marcel from the ar-tu-do project. The project you included here had a successor that has more features and is, most important, more stable regarding the simulation. Additionally the official simulator of the F1Tenth Group is included. You can check it out here: https://github.com/arpg-sophisticated/ar-tu-do
Maybe you want to update this. If so, please credit both groups of authors
Cheers
Marcel

Thank you for the pointer!


Empty record type doesn't parse

Here's the empty record type:
$ echo {} | zq -z  "cut t=typeof(.)"  -
{t:({})}

And here is an attempt to use it in a Z type def which is a syntax error:
$ echo {} | zq -z  "type empty = {}; cut t=empty"  -
zq: parse error: error parsing Z at column 15:
type empty = {}; cut t=empty
          === ^ ===

(I suppose the fix probably involves changing a + to a * somewhere in the grammar...)

This was fixed..
% echo {} | zq -z "yield typeof(this)" -
({})


Change kafka version to 3.8.1 in install guides

PR description
Current link for kafka in documentation returns 404. Changed to a new one, and updated kafka docker image version as well for consistency.
Link checker
The links will be checked by the build agent automatically once you create or update your PR.
You can use the following command to check the broken links locally.
docker run --rm -it --network=host --name=linkchecker ghcr.io/linkchecker/linkchecker --check-extern --no-warnings http://<IP_ADDRESS>:4000/

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


recursively set indentations for child arrays

PR for #163
I was use auto generated complex arrays with personal data for tests, so I cant publish it.

Check the failures, something is not working as expected: https://travis-ci.org/zendframework/zend-code/jobs/445104487#L653

lol. TABS > spaces

Last one: https://travis-ci.org/zendframework/zend-code/jobs/445367598#L675-L680
Maybe one level of nesting less would suffice :+1:


Creating a dev environment?

Sorry if this is already in the docs, but what is the proper way to create a development environment?
I attempted create an env with below commands but ended up with missing libraries like dask, xarray:
git clone https://github.com/CROCODILE-CESM/regional-mom6
cd regional-mom6
conda env create -f environment-ci.yml

make new conda env *

mamba install esmf
git clone regional_mom6 && cd PATH
pip install -e .
This gives an editable install. I find editable install more robust with pip than with mamba, but you can't install esmf via pip

@alperaltuntas if this works we should put this explicitly in the README!

I got:
      ModuleNotFoundError: No module named 'mpi4py'
      [end of output]

commit hash: f562b1

Got the same error again when I attempted a fresh installation.

What about with the conda install, same as the CI uses? Might be somehow tied to pip

I manually conda-installed netCDF4, which apperaently requires mpi4py, and it seems to have passed that step and continuing with the install just fine so far.

I got another error later in numba installation:
      RuntimeError: Cannot install on Python version 3.13.0; only versions >=3.9,<3.13 are supported.
      [end of output]

I got another error later in numba installation:
      RuntimeError: Cannot install on Python version 3.13.0; only versions >=3.9,<3.13 are supported.
      [end of output]

Huh, that's interesting, are you installing it on Python 3.13? Other than dropping the version trying this yml file might work as well. It has everything except regional-mom6 itself, so adding a sys.path.insert(0,...) than importing regional_mom6 should work

Main Project issue for this is https://github.com/CROCODILE-CESM/crocodile-regional-ruckus/issues/5

Solved.


feat(autoware_adapi_v1_msgs): add mrm state msg

Description

Add msg to express MRM status and behavior
Add srv to activate each MRM

Related links

https://github.com/autowarefoundation/autoware.universe/pull/2070
https://github.com/autowarefoundation/autoware.universe/issues/1856
Tests performed

https://github.com/autowarefoundation/autoware.universe/pull/2070
Notes for reviewers

Pre-review checklist for the PR author
The PR author must check the checkboxes below when creating the PR.

[x] I've confirmed the contribution guidelines.
[x] The PR follows the pull request guidelines.

In-review checklist for the PR reviewers
The PR reviewers must check the checkboxes below before approval.

[ ] The PR follows the pull request guidelines.
[ ] The PR has been properly tested.
[ ] The PR has been reviewed by the code owners.

Post-review checklist for the PR author
The PR author must check the checkboxes below before merging.

[ ] There are no open discussions or they are tracked via tickets.
[ ] The PR is ready for merge.

After all checkboxes are checked, anyone who has write access can merge the PR.

https://github.com/autowarefoundation/autoware_adapi_msgs/pull/16#issuecomment-1309565681


Factur-X Version updated

Refac: also changed factur-x folder for future updates

Process for updating

download ZUGFeRD zip here https://www.ferd-net.de/standards/paket-downloads/index.html
unzip, copy folder factur-x content into schemas

Another refac idea:
Adding of a Version class that encapsulates the various validation file would be helpful? Maybe even use a version symbol, like to_xml(version: :factur_1) or to_xml(version: :zugferd1)? Could try to add it, if you also feel that would be an improvement.

Another refac idea:
Adding of a Version class that encapsulates the various validation file would be helpful? Maybe even use a version symbol, like to_xml(version: :factur_1) or to_xml(version: :zugferd1)? Could try to add it, if you also feel that would be an improvement.

To be honest, I think I'd be leaning more towards separate classes for the various formats to get rid of the if/else constructs entirely. Means a lot of duplication but I think it might be worth it for its explicitness and would make the builder constructs more readable. What do you think?
(Would also make it much easier to integrate things like XRechnung with potentially very different XML structures)

@zealot128 Quick note for next time (I didn't catch it as well in your PR) - The filename of the ReusableAggregateBusinessInformationEntity is too long for gem build which is why I renamed the file (And then you have to change the file reference in the root xsd as well - See 45ba1cfcb8181a282203875ce9e7b3c5fc5dd38d)
Bit of a bummer but it is what it is - I would like to keep the schema in the gem to be able to use the validators.


Update Ecto to 3.3

Change version to 0.8
Update Ecto to 3.3

Hi, thanks for your contribution.
I'm wondering if this is necessary at all, since you can always write
{:ecto, "~> 3.3", override: true},
{:ex_audit, "~> 0.7"}

in your mix.exs.
The override: true thing could be omitted if instead of specifying a fixed ecto version, we specify that we need Ecto 3.2 or higher with {:ecto, ">= 3.2"} in ex_audit's mix.exs.

The override: true thing could be omitted if instead of specifying a fixed ecto version, we specify that we need Ecto 3.2 or higher with {:ecto, ">= 3.2"} in ex_audit's mix.exs.

Should I do that instead? I first ran into this issue trying not to use override: true

I think I ran into that issue, however ex_audit 0.8 is not published yet...
I was going to ask if you could publish 0.8, but reading the thread, shouldn't this fix be ~> 3.2  (allowing only versions between >= 3.2.0 and < 4.0) instead of ~> 3.2.0 or => 3.2.0?
The version on master currently allows 4 and above.


Add ODBC driver

I write ODBC driver for DBI library based on my Lua-ODBC library.
I slitly change tests:

I use select cast(? as <TYPE>) as retval to test type encodings.
I found that ODBC drivers for MySQL/PgSQL does not get any error when call prepare with invalid SQL. So I also try call execute.
I do not call test for returning id because MySQL does not support it.

For now I add DBI.lua to my repo because I want run tests on Travis. But I will not add this to luarocks.
I add it only after you change main luadbi module so it can load ODBC driver. So i can just add luadbi as deps to my module.
PS.
I also add some tests to fetch, close, tostring and execute same statement with different query multiple times

DBI.lua now checks for driver 'ODBC' as dbdodbc as well.

Just tested my ODBC driver with v0.6.
All works.  Add module to luarocks.


pubsub fails if data key is not present

If a message is published with a string of 0 length (topic.publish( '', url=url, title=title)) when the message is received there is no data field in the message and a key error is thrown when trying to transform the message from the PubSub API representation.
https://github.com/GoogleCloudPlatform/gcloud-python/blob/master/gcloud/pubsub/message.py#L74
Traceback (most recent call last):
File "/en_notifications/en_notifications.py", line 51, in <module>
received = PS_SUBSCRIPTION.pull(max_messages=PULL_COUNT)
File "/usr/local/lib/python2.7/dist-packages/gcloud/pubsub/subscription.py", line 212, in pull
File "/usr/local/lib/python2.7/dist-packages/gcloud/pubsub/message.py", line 74, in from_api_repr
for info in response.get('receivedMessages', ())]
data = base64.b64decode(api_repr['data'])
KeyError: 'data'

Thank you for the report!


Cannot receive firebase analytics from IOS

I have configured my application based on the firebase_analytics package documentation. My Podfile starts with $FirebaseAnalyticsWithoutAdIdSupport = true. But I can only receive Android analytics.

My code:
final FirebaseAnalytics analytics = FirebaseAnalytics();

void onGroupCreate(String groupId, double totalInvites, bool isStatus) {
      analytics.logEvent(
        name: "create_group",
        parameters: <String, dynamic>{
          'user_id': globals.user.userId,
          'group_id': groupId,
          'total_invites': totalInvites,
          'is_status': isStatus
        },
      );
    }

What am I doing wrong? The documentation does not mentioned additional information.

@saveKenny That podfile edit is optional and you should do it only if you want to use Firebase Analytics without IDFA collection capability. I just ran the example and it works fine on iOS.
Are there any relevant errors or warnings logged?

Hey @markusaksli-nc thanks for replying. Everything seems to be just fine. No warnings and no errors. And yes I want Firebase Analytics without IDFA collection

@saveKenny are you using a real device to log the events?
Just to verify

Yes I have tested the app via TestFlight on a real device.
Also I just run the app on a simulator with -FIRAnalyticsDebugEnabled (https://stackoverflow.com/a/43110441/12695188) and I cannot see any analytics in my Firebase debugView. Do you think it is related?

I tried with $FirebaseAnalyticsWithoutAdIdSupport = true and it still worked so it shouldn't matter. Just to be safe could you run these in your ios directory?
rm -rf build
rm -rf Pods
rm -rf Podfile.lock
rm -rf ~/.pub-cache/hosted/pub.dartlang.org/
pod cache clean --all
flutter clean
flutter pub get
pod repo update
pod install

Also make sure you are using the same app identifier as in Firebase Console

I tried with $FirebaseAnalyticsWithoutAdIdSupport = true and it still worked so it shouldn't matter. Just to be safe could you run these in your ios directory?
rm -rf build
rm -rf Pods
rm -rf Podfile.lock
rm -rf ~/.pub-cache/hosted/pub.dartlang.org/
pod cache clean --all
flutter clean
flutter pub get
pod repo update
pod install

Also make sure you are using the same app identifier as in Firebase Console

Unfortunately it didn't help. Would you like me to send you more information?

I don't have many other great suggestions other than to check that you have the correct plist in the xcode project or to try running the example project with your config. You could also try filtering through flutter run -v or the device logs with the Console app to see if there is anything useful.
It's hard to diagnose a silent failure without any logs or combing through the entire project setup. I'll label this to see if anyone else has ideas.

Hey @markusaksli-nc publishing some relevant files from the project. Hope it will get us some insights:
My info.plist:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>CFBundleDevelopmentRegion</key>
	<string>$(DEVELOPMENT_LANGUAGE)</string>
	<key>CFBundleDisplayName</key>
	<string>AppName</string>
	<key>CFBundleExecutable</key>
	<string>$(EXECUTABLE_NAME)</string>
	<key>CFBundleIdentifier</key>
	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
	<key>CFBundleInfoDictionaryVersion</key>
	<string>6.0</string>
	<key>CFBundleName</key>
	<string>AppName</string>
	<key>CFBundlePackageType</key>
	<string>APPL</string>
	<key>CFBundleShortVersionString</key>
	<string>$(MARKETING_VERSION)</string>
	<key>CFBundleSignature</key>
	<string>????</string>
	<key>CFBundleURLTypes</key>
	<array>
		<dict>
			<key>CFBundleURLSchemes</key>
			<array>
				<string>com.googleusercontent.apps.####-#######</string>
			</array>
		</dict>
	</array>
	<key>CFBundleVersion</key>
	<string>$(CURRENT_PROJECT_VERSION)</string>
	<key>FirebaseAppDelegateProxyEnabled</key>
	<false/>
	<key>LSRequiresIPhoneOS</key>
	<true/>
	<key>NSContactsUsageDescription</key>
	<string>This app requires contacts access to function properly.</string>
	<key>NSPhotoLibraryUsageDescription</key>
	<string>This app requires photos access to function properly.</string>
	<key>UIBackgroundModes</key>
	<array>
		<string>fetch</string>
		<string>remote-notification</string>
	</array>
	<key>UILaunchStoryboardName</key>
	<string>LaunchScreen</string>
	<key>UIMainStoryboardFile</key>
	<string>Main</string>
	<key>UISupportedInterfaceOrientations</key>
	<array>
		<string>UIInterfaceOrientationPortrait</string>
	</array>
	<key>UISupportedInterfaceOrientations~ipad</key>
	<array>
		<string>UIInterfaceOrientationPortrait</string>
	</array>
	<key>UIViewControllerBasedStatusBarAppearance</key>
	<false/>
</dict>
</plist>

My GoogleService-Info.plist:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>CLIENT_ID</key>
	<string>####-######.apps.googleusercontent.com</string>
	<key>REVERSED_CLIENT_ID</key>
	<string>com.googleusercontent.apps.####-######</string>
	<key>ANDROID_CLIENT_ID</key>
	<string>####-######.apps.googleusercontent.com</string>
	<key>API_KEY</key>
	<string>####-######</string>
	<key>GCM_SENDER_ID</key>
	<string>####</string>
	<key>PLIST_VERSION</key>
	<string>1</string>
	<key>BUNDLE_ID</key>
	<string>######</string>
	<key>PROJECT_ID</key>
	<string>app-project-####</string>
	<key>STORAGE_BUCKET</key>
	<string>app-project-####.appspot.com</string>
	<key>IS_ADS_ENABLED</key>
	<false></false>
	<key>IS_ANALYTICS_ENABLED</key>
	<false></false>
	<key>IS_APPINVITE_ENABLED</key>
	<true></true>
	<key>IS_GCM_ENABLED</key>
	<true></true>
	<key>IS_SIGNIN_ENABLED</key>
	<true></true>
	<key>GOOGLE_APP_ID</key>
	<string>#:####:ios:######</string>
	<key>DATABASE_URL</key>
	<string>https://app-project-####.firebaseio.com</string>
</dict>
</plist>

Hey any news about this issue? (I have added my info.plist and GoogleService-Info.plist files).

Not from me, no. Have you tried contacting support?

Not from me, no. Have you tried contacting support?

Good idea, I will check with them.

Hey @saveKenny, did you manage to resolve your problem? My sense is that this is a setup issue, but would like confirmation. Thanks!

Hey @russellwheatley,
The problem was that I didn't have an IOS data stream in my project analytics property. https://stackoverflow.com/a/69852960/12695188

Hey @saveKenny, thanks for the update!


[Site]: 中文 博客博客博客博客博客 blog bug

Current State
Description of the current state/issue:
If you keep switching back and forth between the English and Chinese blog dropdown options. this bug will appear. In fact, I found this bug by accident because of the network.
Link to the page:
https://apisix.apache.org/blog/2022/03/01/apisix-integration-public-api-plugin/#initial-knowledge-about-public-api
Screenshots (if relevant):

Desired State
Description of the change you are proposing:
Of course I want to visit a normal website!
Would you like to fix this issue?
No. Please assign another contributor

That's what I said to zhiyuan in #1041

After discussion with @SkyeYoung, the logic is very complicated, so I just added an issue here. Logic: https://github.com/apache/apisix-website/blob/master/website/src/clientModules/amend-lang-switch.js

We have no way to accurately control the timing of modifying this button, so some strange problems may occur if there is a poor network condition.
I can try to make some improvements, but the problems caused by the network can never be solved.
And also I can't reproduce the problem. Please describe the exact reproduction steps.

Okay, this is a bug that can't be fixed, identification is complete.

Hi, let me add more info about this issue in order for developer to learn more about it and make a suitable explanation.
My reproduction process:

open a blog(now it was "简体中文 blog" state) and try to read it.
Then i try to switch this page from "简体中文 blog" to "English blog" and I did it.
After that I turned on Google's translation function.
Now you can get this bug.


⚠ Bofrost.de has degraded performance

In bc24a79, Bofrost.de (https://www.bofrost.de) experienced degraded performance:

HTTP code: 200
Response time: 1306 ms

Resolved: Bofrost.de performance has improved in 5e968c4 after 27 minutes.


FE interface

Use Styled Components

[ ] Consent Message
[ ] Chayn design
[ ] Option buttons (postbacks)
[x] Input box
[ ] Message box
[ ] Minimise button
[ ] Test on Wordpress integration
[ ] Resources links (post backs and link to URL)
[ ] Refresh button
[ ] Securikitty image
[ ] Waiting dots

Do you need GDPR consent? If someone types 'my name is jimmy I live on blah street' I don't think it counts as personal information http://www.dataprotectionpeople.com/what-is-personal-data/ because it isn't 'recorded with the intention that it should be processed' or 'recorded as part of a relevant filing system'. Please look into this a bit more because I'm not allowed to advise you.

Don't try and build the chat components from scratch yourselves. Here are some open source react chat UIs to look into. I'm sure there are many more:
https://github.com/brandonmowat/react-chat-ui
https://www.npmjs.com/package/react-chat-window
https://github.com/Detaysoft/react-chat-elements

🎉 ✨🎉 ✨All done! 🎉 ✨🎉 ✨


Fix the Core API test

Fix the Core API test

Rename missingparam to missing_param
Missing download token

Update on status code from 404 to 400
Update on content-type from html/text to application/json

Remove url_extension for Core GMS download

TODO: Update the Projects download all then we can eliminate url_extension parameter to simplify.

I'm fine with these changes, should change the Project API tests too as it will be a similar change

Yeah, so put TODO in the last bullet point haha.
Just didn't want to modify any extra stuff other than Core API tests.


Add a method to update the species list

Maybe consider a ajax call instead of downloading the whole file

Maybe update here the python notebooks used?


Update the example

The example still uses a old babel version and react-transform-webpack-hmr which has been renamed.

Thanks to @stevoland for updating this with his server-rendering example.
See: 5e5515e12ca8706d3cba5aefb35b34a19c347e47


Quiet down kernel logging

Quiet down kernel logging so that it doesn't flood user consoles as in #548

Did we previously have quiet on?

No

But we've had it on in the ISO.


Update CONTRIBUTING.md

Closes #1518
Checklist:

[ ] Updated extVersionCode value in build.gradle for individual extensions
[ ] Updated overrideVersionCode or baseVersionCode as needed for all multisrc extensions
[x] Referenced all related issues in the PR body (e.g. "Closes #xyz")
[ ] Added the isNsfw = true flag in build.gradle when appropriate
[ ] Have not changed source names
[ ] Have explicitly kept the id if a source's name or language were changed
[ ] Have tested the modifications by compiling and running the extension through Android Studio
[ ] Have removed web_hi_res_512.png when adding a new extension

I've only made a few changes, but I don't have the necessary knowledge to add exact information to CONTRIBUTING.md


[BUG] Non responsive design for IPad

Describe the bug
When you open Drifty website in IPad Air or IPad Mini, the design collapses or website is non-responsive for that width and height.
Steps To Reproduce

Go to website
Inspect element and change dimension to IPad

Expected Behavior
Website must be responsive.
Operating System
Windows
Application Version
v1.3.0
Screenshots

Additional information
Unresponsiveness is also found in Nest Hub Max and foldable mobiles.

Okay @itshypon , thank you for the opening the issue. Do you want to work on this issue?

@SaptarshiSarkar12 If someone else doesn't take this issue then I will reply back if I got time.

@itshypon do you want to work on it?
If anyone else wants to work, please comment below and I shall assign you with the task.

@SaptarshiSarkar12 I have shared this issue with some people who are looking for their first contribution.

ok @itshypon . That's great :star_struck: !
More peoples should get involved in open-source!
Thank you !


Fix iOS post context menu

Summary
Post context menu wasn't being updated whenever the actions changed. ej: Once a post was flag the option wasn't changing to unflag

Shouldn't this be handled by the PureComponent?

@hmhealey  as you can see the component didn't update his local state, that is what this PR is doing

Oh sorry, my reading sucks. I thought that was a shouldComponentUpdate :/


Revert removal of return function type in streamProbesWithOffsetFactory when new scalafmt version is out

In https://github.com/apache/incubator-pekko-connectors-kafka/pull/8 we removed the return function type because scalafmt has a bug with tuples as return function types in order to unblock the repo.
When a new version of scalafmt is out we should revert the change, just to be on the safe side to ensure that no important code has been changed from Akka latest Apache release.

In this case it's just a private test method so any risk is pretty minimal.

Agreed, this is more about confidence wrt "the initial 1.0.x release has the same code as latest Akka BSL" even if its largely technically superficial with this case.


Engage: Theodul: Audio: Refer to correct items

The audioPlayer_id is supposed to be an HTML5 audio elem
The audioPlayer is supposed to be a player object, not an elem
After this patch is applied, one can at least press the play button
and the audio plays if the codec is supported.
Still no timeline support or seeking though.
The play button will be still grey.

Resolves: #1588
Does not resolve: Video.js 4.x issues with  element (seeking and much
more broken)
Your pull request should…

[x] have a concise title
[x] close an accompanying issue if one exists
[x] be against the correct branch (features can only go into develop)

include migration scripts and documentation, if appropriate

[x] pass automated testing
[x] have a clean commit history
[x] have proper commit messages (title and body) for all commits

have appropriate tags applied

This seems like a good patch to me, although I would prefer to see the play button start working.  I'm not terribly familiar with Theodul's guts, what's keeping that from happening in this case?

Definitely improves the current situation → merged.


CHAOS-1739, CHAOS-1738: Adds LCI result update retries as a new flag

Harness Developer Pull Request

Adds LCI result update retries as a new flag

What Type of PR is This?=

[ ] Issue
[x] Feature
[ ] Maintenance/Chore

If tied to an Issue, list the Issue(s) here:

Issue(s)
https://github.com/wings-software/linux-chaos/pull/87

House Keeping
Some items to keep track of. Screen shots of changes are optional but would help the maintainers review quicker.

[x] Tested Locally
[ ] Optional Screen Shoot.

Please check the Execution Link of the Pipeline for the Website Draft URL. This is located in the Preview Step and also is available in #hdh_alerts. E.g Website Draft URL: https://unique-id--harness-developer.netlify.app

Please check the Execution Link of the Pipeline for the Website Draft URL. This is located in the Preview Step and also is available in #hdh_alerts. E.g Website Draft URL: https://unique-id--harness-developer.netlify.app

Please check the Execution Link of the Pipeline for the Website Draft URL. This is located in the Preview Step and also is available in #hdh_alerts. E.g Website Draft URL: https://unique-id--harness-developer.netlify.app

This can be merged.

Please check the Execution Link of the Pipeline for the Website Draft URL. This is located in the Preview Step and also is available in #hdh_alerts. E.g Website Draft URL: https://unique-id--harness-developer.netlify.app

Please check the Execution Link of the Pipeline for the Website Draft URL. This is located in the Preview Step and also is available in #hdh_alerts. E.g Website Draft URL: https://unique-id--harness-developer.netlify.app


Version 6.4.4-rc1 XY grid is broken

After upgrading to 6.4.4-rc1 from 6.4.0 the example vertical scrolling XY grid found at this link no longer works:
https://codepen.io/ZURBFoundation/pen/MogrXG
Vertical scrollbars are missing from the "Independent scrolling sidebar" and "body"

This appears to have been introduced in #10649 with https://github.com/zurb/foundation-sites/pull/10649/commits/b1924e099540e4e7411a948d776691e1e5746fbf. That fix was introduced for when the cell-block doesn't overflow the height of the container so the cell-block takes up the empty space. The problem is that when the cell-block does overflow the height of the container, height: 100% disables vertical scrolling.

This actually looks to be resolved with #10704.

Resolved in #11085.


ExternalSigningSupport is missing

HI Tom,
Can you please upload ExternalSigningSupport for pdfbox-android.

Closing, this is the same as #300


MCS-201 MCS-290 MCS-294 Tags for Eval 2 IntPhys Dataset

Accomplishments:

Scene generator tags will now identify novel colors, shapes, and combinations in object definitions.
Scene generator object tags now differentiate between target, distractor, and other objects.
Scene generator now lists all targets, distractors, occluders, walls, and background objects in scenes.
Fixed the scene generator so that all IntPhys goal types may add background objects (a.k.a. "scenery"), not just gravity goals.  (This probably should have been in its own commit, but oh well.)

Apologies for the long PR.

Whoops, I totally forgot that I had branch MCS-293 merging into this branch for its PR.  Should I revert it?  I don't want to make this PR any bigger than it already is.

@ThomasSchellenbergNextCentury It shouldn't be a problem merging right? I wouldn't bother reverting if that's the case.


Updates from ADS - Service

Updates to the service data source.

Great additions, need to discuss practicality of host-based enumeration and potentially language/naming to make sure this isn't confused with cloud services


Identifiers validation failed for dataset Diversidad potencial de briófitos en el Sistema de Información en Biodiversidad para Aysén (SIB-Aysén), Chile

Identifier validation failed for the dataset Diversidad potencial de briófitos en el Sistema de Información en Biodiversidad para Aysén (SIB-Aysén), Chile:

Crawler attempt: 56
Publishing organization: Universidad de Magallanes
Publishing country: CHILE
Installation: IPT v.2.3.2
Number of occurrences indexed for this dataset at the time of the issue: 345
Cause: GBIF ID problems exceed 50% threshold: 100% duplicates; 345 total records; 345 absent records
Pipelines execution steps: http://api.gbif.org/v1/pipelines/history/execution/3710750/step

New IDs sample:

Old IDs sample:

SIBA_UMAG:BriOfitos_literatura:12240
SIBA_UMAG:BriOfitos_literatura:12241
SIBA_UMAG:BriOfitos_literatura:12242
SIBA_UMAG:BriOfitos_literatura:12243
SIBA_UMAG:BriOfitos_literatura:12244
SIBA_UMAG:BriOfitos_literatura:12245
SIBA_UMAG:BriOfitos_literatura:1494
SIBA_UMAG:BriOfitos_literatura:1535
SIBA_UMAG:BriOfitos_literatura:1682
SIBA_UMAG:BriOfitos_literatura:1692

Publisher email
Hello,
I am contacting you from the GBIF Secretariat about a dataset published by the Diversidad potencial de briófitos en el Sistema de Información en Biodiversidad para Aysén (SIB-Aysén), Chile : https://doi.org/10.15468/sfwr7x.
We noticed that the occurrenceIDs were changed. We have temporarily paused the ingestions of this dataset.
As you might already know, when an occurrence record has a new occurrenceID for a given dataset, our system considers it to be a new occurrence.
This means that it will be given a new gbifid and a new occurrence URL (like this one: https://www.gbif.org/occurrence/1252968762) and the old gbifid and URL will be deprecated.
In this case, this means that the occurrence URLs would be deprecated when ingesting the newest versions of these datasets.
We would like to check with you if those changes were intentional. Do you know if this is the case?
Please let us know, thanks! We are happy to resume the dataset ingestion.
Note that some users rely on those occurrence URLs and gbifids (like https://bionomia.net for example). In an attempt to improve
the stability of the occurrence URLs and gbifids, we have implemented a warning system to detect these type of changes in datasets (see this news item).
If the data publisher can provide us with a list of old and new occurrenceIDs per record, we can avoid the identifier and URL changes. Could that be an option?
Please let us know if you have any question. Thanks!
All the best,

You can skip/fix identifier validation using the registry UI.

Identifier validation still  failing for the dataset Diversidad potencial de briófitos en el Sistema de Información en Biodiversidad para Aysén (SIB-Aysén), Chile:

Crawler attempt: 58
Publishing organization: Universidad de Magallanes
Publishing country: CHILE
Installation: IPT v.2.3.2
Number of occurrences indexed for this dataset at the time of the issue: 345
Cause: GBIF ID problems exceed 50% threshold: 100% duplicates; 345 total records; 345 absent records
Pipelines execution steps: http://api.gbif.org/v1/pipelines/history/execution/3734821/step

New IDs sample:

Old IDs sample:

SIBA_UMAG:BriOfitos_literatura:12240
SIBA_UMAG:BriOfitos_literatura:12241
SIBA_UMAG:BriOfitos_literatura:12242
SIBA_UMAG:BriOfitos_literatura:12243
SIBA_UMAG:BriOfitos_literatura:12244
SIBA_UMAG:BriOfitos_literatura:12245
SIBA_UMAG:BriOfitos_literatura:1494
SIBA_UMAG:BriOfitos_literatura:1535
SIBA_UMAG:BriOfitos_literatura:1682
SIBA_UMAG:BriOfitos_literatura:1692

Publisher email
Hello,
I am contacting you from the GBIF Secretariat about a dataset published by the Diversidad potencial de briófitos en el Sistema de Información en Biodiversidad para Aysén (SIB-Aysén), Chile : https://doi.org/10.15468/sfwr7x.
We noticed that the occurrenceIDs were changed. We have temporarily paused the ingestions of this dataset.
As you might already know, when an occurrence record has a new occurrenceID for a given dataset, our system considers it to be a new occurrence.
This means that it will be given a new gbifid and a new occurrence URL (like this one: https://www.gbif.org/occurrence/1252968762) and the old gbifid and URL will be deprecated.
In this case, this means that the occurrence URLs would be deprecated when ingesting the newest versions of these datasets.
We would like to check with you if those changes were intentional. Do you know if this is the case?
Please let us know, thanks! We are happy to resume the dataset ingestion.
Note that some users rely on those occurrence URLs and gbifids (like https://bionomia.net for example). In an attempt to improve
the stability of the occurrence URLs and gbifids, we have implemented a warning system to detect these type of changes in datasets (see this news item).
If the data publisher can provide us with a list of old and new occurrenceIDs per record, we can avoid the identifier and URL changes. Could that be an option?
Please let us know if you have any question. Thanks!
All the best,

You can skip/fix identifier validation using the registry UI.

Identifier validation still  failing for the dataset Diversidad potencial de briófitos en el Sistema de Información en Biodiversidad para Aysén (SIB-Aysén), Chile:

Crawler attempt: 83
Publishing organization: Universidad de Magallanes
Publishing country: CHILE
Installation: IPT v.2.3.2
Number of occurrences indexed for this dataset at the time of the issue: 345
Cause: GBIF ID problems exceed 50% threshold: 100% duplicates; 345 total records; 345 absent records
Pipelines execution steps: http://api.gbif.org/v1/pipelines/history/execution/4165585/step

New IDs sample:

Old IDs sample:

SIBA_UMAG:BriOfitos_literatura:12240
SIBA_UMAG:BriOfitos_literatura:12241
SIBA_UMAG:BriOfitos_literatura:12242
SIBA_UMAG:BriOfitos_literatura:12243
SIBA_UMAG:BriOfitos_literatura:12244
SIBA_UMAG:BriOfitos_literatura:12245
SIBA_UMAG:BriOfitos_literatura:1494
SIBA_UMAG:BriOfitos_literatura:1535
SIBA_UMAG:BriOfitos_literatura:1682
SIBA_UMAG:BriOfitos_literatura:1692

Publisher email
Hello,
I am contacting you from the GBIF Secretariat about a dataset published by the Diversidad potencial de briófitos en el Sistema de Información en Biodiversidad para Aysén (SIB-Aysén), Chile : https://doi.org/10.15468/sfwr7x.
We noticed that the occurrenceIDs were changed. We have temporarily paused the ingestions of this dataset.
As you might already know, when an occurrence record has a new occurrenceID for a given dataset, our system considers it to be a new occurrence.
This means that it will be given a new gbifid and a new occurrence URL (like this one: https://www.gbif.org/occurrence/1252968762) and the old gbifid and URL will be deprecated.
In this case, this means that the occurrence URLs would be deprecated when ingesting the newest versions of these datasets.
We would like to check with you if those changes were intentional. Do you know if this is the case?
Please let us know, thanks! We are happy to resume the dataset ingestion.
Note that some users rely on those occurrence URLs and gbifids (like https://bionomia.net for example). In an attempt to improve
the stability of the occurrence URLs and gbifids, we have implemented a warning system to detect these type of changes in datasets (see this news item).
If the data publisher can provide us with a list of old and new occurrenceIDs per record, we can avoid the identifier and URL changes. Could that be an option?
Please let us know if you have any question. Thanks!
All the best,

You can skip/fix identifier validation using the registry UI.


Icon and text component: svg from Brandmaster Icon and illustration archove isn't uploaded after being selected.

This one has been on and off a few times. Icons work in the teaser component, but not in the Icon and text.

https://web-energyvision-dev.radix.equinor.com/_next/image?url=https%3A%2F%2Fcdn.sanity.io%2Fimages%2Fh61q9gi9%2Fglobal%2Fa838ba616f9f11afb6ba24c1893c402045be4737-125x125.svg%3Fw%3D150%26h%3D150%26auto%3Dformat&w=384&q=75

400 status code for the image in the web

Also the animated icons doesn't work correctly, as Nick showed in the workshop at Fornebu. Both errors can be viewed on this page: https://energyvision.app.radix.equinor.com/energy/renewable-energy-and-low-carbon-solutions

I am able to reproduce the problem with uploading the icons (this is good) but I am so far not able to figure out why this is happening (not good).
Have reached out to Sanity to see if they can help.

@meols could you and the editors see if this is still an issue?
it seems to be working fine on my end now when trying to select images from the icons and illustrations bank - so I'm wondering if the network policy changes we did to try and solve the slowness in the studio may have fixed this as well.

@SvSven - seems to still be an issue. Some examples:

United states page: animated icons showing, "other" icons not showing
https://energyvision.app.radix.equinor.com/where-we-are/united-states
EU page - icons not showing (in two components)
https://energyvision.app.radix.equinor.com/where-we-are/eu
CCS page - icons not showing
https://energyvision.app.radix.equinor.com/energy/carbon-capture-utilisation-and-storage
I also tested with fetching from Brandmaster, Media and uploading from desktop on mettes testpage, and none were showing
https://energyvision.app.radix.equinor.com/news-and-media/mettes-test-page

Ah yeah I haven't looked into the animated icons or the broken images on the web - I was mostly referring to the icons not being uploaded to Sanity when you select them in Brandmaster 😅

:smile: @SvSven - didn't manage to upload to sanity when selecting in Brandmaster either

@SvSven - is this issue dependent on Brandmaster, what's the status?

@meols I'm not sure yet, but I suspect it's an issue on Sanity's end. I've contacted Sanity about it and they are looking into it. It's not something we can easily debug from our end since there are no errors or any indication of what might be wrong.

:thumbsup: Thanks @SvSven

@meols It looks like we managed to fix the rendering of the icons now

Thanks @SvSven - I see that already added icons are showing on the Natural gas page, Carbon capture page, EU page - great! But I am still not able to add icons - tested on the Natural gas page https://equinor.sanity.studio/desk/topicContent;1ef36c61-4589-4864-86a0-1ba5cce4b89c by both Trude and me, with and without VPN, in chrome and edge. After selecting an icon, it never is added to the component.

@meols Yep, I'm seeing the same thing on the link you provided - but at least we managed to solve one part of it. Now for the next 😅

@SvSven - :smile: a very good start :thumbsup:

@meols Okay I have pushed a change that should hopefully fix this issue - it fixed it for me locally at least (for now 😬)


Tidy Rust2018 PR

@lu-zero the ppc build job has been flaky recently, it sometimes finish with a segfault, but restarting it fixes that =/ we didn't change anything here, so maybe the last LLVM upgrade broke something =/


Simulink Interface added

Hello,
I worked on a simulink interface for daqp that works without any parameters for dimensionality of the qp-problem. Everything is infered at compile time based on the input dimensions.
I am not so sure how to do the CI/CD workflow and there is a conceptional problem:
To use the s-function in Simulink only the compiled file (the file "DAQP_sfunc.mexw64" (windows) is created with the "make_sfunc") is needed.
However for code generation in Simulink to a real-time target, the original DAQP-framework is needed and the relative path to the framework needs to be the same as in the current git. Therefore the creation of a "release build" is not a good idea since all the original c-code and folder structure would be needed and transferred too.
What do you think? Should we create a release build for the users that only want to use it in Simulink and not for code generation or would that confuse the users that want to generate code for real-time targets? Another idea would be that the release builds have the whole git-project and the pre-compiled mex-files similar to other open source projects like casadi.

Great work!
Would there principally be a problem if one has an install script similar to DAQP's MATLAB interface? Where one runs a command in the MATLAB prompt, which will download the source code and compiles the S-Function?

This should be no problem, but the new install script would work for the simulink and matlab interface since it would download the whole framework and the matlab interface script would only work for matlab.
Therefore I would suggest a one-fits-all solution, where the whole framework is downloaded in both cases

When you say "one-fits-all solution", do you mean something that does not rely on MATLAB? Since Simulink is almost always used together with MATLAB, I think it is reasonable to install the interface through MATLAB.
I am thinking of something like passing an argument to the install_daqp function in MATLAB to download the whole framework (source code, S-function, and mex-files.) What do you think about that? Why I am hesitant of including everything by default in install_daqp is that I don't want to clutter up things for users that only want to use the MATLAB interface.

When you say "one-fits-all solution", do you mean something that does not rely on MATLAB? Since Simulink is almost always used together with MATLAB, I think it is reasonable to install the interface through MATLAB.

My idea is that the install_daqp function should download the whole framework with the compiled matlab mex and simulink mex file. After that, the needed folders (interface/matlab and interface/simulink) are added to the path.

I am thinking of something like passing an argument to the install_daqp function in MATLAB to download the whole framework (source code, S-function, and mex-files.) What do you think about that? Why I am hesitant of including everything by default in install_daqp is that I don't want to clutter up things for users that only want to use the MATLAB interface.

We could do something like this, maybe some kind of selection window with "matlab" and "matlab + simulink" as options. Then the "matlab" option would be the old procedure, whereas the "matlab + simulink" version would download the whole framework with the compiled matlab mex and simulink mex file.
But I want to point out that other frameworks for matlab (like casadi) download the whole framework and I would prefere this version as well since it is easier to maintain and two versions could confuse the user and probably should be adressed in the documentation.

Hi guys, have you arrived to any conclusions? I have a similar interface for Simulink that I was going to propose, but I think @Don-Chris 's proposal is quite more elegant. If I can help you anyway getting this ahead please let me know.

Thanks for the support. I am currently waiting on feedback by @darnstrom. But if you are well versed in the CI/CD workflows, you could maybe help there?

Is it possible to make the S-function handle cases when the user does not provide complete information @Don-Chris ? For example, if blower is not given (which should default to a vector of -Infs) and if sense is not given (which should default to a vector of 0s)

I looked into it and yes there is a way to do it. Can you tell me, what dimensions and values are the default, if one or multiple inputs are missing?
First idea:

sense missing: get dimension from b_lower, sense = zeros
b_upper missing: get dimension from b_lower, b_upper = infs
b_lower missing: get dimension from b_upper, b_lower = -infs
sense and b_upper missing: get dimension from b_lower, sense = zeros, b_upper = infs
sense, b_upper, b_lower missing: ??
sense and b_lower missing: get dimension from b_upper, sense = zeros, b_lower = -infs
A missing: ?
A and sense is missing: ?
H/g should never miss?

Hey @darnstrom,
I changed what you asked for in my latest commit. However, there is an error in the new unit tests that I added. It is similar to your first unit test and it calls daqp in simulink and then the primal_errors, dual_errors and f_val_errors are calculated.
Here, I first realized, that the dual_error and primal_error is wrong and I think it is wrong because I get the wrong lambda and f_val. Could you check if I got the right values from the work-object in DAQP_sfunc.c in lines 618-626?
Additionally, the calculation gets infeasible for high optimization variable sizes n. I suspect the iteration maximum is not correctly used. Could you check that as well?

@darnstrom
I fixed it today, I used daqp_extract_result() since the f_val in the Workspace seems to be wrong. Now primal_errors, dual_errors and f_val_errors are correct.
Further questions:

Should "eps_prox" be added as a parameter or other settings?
Should we add daqp_bnb or daqp_prox for simulink? Should the switch happen through a parameter?
What kind of unit tests should we add?

Looks great! Thank you very much for all your work.
The daqp_prox/daqp_bnb could be added, but would require some modifications to the sfunc (I think it is mainly a metter of calling daqp_solve rather than daqp_ldp.) Adding support for "eps_prox" as a parameter would be nice to allow for the user to regularize the QP.
Now we just have to iron out how we want to include the interface in the CI/CD workflow before merging...

The daqp_prox/daqp_bnb could be added, but would require some modifications to the sfunc (I think it is mainly a metter of calling daqp_solve rather than daqp_ldp.) Adding support for "eps_prox" as a parameter would be nice to allow for the user to regularize the QP.

Okay, I will try my best in the next few days.

Now we just have to iron out how we want to include the interface in the CI/CD workflow before merging...

Yeah... I think it should be your decision to make. There are a lot of options and no wrong decisions. My opinion is that the command:
websave('install_daqp','https://raw.githubusercontent.com/darnstrom/daqp/master/interfaces/daqp-matlab/install_daqp.m')
install_daqp

should install the whole framework with all c files to that it automatically works for matlab, simulink and simulink with codegeneration. But again, you should decide.

@Don-Chris What do you think about merging this? I will release v0.7.0 soon, and I think it would be nice to include your work there. For the installation, I think it is enough for now to let the user run make_sfunc themselves from the source code. This would ensure that the user can do code generation.

@Don-Chris What do you think about merging this? I will release v0.7.0 soon, and I think it would be nice to include your work there. For the installation, I think it is enough for now to let the user run make_sfunc themselves from the source code. This would ensure that the user can do code generation.

I added a copy-and-paste snippet in the installation section of the documentation to make it straightforward to the user.

@darnstrom Sounds good! if you need any help in the future, just contact me.

@darnstrom Sounds good! if you need any help in the future, just contact me.

Great! Thank again for your contribution, it is very much appreciated :)


VS2022 can specify /std:c17 /std:c++20 together but NMAKE cannot

Using Visual Studio 2022 Community Edition, version 17.7.3
I can build VS2022 projects that have the /std:c17 /std:c++20 switches set in the project's properties, and confirm they are both in the resulting command line used when building by examining the "C/C++, Command Line" section of the project's property page.
However, NMAKE reports:
cl : Command line error D8016 : '/std:c17' and '/std:c++20' command-line options are incompatible
I'm guessing NMAKE thinks that the /std switch is mutually exclusive?

Document Details
⚠ Do not edit this section. It is required for learn.microsoft.com ➟ GitHub issue linking.

ID: 6183aaac-1eb4-f704-4bf5-1c3fe67ae2fe
Version Independent ID: d3f24754-fcba-3eee-e34d-445962c5485c
Content: /std (Specify Language Standard Version)
Content Source: docs/build/reference/std-specify-language-standard-version.md
Product: visual-cpp
Technology: cpp-tools
GitHub Login: @TylerMSFT
Microsoft Alias: twhitney

Correct. The MSVC compiler will pick the latest version specified, but nmake doesn't.
For instance, cl /std:c++17 /std:c++20 test.cpp will compile with c++20 and generate a warning that c++20 is overriding c++17.


Update shapeMap implementation to spec

ShapeMap has recently be published as a spec here
Update the implementation to support that syntax

A first version has been implemented


CatalogApi entry in AuthProviderFactoryOptions adds unnecessary coupling

I am not sure how I missed this change, but I  would have provided feedback when this was done.
The AuthProviderFactory options now has a CatalogApi field, whose value is any instance implementing the CatalogApi interface.
The CatalogApi is a rather complex interface with multiple non-optional methods that are to be implemented.
This makes it more complicated for anyone trying to implement their own AuthProviderFactory. To me, the motivation for adding this field to AuthProviderFactory is rather unclear and or partial (based on the issue).
I assume that you want to encapsulate a client to the catalog backend in such a way that requests are authenticated? , or that users are validated using the catalog.
As for the former, I think, this is the wrong place to add authentication to the catalog. The Authentication Provider should not be coupled tightly to the catalog client , but should rather allow some sort of mechanism to verify an incoming request before passing on the request to the catalog's request handler.
As to the latter, the only place I see the catalog used to populate the Identity of the user during the authentication process is when a user uses Google's Authentication here
This assumption is incorrect, as it assumes that if a user's profile is not part of the response  , then the user is present in the Catalog. This assumption by itself isn't a problem, but the consequence of this assumption is that it couples ALL AuthProviderFactories to have a Catalog API , which breaks or makes it much harder for users to implement their custom Authentication Mechanisms.
Feature Suggestion
Remove or make implementing a CatalogAPI to the AuthProviderFactory optional.
Possible Implementation
Given that I do not fully understand the motivation for this change, I would like to know why a CatalogAPI client is coupled to the Authentication Mechanism.
Even if you feel such a coupling is justified, I would propose a change where in this coupling, is made optional catalogApi?, so that users can couple the CatalogAPI only if and when they need it.

I JUST now made this one: https://github.com/backstage/backstage/issues/3870
TL;DR: The reasoning is that there needs to be a connection from the auth identity world to the backstage user/groups world. Somebody needs to make the connection. Currently the auth system is responsible for making the connection, even though it's - as is outlined in the RFC - not well fleshed out yet at all.
Give it a read if you have the time. I'm very happy to hear feedback on it in general, and to hear of alternatives.

(and, you may enjoy the Alternatives section - which we talked a bit about and may actually lean towards - that renders the catalog connection unnecessary)

Provided feedback on the RFC :).

Currently the auth system is responsible for making the connection, even though it's - as is outlined in the RFC - not well fleshed out yet at all.

I want to pushback a little (actually quite a bit) and say that this is better left to implementations rather than attempt to reason about this in the Core Backstage code/concepts.
My motivation is even for our specific organization, we are still not sure how to model the relationship between GHE - Google and LDAP. We cannot decide on any connectiong mechanism without sync-ing with the rest of the teams handling this, which will be a long process. Also, I am pretty sure that any big enough organization will have the same bureaucratic and communication issues.
These mappings might also be subject to change in the future and I would be happy to let the implementations decide on how to model this connection.
A better way to solve this problem is to provide hooks to the frontends and the backends to select the information that they want to provide for fetching relevant entities. For example, with the Catalog UI plugin, in the default view, it would be better to provide an API , which a user can use to fetch the entities to be shown. An example of this would be , rather than filter and return all entities with owner set to AuthProvider.Backstage.Identity.id , if the UI providers an API getComponentsByUserId(id: string), the UI customization can decide what entities to fetch.

I would be happy to continue discussing this in the RFC, but as a solution for this specific issue, given that this coupling is still in the RFC stage and not decided yet, can we make the CatalogAPI an optional parameter in the interface ? That way, atleast until it is decided how to connect identity to Catalog, applications can decide for themselves how they want to do so.

One of the missing pieces is some sane way to enable or disable the identity part for each auth provider. We definitely don't want to force an identity mapping to the catalog for every single auth provider. The use-case for using multiple different auth providers as identity providers is for organizations that don't have all their users in the same SSO system or for other reasons want to use multiple ones. We still want providers like e.g. GitHub to only be used just for delegation of access to 3rd party resources.
The identity mapping we likely want in the auth backend in the end is 3rd party ID -> User Entity, meaning we would be providing the catalog client to a "default mapping mechanism" for the providers rather than straight to the providers themselves, ultimately fixing what you're raising here. The user entity wouldn't necessarily have to exist within the catalog though, allowing organizations that can't fully map out their org structure in the catalog to still use some form of identity login, even though it would likely be a more limited form of login.
Custom mapping of ownership is tricky af though, since it touches on both frontend bits, backend logic like e.g. cost-insights, as well as authorization. Unless we want it to be purely aesthetic we'd likely want to model it as a separate service or endpoint. It's one of the reasons we're seeing the catalog as a good integration point, as it is a place were we can agree on the primitives for modelling things, and then creating a model that can be depended on directly rather than having to talk to a bunch of different surrounding services to get the full picture.

One of the missing pieces is some sane way to enable or disable the identity part for each auth provider. We definitely don't want to force an identity mapping to the catalog for every single auth provider. The use-case for using multiple different auth providers as identity providers is for organizations that don't have all their users in the same SSO system or for other reasons want to use multiple ones. We still want providers like e.g. GitHub to only be used just for delegation of access to 3rd party resources.

This is a non-problem, IMHO. If any organization does not have a unified identity system, then there is no way for me to recognize which user it is.
For example, if my company uses Google SSO and LDAP , with half of my company using SSO and the rest using LDAP, then unless I have a mapping, that uniquely maps each ldap session or SSO session to a user, I cannot provide users uniform access to all resources.
If I allow different sources of authentication , then I will have to have an existing mapping from SSO, LDAP -> User.
In which case  this mapping

Might be the Catalog
Might be an already existing system
(or) present in the response from the authorization mechanism itself ( idToken for example).

The approach currently assumes that this is in the Catalog or has to be in the Catalog.

The identity mapping we likely want in the auth backend in the end is 3rd party ID -> User Entity, meaning we would be providing the catalog client to a "default mapping mechanism" for the providers

I believe this mapping already exists in the frontend, where the Backstage Identity's id uses the information in the Id token.
IIRC, this behaviour can be customized, by the SignInProvider (such as , using something other than the idToken to provide the Backstage User).
Each time a user logs in via a certain authorization, the Backstage Identity changes.
There cannot be multiple authorizations to a single user , as each authorization is Unique.
Perhaps, we are modeling the wrong problem here. If I want a unified Backstage session across all of the different worlds (Private GHE, Public Github etc), it assumes that an organization has already mapped the different entites to a unified User.
This is NOT universally true.
My organization for example, has some notion of mapping Organization user -> Github.com user, but no such unified mapping exists, not does it seem there ever will. There are different rules that govern how work in OSS vs private work is done.
In such a case, a unified catalog User is of no use to us.
It is possible , that some organizations might use the Catalog to provide a unified mapping. But in such a case,
rather than an auth-backend providing the mapping, it is the Catalog that has to provide an API for mapping Authorization -> Backstage User and not the auth-backend.
I think the dependencies are inverted here (which is my i want to ideally make this optional or remove the catalogApi).

My organization for example, has some notion of mapping Organization user -> Github.com user, but no such unified mapping exists, not does it seem there ever will. There are different rules that govern how work in OSS vs private work is done.
In such a case, a unified catalog User is of no use to us.

Does your "Organization user" have its own login provider and even organization data that you can ingest into the catalog?

IIRC, this behaviour can be customized, by the SignInProvider (such as , using something other than the idToken to provide the Backstage User).

Yeah the ID is "just a string" and can be sourced in any way, but the way that it is used after that, is lacking, and ties poorly to the ownership concepts.

Each time a user logs in via a certain authorization, the Backstage Identity changes.
There cannot be multiple authorizations to a single user , as each authorization is Unique.

I was a bit unsure about these two - were they a hypothetical tied to the line above them, or a statement of the current state of things?
What the "labels" solution talked about, was similar to the existing one in the sense that yes, you return an ID on any form that makes sense to you, or rather, to your sign-in authority. Or multiple identities, even, perhaps! What Backstage then wants to be able to do, is to be able to find (optional) related data based on the provider key + that ID.
Am I understanding you correctly, that one way forward to you would be if the sign-in provider could be given the opportunity to return the object { google<EMAIL_ADDRESS>ghe: 'john' }? Where the second key was sourced out of some external system of yours where possible, but not always present?

Perhaps, we are modeling the wrong problem here. If I want a unified Backstage session across all of the different worlds (Private GHE, Public Github etc), it assumes that an organization has already mapped the different entites to a unified User.

The second part of the alternative solution talks about not having any unified User, but rather to let each sign-in ID map to any number of Users, sourced from anywhere in any manner that fits your own org.

It is possible , that some organizations might use the Catalog to provide a unified mapping. But in such a case,
rather than an auth-backend providing the mapping, it is the Catalog that has to provide an API for mapping Authorization -> Backstage User and not the auth-backend.
I think the dependencies are inverted here (which is my i want to ideally make this optional or remove the catalogApi).

If the sign-in system (frontend or backend, wherever it happens) only emits a plain key, that may or may not map to a User, then maybe we get this loose coupling that we desire?

Does your "Organization user" have its own login provider and even organization data that you can ingest into the catalog?

Yes, we have our own login provider.
We are currently discussing how to ingest organization data, because the setup is not straight forward and there is no way to synchronize cleanly with it. Which is why, we as of now, simply add owner info to the Entities, but do not store groups or users in the Catalog.
@Rugvip

Yeah the ID is "just a string" and can be sourced in any way, but the way that it is used after that, is lacking, and ties poorly to the ownership concepts.

Yes, this is not a contract yet. The Backstage Identity and Authorization info is tied via AuthResponse, but there is no good contract between them.

I was a bit unsure about these two - were they a hypothetical tied to the line above them, or a statement of the current state of things?

I believe  this is the current state of things. BackstageIdentity is populated by the populateIdentity method, which is very specific to each of the Authentication providers. If you change  the  authorization provider, then this Identity changes based on the provider's populateIdentity method. It might be the same across the providers, but there is no guarantee and for therefore for all intents and purposes (unless you customize the populateIdentity method yourself), the same.

What the "labels" solution talked about, was similar to the existing one in the sense that yes, you return an ID on any form that makes sense to you, or rather, to your sign-in authority. Or multiple identities, even, perhaps! What Backstage then wants to be able to do, is to be able to find (optional) related data based on the provider key + that ID.

I find this confusing (more precisely : you return an ID on any form that makes sense to you, or rather, to your sign-in authority)
Do you mean that I provide my sign-in authority with labels and my authority provides a Backstage Identity ? Or does my sign-in provider provide a label, that I then pass on to the catalog to return a Backstage User ?
I do not for see an organization providing multiple ways to Sign-In to Backstage. Organizations may have wrapped their authentication systems with a Provider, such as Okta or Google, but I am effectively signing into my organization and viewing ONLY my organization's catalog. Therefore, there will be only one effective user at a time.
If There is a an option to say, sign-in using my Github credentials, then I am longer using my organization's backstage application, but a backstage view into my Github, which I dont think is what organizations want. Even if you do, how relevant is an organization specific  plugin to your Github Identity in the Backstage Instance ? Should you even be seeing the plugin in your org's instance, when you are logged in as a Github user ?
My reasoning is that the Identity returned by populateIdentity is the effective identity of my user and that there cannot be more than one at the same time. Currently even the session logic, IIRC is tied down to one specific user.
Google, for example has already solved this issue in the UI. You can use the same GMAIL to log into multiple accounts<EMAIL_ADDRESS>or you@your-company.com), but at any point , there is only ONE effective user.
That said, a possible situation might be when 2 different orgs (org-a.com and org-b.com) share the same Backstage Instance and want users from both orgs to share the catalog view , but only modify based on the right org's ownership (only users from org A can view/modify entities belonging to org-A).
For this, perhaps, having a label of sorts , might make sense . But I guess this is exactly where namespaces come into play, and this can be solved by adding a namespace.  The problem then become one of selecting the right namespace on the frontend, that  can then be passed onto the backend for filtering catalog entities.

@GoWind I think we're actually converging in our thinking here. I agree with the part of just signing in using one method. Then the problem space is reduced to

How may we tie the various strings in the little structs of data that comes out of our auth providers, to the owner fields of entities in the other end?
How may we tie the signed-in persona to perhaps more than one such "space" of owner fields, that actually belong to other personas/groups in a foreign system?

We want to solve the first one, first and foremost. The second one is gravy but we're looking hungrily at that too.
For the first one, the idea was that "for google, it makes sense to use the email as the id". That's a good primary key.
OK, how do we go from that email, to what's in owner fields? We could put personal emails as owners but that's not where we want to be. We like group based ownership.
Ok, how do we go from the chosen primary key, to a list of strings that happen to be something group-like, and that occurs inside owner fields? As my latest comment in the RFC says, the sign-in system could provide a group list as part of its output - that's one possible way. Or we could have org data IN the catalog, that can be looked up based on that primary key. Or something else.
We believe that having org data in the catalog, and the associated functionality in the frontend that it unlocks, has massive value. It cannot be understated how much we appreciate to have that "full picture" internally of how things belong and interact and are owned and fit in a bigger context. And we attach tooling/plugins onto the users/groups themselves and make them searchable and navigable.

Does your "Organization user" have its own login provider and even organization data that you can ingest into the catalog?

Yes, we have our own login provider.
We are currently discussing how to ingest organization data, because the setup is not straight forward and there is no way to synchronize cleanly with it. Which is why, we as of now, simply add owner info to the Entities, but do not store groups or users in the Catalog.

@GoWind wanna make sure it's clear that in your case we'd only then intend for that identity and org data to be ingested into the catalog. Other data such as GitHub would not be part of the org data model at all, unless you specifically want users to also be able to sign in to Backstage using GitHub, which would be a niche use-case.
In a typical setup you'd have that one source of org data with an accompanying auth and identity provider in the auth-backend. Other auth providers such as e.g. GitHub or Google auth are purely used for the Backstage users to be able to interact with those services from Backstage, but they are not tied to the org data or identity in any way.
That's what I was on about here:

One of the missing pieces is some sane way to enable or disable the identity part for each auth provider. We definitely don't want to force an identity mapping to the catalog for every single auth provider. The use-case for using multiple different auth providers as identity providers is for organizations that don't have all their users in the same SSO system or for other reasons want to use multiple ones. We still want providers like e.g. GitHub to only be used just for delegation of access to 3rd party resources.

Regarding multiple sources of org data working together, we're also thinking the answer for that is namespaces.

For this, perhaps, having a label of sorts , might make sense . But I guess this is exactly where namespaces come into play, and this can be solved by adding a namespace. The problem then become one of selecting the right namespace on the frontend, that can then be passed onto the backend for filtering catalog entities.

Forgot to address this one.
We are looking at using namespaces as both scopes and possibly security boundaries. The way namespaces could play into what we suggest, is in terms of having different org trees in different namespaces to both avoid collisions and to scope them.
As for selecting namespaces in the frontend - that's not something we've been looking at so far. The plan has instead been to be able to set your scope in terms of a group or a user. Internally we have some of those kinds of breakdowns - "see how team X that you are in is doing" for possibly more than one X, if that's the case.

@freben

How may we tie the various strings in the little structs of data that comes out of our auth providers, to the owner fields of entities in the other end?

idTokens are intended for this use-case. They contain the information that needed to authorize operations on behalf of the user. The backends task will be to obtain the idToken, verify it , unpack the information and use it to perform operations.It will by now have access to a user's group and other info that it can use for say, filter the catalog for entities, or for checking permissions, etc.
The only pre-requisite is that org Information is ingested into the catalog for entities before hand.
The id of the user is tied to the idToken.
It is not easy to understand this, but implementations of ``AuthProviderRouteHandlersbe able to provide an id Token in theAuthResponse` that is sent to the frontend.
The frontend can use this information to carry out operations.
There is no defined payload for an idToken. So, instead of providing APIs that can read specific fields, such as user, groups, etc, it would be simpler for the frontend to simply forward the idToken to the backend along with the requested operation.
Also this will solve the problem of authentication, as an idToken can also serve as auth Header. Currently, we had to setup extra protection via middleware to check for Auth Headers, as backstage's backend, by default, does not have any authentication mechanism.

It is possible that idTokens are not sufficient. In which case, we possibly might have to provide a shim on the frontend to obtain a bag of additional info to enrich the frontend's session object.
Note that this won't work well without the idToken, as a malicious request could "fake" this bag and we need to verify this. This is where access/idTokens can be used to request additional info on the frontend.
Also, this bag of additional information has to be standardize across backend plugins so that they know where to look for.
Maybe an optional method that the frontend calls post Sign In but Before creating session to obtain t his additional bag ? This can be configured via a config to be triggered along with an endpoint to make request to , to store this information ?
Something like adding a additional Info to the IdentityApi , that returns an opaque object , which can be sent to the backend via a standardized header ?
OTOH, thinking about it, I would avoid doing ^, as it just replicates what idToken does . Rather , if an idToken is insufficient, it should be up to the backend to make the additional call to obtain the info and carry out the operation.

@GoWind I could imagine making it possible to choose between either referencing an entity in the token, or embedding an entire entity. Obviously embedding an entire entity has some performance and synchronization issues, but would allow you to generate ad-hoc user data during login that doesn't necessarily exist in the catalog

Yes, it is a trade-off. For context, this was a big multi-month discussion between multiple teams in a company I used to work for and I forsee the same problem occuring again :) (I had no idea what they concluded as i left before they did :)) .
I think long-term having only Tokens might be the better solution. Backends might have to perhaps make additional requests, but
embedding entities in the frontend will only increase overtime as it is simpler ,because the problem is solved in one specific location , but in the long term might lead to more bloat.
I think this has to be perhaps an RFC ? I would like to know what the rest of the community thinks about this.

Yep, it's a discussion that'll have to continue into 2021 :grin:


[TensorIR][Visitor] Visit buffer members in match_buffer's in block visitor functions

Motivation
Currently, the elem_offset member in match_buffer's will not be visited in default block visitor functions, resulting in some passes cannot correctly rewrite the program because some fields have not been entered.
This PR fixes the issue by visiting this field in default StmtVisitor and StmtExpr.

@tvm-bot rerun

@tvm-bot rerun


Max request body size limit (30,000,000 bytes or 28.6MB) when running Office Scripts in Power Automate

When running Office Scripts in Power Automate, the parameters passed into the Run script action can sometimes be very large and its request might get rejected by our service due to the default ASP.NET Core max request body size limit - 30,000,000 bytes or 28.6MB.
We have seen customer whose flow passes in a giant JSON (>40MB) as the script parameter and the request failed right away.
Should we callout this platform limit in the documentation?

Document Details
⚠ Do not edit this section. It is required for learn.microsoft.com ➟ GitHub issue linking.

ID: 4085c6ff-856c-4704-8d72-5ef0ca1f64c1
Version Independent ID: 92eda514-0e20-3add-4b61-62d82d210549
Content: Platform limits and requirements with Office Scripts - Office Scripts
Content Source: docs/testing/platform-limits.md
Product: excel
Technology: scripts
GitHub Login: @o365devx
Microsoft Alias: o365devx

@yutao-huang PR #555 is ready for review, if you'd like to take a look.


Help Menu Bugs

In version 0.2.2 the help menu and terminals are glitchy. The text appears corrupted and the game is prone to crash if you go into some of the tutorials.

Try the standalone DLL on the 0.2.2 release page

That worked.

Excellent, I will re-release the software then.


Duplicate log lines on CeleryExecutor not fixed with AIRFLOW__COSMOS__PROPAGATE_LOGS

I am running a celery executor on astronomer hosted, astronomer-cosmos==1.2.5, and getting duplicate log lines from astronomer-cosmos.
Eg.
[2023-12-05, 11:13:02 UTC] {log.py:232} WARNING - [2023-12-05T11:13:02.130+0000] {subprocess.py:73} INFO - (astronomer-cosmos) - Running command: ['/usr/local/bin/dbt', '--warn-error', '--no-use-colors', 'run', '--models', 'MYTABLE', '--profiles-dir', '/tmp/tmppzx94vki', '--profile', 'myprofile', '--target', 'pr']
[2023-12-05, 11:13:02 UTC] {subprocess.py:73} INFO - Running command: ['/usr/local/bin/dbt', '--warn-error', '--no-use-colors', 'run', '--models', 'MYTABLE', '--profiles-dir', '/tmp/tmppzx94vki', '--profile', 'myprofile', '--target', 'pr']
[2023-12-05, 11:14:10 UTC] {subprocess.py:94} INFO - 11:14:10  1 of 1 START hook: mypackage.on-run-start.0 ............................... [RUN]
[2023-12-05, 11:14:10 UTC] {subprocess.py:94} INFO - 11:14:10  1 of 1 OK hook: mypackage.on-run-start.0 .................................. [OK in 0.00s]
[2023-12-05, 11:14:10 UTC] {log.py:232} WARNING - [2023-12-05T11:14:10.837+0000] {subprocess.py:94} INFO - (astronomer-cosmos) - 11:14:10  1 of 1 OK hook: mypackage.on-run-start.0 .................................. [OK in 0.00s]
[2023-12-05, 11:14:10 UTC] {log.py:232} WARNING - [2023-12-05T11:14:10.838+0000] {subprocess.py:94} INFO - (astronomer-cosmos) - 11:14:10
[2023-12-05, 11:14:10 UTC] {subprocess.py:94} INFO - 11:14:10

I have tried setting AIRFLOW__COSMOS__PROPAGATE_LOGS = "False" as per this and I have tried AIRFLOW__COSMOS__PROPAGATE_LOGS=false but neither have any effect on removing the astronomer-cosmos lines.

All the cosmos logs are WARNING level, which also seems strange.

@adammarples, thanks for reporting the issue!
This is a bug, and the robot suggested using the configuration file to a workaround. Could you confirm this works?
The fix can be done along these lines:
https://github.com/astronomer/astronomer-cosmos/blob/6ccde5cf82fe61f0200b69eaa827cf4a0740bb16/tests/test_log.py#L20-L22
And we need add a test to make sure things work with env vars:
https://github.com/astronomer/astronomer-cosmos/blob/6ccde5cf82fe61f0200b69eaa827cf4a0740bb16/tests/test_log.py#L19-L24
Would you like to make this contribution?

Hi @tatiana, I am just investigating it. It's my bad, it's not a bug, these log propagation changes work fine in main branch but are not included in version 1.2.5, so I'll wait for the update.

@adammarples Sorry - we are really lacking versioned docs, I logged #750 so we don't lose track of this issue.

@adammarples this change is available in the release 1.3.0a2, in case you'd like to try it out:
https://pypi.org/project/astronomer-cosmos/1.3.0a2/
Since it is a new feature, we didn't release as part of a 1.2 micro release. For some reason we missed to include it in our release notes, I'll fix this:
https://github.com/astronomer/astronomer-cosmos/releases/tag/astronomer-cosmos-v1.3.0a2


join condition on column = null does not work as expected in non sql compatible mode

Affected Version
0.19
Description
Druid does not support joining against a condition that evaluates against a constant - see #9941, however if you write a SQL query where the join condition is of the type key = NULL, Calcite optimizes this condition to false. This is correct in SQL compatible mode, but in non sql compatible mode (default) this condition should be evaluated to key = '' which is not supported.
NOTE: queries with the shape table1 inner join table2 on table1.key IS NULL and table1 inner join table2 on table1.key = '' do not plan as expected.
The following CalciteQueryTest shows the issue.
 @Test
  @Parameters(source = QueryContextForJoinProvider.class)
  public void testSelectOnLookupUsingInnerJoinOnDimEqualsNullOperator(Map<String, Object> queryContext) throws Exception
  {
    testQuery(
        "SELECT dim2, lookyloo.k\n"
        + "FROM foo INNER JOIN lookup.lookyloo ON foo.dim2 = null\n",
        queryContext,
        ImmutableList.of(
            newScanQueryBuilder()
                .dataSource(
                    join(
                        new TableDataSource(CalciteTests.DATASOURCE1),
                        new LookupDataSource("lookyloo"),
                        "j0.",
                        equalsCondition(DruidExpression.fromColumn("dim2"), DruidExpression.fromColumn("j0.k")),
                        JoinType.INNER
                    )
                )
                .intervals(querySegmentSpec(Filtration.eternity()))
                .columns("dim2", "j0.k", "j0.v")
                .context(queryContext)
                .build()
        ),
        NullHandling.sqlCompatible() ?
        ImmutableList.of() :
        ImmutableList.of(
            new Object[]{"", "a"},
            new Object[]{"", "abc"},
            new Object[]{"", "nosuchkey"},
            new Object[]{"", "6"}
        )
    );
  }

This is not a bug. In SQL nothing = NULL, so this is the correct behavior whether or not we are running in sql compatible mode.


doesNotContainSequence

Summary
There is AbstractIterableAssert.containsSequence, but not the opposite to verify it doesn't contain sequence starting from any index.
Currently I'm using:
assertThat(myList).isNot(Condition(Predicate { it.containsSubList(mySubList) }, "containing sequence"))

where containsSubList is a Kotlin extension method I also had to define:
fun <T> List<T>.containsSubList(other: List<T>)
        = (0..size - other.size).any { subList(it, it + other.size) == other }

I also suggest to create versions of both containsSequence and doesNotContainSequence that accepts List in addition to current vararg ELEMENT.
Example
assertThat(myListOrIterable).doesNotContainSequence(mySubListOrIterable)
assertThat(myListOrIterable).doesNotContainSequence(element1, element2, element3)
assertThat(myListOrIterable).containsSequence(mySubListOrIterable)

Java 8 specific ?
NO

YES : create Pull Request from the master branch
NO  : create Pull Request from the 2.x branch

I've done a pull request for the "support Lists in the existing methods" half of your request.
I'll add the doesNotContainSequence methods separately.

I've added doesNotContainSequence but it still needs doesNotContainSubSequence.

Should all be there now.


Is it possible to serve multiple local workbenches?

Category

[x] Question
[ ] Typo
[ ] Additional article idea

Question
I need to run two instances of gulp serve on my development environment. I have an SPFx component library which is linked to another SPFx project both of which need to be served.
With version 1.8 I was able to simply change the ports in the serve.json file and I could run both SPFx projects without problems.
I have since upgraded to 1.9.1 and now my serve.json configuration does not show the workbench in the browser. Just a blank page.
I have also tried with 1.10.0 and no luck.
Environment details

OS: Linux Mint
Framework: Node.js v10
Browser(s): [Chrome
Tooling: VS Code, SPFx v1.9.1, SPFx v1.10.0

Hi,
Any update on this one?
Thanks

Hi @mbice
I tried with the custom ports on version 1.10.0, after you changed the port, if you ran gulp serve, the below files were not updated

workbench.html from temp folder

Once you ran gulp clean, gulp build and gulp serve, the above file is updated with the latest custom port
But the main issue is on the manifests.js in the temp folder, all the configurations are mapped to port 4321, I just tried to changed the port for SPPropertyPane it worked and it suddenly updated to port 4321 again.
I think there is some restrictions on using the custom ports in the latest version.

Hi @jacksonv1lle any update on this?

I've got a little more insight, but not what I suspect you're looking for. Running two instances is not an intended or supported scenario... I can now dupe this in v1.10... it does appear something is hard coded or the routing is screwed up along the way.
Engineering is aware of this, but I don't think it's something that's going to get addressed...


Fix crash when emitting an atom of any

When emitting an atom of any, we were unconditionally failing and crashing the process. I think this is an oversight because this case can occur pretty often with CharacterClass.any who creates one of these.
Resolves: rdar://96280236

@swift-ci please test


about the results of training

I would like to ask if your code is about the generated result image. I trained only the .mat file according to your main file, and there is no specific visualization picture?  such as your github image

@feidasheng Hello, I also encountered such a problem, how did you solve it effectively? Lowering the version?


Show only one of multiple names/flags

I am not sure if I missed it somewhere in the docs or issues, but I was wondering if it is possible to show only one (e.g. the first) of multiple names for an argument.
Let's say I do:
run.add_argument("-n", "--dryrun")

and then I use argcomplete on this:
$ my_tool [tab-tab]
-n --dryrun

I want only one of those two to show, not both. Is this somehow supported by argcomplete?
p.s. great tool :trophy:

I believe you can supply any flags you don't want to see to exclude, e.g. argcomplete.autocomplete(exclude=['--dryrun']). Does this work for you?

Yes that works! :muscle:
However I have a bit more complex setup with subparsers, and it does not work for the subparsers unfortunately :(

Is there a blessed way to exclude = [] from subparsers?


Change filepath constraint and add tests for (#425)

Hope this is useful 👍

Modifies https://github.com/Gabriella439/turtle/pull/425

Thank you!  I'll fix the test failures on my branch


Show progress on query param change with useRouter

I'm trying to show a progress bar when changing query params using useRouter, but it's not happening. isSameURL function does not check query params

Getting the same issue, the only workaround at the moment is seem to be manually importing NProgress.


966 textarea fieldvalue no

:tada: This PR is included in version 4.0.0-alpha.39 :tada:
The release is available on:

npm package (@alpha dist-tag)
GitHub release

Your semantic-release bot :package::rocket:

:tada: This PR is included in version 1.0.0-alpha.94 :tada:
The release is available on:

npm package (@alpha dist-tag)
GitHub release

Your semantic-release bot :package::rocket:

:tada: This PR is included in version 1.0.0-alpha.16 :tada:
The release is available on:

npm package (@alpha dist-tag)
GitHub release

Your semantic-release bot :package::rocket:

:tada: This PR is included in version 2.0.0-alpha.6 :tada:
The release is available on:

npm package (@alpha dist-tag)
GitHub release

Your semantic-release bot :package::rocket:

:tada: This PR is included in version 2.0.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:

:tada: This PR is included in version 4.0.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:

:tada: This PR is included in version 1.0.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:

:tada: This PR is included in version 1.0.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Remove kevlar suit from players

From my test it seems that players are not currently affected by bullets
Can you give me some orientation on how to properly add some sort of damage system to the engine?
I appreciate any help.

You must get the angle using atanx360pi... then run some calculations,
bullet speed is 10pps, add a new "services" that runs every fps and
estimate the current position of the bullet Plus the position of the
players, it requires many resources.
On 2 Jul 2016 18:15, "jgamedev"<EMAIL_ADDRESS>wrote:

From my test it seems that players are not currently affected by bullets
Can you give me some orientation on how to properly add some sort of
damage system to the engine?
I appreciate any help.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/arjanfrans/realtime-multiplayer-in-html5/issues/2,
or mute the thread
https://github.com/notifications/unsubscribe/ABLfzgSq6DCAZP9S4szvW9smXH7kf6rTks5qRuLpgaJpZM4JDwqg
.

I did not implement a damage system, but it would be nice to add it as an example.

Got something that almost works: https://github.com/arjanfrans/realtime-multiplayer-in-html5/commit/c951f312a2d0afd4df77b69ce0c959ec117e16ab

Exciting!
At some point I got different colors on each client, though, see here:
https://drive.google.com/file/d/0B3KOxh0-cqDmdzNLOWVFczgtRWs/view
Haven't looked at the committed code yet

Yes, I noticed that. That's why it almost works :smile:

I'm looking at it to see if I find anything but the staggering amount of data coming down the pipe is just staggering.
For one thing, I'm receiving my own name at least once evry second.
I think that even without resorting to binary, you'd be able to cut the message payload size to less than 10% of what it is now.
Just by implementing .toFixed(2) for all positions, replacing the use of UIDs for short IDs and ( along with player name mentioned above) would cut it down to less than 20%, for sure.
Your player.toJson() could look like this instead:
function toJSON (expanded) {
        let data = {
            id = roomId; // this is  2 chars long, max 100 per room
            i: lastInputSeq,
            p: [position.x, position.y], // x, y array instead?
            h: hit.getValue() ? 1 : 0,
            f: fireing.getValue() ? 1 : 0,
            r: reloading ? : 1 : 0,
        };
        // when joining/leaving rooms send expanded info
        if(expanded){
          data.id = id // replace by actual player UID, stored on the client
          data.name = name
        }
        return data;
    }

Which would generate a payload the following payload:
{ id:9, i:555, p: [ 333.5, 444.5] , h:1, f:1, r:0 }
Compared to current:
{"id":"21b8f2be-d98d-43db-bbd8-cbf3bb317d55","name":"jay","lastInputSeq":"627","position":{"x":474.522,"y":289.076},"hit":false,"fireing":true,"reloading":false}

or to cut it even less:
{ id:9, i:555, s:333.5-444.5-1-1-0 }

Btw, sorry to flood the issue with the unrelated topic of message size.
Regarding the bullet collision, I noticed that you are just checking evry bullet against every player, but the would only be pratical for a very few amount of bullets and players. :cry:
Instead, I'd expect some algoritthm to be used to filter out which objects need to be tested:
Here are a few topics on this theme discussed in the context of a javascript game:
Quadtree for bullet collision detection in javascript:
http://blog.sklambert.com/html5-canvas-game-2d-collision-detection/
Another step-by-step implementation but in Actionscript, which is very limilar to JS:
http://gamedevelopment.tutsplus.com/tutorials/quick-tip-use-quadtrees-to-detect-likely-collisions-in-2d-space--gamedev-374
Usable implementation of quadtrees for use in the browser and with Node: https://github.com/p1100i/grid2.js

BTW there are some benchmarks and links to JS libraries for collision here:
https://0fps.net/2015/01/23/collision-detection-part-3-benchmarks/

I kept it simple for now. But yes, it can get out of hand pretty quick with too many bullets.
Thanks for the links!

The hit events should work now, I put it in the master branch.

Thanks, will test and report back in 1 hour :+1:

Hi, sorry Iseems to be work better

Hi, sorry, I'm a bit late.
So.. it seems to be better but still has bugs.
(Btw, How can I be sure that I'm running the latest version? I tried to pull but I git tells me I'm up-to-date in master.)
I was only able to test it for a few minutes. Heres a screenshot showing the problem:
https://dl.dropboxusercontent.com/u/1631393/test/nodeserver1.png
This problem can be reproduced by firing on the very edge of the enemy.
So I'd guess that the "other" client detected a collision and killed the bullet while the server did not see a colision and has no way of correcting the client?
I have to confess I haven't studied the new code completely.
If my assumptions are right, it seems the clients currently have authority to detect hits independently from the server? Is this a good idea? I'm guessing them that the fix would be to always rely on the server to authorize hit events.  @arjanfrans , @asdfuken , @redblobgames  what do you think?

@jgamedev You are correct. If the client hits someone, it will hit optimistically, not waiting for a server response. This is indeed not a good idea.
The client should be corrected by the server. I am wondering, does the client even need to perform detection, or just always wait for the server?

I believe the most optimistic your clients could be is to render bullet movement locally, but hits (and the corresponding bullet suppression) should be definitely come only from the server.
See the comment from user PrimeDerektive in a similar discussion here:
http://forum.unity3d.com/threads/projetiles-how-to-handle-a-bullet-over-the-network.97606/
Also if the user renders bullets optmistically ( which I definitely think it shoud)  the server needs to correct bullet position at least once. If that doesnt happen you'll can end up with hits that are only aknowledge after the bullet went past the user, due to a late server response.

@jgamedev The “standard” answer is to never trust the client, and do everything on the server, but I've seen other architectures that work too. It depends on the game. Client hit detection sometimes feels better because there's no lag and it can be pixel perfect.

@redblobgames thanks for commenting!
I think that a hybrid approach would be to allow the client to optimistically remove bullets for unconfirmed hits, but maybe not render the damage sprite?
This could prove to be a nice balance, because it would prevent the annoying body traversing bullets scenario, at the same time that it doesn't completely misinform the local player, since he will not see rendered damage unless the server confirms it. Bellow  are some possible anomalies of such an approach:

Resurrecting bullets anomaly:  once removed by the local user  the bullet should be gone forever and further references to the same bullet should be disregarded in order to prevent bullets re-appearing mid-air. Damage would still be rendered, but not the bullet sprite itself

Damage by invisible bullets anomaly:  say i have 2 enemies one is in front , the other enemy is a little behind. Local client sees the bullet hitting the enemy in the front and optimistically removes the bullet, but shows not damage because that's the job of the server. Server doesn't see the same trajectory and lets the bullet travel further, hitting the enemy behind. Because the bullet has already been optimistically removed by the local client, damage will be a applied to the second enemy but without a bullet visually hitting him.

So in this scenario, from the perspective of the local user, he sees enemy 1 intercepting the bullet while enemy 2 is the one actually getting and displaying the damage.
Thoughts?