Adds binding for MapRegion, PinsSource, CirclesSource, Commands,... - More MVVM

Implements the logic to bind directly objects to the XAML map (MapRegion, PinsSource and CirclesSource)
What has been done

MapRegion Map property allows to initiate the map at the right place, and gets updated with the camera. MapRegion changes when the camera changes, and setting MapRegion moves the camera to this point. An event MapRegion_Changed is exposed for code-oriented programming.
MapSpanTypeConverter type allows raw entries directly in XAML for MapSpan for position initialization. Formats available are "(Lat,Lng),LatDelta,LngDelta" or "(North,West),(South,East)".
PositionJsonConverter to allow deserializing the Position type
Interfaces have been created, that bound object should implement:

IPin
ICircle
ISegment

PinsSource property is an observable collection of IPin, Interface allowing the user to abstract its logic from the Map Models. All Pins property are binded to this interface, so the user can update its models and see the modifications directly on the map (if he has implemented the INotify). More properties could be exposed to customize the pins.
CirclesSource is an observable collection of ICircle.
SelectedItem Is bound two ways to the selected pin (no more need to work with the map pins)
Pins animation Pins can be animated on appear (pop only for iOS, many patterns for Android like drop, shake, etc, but not pop)
Geographical extensions: some extensions to Position and Circle have been added to allow some "simple" geographic calculations answering:

Distance between two points
Orientation (bearing) of a segment
Is a point in a circle/disc?
Does a segment intersect a circle? (just for fun)
Translate a geographical point giving a direction (direction can be provided via an angle or a segment), useful to predict position knowing the speed for example. See sample CircleBinding.

Comments

Very easy to use, just bind a ObservableCollection
3 new samples show how to use these features
The last sample (Properties Binding) shows the MapRegion, SelectedItem and PinsSource binding.
The 1st Pin sample has been updated to show the raw MapSpan capacity.

Remarks:

VisibleRegion has been changed to MapRegion as the term did not fit for the "initiation". MapRegion handles modification and observation
SelectedItem has been bound two ways with SelectedPin
The collection binding could be easily extended to other shapes, it does not modify the existing code, just need to copy/paste one of the two region and set the correct types/properties, and create an interface.

This answers the issue posted earlier: https://github.com/amay077/Xamarin.Forms.GoogleMaps/issues/150
Enjoy
Planned

Get all geography out of the main project (to be able to add reference only to the geography project, without Xamarin.Forms dependency)
Add more animations for iOS pins apparition
Add custom buttons for zoom
Add grouping behavior for pins
Any other nice idea :)

Any idea when this fix will land in master?

@adamhill : I have developped it for my own needs (and a bit "just for fun" in samples). However we haven't discuss at all with @amay077 , if this dev fits its development view/style etc. Therefore it will probably require some testings by @amay077 before :)
However I use this branch for my own app and it works great, I will release a public version soon (the current live version of my app uses another solution, I have just migrated to this one because it was much more flexible to implement the binding logic).

@adamhill I totally agree, that is why I implemented it, and it feels now so much easier to use!

For me it does not work on Android phone
01-02 23:12:41.162 D/Mono    (16729): Searching for '__android_log_print'.
01-02 23:12:41.162 D/Mono    (16729): Probing '__android_log_print'.
01-02 23:12:41.163 D/Mono    (16729): Found as '_android_log_print'.
01-02 23:12:41.182 I/MonoDroid(16729): UNHANDLED EXCEPTION:
01-02 23:12:41.227 I/MonoDroid(16729): System.MissingMethodException: Method 'Xamarin.Forms.GoogleMaps.Map.set_VisibleRegion' not found.
01-02 23:12:41.228 I/MonoDroid(16729):   at Xamarin.Forms.GoogleMaps.Android.MapRenderer.OnCameraChange (Android.Gms.Maps.Model.CameraPosition pos) [0x00007] in :0
01-02 23:12:41.228 I/MonoDroid(16729):   at Android.Gms.Maps.GoogleMap+IOnCameraChangeListenerInvoker.n_OnCameraChange_Lcom_google_android_gms_maps_model_CameraPosition (System.IntPtr jnienv, System.IntPtr native__this, System.IntPtr native_position) [0x00011] in :0
01-02 23:12:41.228 I/MonoDroid(16729):   at (wrapper dynamic-method) System.Object:336195f3-6fc8-4201-b615-12f5f6bfed90 (intptr,intptr,intptr)
01-02 23:12:41.258 D/Mono    (16729): DllImport searching in: '__Internal' ('(null)').
01-02 23:12:41.258 D/Mono    (16729): Searching for 'java_interop_jnienv_throw'.
01-02 23:12:41.258 D/Mono    (16729): Probing 'java_interop_jnienv_throw'.
01-02 23:12:41.259 D/Mono    (16729): Found as 'java_interop_jnienv_throw'.
An unhandled exception occured.
Thread finished:  #4
01-02 23:12:49.264 D/Mono    (16729): [0x69740c68] worker finishing
The thread 'Unknown' (0x4) has exited with code 0 (0x0).
01-02 23:12:58.494 D/dalvikvm(16729): threadid=15: bye!
01-02 23:12:58.496 E/mono    (16729):
01-02 23:12:58.496 E/mono    (16729): Unhandled Exception:
01-02 23:12:58.496 E/mono    (16729): System.MissingMethodException: Method 'Xamarin.Forms.GoogleMaps.Map.set_VisibleRegion' not found.
01-02 23:12:58.497 E/mono-rt (16729): [ERROR] FATAL UNHANDLED EXCEPTION: System.MissingMethodException: Method 'Xamarin.Forms.GoogleMaps.Map.set_VisibleRegion' not found.
In mgmain JNI_OnLoad
But I dont get this everywhere was VisibleRegion renamed to MapRegion

"But I dont get this everywhere was VisibleRegion renamed to MapRegion"
You are right.
I haven't tried the samples I have added for a while, but they should work.

The last commit was just a crash-proof fix on another issue

Nope, I am not able tu run sample because it is telling me something with colorAccent.

This is great work!
I can not review these because it has very big changes.
And I hope keep backward compatibility in X.F.GoogleMaps v1.x.
If you want to use MVVM like data bindings, I recommend to use Xamarin.Forms Behaviors.
@nuitsjp is developing Xamarin.Forms.GoogleMaps.Bindings that provides useful Xamarin.Forms behaviors for data binding with XAML.
If you have other features, please you contain minimum and atomic file changes in your Pull-request.

Will be this merged to master or it was already merged?

No, I rejected this PR because this.
I have no plan to merge this BIG changes.

If @JeanCollas will not split to smaller pulk requests I will try it

You can do it, actually you just need to follow the commits.
I am not so good at merging different repositories, and continued to work on the branch as nobody was looking at it.
I think the only 'conflict' with the branch of this repository is the VisibleRegion that I renamed to MapRegion. To simplify this issue, you can just duplicate the property 'VisibleRegion' as a mirror of the 'MapRegion', and trigger a OnPropertyChanged("VisibleRegion") on MapRegion change.


Use Cats' Eval

This is just a first step towards Cats in Finch! But I think it's a good start!
This PR uses Cats' Eval[A] instead of () => A. The end-user API wasn't affected. I'm going to check the benchmarks later tonight and would appriciate any thoughts on this.

Was the motivation to never evaluate lazy values by mistake?

@fsvehla what do you mean? Nothing actually has changed by this PR except for with Eval, we could do some nice things as Eval.now (which by defenition should be cheaper) for the output we're going to drop in any way.

Ah I see, I’ve wondered about the utility vs. using by-name parameters, and this can to be more robust against evaluating the lazy value by mistake.

Current coverage is 90.00%

Merging #453 into master will decrease coverage by -4.06% as of d6d3f1c

Powered by Codecov. Updated on successful CI builds.

:+1:

Nice—I'm looking forward to seeing what else we can do with this.
It's worth noting that Eval[Future[x]] here is a kind of approximation of scalaz.concurrent.Task—we need to be able to define a future but not have it begin execution immediately. This is a pretty generally useful thing to have, and it may be worth breaking out into its own thing—e.g. something like this (which is just a sketch):
package io.catbird.util

import cats.{ Applicative, Eval, Monad }
import com.twitter.util.Future

class Task[A](val value: Eval[Future[A]]) extends AnyVal {
  def toFuture: Future[A] = value.value
}

object Task {
  private[this] type EF[A] = Eval[Future[A]]
  private[this] val app: Applicative[EF] =
    Applicative[Eval].compose(Applicative[Future])

  def apply[A](a: => A): Task[A] = new Task(Eval.later(Future(a)))
  def fromFuture[A](f: => Future[A]): Task[A] = new Task(Eval.later(f))

  implicit val taskInstance: Monad[Task] = new Monad[Task] {
    def pure[A](x: A): Task[A] = new Task(app.pure(x))
    def flatMap[A, B](fa: Task[A])(f: A => Task[B]): Task[B] = new Task(
      fa.value.map(_.flatMap(a => f(a).value.value))
    )
  }
}

And then you can do this:
import com.twitter.util.{ Future, FuturePool }, io.catbird.util._

val task = Task.fromFuture(
  Future.collect(
    (0 to 10).map(i => FuturePool.unboundedPool { Thread.sleep(10000); println(i) })
  )
)

And it won't start running until you call runFuture, but then the futures will run asynchronously:
scala> task.runFuture
res2: com.twitter.util.Future[Seq[Unit]] = Promise@1493334289(state=Interruptible(List(),<function1>))

scala> 1
7
5
8
6
0
9
4
3
2
10

@travisbrown This is cool! I was actually thinking about making a type alias for Option[(Input, Eval[Future[Output[A]]])] beacuse it's quite annoying to type (and even hard to understand) it.

I've already plugged Finch on my own lazy-effect library called Précepte and I think your evolution might help me too...

@mandubian great to hear that! I think Eval should work fine for us and (perhaps) make things a bit faster while allocating less.


chore: change eth rpc url

The reason for switching to another is that this RPS is unstable,
Score | Privacy are negative at Chainlist:

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

GitHub release
npm package (@latest dist-tag)

Your semantic-release bot :package::rocket:


Exhaustive switch expression over enum should remove default IncompatibleClassChangeError

Exhaustive Switch expressions of enums have an automatically generated default branch of default -> throw new IncompatibleClassChangeError(); in case of reflection changing fields in an enum. Quiltflower should remove this from the output because it's not needed for it to compile.
Tests: TestInlineSwitchExpression1, TestInlineSwitchExpression3

Fixed by #129


Compatibility with target=_blank rules/plugins

I'm trying to get a target=_blank markdown plugin to work along with this plugin. I noticed some issues:

The anchor tokens generated by this is are not Token instances. This means I have to do a try {} catch {} around the code that is based off of https://github.com/markdown-it/markdown-it/blob/master/docs/architecture.md#renderer

When I get type=link_open Tokens for the TOC generated parts they don't have any identifiers that they were generated by this plugin. It would be good to also apply the className to the links themselves in addition to the ul divs.

Nvm I wrote my own fork of the blank to work with toc.


Confirm Caregiver Strain Index wording

Carole says to use the wording exactly as it appears, however, she also recommended using the Modified Caregiver Strain Index instead of the regular CSI because it's better. https://app.zenhub.com/files/430794588/29bc2b74-83aa-49e0-a69b-f6ad22ff5299/download


Upgrade to latest typescript (5.3.3)

Changes the name of type MouseWheelEvent to WheelEvent
Before
> tsc
src/editor/Editor.ts:251:26 - error TS2552: Cannot find name 'MouseWheelEvent'. Did you mean 'MouseEvent'?

251  private onScroll(event: MouseWheelEvent) {
                             ~~~~~~~~~~~~~~~

  ../../.asdf/installs/nodejs/19.7.0/lib/node_modules/typescript/lib/lib.dom.d.ts:15636:13
    15636 declare var MouseEvent: {
                      ~~~~~~~~~~
    'MouseEvent' is declared here.

Found 1 error in src/editor/Editor.ts:251

After
> tsc

Thank you for submitting this, I didn't see your PR before I fixed this myself in 99de924060cfca223f630bda5201e42a1fdeecb9


Facilitate composition on ContextMiddleware

To improve composability on ContextMiddleware and friends it would be nice to have:

Functor instances for ContextRequest and ContextMiddleware.
Add contramapRoutes operator on ContextMiddlware, that allows for more involved mapping where errors might occur.
Add withoutContext operator on ContextMiddlware, that basically ignores the additional context and turns the ContextMiddleware into a vanilla Middleware.

These additions would help to transform already existing Middleware instances more easily. Since some applications don't expose user aware routes and gathering the user context might lead to failures.
Here is a proposal how these could look like:
import cats.data.OptionT
import cats.{FlatMap, Functor}
import org.http4s._
import org.http4s.server._
import cats.implicits._

object Http4sAdditions {
  implicit def contextRequestFunctor[F[_]]: Functor[ContextRequest[F, *]] =
    new Functor[ContextRequest[F, *]] {
      override def map[A, B](fa: ContextRequest[F, A])(
          f: A => B): ContextRequest[F, B] =
        ContextRequest(f(fa.context), fa.req)
    }

  implicit def contextMiddlewareFunctor[F[_]]
    : Functor[ContextMiddleware[F, *]] = new Functor[ContextMiddleware[F, *]] {
    override def map[A, B](fa: ContextMiddleware[F, A])(
        f: A => B
    ): ContextMiddleware[F, B] = (routesB: ContextRoutes[B, F]) => {
      val routesA: ContextRoutes[A, F] =
        routesB.local[ContextRequest[F, A]](_.map(f))
      fa(routesA)
    }
  }

  implicit class ContextMiddlewareOps[F[_], A](cm: ContextMiddleware[F, A]) {
    def contramapRoutes[B](f: ContextRoutes[B, F] => ContextRoutes[A, F])
      : ContextMiddleware[F, B] =
      (routesB: AuthedRoutes[B, F]) => cm(f(routesB))

    def withoutContext(implicit A: FlatMap[F]): Middleware[
      OptionT[F, *],
      Request[F],
      Response[F],
      Request[F],
      Response[F]
    ] = (routesIn: HttpRoutes[F]) => {
      val contextRoutes: ContextRoutes[A, F] =
        routesIn.local[ContextRequest[F, A]](_.req)
      cm(contextRoutes)
    }
  }
}

functor for ContextRequest[F, A] should be on ContextRequest companion
About the middleware I'm not sure.
ContextMiddleware are just function Kleisli => Kleisli, is there anything in cats that might give us that functor given the ContextRequest Functor?
The syntax belongs somewhere in the http4s.syntax tree

ContextMiddleware are just function Kleisli => Kleisli, is there anything in cats that might give us that functor given the ContextRequest Functor?

Not implicitly, but it should be Contravariant[* => HttpRoutes[F]].compose(Contravariant[ContextRoutes[*, F])). And you can build a Contravariant[ContextRoutes[*, F]] in a similar fashion.
That said, I feel like it would be nice to have not just a Functor, but an Applicative for ContextMiddleware[F, *].

Nothing in this proposal is breaking, right?  Trying to prioritize things that necessitate breaking changes now, so we can continue to improve in minor releases after The Big 1.0.

Hi,
In case it's of interest, I was also looking into an Applicative for CntextMiddleware and I actually "found" the following Monad[ContextMiddleware[F, *]] instance:
implicit def contextMiddlewareMonad[F[_]: Defer]: Monad[ContextMiddleware[F, *]] =
  new StackSafeMonad[ContextMiddleware[F, *]] {

    private val deferInstance: Defer[OptionT[F, *]] = Defer[OptionT[F, *]]

    override def pure[A]( a: A ): ContextMiddleware[F, A] =
      (aRoutes: ContextRoutes[A, F]) => Kleisli( req => aRoutes.run( ContextRequest( a, req ) ) )

    override def flatMap[A, B]( fa: ContextMiddleware[F, A] )(
        f: A => ContextMiddleware[F, B]
    ): ContextMiddleware[F, B] =
      (bRoutes: ContextRoutes[B, F]) =>
        fa( Kleisli { case ContextRequest( a, req ) => deferInstance.defer( f( a )( bRoutes ).run( req ) ) } )

  }

I got there by observing that ContextRoutes[T, F] ~ T => HttpRoutes[F], so that ContextMiddleware[F, T] ~ (T => HttpRoutes[F]) => HttpRoutes[F], which starts to look a lot like an instance of the Cont monad, and indeed my first stab at the monad instance was based on reusing the cats.data.ContT monad with explicit conversions, and then I was able to slowly simplify/inline everything down to the above code.
I've even got the discipline tests for the cats-laws monad laws passing, including stack safety.


Does it work also with base component ?

I don't want to import this on each class. So I've created a base class .
Will it work  ( + AOT + Regular) if I declare this in a base class like this ?
notice : decorator is at base and also ngOnDestroy :

Yes, it should work, you can check it. Add a log to your super method.


Fix 404 page for anonymous user

Meant to fix #624.
The anonymous user has ID None.  Previously, this exception was raised:
NoReverseMatch: Reverse for 'user-profile' with arguments '(None,)' not found. 1 pattern(s) tried: ['user/(?P<pk>\\d+)/profile/$']

Thanks 👍


fix: SQL Lab cancel query in Redshift database connection does not wo…

…rk #16325
SUMMARY

BEFORE/AFTER SCREENSHOTS OR ANIMATED GIF

TESTING INSTRUCTIONS

ADDITIONAL INFORMATION

[x] Has associated issue:
[ ] Required feature flags:
[ ] Changes UI
[ ] Includes DB Migration (follow approval process in SIP-59)

[ ] Migration is atomic, supports rollback & is backwards-compatible
[ ] Confirm DB migration upgrade and downgrade tested
[ ] Runtime estimates and downtime expectations provided

[ ] Introduces new feature or API
[ ] Removes existing feature or API

The changes are similar to the corresponding option in Postgres's cancel SQL option in SQL Lab

Hi  @eschutho Can this be Merged? Any issues?

@yourssvk sorry for the delay. It looks like there's just one linting error that's failing the tests. Can you try running pre-commit locally to fix it? There are instructions isn https://github.com/apache/superset/blob/master/CONTRIBUTING.md how to get pre-commit running.

@yourssvk  I'm getting empty query id while superset code calling cancel_query_id = db_engine_spec.get_cancel_query_id(cursor, query) in sql_lab.py with engine ReshiftSpec, while for postgres spec,I get queryid, so stop query is working fine in case of postgres but not in redshift, did some logging to verify, here is the log
for postgres
2023-10-31 08:48:29,251:INFO:superset.sql_lab:15965
<class 'superset.db_engine_specs.postgres.PostgresEngineSpec'>```
where 15965 is postgres query id but for redshift sql lab
```None
2023-10-31 08:44:28,331:INFO:superset.sql_lab:None
<class 'superset.db_engine_specs.redshift-bak.RedshiftEngineSpec'>```
it is returning null, my version is 2.1.1, is it known issue


Temp ACE Fix

Quick ACE mitigation since I don’t have time to actually fix it right now.

test is failing that needs fixed


Replace deprecated usage of fs.rmdir

This is causing a node deprecation warning to show up in the tool output:
(node:1) [DEP0147] DeprecationWarning: In future versions of Node.js, fs.rmdir(path, { recursive: true }) will be removed. Use fs.rm(path, { recursive: true }) instead

The warning provides the recommended fix.
Resolves #4

Thabks a lot


CosmosDB DocumentDBConverter Fixed

Removed @Slf4j as it is adding LOGGER field which is not mapped to properties in BasicPersistentEntity.
Making available for 5.3.1

 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.Viswa Teja Nariboina seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.


Add an easy way to wait for all layers loaded event

I think we could add a carto.on function that worked like this:
carto.on([layer1, layer2], 'loaded', ()=>{

});

I love this! 💖
I would say carto.on('loaded', [...], () => ...

Fixed by #755


[JB] Run Shortcuts in the background

I listened to (some of) the podcast where Federico was talking about the CLI mode of running shortcuts on MacOS.
It could be possible on iOS running the Springcuts tweak on jailbroken devices.
Unfortunately I lack the expertise to whomp together anything of the sort and I doubt it if you were interested to make anything like this publicly available, but at least you could give some pointers how it could be done.
Basically, to my understanding, the applet should be invoked through terminal/zsh (in usr/bin) and shortcuts could be run directly.
Any thoughts on this?
Cheers

CLI mode of running shortcuts on MacOS

The Shortcuts CLI program on macOS is separate from the Shortcuts App itself. The cli is under /usr/bin/shortcuts not  /Applications/Shortcuts\ Backup.app/. It's compiled for a different archeture so will not run under  iOS. I doubt that the shortcuts app on iOS has any support for the CLI. Not only that, but iOS has a lot of differences to macOS on how it handles applications. Sorry I don't thinks its possible.


account.notifications help

Hello,
I have tried using the added notifications function. However, unless I check it on the Twitter web interface, the data will not be updated even if new notifications arrive.

cursor add

Hello could you describe a bit more how you solved the problem?

Hello could you describe a bit more how you solved the problem please?

This is an example code.
first = True
params = {
"include_profile_interstitial_type": 1,
"include_blocking": 1,
"include_blocked_by": 1,
"include_followed_by": 1,
"include_want_retweets": 1,
"include_mute_edge": 1,
"include_can_dm": 1,
"include_can_media_tag": 1,
"include_ext_has_nft_avatar": 1,
"include_ext_is_blue_verified": 1,
"include_ext_verified_type": 1,
"include_ext_profile_image_shape": 1,
"skip_status": 1,
"cards_platform": 'Web-12',
"include_cards": 1,
"include_ext_alt_text": 'true',
"include_ext_limited_action_results": 'true',
"include_quote_count": 'true',
"include_reply_count": 1,
"tweet_mode": 'extended',
"include_ext_views": 'true',
"include_entities": 'true',
"include_user_entities": 'true',
"include_ext_media_color": 'true',
"include_ext_media_availability": 'true',
"include_ext_sensitive_media_warning": 'true',
"include_ext_trusted_friends_metadata": 'true',
"send_error_codes": 'true',
"simple_quoted_tweet": 'true',
"count": 20,
"requestContext": 'launch',
"ext": 'mediaStats,highlightedLabel,hasNftAvatar,voiceInfo,birdwatchPivot,superFollowMetadata,unmentionInfo,editControl'
}
while(True):
global params
notifications = account.notifications(params)
globalObjects = notifications['globalObjects']
instructions = notifications['timeline']['instructions']
for x in instructions:
addEntries = x.get('addEntries')
if addEntries:
entries = addEntries['entries']
for x in entries:
entryId = x['entryId']
find_cursor_top = entryId.find('cursor-top')
if find_cursor_top != -1:
content = x['content']
operation = content.get('operation')
if operation:
cursor = operation['cursor']['value']
if cursor:
  params['cursor'] = cursor

if first == True:
  params['count'] = 40
  del params['requestContext']
  first = False
  time.sleep(7)
  continue


Create sample data versioning on pachyderm

Sample produced and included in the RH Summit demo: https://github.com/os-climate/data-platform-demo/blob/master/notebooks/gppd_ingest_1_extract_data_pachyderm.ipynb


remote-ssh

Type: Bug
I cannot connect to remote linux server via remote-ssh at recent version.
Please help me.
thanks
VS Code version: Code 1.87.2 (863d2581ecda6849923a2118d93a088b0745d9d6, 2024-03-08T15:14:59.643Z)
OS version: Linux x64 6.1.32-amd64-desktop-hwe
Modes:
Connection to 'SSH' could not be established

[22:37:26.656] Log Level: 2
[22:37:26.714] SSH Resolver called for "ssh-remote+<IP_ADDRESS>", attempt 1
[22:37:26.714] "remote.SSH.useLocalServer": true
[22:37:26.714] "remote.SSH.useExecServer": true
[22:37:26.720] "remote.SSH.path": undefined
[22:37:26.720] "remote.SSH.configFile": undefined
[22:37:26.721] "remote.SSH.useFlock": true
[22:37:26.721] "remote.SSH.lockfilesInTmp": false
[22:37:26.721] "remote.SSH.localServerDownload": auto
[22:37:26.721] "remote.SSH.remoteServerListenOnSocket": false
[22:37:26.721] "remote.SSH.showLoginTerminal": false
[22:37:26.721] "remote.SSH.defaultExtensions": []
[22:37:26.721] "remote.SSH.loglevel": 2
[22:37:26.721] "remote.SSH.enableDynamicForwarding": true
[22:37:26.722] "remote.SSH.enableRemoteCommand": false
[22:37:26.722] "remote.SSH.serverPickPortsFromRange": {}
[22:37:26.722] "remote.SSH.serverInstallPath": {}
[22:37:26.733] VS Code version: 1.87.2
[22:37:26.733] Remote-SSH version<EMAIL_ADDRESS>[22:37:26.733] linux x64
[22:37:26.735] SSH Resolver called for host: <IP_ADDRESS>
[22:37:26.735] Setting up SSH remote "<IP_ADDRESS>"
[22:37:26.750] Acquiring local install lock: /tmp/vscode-remote-ssh-56dd6708-install.lock
[22:37:26.754] Looking for existing server data file at /home/ubuntu/.config/Code/User/globalStorage/ms-vscode-remote.remote-ssh/vscode-ssh-host-56dd6708-863d2581ecda6849923a2118d93a088b0745d9d6-0.109.0-es/data.json
[22:37:26.759] Using commit id "863d2581ecda6849923a2118d93a088b0745d9d6" and quality "stable" for server
[22:37:26.786] Install and start server if needed
[22:37:26.802] PATH: /usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/sbin:/usr/sbin
[22:37:26.802] Checking ssh with "ssh -V"
[22:37:26.849] > OpenSSH_9.6p1 Deepin, OpenSSL 3.0.12 24 Oct 2023
[22:37:26.862] askpass server listening on /run/user/1000/vscode-ssh-askpass-d62a0d8d5e6433997c9a3cf85d7470012d10efd5.sock
[22:37:26.862] Spawning local server with {"serverId":1,"ipcHandlePath":"/run/user/1000/vscode-ssh-askpass-8ace08518da5871a598ac9412779dfc53e8c9188.sock","sshCommand":"ssh","sshArgs":["-v","-T","-D","42587","-o","ConnectTimeout=15","<IP_ADDRESS>"],"serverDataFolderName":".vscode-server","dataFilePath":"/home/ubuntu/.config/Code/User/globalStorage/ms-vscode-remote.remote-ssh/vscode-ssh-host-56dd6708-863d2581ecda6849923a2118d93a088b0745d9d6-0.109.0-es/data.json"}
[22:37:26.862] Local server env: {"SSH_AUTH_SOCK":"/run/user/1000/keyring/ssh","SHELL":"/bin/bash","DISPLAY":":0","ELECTRON_RUN_AS_NODE":"1","SSH_ASKPASS":"/home/ubuntu/.vscode/extensions/ms-vscode-remote.remote-ssh-0.109.0/out/local-server/askpass.sh","VSCODE_SSH_ASKPASS_NODE":"/opt/apps/com.visualstudio.code/files/code/code","VSCODE_SSH_ASKPASS_EXTRA_ARGS":"","VSCODE_SSH_ASKPASS_MAIN":"/home/ubuntu/.vscode/extensions/ms-vscode-remote.remote-ssh-0.109.0/out/askpass-main.js","VSCODE_SSH_ASKPASS_HANDLE":"/run/user/1000/vscode-ssh-askpass-d62a0d8d5e6433997c9a3cf85d7470012d10efd5.sock"}
[22:37:26.866] Spawned 21244
[22:37:27.113] > local-server-1> Running ssh connection command: ssh -v -T -D 42587 -o ConnectTimeout=15 <IP_ADDRESS>
[22:37:27.132] > local-server-1> Spawned ssh, pid=21253
[22:37:27.139] stderr> OpenSSH_9.6p1 Deepin, OpenSSL 3.0.12 24 Oct 2023
[22:37:27.139] stderr> /home/ubuntu/.ssh/config: line 3: Bad configuration option: user:
[22:37:27.139] stderr> /home/ubuntu/.ssh/config: line 4: Bad configuration option: identityfile:
[22:37:27.139] stderr> /home/ubuntu/.ssh/config: terminating, 2 bad configuration options
[22:37:27.141] > local-server-1> ssh child died, shutting down
[22:37:27.150] Local server exit: 0
[22:37:27.152] Received install output: local-server-1> Running ssh connection command: ssh -v -T -D 42587 -o ConnectTimeout=15 <IP_ADDRESS>
local-server-1> Spawned ssh, pid=21253
OpenSSH_9.6p1 Deepin, OpenSSL 3.0.12 24 Oct 2023
/home/ubuntu/.ssh/config: line 3: Bad configuration option: user:
/home/ubuntu/.ssh/config: line 4: Bad configuration option: identityfile:
/home/ubuntu/.ssh/config: terminating, 2 bad configuration options
local-server-1> ssh child died, shutting down
[22:37:27.167] Failed to parse remote port from server output
[22:37:27.173] Resolver error: Error:
at g.Create (/home/ubuntu/.vscode/extensions/ms-vscode-remote.remote-ssh-0.109.0/out/extension.js:2:499734)
at t.handleInstallOutput (/home/ubuntu/.vscode/extensions/ms-vscode-remote.remote-ssh-0.109.0/out/extension.js:2:497056)
at e (/home/ubuntu/.vscode/extensions/ms-vscode-remote.remote-ssh-0.109.0/out/extension.js:2:558185)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async /home/ubuntu/.vscode/extensions/ms-vscode-remote.remote-ssh-0.109.0/out/extension.js:2:580094
at async t.withShowDetailsEvent (/home/ubuntu/.vscode/extensions/ms-vscode-remote.remote-ssh-0.109.0/out/extension.js:2:583753)
at async /home/ubuntu/.vscode/extensions/ms-vscode-remote.remote-ssh-0.109.0/out/extension.js:2:554890
at async T (/home/ubuntu/.vscode/extensions/ms-vscode-remote.remote-ssh-0.109.0/out/extension.js:2:552941)
at async t.resolveWithLocalServer (/home/ubuntu/.vscode/extensions/ms-vscode-remote.remote-ssh-0.109.0/out/extension.js:2:554430)
at async k (/home/ubuntu/.vscode/extensions/ms-vscode-remote.remote-ssh-0.109.0/out/extension.js:2:577311)
at async t.resolve (/home/ubuntu/.vscode/extensions/ms-vscode-remote.remote-ssh-0.109.0/out/extension.js:2:581124)
at async /home/ubuntu/.vscode/extensions/ms-vscode-remote.remote-ssh-0.109.0/out/extension.js:2:847283
[22:37:27.182] ------

Hi @xuzhou2016 ,
Thanks for reaching VS Marketplace Team, as this issue looks specific to VS Code, could you please reach out to the VS Code Team https://github.com/microsoft/vscode/issues for further assistance.
Regards,
VS Marketplace Team

You might want to take a look at your config file.
[22:37:27.139] stderr> /home/ubuntu/.ssh/config: line 3: Bad configuration option: user: [22:37:27.139] stderr> /home/ubuntu/.ssh/config: line 4: Bad configuration option: identityfile: [22:37:27.139] stderr> /home/ubuntu/.ssh/config: terminating, 2 bad configuration options


Update Courier/Deploy resolvers

Internal note:

Once v1.1.0 is out, we'll need to update the Courier resolver and Deploy connector...

https://github.com/umbraco/Umbraco.Deploy.Contrib/blob/dev/src/Umbraco.Deploy.Contrib.Connectors/ValueConnectors/InnerContentConnector.cs
https://github.com/umbraco/Umbraco.Courier.Contrib/blob/dev/src/Umbraco.Courier.Contrib.Resolvers/PropertyDataResolvers/InnerContentPropertyDataResolver.cs

We'll need to add in check to see if the icContentTypeGuid or icContentTypeAlias is available and perform the deployment logic accordingly.

Well, it appears that the Deploy value-connector has already been updated! https://github.com/umbraco/Umbraco.Deploy.Contrib/pull/17
That was a very nice surprise - thank you @pijemcolu @clausjensen 😎

Closing this ticket.  If any community members require an update to the Courier resolver, then that can be handled accordingly. (Personally I don't want to use my dev time on fixing something that no one would be using).


Fix fly operations with Concourse

fly operations sometimes lock up even when Concourse is fully operational.

This is vague, but reminds me of several things we've encountered and fixed.
Apart from the current VPN/firewall/whatever I'm fighting right now, I've not seen any issues with fly lately - I'm closing this, and we can create a new card if folks have a problem with fly in the future


role assignment validation

WIP. See commit comments.
Note that subscription ID, service principal ID, and role names (the things that look like IDs) are not secrets. Nothing is exposed here.

Some future stuff for me check:

Address more PR issues:

DRY for when we're building validation results
Review use of interface for rule

Expand spec to support more than one role being checked at a time per role
Review for nil pointer problems
Add unit test for validator code

You probably don't need the roleAssignmentRule interface.

Addressed with latest refactor. Interface no longer used.

Ready for another review. The only thing left to do is add unit tests for the validator code and integration tests for the controller code. I want to verify that my approach is good before I do that, in case program structure changes again.
With the latest refactor, I made the behavior match the AWS plugin as much as possible with regard to what it does with problematic specs. Note how it behaves when it cannot do validation at all because the spec is invalid in some way. It stays in InProgress.
~ > kubectl get validationresults --all-namespaces
NAMESPACE   NAME                                                                          AGE     PLUGIN   STATE
default     validator-plugin-azure-azurevalidator-role-contributor-as-name                4m34s   Azure    Succeeded
default     validator-plugin-azure-azurevalidator-role-contributor-as-role-name           4m32s   Azure    Succeeded
default     validator-plugin-azure-azurevalidator-role-contributor-as-role-name-invalid   4m34s   Azure    InProgress
default     validator-plugin-azure-azurevalidator-role-two-roles-only-one-exists          4m31s   Azure    Failed
default     validator-plugin-azure-azurevalidator-role-two-roles-that-both-exist          4m31s   Azure    Succeeded

When a validation is stuck in InProgress, there is info in the logs explaining why it failed.

Please change the behaviour so that validation results are marked failed if the spec is invalid. Currently, validator core only emits events to a sink if the status is failed or succeeded. (And this is the existing pattern in the other plugins. None of them leave a ValidationResult InProgress).

Good point. Taking a look again, I see that SafeUpdateValidationResult ensures that no validation results are left in an InProgress state. If any error occurs during validation, it marks the validation results as failed.
And I'm guessing that we can always use the Message and Details part of the results to surface reasons it failed, including misconfigurations. So in the end, the users would always be directed towards having a working validator.
I'll make the changes.

Ready for review. Plan is to do a separate PR with integration tests later, and then PRs to add tooling like GHA workflows for security checks too.


refactor and remove white spaces

What
Remove white spaces and refactored the invalid format text

Happy to help buddy!


segfault in EVP_PKEY_get1_encoded_public_key()

Hey,
while trying to port a piece of software to the new OpenSSL 3 API I ran into a reproducible segfault.
I am trying to create an EVP_PKEY from a public key in uncompressed raw byte representation using EVP_PKEY_fromdata() and at a later point reading the raw key from my EVP_PKEY with EVP_PKEY_get1_encoded_public_key().
None of the calls return an error but EVP_PKEY_get1_encoded_public_key() segfaults with a NULL deref in EC_POINT_point2oct().
Here is a reproducer https://pastebin.com/raw/95CWsvvp
Compiled with clang -fsanitize=address -o repro repro.c -lcrypto this gives me:
AddressSanitizer:DEADLYSIGNAL
=================================================================
==229891==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000000 (pc 0x7fefd613fb29 bp 0x7fff17716910 sp 0x7fff17716910 T0)
==229891==The signal is caused by a READ memory access.
==229891==Hint: address points to the zero page.
    #0 0x7fefd613fb29 in ec_point_is_compat crypto/ec/ec_local.h:328:32
    #1 0x7fefd613fdf5 in EC_POINT_point2oct crypto/ec/ec_oct.c:82:10
    #2 0x7fefd63dfeca in common_get_params providers/implementations/keymgmt/ec_kmgmt.c:725:26
    #3 0x7fefd63e0040 in ec_get_params providers/implementations/keymgmt/ec_kmgmt.c:749:12
    #4 0x7fefd61c9dbf in evp_keymgmt_get_params crypto/evp/keymgmt_meth.c:392:12
    #5 0x7fefd61d5d33 in EVP_PKEY_get_params crypto/evp/p_lib.c:2346:20
    #6 0x7fefd61d51c1 in EVP_PKEY_get_octet_string_param crypto/evp/p_lib.c:2166:17
    #7 0x7fefd61d36f8 in EVP_PKEY_get1_encoded_public_key crypto/evp/p_lib.c:1394:9

I would expect EVP_PKEY_fromdata() or EVP_PKEY_get1_encoded_public_key() to fail and not segfault if the key is bad. Am I missing something here?

This is a combination of a few things including documentation issues and at least one bug.
The public key is actually failing to import. The crash occurs due to this code:
https://github.com/openssl/openssl/blob/4fa5ed5ce5c345eaeaec8b86eda265add467f941/providers/implementations/keymgmt/ec_kmgmt.c#L723-L728
This fails to check that the return value from EC_KEY_get0_public_key(key) is non-NULL before it attempts to use the result.
EVP_PKEY_fromdata() will ignore any parameters that it doesn't recognise. In this case it fails to recognise the OSSL_PKEY_PARAM_ENCODED_PUBLIC_KEY parameter. If you change that to OSSL_PKEY_PARAM_PUB_KEY instead you will find that your reproducer starts working. For EC keys these two are virtually the same - but can be used in slightly different contexts (see below).
The documentation seems to be woefully inadequate in this area. There are four types of parameters that we need to be concerned with: gettable parameters (can be obtained with EVP_PKEY_get_params()), settable parameters, (can be set with EVP_PKEY_set_params()), importable and exportable parameters (can be imported/exported  with EVP_PKEY_todata() and EVP_PKEY_fromdata()).
The importable parameters for a given EVP_PKEY can be queried by calling EVP_PKEY_fromdata_settable. For an EC key this does not include OSSL_PKEY_PARAM_ENCODED_PUBLIC_KEY which is a gettable/settable parameter only.
None of this is explained on the EVP_PKEY-EC man page nor are the different parameter types clearly labelled with what they can be used for:
https://www.openssl.org/docs/man3.0/man7/EVP_PKEY-EC.html

We probably need to:

fix the NULL ptr deref crash
Clarify the EVP_PKEY-EC man page to more clearly identify what the different parameters can be used for
Probably do the same with other EVP_PKEY-*man pages
Consider adding OSSL_PKEY_PARAM_ENCODED_PUBLIC_KEY as a synonym for OSSL_PKEY_PARAM_PUB_KEY for import (for EC keys only)
Clearly document that EVP_PKEY_fromdata will ignore unrecognised parameters

Thanks, using OSSL_PKEY_PARAM_PUB_KEY fixes my crash for now. I also agree that it would be nice to have some more documentation around PARAMs and how they can be used.
Is there a good reason to silently ignore unrecognized parameters instead of signaling an error? Doesn't that introduce a risk where a typo could lead to a parameter not being set when the rest of the code assumes it is?

Is there a good reason to silently ignore unrecognized parameters instead of signaling an error? Doesn't that introduce a risk where a typo could lead to a parameter not being set when the rest of the code assumes it is?

Yes - this debate has been had several times before. There are 2 competing issues here. On the one hand it would be nice to know if you used a wrong parameter name. On the other hand we want to provide extensibility and the ability to add new parameters. Not all providers will understand the new parameters - but in many cases that won't matter - they will still be usable.


effective mass fitting improve

Improve the robustness of effective mass fitting algorithm.
CLI and notebook examples are added.

This looks great, thanks for the updates @zhubonan!

Is this ready to merge @zhubonan?
I guess it solves #5 so can also close that. Might be worth adding whatever docstrings/notes you wanted to add for #38 now as well before merging? 😃

Yeah, will see if I can sort out #38 here as well.

Great, looks good to me! Let's go ahead and merge this so? 😃


[st2express] st2api is binding 9101 before nginx can, causing nginx to not start

Work aroundable by logging into the VM, and running sudo service st2api stop && sudo service nginx start && sleep 5 && sudo service st2api start

Thanks for the workaround. We have a fix in https://github.com/StackStorm/st2workroom/pull/108 that will resolve this permanently when it lands.

An updated vagrant image has been built that no longer has this issue. (v54). Please update with vagrant box update to get the latest bits and fix this issue.


WIP: DON'T MERGE - Add measurement completed event

I created the PR early to discuss the updates needed to add the measurement completed event to master.
Since v3 is a complete re-design, I'd like to know if there is a more standard approach to let the tools know when a handle is done moving.
I am also thinking wherever this method "doneMovingCallback" is called we should notify that the handle is also changed.
@dannyrb and @JamesAPetts any thoughts on this?

I think the applied change will be very similar to version 2's. Most of the work we did in v3 is to change which active/passive tool is able to handle an event, not necessarily how they handle it.
IE. When we click, instead of each tool's event handlers competing to handle the event first, it instead flows through the eventDispatcher

User Clicks
eventListeners/mouseEventListeners.js normalized click event
eventDispatchers/mouseToolEventDispatcher.js finds the best "interactive" tool to dispatch the event to

clicked pointNearHandle? --> tool.handleSelectedCallback
clicked pointNearTool? --> tool.toolSelectedCallback
No tool satisfy either? mouseDownActivate --> tool.addNewMeasurement

The baseAnnotationTool has a default handleSelectedCallback method, and a default toolSelectedCallback method. The first uses moveHandleNearImagePoint and the latter uses moveAnnotation -- These should be fine as is.
Where we'll likely need to call your new event is in the addNewMeasurement method that annotation tools default to, or in the custom addNewMeasurement method on tools that provide one:
Custom:

AngleTool
ArrowAnnotateTool
BidirectionalTool
CobbAngleTool
FreehandMouseTool

(See a pattern with the tools that override the default behavior?)
The default addNewMeasurement methods are:

/src/eventDispatchers/mouseEventHandlers/addNewMeasurement.js
/src/eventDispatchers/touchEventHandlers/addNewMeasurement.js

I hope that helps. Let me know if you have questions. @JamesAPetts, feel free to correct anything I've goofed.

@dannyrb I've reviewed the design and I think we are on the same page.
I am firing the event in two places: moveHandle and moveNewHandle, these are what gets called by the addNewMeasurement function:
https://github.com/cornerstonejs/cornerstoneTools/blob/master/src/eventDispatchers/mouseEventHandlers/addNewMeasurement.js#L22-L34
  const handleMover =
    Object.keys(measurementData.handles).length === 1
      ? moveHandle
      : moveNewHandle;

  handleMover(
    eventData,
    tool.name,
    measurementData,
    measurementData.handles.end,
    tool.options,
    'mouse'
  );

Technically, in v2 we are now firing these events by the callback method in this handleMover like. Now, we are passing an options object that contains a callback for when moving is "Done". The issue is, this callback/options -as I think it is- could be set by the client and we shouldn't be modifying it with our own that fires the event.
As for subscribing to the event, I think I am following a similar design to the dispatcher in the moveHandleDoneEventBroker.js (Pub/Sub pattern) which doesn't require tools to compete and listen to all the events and rather be called.  However, I think a better location for this would be under the eventDispatchers folder and probably renamed to something like moveHandleDoneEventDispatcher (or a better name altogether!)
Hope this makes sense and happy to hear your thoughts.

Hey @Zaid-Safadi, @dannyrb  - Looks like this work may have stalled for the v3 codebase.
Does anyone mind if I have a go at it? I would follow the v2 implementation #845.

@mikehazell, I think that would be welcomed ^_^
My memory's a bit hazy, but I'm pretty sure we want to raise this event when a new annotation's toolData is considered "complete", or more technically, when it's toolData first represents a working/placed annotation.
IE. A cobbAngle annotation with two lines, or a closed freehandRoi tool
The biggest "up for debate" question is the best place to fire the event. Most tools are complete when their addNewMeasurement method is called. A few tools (multiple-step tools) either have a set number of steps required to be complete, or need to meet a special condition.
@Zaid-Safadi completed this change in v2 and likely has more concrete thoughts on it.

Hi @mikehazell , you are v. welcome to help out in any way possible to get this closer to the finish line. Apologies I couldn't focus on this as my schedule got pretty occupied.
I think if you build on this PR and follow v.2 implementation #845 you will cover most of the cases. For the multi-step tools (e.g. freehand, cobb angle...) you can fire the event from the respective class as only a freehand knows when a freehand is complete.
@dannyrb and I would be happy to help and advice if you have any questions.

Sounds good. I'll get cracking on this asap.

Completed here: https://github.com/cornerstonejs/cornerstoneTools/pull/913


Add test for node v16

Codecov Report

Merging #6 (57a2ec8) into main (394c882) will not change coverage.
The diff coverage is n/a.

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
@@            Coverage Diff            @@
##              main        #6   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files           20        20
  Lines          338       338
  Branches        12        12
=========================================
  Hits           338       338

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.


Missing name in ABI gives "Can't guess class name, please rename file"

What version of fuels-ts are you using?
0.16.0
Steps to Reproduce
My ABI has the following function def:
    {
      "inputs": [],
      "name": "get_tokens",
      "output": {
        "name": "",
        "type": 1,
        "typeArguments": null
      }
    },

Parsing this gives me the error Can't guess class name, please rename file:
Expected Behavior
Generate output successfully
Actual Behavior
Can't guess class name, please rename file:

If I add an output name like this, then it works correctly:
    {
      "inputs": [],
      "name": "get_tokens",
      "output": {
        "name": "tokens",
        "type": 1,
        "typeArguments": null
      }
    },

Thanks for the bug report, can you add the full JSON abi by chance?

I can't replicate this with the newest version of the SDK v0.21.x - I'm going to close it for now but will keep an eye on this

Yep, just confirmed that this issue is fixed in newer versions :)


Dataset used for trainig

Can you please provide the dataset link? I the paper it is mentioned: "included 131k images from the Allen database of slide-mounted histological sections processed for in situ hybridization (ISH), immunohistochemistry (IHC) or Nissl staining.”.
Unfortunately, I have difficulty finding the dataset to train the model and looking at this new benchmark. Ca you please provide more details?
Thanks a lot in regrets
Sivan Schwartz

Hi,
I used it but it does not reach the entire data you described in the paper:
"To train the model, we used a
curated dataset of coronal mouse brain sections from the Allen Institute
for Brain Science, which had already been aligned to the CCF. This
included 131k images from the Allen database of slide-mounted histological
sections processed for in situ hybridization (ISH), immunohistochemistry
(IHC) or Nissl staining14,32,33 (hereafter referred to as
Allen histology), and 443k sections from the Allen Connectivity Atlas16,
which contained multichannel images of viral reporter expression
captured using serial 2-photon block-face imaging (S2P, Fig. 1B)."
For example, the ISH IHC and Nissl include (using the repo you mentioned in your response) 477 samples.
This is hugely less than described in the paper.
Can you please further explain/provide the complete datasets you collected, as mentioned by the Allen Institute?
Best
Sivan Schwartz

Thank you- can you please provide the exact APIs details you used in the paper?
I am having a hard time finding it, and as you mentioned on the paper and Nature request in all publications-
it will be available upon request.
Looking forward to the dataset used in this paper and the model.

The Allen API has recently changed, though the documentation can be found here: https://community.brain-map.org/t/rma-path-syntax/2885
Once you are familiar with the API you can query for the above mentioned treatments. You will need to filter for only coronal datasets (unless you would like to train a sagittal model).
If you are uncomfortable going through the API Ive quickly put together a text file of coronal datasets to get you started (see
allen.txt). If any ID is mentioned twice it would be because both the ISH and Nissl images from that experiment are included. I would really recommend going via the API as there are more datasets to find and include (which of course is useful if you would like to train a neural network on these data).
Best of luck!

Thanks,
Can you please explain how you got to the list of all the experiments from Allen that are coronal sections?
Moreover, can you explain how you use sections that are not with a thickness of 25 microns, with the code you referred to:
https://github.com/neural-Systems-at-UIO/allen2quicknii

Using the Allen API described above we queried for all coronal sections.  The sections don't need to be 25 microns thick, that is merely referring to the fact that the QuickNII software takes coordinates which are specified in 25 micron voxels.


[devtools] embed video version of speed tutorial

What's changed, or what was fixed?

see title

Fixes: N/A
Target Live Date: 2018-08-24

[x] This has been reviewed and approved by @kaycebasques
[x] I have run npm test locally and all tests pass.
[x] I have added the appropriate type-something label.
[x] I've staged the site and manually verified that my content displays correctly.

CC: @petele

Whoops!
There were 11 warnings that will prevent this PR from being merged. Please take a look, and either fix, or provide a justification for why they can't be fixed.
WARNINGS
src/content/en/tools/chrome-devtools/speed/get-started.md#L613 - '


primusrun blender not working

I went through the old issues to see if any of the old fixes worked. They didn't...
Blender works great without primusrun. Other apps work great with primusrun.
Here's what I get with using primusrun blender.  I've tried changing PRIMUS_SYNC etc.
connect failed: No such file or directory
Writing: /tmp/blender.crash.txt
Segmentation fault (core dumped)
Blender 2.74 (sub 0), Unknown revision
backtrace
blender(BLI_system_backtrace+0x30) [0x1299a90]
blender() [0x90ca21]
/lib/x86_64-linux-gnu/libc.so.6(+0x352f0) [0x7fd193f042f0]
/usr/lib/x86_64-linux-gnu/primus/libGL.so.1(glXCreateContext+0x34) [0x7fd194c12794]
blender(_ZN16GHOST_ContextGLX24initializeDrawingContextEv+0x48) [0x12a7b48]
blender(_ZN15GHOST_WindowX1117newDrawingContextE25GHOST_TDrawingContextType+0x59) [0x12a7549]
blender(_ZN12GHOST_Window21setDrawingContextTypeE25GHOST_TDrawingContextType+0x8e) [0x12a9a5e]
blender(_ZN15GHOST_WindowX11C1EP15GHOST_SystemX11P9_XDisplayRK10STR_Stringiijj18GHOST_TWindowStatei25GHOST_TDrawingContextTypebbt+0x4ae) [0x12a656e]
blender(_ZN15GHOST_SystemX1112createWindowERK10STR_Stringiijj18GHOST_TWindowState25GHOST_TDrawingContextType16GHOST_GLSettingsbi+0x89) [0x12a4099]
blender(GHOST_CreateWindow+0x71) [0x129f1e1]
blender(wm_window_add_ghostwindows+0x1c9) [0x92d609]
blender(WM_check+0x41) [0x90e9d1]
blender(wm_homefile_read+0x151) [0x919d61]
blender(WM_init+0xbe) [0x91bb3e]
blender(main+0xbec) [0x8eff0c]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf0) [0x7fd193eefa40]
blender(_start+0x29) [0x90c489]
Thank you!!!

Is this still happening? Does this happen straight after running primusrun blender? Does it works with optirun -b virtualgl blender or optirun -b primus blender? What is your distro, do you use nouveau or nvidia driver (and its version), mesa/kernel/intel versions?

I actually stopped trying because I saw that the latest NVidia drivers allowed me to switch from Nvidia to Intel.
However, I did try optirun -b virtualgl blender or optirun -b primus blender with no success.

I was not able to reproduce (same blender version). I’m wondering whether this could be https://github.com/amonakov/primus/issues/166#issuecomment-112745735 and if your distro adopted this patch or not.


Logging for system parameter validation should be configurable

What problem does this solve or what need does it fill?
Following #15276, systems are now skipped when they cannot run due to missing data, rather than panicking and crashing their app.
While we should 100% warn by default when this happens, some of those logs will be spurious. This behavior might be expected, and users should be able to turn them off.
What solution would you like?
Allow users to disable this logging by disabling it at the system config level, which should work on both systems and system sets.
It would be nice to be able to change the log level to any of the standard levels: none, debug, info, warn, error, panic, but warn, and ignore are the most important.
What alternative(s) have you considered?
We could also expose a way to turn off these warnings globally, but this is likely to be a footgun: your systems silently not running is very bad!
We could also add resource / component-level log disabling, but that's more complex. My preferred solution there now is to add opt-in support for reads/writes system sets (based on https://github.com/bevyengine/bevy/pull/5388), and then use the mechanism above to configure them.
Additional context
Previously discussed in https://github.com/bevyengine/bevy/issues/15265.

Hmm, I'm not sure whether we need all the log levels, system skipping sounds like it should emit a single type
Is there a use case for more?

Hmm, that's fine. It can be useful for folks configuring their lint levels, but warn/panic/silent is fine.

This needs more thought, observers and run_system also need to validate params
I think we need to do the HashSet solution first to prevent spam and discuss before doing more

What about something like
#[derive(Default)]
enum WarnStatus {
  Never,
  #[default]
  Once,
  Always,
}

impl WarnStatus {
  /// Warn was emitted, update warn status.
  pub fn next(&mut self) {
    *self = match self {
      Never | Once => Never,
      Always => Always,
    }
  }
}

we can store this in SystemMeta which we can always access mutably within the system functions.
Then configuration is a matter of exposing few additional configuration methods.

Something we might consider is track exactly which system parameter failed validation behind a feature flag.

Okay, so #15500 adds the internals for warnings, but I couldn't figure out how to expose the configuration functions as following:
// Realistically we want shorthand methods: `.no_warns()`, etc.
app.add_systems(Update, my_system.with_validation_warning(ValidationWarning::Never));

closest I've got is
app.add_systems(Update, IntoSystem::into_system(my_system).with_validation_warning(ValidationWarning::Never));

Note that only function systems make sense here.
Combined systems store multiple SystemMetas and exclusive systems always have valid params (world).

Also, about tracing exactly which param is failing, we could do right now if we move warnings into validate_param.
Which I'm quite in favor of, I'll look into it.


Spaces in parent folder file name bug

v5.7.1
Describe the bug**
If there are spaces in the parent folder file name e.g. "07 Your first Fsharp Program" the Ionide build will fail, i.e. clicking on the green build arrow. However it works if pressing on the "bug" icon to build with debugging. Building and running at the CLI works find.
If there are no spaces e.g. "07_Your_first_Fsharp_Program" everything works fine.
Screenshots

Running on Windows Surface Laptop 3 with latest Windows 11 preview build.
Same problem with Windows 10 however MacOS does not have the problem.

This is because of the splitArgs from the ionide-vscode-helpers project, and more broadly any API that relies on splitting CLI args with spaces. That function is incorrectly splitting on the space in the file name and causing the issues you see.
Realistically, any CLI-spawning API should be taking an array of string arguments, so we'll need to refactor this entire set of related functions to fix this.

So this should be fixed by the updates in Helpers package


Active Control node receive _GuiInput and prevent _UnhandledInput get called Node3d derived.

Godot version:

v3.2.3.stable.mono.official
OS/device including version:

Windows 10
Issue description:

When we design GUI we usually make a root node type MarginContainer with Layout -> Full Rect  Then create a child node PanelContainer, VBoxContainer, HBoxContainer and more.
These containers always instance  with mouse_filter property set to stop. This prevents virtual function _UnhandledInput in 3d derived node get called.
To solve this we need to set mouse_filter to ignore because they're containers, but with tree design manually set it is a pain.
These containers shouldn't receive _GuiInput by default.
Steps to reproduce:

Minimal reproduction project:
Containers.zip

Closing in favor of https://github.com/godotengine/godot-proposals/issues/788.


Windows 7 Support

The way the Event Log service in Windows 7 processes incoming events differs a little bit in contrast to Windows 10.
This commit will fix the pattern for the EventCallback() function that is used in Windows 7, together with an updated Injector, as CreateRemoteThread() won't work for services in Windows 7.
Event Callback
In Windows 7, the callback function is not wevtsvc!EtwEventCallback but wevtsvc!PublisherManager::EventCallback.
Luckily, this callback function takes the same EVENT_RECORD struct as parameter, so the whole hooking and Yara code still worked ;-)
The PATTERN for that function, including the size of the original bytes to save was adapted.
Injector
As for some reason CreateRemoteThread() will result in an error 8 (ERROR_NOT_ENOUGH_MEMORY) when injecting into a privileged service process. I read somewhere that its some session problem? But I still have no clue.
However, the undocumented function RtlCreateUserThread() works flawlessly and was used instead (For Windows 7 only).
Furthermore, the field hModules is now instantiated with an array size of 500 instead of 102400, as this overflowed the stack on Windows 7. Any reason for an array this big? I don't have a wide range of testing clients/servers.

This is some great work, cheers mate.
Also do you mind letting me know ur twitter handle so I can credit you with the update?

This is some great work, cheers mate.
Also do you mind letting me know ur twitter handle so I can credit you with the update?

Thanks! sure: @_dunnno
Totally love the idea of this project, awesome work! :-)


not trigger 'maximize' event when click 'maximize' button

I create a 'browser-window'; it not trigger 'maximize' event when I click 'maximize' button; To my surprised, these events('closed', 'minimize' etc) are ok.
this's my test code on max os x:
var main_window = new BrowserWindow({'accept-first-mouse': true, 'min-width': 500, 'min-height': 200, icon: tray_icon_path, 'title-bar-style': 'hidden', 'fullscreen': 'true'});
main_window.loadUrl(file://${__dirname}/index.html);
main_window.on('maximize', function() {
console.log('maximize');
main_window.maximize();
});

Which version of OS X are you using? From 10.10 the maximize button is changed to fullscreen button.

OS X no longer has "maximize" window, only fullscreen. I think you should use enter/leave-full-screen event.

@zcbenz OS X EI Caption 10.11.1

@moscartong  'enter-full-screen' doesn't works. when i click the maximize button; the window only shakes
main_window.on('enter-full-screen', function() {
    console.log('enter-full-screen');
});

'enter-full-screen' and 'maximize' both does't work

I try the quick start demo with OSX EI Caption 10.11.1:

git clone https://github.com/atom/electron-quick-start
npm install
add the following code to main.js:

mainWindow.on('maximize', function() {
    console.log('maximized!');
});
mainWindow.on('unmaximize', function() {
    console.log('unmaximized!');
});
mainWindow.on('enter-full-screen', function() {
    console.log('entered full screen');
});
mainWindow.on('leave-full-screen', function() {
    console.log('leaved full screen');
});

then run "npm start" and click the fullscreen button to enter full screen, then leave it, console output:

So the enter/leave-full-screen event seems work just fine.

@moscartong 'enter-full-screen' doesn't works. when i click the maximize button; the window only shakes

If the window shakes then you probably made it unrealizable or disabled fullscreen.

@zcbenz Oh, miss that xD

I try the quick start demo; when i click the full screen, the window only shacks;
@moscartong  what does it miss???

how to solve it


Include symbols

Description please, how does this change our publish flow and end user experience?

A pack command will produce an aditional .snupkg files per package.
The idea is that the user (IDE) has the option to fetch Yarp PDBs to aid in local debugging.
Regarding the publish flow, it should "just work". The extra "packages" are included under artifacts.

We should verify that they are getting published in the next release.

Though it seems our packages are already embedding pdbs ... I'll take a look. Idealy we should be publishing the symbols separately to reduce the package size

This may be a silly question, but as we ship the source and create a branch for each release, why do we need to publish symbols - if somebody has a problem with Yarp - wouldn't it be easiest to download the source and change the ref from a package to a project?

VS can pull the symbols and sources for you automatically.
Switching from a package reference to a project reference is a lot more manual labor.


Not Found - GET https://registry.npmjs.org/vue-vis-network - Not found

$ npm install --save vue-vis-network
npm ERR! code E404
npm ERR! 404 Not Found - GET https://registry.npmjs.org/vue-vis-network - Not found
npm ERR! 404
npm ERR! 404  'vue-vis-network@latest' is not in the npm registry.
npm ERR! 404 You should bug the author to publish it (or use the name yourself!)
npm ERR! 404
npm ERR! 404 Note that you can also install from a
npm ERR! 404 tarball, folder, http url, or git url.

How to fix it?

Wait a few days, I'll publish. And reply you here

Just published it https://www.npmjs.com/package/vue-vis-network

Sorry, forgot to generate some files. I have to republish it but it will be only 48 hours later

Published https://www.npmjs.com/package/vue-vis-network/v/1.0.1


Fix inlineRem documentation #616

Closing in favor of https://github.com/marklawlor/nativewind/commit/8ab1e8d605571854e4cef55c5fb4c6c48c2b0207


52 change grant sync params

Ticket
https://github.com/usdigitalresponse/usdr-gost/issues/52
Description
See github issue
Screenshots / Demo Video
n/a
Testing
Automated tests pass
Checklist

[x] Provided ticket and description
[x] Your PR title contains the ISSUE ticket number e.g "86: ..."
[x] Provided screenshots/demo
[x] Provided testing information
[x] Provided adequate test coverage for all new code
[x] Run automated tests (docker compose exec app yarn test)
[x] Added PR reviewers
[ ] Ensure at least 1 review before merging

This will (eventually) become part of a larger effort in data extraction. Closing to keep list of pull requests cleaner.


New fixes in the CI

As discussed here: https://github.com/DiceDB/dice/pull/1116#issuecomment-2455390991
I am opening a new issue for these two changes in the CI

Conditional triggering of linting and Testing pipeline when changes are done to only .go file (This can change if the project ever changes/includes anything other than go)
Caching setup for the linting job as well

Please make it open for all, since it's a simple change for beginners. If no one does it in a week or so.
I will make a PR against it
cc: @JyotinderSingh

Hey I can take this up.

I am not the maintainer or the repo, but I suggest you work on the changes. They should not take more than an hour (see the changes I made earlier).

@kitarp29 Hey, Is there any way I can test the workflow locally? Thanks

Make a fork of this project on your account.
On your clone:

Have the CI changes in main branch
Make a branch out of this branch. Make commits on that branch it would help you to test the changes in the fashion you wish to.

If satisfied make a PR with the main branch of your fork


It doesn't work on Ryzen 3000 cpu

I'm trying to get the Seitengrat bow from the sky ferry. I have a Ryzen 3900x and when I  have my character waited at the doorway, the "advance to spawn" counter will always jumps between 0-3, there was never a countdown.

I seriously doubt that your CPU is the problem here.
RNG values are consumed by NPC interactions in a very inconsistent and unpredictable manner such that it is always a bit of a gamble when trying to go through the door at the RNG value you need because all the NPCs moving around while you go through the door, and can consume RNG values at the last moment. My advice is to simply keep on trying until you get it right. With that said, there are a couple things you can try to make it more consistent (but still not guaranteed).
The first is to reduce the refresh interval of the RNG Helper app so that it updates more often and gives you a more accurate view of the RNGs current positon. Since you have a big beefy CPU its probably fine to change the refresh interval to something quick like 10ms.
The second is to try changing the game's frame-rate to 30FPS. I cant recall for sure if the NPC interactions are tied to the frame-rate, but in theory going from 60 to 30 fps will give the game half as many opportunities to mess things up while you go through the door transition.
Good luck!

I uploaded a video here, there is no countdown, the "advance to spawn" counter stays at 0 most of the time.
https://youtu.be/KSkLaa7pmIw

Ah yes, I see. It looks like you don't have the Seitengrat chest's properties configured into program. In order to predict when a chest will spawn, you need to enter in its spawn chance, and spawn position. In order to predict the right result from the chest after it has spawned, you need to enter in its gil chance and item chance, and (if you care about gil) maximum gil amount. The reason why your advance to spawn counter only seems to move between 0 and 3 is because you have the program set to look for a chest that spawns 50% of the time.
In other words, you need to enter in the following value for Chest 1 before the RNG helper can help you get your Seitengrat:
Spawn chance: 1
Spawn position: 1
Gil Chance: 80
Item 1 Chance: 95
Max Gil Amount: 10
And then make sure the Desired Item radio box has Item 2 Selected.
If you are still having trouble then I suggest following a guide like this one https://www.youtube.com/watch?v=5Fb1v9lE5p8

Thanks, I entered the correct number and got the bow in a few tries.
I have a suggestion, can you add all the rare items with their corresponding values in a drop down list  so that people don't need to look elsewhere for the chart?


Add styles for all input types

At the moment only text and password types has proper styles.
number, date, time, range, color  styles should be fixed.

The new TextField component handles all of these.

@hai-cea Think there's been some regression here - the number type looks squiff. & the up / down handles cut through the underline.

I also have the up/down arrow misplaced when using type="date" :


[Feature] Multi-day displayed as regular event

Hello @aldabil21,
It's a great library. Thank you!
I might have missed something in the documentation, but is there a built-in option to make multi-day even looks like regular event. I mean by that, that they are not displayed in the HEADER of the Calendar view.
Exactly like on Google Calendar as per attached screenshot.

Let met know if it's possible !

Hi
unfortunately this can't be done with the current setup, you would need to split that event into multiple days and show each day a seperate event. Which I believe is not something you would like to do.


Closes #1859 metadata updated for DAIDs in xlsx file

Thank you for your Pull Request! We have developed this task checklist from the Development Process Guide to help with the final steps of the process. Completing the below tasks helps to ensure our reviewers can maximize their time on your code as well as making sure the admiral codebase remains robust and consistent.
Please check off each taskbox as an acknowledgment that you completed the task or check off that it is not relevant to your Pull Request. This checklist is part of the Github Action workflows and the Pull Request will not be merged into the devel branch until you have checked off each task.

[ ] Place Closes #<insert_issue_number> into the beginning of your Pull Request Title (Use Edit button in top-right if you need to update)
[ ] Code is formatted according to the tidyverse style guide. Run styler::style_file() to style R and Rmd files
[ ] Updated relevant unit tests or have written new unit tests, which should consider realistic data scenarios and edge cases, e.g. empty datasets, errors, boundary cases etc. - See Unit Test Guide
[ ] If you removed/replaced any function and/or function parameters, did you fully follow the deprecation guidance?
[ ] Update to all relevant roxygen headers and examples, including keywords and families. Refer to the categorization of functions to tag appropriate keyword/family.
[ ] Run devtools::document() so all .Rd files in the man folder and the NAMESPACE file in the project root are updated appropriately
[ ] Address any updates needed for vignettes and/or templates
[ ] Update NEWS.md if the changes pertain to a user-facing function (i.e. it has an @export tag) or documentation aimed at users (rather than developers)
[ ] Build admiral site pkgdown::build_site() and check that all affected examples are displayed correctly and that all new functions occur on the "Reference" page.
[ ] Address or fix all lintr warnings and errors - lintr::lint_package()
[ ] Run R CMD check locally and address all errors and warnings - devtools::check()
[ ] Link the issue in the Development Section on the right hand side.
[ ] Address all merge conflicts and resolve appropriately
[ ] Pat yourself on the back for a job well done! Much love to your accomplishment!

@bms63 @zdz2101 I have updated the metadata in the xlsx file and create atoxgr_criteria_daids object. So you can at least review the metadata. I have created 2 new columns SUBGROUP to hold the text from the document describing the subgroup of patients. And created FILTER which implements the SUBGROUP using admiral code. I have used the duration function, instead of creating a variable to hold the age, I think this works quite nicely, as I can pass in the different unit of age here. (ie days, months or years). Ihave started updating the derive_var_atoxgr function, but havent finished it yet. so you cant run that yet.

Hey @millerg23 im out for the next week. @zdz2101 and @bundfussr do you all mind reviewing.
@pharmaverse/admiral anyone got some passion for Lab Grading and can help with this review?

I can definitely make sure the excel/rda matches the daids guideline as mentioned

@zdz2101, I haven't finished the unit tests yet, but am getting a failure when it should be a pass, I think it may be a rounding issue (or floating point), have had this in SAS before but not sure what to do in R.
The test is  AVAL >= 1.1*ANHRI should give a value of "1" where AVAL = 110 and ANRHI = 100.
I tried it separately and I also got 1.1*ANRHI not equal to 110 where ANRHI = 100.
@ddsjoberg have you come across this before?

@zdz2101, I haven't finished the unit tests yet, but am getting a failure when it should be a pass, I think it may be a rounding issue (or floating point), have had this in SAS before but not sure what to do in R. The test is AVAL >= 1.1*ANHRI should give a value of "1" where AVAL = 110 and ANRHI = 100. I tried it separately and I also got 1.1*ANRHI not equal to 110 where ANRHI = 100. @ddsjoberg have you come across this before?

I think we somehow stepped foot into floating point errors here, going to investigate

@zdz2101, I haven't finished the unit tests yet, but am getting a failure when it should be a pass, I think it may be a rounding issue (or floating point), have had this in SAS before but not sure what to do in R. The test is AVAL >= 1.1*ANHRI should give a value of "1" where AVAL = 110 and ANRHI = 100. I tried it separately and I also got 1.1*ANRHI not equal to 110 where ANRHI = 100. @ddsjoberg have you come across this before?

@millerg23 apologies for the delayed response! I need to do some more GitHub email filtering; I am getting too many notifications these days 😵💫
There is a tolerance argument in the expectation function. Check out the ... argument in the docs. We're using 3rd Edition testthat, so those args are passed to waldo::compare(). If you increase the tolerance with the tolerance= argument, it should no longer be an issue. Floating point precision is always annoying!

@zdz2101, I haven't finished the unit tests yet, but am getting a failure when it should be a pass, I think it may be a rounding issue (or floating point), have had this in SAS before but not sure what to do in R. The test is AVAL >= 1.1*ANHRI should give a value of "1" where AVAL = 110 and ANRHI = 100. I tried it separately and I also got 1.1*ANRHI not equal to 110 where ANRHI = 100. @ddsjoberg have you come across this before?

@millerg23 apologies for the delayed response! I need to do some more GitHub email filtering; I am getting too many notifications these days 😵💫
There is a tolerance argument in the expectation function. Check out the ... argument in the docs. We're using 3rd Edition testthat, so those args are passed to waldo::compare(). If you increase the tolerance with the tolerance= argument, it should no longer be an issue. Floating point precision is always annoying!

I'm not really sure this one is really related to testthat as much as when trying to assign a case_when within derive_var_atoxgr_dir().  If you drill into it, it assigned
AVAL >= 1.1*ANRHI (using 110, and 100 respectively) as FALSE. I even caught it in the wild

so is there a way to clean up comparison operations? I know dplyr::near() is better for == but I'm not sure about other comparison operators like >=

You can also use the machine's level of precision. See example below
# annoying!
110 >= 1.1 * 100
#> [1] FALSE

# a very small number that is available on all machines
sqrt(.Machine$double.eps)
#> [1] 1.490116e-08

# ugly, but not an annoying break!
110 + sqrt(.Machine$double.eps) >= 1.1 * 100
#> [1] TRUE

Created on 2023-08-16 with reprex v2.0.2

You can also use the machine's level of precision. See example below
# annoying!
110 >= 1.1 * 100
#> [1] FALSE

# a very small number that is available on all machines
sqrt(.Machine$double.eps)
#> [1] 1.490116e-08

# ugly, but not an annoying break!
110 + sqrt(.Machine$double.eps) >= 1.1 * 100
#> [1] TRUE

Created on 2023-08-16 with reprex v2.0.2

How do you know which "way" / "side" to apply the sqrt(.Machine$douple.eps)

so is there a way to clean up comparison operations? I know dplyr::near() is better for == but I'm not sure about other comparison operators like >= Would it be as crude as replacing it with (AVAL > 1.1*ANRHI | near(AVAL, 1.1*ANRHI))

@zdz2101 you can put it on either side of the inequality, depending on direction of the inequality and the sign you put in front of the small number, eg 110 >= 1.1 * 100 - sqrt(.Machine$double.eps)

I think these two approaches are equivalent: a >= b - sqrt(.Machine$double.eps) <=> a>b | near(a, b)
do you think it's worth updating for all floating point number comparisons ==, >=, <=, with the assumption we don't need to detect the differences less than the tolerance?

thanks @kaz462 @ddsjoberg @zdz2101 for the suggestions to correct the comparisons, another suggestoin was to use signif() on either side of the comparison, could use something like 12 or 13 significant figures?? In our SAS tool, we set the precision on numeric values in the incoming SDTMv, then set precision on any numeric values we calculated (essentially what signif() does. BTW I think this also affects derive_var_anrind().
Maybe we can discuss best option going forward in our deve meeting? I can add to Agenda.
Feel free to add any more thoughts here also.

@kaz462 @ddsjoberg @ddsjoberg @bms63  following todays meeting, do we agree the approach should be:
Replace A >= B with A > B | near(A, B)
Replace A <= B with A < B | near(A, B)
Replace A == B with near(A, B)
Replace A > B with A > B &  !near(A, B)
Replace A < B with A < B &  !near(A, B)
Let me know what you think.
Thanks again for your help.

I just found there is a package fpcompare for comparing floating point numbers, it shared the same logic as discussed above, e.g., fpcompare::%==% is the same as dplyr::near(). Maybe we can use the operators from fpCompare for better readability?

Inspired by R FAQ 7.31 and this Stack Overflow answer, this package provides new relational operators useful for performing floating point number comparisons with a set tolerance:

fpCompare	base
%>=%	>=
%>>%	>
%<=%	<=
%<<%	<
%==%	==
%!=%	!=

Are you suggesting importing the package or just "borrowing" the code from the package??

Are you suggesting importing the package or just "borrowing" the code from the package??

Maybe add it to Imports or Suggests?

Are you suggesting importing the package or just "borrowing" the code from the package??

Maybe add it to Imports or Suggests?

The code to create these operators is pretty simple, and it was released under GPL-3 which means that as long as we don't ever monetize this work (which won't happen) we can freely copy the code (at least that is my understanding https://snyk.io/learn/what-is-gpl-license-gplv3-explained/).
Rather than taking on another dependency, I would just copy it into the repo. Any have experience with software licensing that can confirm?
`%>=%` <- function(x, y) {
  (x + getOption("fpCompare.tolerance") > y)
}

#' @export
#' @rdname relational-operators
`%>>%` <- function(x, y) {
  (x - getOption("fpCompare.tolerance") > y)
}

#' @export
#' @rdname relational-operators
`%<=%` <- function(x, y) {
  (x < y + getOption("fpCompare.tolerance"))
}

#' @export
#' @rdname relational-operators
`%<<%` <- function(x, y) {
  (x < y - getOption("fpCompare.tolerance"))
}

#' @export
#' @rdname relational-operators
`%==%` <- function(x, y) {
  (abs(x - y) < getOption("fpCompare.tolerance"))
}

#' @export
#' @rdname relational-operators
`%!=%` <- function(x, y) {
  (abs(x - y) > getOption("fpCompare.tolerance"))
}

Are you suggesting importing the package or just "borrowing" the code from the package??

Maybe add it to Imports or Suggests?

I think it must be added to Imports because the admiral function will fail without the package.

Rather than taking on another dependency, I would just copy it into the repo. Any have experience with software licensing that can confirm?

What is wrong with having another dependency? In my eyes, adding the dependency means honoring the work of the author of the fpcompare package. If we copy the code it looks like we have developed and implemented these functions. This does not seem right to me. Furthermore, these operators are not ADaM specific. Thus I would not implement them in admiral but in a separate package. However, why should we create a new package if there is already one available?

I was under the impression that our mantra in admiral was to be weary of adding additional dependencies - as every dependency seems to have caused us some headaches in the past.
We could put an acknowledgement in the file or section of code stating where we got the code?

Also - a bit strange that a package so small has only 75% code coverage.

I mean, they have a total of 8 functions.
2 of which are functions related to setting the tolerances when loading and unloading the packages.
There is just one test which covers the 6 infix operator functions.
Thats where you get the 75% from.
We could contribute to the package to increase coverage, but I think this is not an issue.

For me the risk of adding an additional dependency for such a small package that only impacts a few admiral functions is too high.
I'm happy to contact the authors to ask for permission to use the code with acknowledgment.  It is only 30 lines of pretty succinct code - I don't think this will have a huge impact on code bloating or make it hard to follow in the code base.

Alternatively, we could also create our own infix operators relying on the near() function.

What is wrong with having another dependency?

From my POV, every dependency is a burden, and when not absolutely required should not be taken on. If we were to take it on at a dep, we're trusting the authors to keep up with maintenance forever (not something I would recommend).

In my eyes, adding the dependency means honoring the work of the author of the fpcompare package. If we copy the code it looks like we have developed and implemented these functions. This does not seem right to me.

This is the precise reason why software has licenses: the author gets to specify exactly how they want and do not want their code used. In this case, the authors are pretty much fine with anything except future monetization.  And we can and should specify exactly where the code came from in our script. I like @StefanThoma proposal to re-implement in a somewhat different way, and even in this case, including a note in the script where the inspiration came from is still warranted.
dplyr::near <- function (x, y, tol = .Machine$double.eps^0.5) abs(x - y) < tol

From a numerical point of view neither fpcompare nor dplyr::near() provides a good solution. Consider for example
> 1.1 * 100 == 110
[1] FALSE
> near(1.1 * 100, 110)
[1] TRUE
> near(1.1 * 100 * 10^200, 110 * 10^200)
[1] FALSE

For our case both approaches work. But they do now work in general.

From a numerical point of view neither fpcompare nor dplyr::near() provides a good solution. Consider for example
> 1.1 * 100 == 110
[1] FALSE
> near(1.1 * 100, 110)
[1] TRUE
> near(1.1 * 100 * 10^200, 110 * 10^200)
[1] FALSE

For our case both approaches work. But they do now work in general.

I thought dplyr::near and base::all.equal were the same when comparing two floating point numbers, this is a good example that they are actually not :) do you think it should be reported as a bug for dplyr::near?
> dplyr::near(1.1 * 100 * 10^200, 110 * 10^200)
[1] FALSE
> # workaround
> dplyr::near(100 * 10^200 * 1.1, 110 * 10^200)
[1] TRUE
> # no need workaround for all.equal
> base::all.equal(1.1 * 100 * 10^200, 110 * 10^200)
[1] TRUE

On the other hand, I guess there is no "perfect" solution for dealing with floating point, it depends on the context/accuracy requirement. By disregarding differences less than the default tolerance (.Machine$double.eps^0.5 ≈ 1.5e-08), it can handle most scenarios. For greater accuracy, we could adjust tolerance or round to more digits e.g. signif() as @millerg23 mentioned above (similar handling in SAS)

My preference would be to use signif(), maybe we can use a general option to store the number of significant digits we use, then document it. Sticking 'signif()' around each side of the comparison doesn't bloat the code, and its pretty obvious whats happening. It would be consistent regardless of machine, and if a company wanted to adjust the number of significant digits, then with a general option it would be easy.

do you think it should be reported as a bug for dplyr::near?

The documentation of dplyr::near() is quite vague regarding the intended and actual behavior. Thus I am not sure if it is a bug.

My preference would be to use signif()

I like this as well, agree that code doesn't lose readability with this option.

Hey @millerg23 once you implement @zdz2101 feedback, please ping and I will run through this PR.  Maybe get it in by EOD tomorrow?!?!

@bms63 think I have addressed all of @zdz2101 findings. Still to update NEWS file and GRADING Vignette. I did update the metadata for NCICTCv4 and v5 to use signif() function.

@bms63 and @zdz2101 thanskfor the great QC. Think I have handled all the comments, let me know if I missed anything.

@bms63 and @zdz2101 thanskfor the great QC. Think I have handled all the comments, let me know if I missed anything.

LGTM!!


fix: rwd beta - ferris wheel step 1 html test

Checklist:

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

Closes #44623

Just needed the 'm' flag to handle mulitline.

Hmm, you know what, after thinking about this a little more, the 'm' flag may not be the best option. I might have jumped the gun a little here.

OK, I think I figured out what is causing this issue. The code string that is being passed into the match has comments at the beginning:
/*fcc*/

/*fcc*/
<!DOCTYPE html>

<html>
  <head>
    <meta charset="UTF-8" />
    <link rel="stylesheet" href="./styles.css" />
    <title>CSS Ferris Wheel</title>
  </head>
  <body></body>
</html>

So using the caret to anchor this particular match to the beginning of the string is going fail:
assert(code.match(/^\s*<!DOCTYPE\s+html\s*>[\s\S]*<\s*html\s*>/gi));

Removing the caret seems to solve this particular problem, but the match itself still doesn't enforce the condition that the html tag should be below the DOCTYPE since the regex is using [\s\S]* to separate the tags, which not only doesn't require a newline but also allows any type of gibberish between the two tags.
My first instinct is to replace [\s\S]* with (\r?\n)+ which will force at least one newline between the tags.

Question for anyone in the know, why are those comments above the HTML there? Is this expected? Seems like this could cause an issue for other tests as well. I believe it is required to be at the very top of the document so it actually does make sense to use a caret to anchor this match to the beginning of the string.

Question for anyone in the know, why are those comments above the HTML there? Is this expected? Seems like this could cause an issue for other tests as well. I believe the DOCTYPE is required to be at the very top of the document so it actually does make sense to use a caret to anchor this match to the beginning of the string.

@bbsmooth We have been trying to fix a few issues with the way we insert the user code into the iframe. However, we have encountered a, so far, unexplained bug: https://github.com/freeCodeCamp/freeCodeCamp/pull/42195


documentation link on the formula-plugin page is broken

Hi Guillaume,
the link on the page: https://repo.gbonnaire.fr/product/jss-plugin-formula to the github doc is broken.
I just bought it, expecting the doc also to be included in the package. This appears not to be the case.
I think I found the correct documentation here: https://github.com/jspreadsheet/plugins/tree/master/formula
but this is obviously not optimal :-)
Also, I feel I miss some important point with the versions. If I inlcude the formula code, it will complain about missing modules:
"jspreadsheet-pro" in /home/paul/Documents/dev/M323/client/compatibility/13_jss.formula.js (web.browser.legacy)
"formula-pro" in /home/paul/Documents/dev/M323/client/compatibility/13_jss.formula.js (web.browser.legacy)
and it does not work correctly. It shows the forumla-bar, but the functionality is broken. (Random newlines, strange glitching of the cursor.)
So, obviously, I'm doing something wrong with the verion of jspreadsheet? I just downloaded the version from here:
https://jspreadsheet.com/v8/docs/getting-started
and included the licence-key. Is there a "pro"-version somewhere else?
regards,
Paul

Hi,
Documentation is here on github / wiki
link : https://github.com/GBonnaire/jspreadsheet-plugins-and-editors/wiki/Premium-plugin-:-Formula
You need extention formula-pro of jSpreadsheet : https://jspreadsheet.com/products/formulas
And for break line/cursor, i will check that
thank you
regards,

Hi Guillaume,
your response time is amazing!
I found the doc on my own, as I said; but you could update the link that points to the wrong github page.
As to the plugins/spreadsheet, this is  a bit messy.
There are several versions of the spreadsheet called "pro" and apparently several versions of the formula plugin.
If I go to the page you point me to:
https://github.com/GBonnaire/jspreadsheet-plugins-and-editors/wiki/Premium-plugin-:-Formula
it states that I need to go here:
https://repo.gbonnaire.fr/
to purchse a licence. I did that, for 100,- a year - which I paid this morning.
Now, you tell me to go here:
https://jspreadsheet.com/products/formulas
and pay 360 pounds - one time licence.
I don't mind paying for this piece of software, neither for the spreadsheet itself, but this is a) confusing, b) anoying (if I pay for something I want to know for sure I buy the right version!) and c) unprofessional.
So, can you please:

confirm that if I buy from https://jspreadsheet.com/products/formulas it will work (it has no demo page, but that is the same plugin as from your site?)
I need the formula-plugin for multiple domains, just like the spreadsheet. Can you please advise?
cancel and refund my subscription I bought from your website

As a side note, I would like to know your involvement in all of this. Is jSpreadsheet your product? Are you affiliated with the company?
The reason I'm asking is dat I need the spreadsheet to be, well, predictable and stable. As I am planning to incorporate this into my own app, I want to be more sure about this product. As I described above, this feels a bit, well, messy...
I do not want to be overly critical, as I am impressed by the product, but even great products need clarity and support :-)
regards,
Paul

I try to answer to each question :

The link of documentation was updated this morning after your message 😉

No, you need extension of jspreadsheet call "formula-pro", but in this extension you have 2 versions, 1 basic (free) and 1 pro (to purchase, with more formulas)
link to basic JS : https://jspreadsheet.com/v8/plugins/formula.js
link to pro Js : https://jspreadsheet.com/v8/plugins/formula-pro.js
This extension is writed by editor of jspreadsheet pro (Paul Hodel)

My plugin formula ( is an editor formulabar and an editor formula in cell) is an plugin for jspreadsheet pro to add documentation + input bar when you want write formula. If you want only formula calculation : you need only add extensions "formula-pro" of jspreadsheet with basic link or pro link; For help you can request here : https://github.com/jspreadsheet/pro/issues

I am an independant editor and jspreadsheet pro is not my own product, it is a product of Paul Hodel compagny (https://github.com/pphod or https://github.com/hodeware). But, i suggest to Paul the ideas to improve jspreadsheet and help sometime to improve jspreadsheet, because i'm also an user of jspreadsheet pro for my own application (www.osilap.fr)

Ok i cancel your subscription.
I understand your notice, and i think to improve information linked about my plugins for more clear informations. Thank you for that.
regards,
guillaume

Hi Guillaume,
thank you for your answers!
So, to use the formula-bar I need the pro version of the spreadsheet, and the (free or not) plugin formula-pro?
In that case, keep my subscription alive! :-D
I will try to implement this in my app.
Checked out your website; Je ne parle pa francais... dommage :-)
regards,
Paul

Yes : for plugin formulabar (renamed by Formula Editors advanced) you required :

JSpreadsheet pro version V7 or V8
Extension formula (basic or pro)
And my plugin

Oups, your subscription are canceled and refunded and i can't cancel this request...
but it's ok, it's christmas and considere this as a gift for you 😉,  i activate your license for 1 year of subscription and i would like you continue your contribution to improve my documentation, information and bugs 😉
Are you ok with this deal ?
lol yes, i'm french and based on France 😁 And my own application is for Publics administrations(FR) and hospitals(FR)
happy new year's eve
regards,
Guillaume

Hi Guillaume,
that is amazing! I'm signing off for to day; will try to incorporate all in my app tomorrow :-)
Bon Annee to you!
regards,
Paul

Happy new year to you 😊
regards


S7Client.DBGet(dbNumber[, callback]) = Callback is not triggering. Async not Implemented?

Hello,
I currently using this project for a web-application I am developing. The last 3 days I was wondering why I could not read from DB till I realized I should try the synchronized way. The Blocking way of this method works just fine 👍 but the non-blocking one.... not so much
Might it be a possibility that the async functionality is not yet implemented?

Hi,
it is implemented, but the arguments were wrong. The function check was implemented for argument number 3 and not 2. Should be fixed. You can try the current master or wait for a new release early this week (or use DBGet(dbnumber, , callback); But then you have to change your code again). Thanks for reporting :)

I am happy to help. out of curiosity do you know a nice way to deliver a JSON into S7-1500 without touching every single element by hand?

Out of curiosity do you know a nice way to deliver a JSON into S7-1500 without touching every single element by hand?

What do you mean exactly? The easiest way is to write all your data in one block, but for this you need control over the DB structure in the PLC. Otherwise you can write some meta data to your JSON to describe your DB structure so that your application can process the data automatically.


Remove jacocoTestReport task from travis build

Purpose
Remove jacocoTestReport task from travis build
Fixes #
Approach

Describe how you are implementing the solutions along with the design details.

Samples

Provide high-level details about the samples related to this feature.

Remarks

List any other known issues, related PRs, TODO items, or any other notes related to the PR.

Check List

[ ] Read the Contributing Guide
[ ] Required Balo version update
[ ] Updated Change Log
[ ] Checked Tooling Support (#)
[ ] Added necessary tests

[ ] Unit Tests
[ ] Spec Conformance Tests
[ ] Integration Tests
[ ] Ballerina By Example Tests

[ ] Increased Test Coverage
[ ] Added necessary documentation

[ ] API documentation
[ ] Module documentation in Module.md files
[ ] Ballerina By Examples

We had to disable this task in travis because jacocoTestReport task was hanging and cause build to timeout.


ROR autocomplete lack of country results in incorrect selection

Package version (if known): v9.1
Describe the bug
Since the Affiliation and Funder ROR autocomplete lacks country information, funders with common names like "National Institute of Health" can't be distinguished.
Steps to Reproduce

Go to Funding, Add custom

Search National Institute of Health

See there are two identical options:

If you select the first one, you've picked the National Institute of Health in Pakistan

Go to Add creator, Affiliation

Search National Institute of Health

The first option seems to be correct

But it's the NIH in Pakistan again

Expected behavior
ROR autocompletes include the country, to distinguish RORs with the same name.
Screenshots (if applicable)
Additional context

Related issue: in the record landing page, we don't display the ROR id and country (basically, more info) for funders, in the Funders tab in the bottom of the landing page.