Partial data missing.

Hi,
I've got a little problem, but first here is my code:
cordova code
 concatData = (data) => {
        this.setState({
            arrayMessage: this.state.arrayMessage.concat(data)
        });

    };
    removeData = () => {
        this.setState({
            arrayMessage: []
        });
    };
    sendDataToReducer = () => {
        this.props.addDataFromArduino(this.state.arrayMessage.join(""));
    };
    connect = () => {
        const errorCallback = (message) => alert('Error: ' + message);
        serial.requestPermission(
            (successMessage) => {
                if (!'TextDecoder' in window) {
                    alert('Your browser does not support the Encoding API.');
                }
                alert(successMessage);
                serial.open(
                    {
                        baudRate: 9600
                    },
                    () => {
                        serial.registerReadCallback(
                            (data) => {
                                const view = new Uint8Array(data);
                                const enc = new TextDecoder();
                                const decodedString = enc.decode(view);
                                if(decodedString.length > 1) {
                                    for(let i = 0; i < decodedString.length; i++) {
                                        if(parseInt(decodedString[i].charCodeAt(0)) !== 13) {
                                            this.concatData(decodedString[i]);
                                        } else {
                                            this.sendDataToReducer();
                                            this.removeData();
                                        }
                                    }
                                } else {
                                    if(parseInt(decodedString[i].charCodeAt(0)) !== 13) {
                                        this.concatData(decodedString);
                                    } else {
                                       this.sendDataToReducer();
                                       this.removeData();
                                    }
                                }
                            },
                            function error(){
                                new Error("Failed to register read callback");
                            });
                    },
                    errorCallback
                );
            },
            errorCallback
        )
    };

arduino code
void setup() {
  Serial.begin(9600);
}

void loop() {
  delay(2000);
  Serial.println(12123);
}

The problem is that when my android is receiving data, some of this data is missing
Screenshot below:

As you can see, in this picture the data is the number 12123. The string initial data is hardcoded string in an array to which I push received data.
At the beginning after "initial data" you can notice(I underlined this with red line) that there is no 1 before2 which means that somehow the first digit missed.
I thought that is little issue with which I can live but after receiving another same data(12123), the problem appeared again in different combination. For instance 213 which I underlined with a green line and other like 2123(before that 213) or 212(in the end).
I tried to resolve this but I ended without success. If someone knows how to fix it, I will be grateful to that person for helping me.

Ok I resolved this by changing this condition:
decodedString.length > 1
into:
decodedString.length >= 1

Hello @gitsad it seems logical to me to use >= instead of > because with the latter you would miss messages of length === 1. Does it fixed both issues (underlined in green and in red) ?
Should I consider this issue fixed?
Regards

Thank you for your response. Yeah, I've fixed it by changing this condition above. Both issues are fixed because they were connected with this missing partial data :smile: .
I'm building small measure device. This project includes small voltage detector, Arduino board, and mobile app in cordova+react+onsen to read and save data. I was little unsure when it came to building a mobile app because my second option was to build an app in react native but my hardware(Arduino) knowledge isn't as big as I want and also I didn't find library in React Native which would be directly related to connecting Arduino with mobile app :thinking: . For now I'm glad that I chose cordova+react because apart from little problems which I have. Your lib helps me a lot :+1:

Great to hear! I have in mind to port this link to react native, but I cannot find the time!
Have fun!


[CS2103-T14-2] FoodDiary

FoodDiary caters to food-fervent NUS students who would ideally benefit from keeping records of food options tasted in the vicinity of NUS. The app will allow NUS foodies to save time and effort when finding places to eat around the NUS vicinity.

Codecov Report

Merging #3 (c114210) into master (c36220c) will not change coverage.
The diff coverage is n/a.

@@            Coverage Diff            @@
##             master       #3   +/-   ##
=========================================
  Coverage     72.15%   72.15%
  Complexity      399      399
=========================================
  Files            70       70
  Lines          1232     1232
  Branches        125      125
=========================================
  Hits            889      889
  Misses          311      311
  Partials         32       32

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 c36220c...c114210. Read the comment docs.


Update french translation

I'd love to get rid of the merge, but the tech eludes me. Are you sure you wouldn't take instead an old, standard diff, from an old bearded amateur with no pursue of glory ? :)

Thank you 🚀


New to rundeck

Hi All,
I'm new to rundeck. I installed rundeck on a windows 2008 R2 server. Downloaded this plugin and finished setting it up. However when i added another node and trying to execute a command to that i have issues.
Here is execution log. It would be great if you guys can tell me what I'm missing.
15:02:46	DEMO01		[workflow] Begin execution: rundeck-workflow-node-first context: null
15:02:46			preparing for sequential execution on 1 nodes
15:02:46			Executing command on node: <IP_ADDRESS>, NodeEntryImpl{tags=[], attributes={osFamily=windows, tags=, osArch=x86_64, osVersion=Microsoft Windows Server 2008 R2 Standard, Password=Rduser@2016, hostname=<IP_ADDRESS>, winrm-protocol=http, connectionType=WINRM_NATIVE, username=rdeckuser, winrmPassword=Rduser@2016, winrm-password-option=winrmPassword, description=Rundeck Demo Exec node Windows, winrm-auth-type=basic, nodename=<IP_ADDRESS>, node-executor=overthere-winrm, osName=Microsoft Windows Server 2008 R2 Standard}, project='null'}
15:02:46			NodeSet: MultiNodeSelector{nodenames=[<IP_ADDRESS>]}
15:02:46			Workflow: com.dtolabs.rundeck.core.execution.workflow.StepFirstWorkflowStrategy$stepFirstWrapper@66eae4a8
15:02:46			data context:  {node={tags=, os-version=Microsoft Windows Server 2008 R2 Standard, Password=Rduser@2016, hostname=<IP_ADDRESS>, winrm-protocol=http, connectionType=WINRM_NATIVE, os-name=Microsoft Windows Server 2008 R2 Standard, os-family=windows, username=rdeckuser, winrmPassword=Rduser@2016, winrm-password-option=winrmPassword, description=Rundeck Demo Exec node Windows, name=<IP_ADDRESS>, winrm-auth-type=basic, os-arch=x86_64, node-executor=overthere-winrm}, globals={}, job={loglevel=DEBUG, wasRetry=false, url=http://DEMO01:4440/project/Test/execution/follow/53, id=12f5aebc-a877-41e9-970f-2fdf2eef0607, project=Test, username=admin, retryAttempt=0, user.name=admin, name=Test1, serverUUID=null, group=null, execid=53, serverUrl=http://DEMO01:4440/}, option={WINRMPASS=Rduser@2106}}
15:02:46		 1. Command	[workflow] Begin step: 1,NodeDispatch
15:02:46			1: Workflow step executing: com.dtolabs.rundeck.execution.ExecutionItemFactory$4@745f515f
15:02:46			preparing for sequential execution on 1 nodes
15:02:46			Executing command on node: <IP_ADDRESS>, NodeEntryImpl{tags=[], attributes={osFamily=windows, tags=, osArch=x86_64, osVersion=Microsoft Windows Server 2008 R2 Standard, Password=Rduser@2016, hostname=<IP_ADDRESS>, winrm-protocol=http, connectionType=WINRM_NATIVE, username=rdeckuser, winrmPassword=Rduser@2016, winrm-password-option=winrmPassword, description=Rundeck Demo Exec node Windows, winrm-auth-type=basic, nodename=<IP_ADDRESS>, node-executor=overthere-winrm, osName=Microsoft Windows Server 2008 R2 Standard}, project='null'}
15:02:46	<IP_ADDRESS>	 1. Command	[workflow] beginExecuteNodeStep(<IP_ADDRESS>): NodeDispatch: com.dtolabs.rundeck.execution.ExecutionItemFactory$4@745f515f
15:02:46			[overthere-winrm:<IP_ADDRESS>] ipconfig /all
15:02:46			[overthere-winrm:<IP_ADDRESS>] Password was not set
15:02:46			Failed: ConfigurationFailure: Password was not set
15:02:46	DEMO01	 1. Command	[workflow] finishExecuteNodeStep(<IP_ADDRESS>): NodeDispatch: ConfigurationFailure: Password was not set
15:02:46			1: Workflow step finished, result: Dispatch failed on 1 nodes: [<IP_ADDRESS>: ConfigurationFailure: Password was not set]
15:02:46			[workflow] Finish step: 1,NodeDispatch
15:02:46			[workflow] Finish execution:  rundeck-workflow-node-first: [Workflow result: , step failures: {1=Dispatch failed on 1 nodes: [<IP_ADDRESS>: ConfigurationFailure: Password was not set]}, Node failures: {<IP_ADDRESS>=[ConfigurationFailure: Password was not set]}, status: failed]
15:02:46			[Workflow result: , step failures: {1=Dispatch failed on 1 nodes: [<IP_ADDRESS>: ConfigurationFailure: Password was not set]}, Node failures: {<IP_ADDRESS>=[ConfigurationFailure: Password was not set]}, status: failed]
15:02:46			Execution failed: 53 in project Test: [Workflow result: , step failures: {1=Dispatch failed on 1 nodes: [<IP_ADDRESS>: ConfigurationFailure: Password was not set]}, Node failures: {<IP_ADDRESS>=[ConfigurationFailure: Password was not set]}, status: failed]

If im reading your log correctly it seems you're using this plugin https://github.com/rundeck-plugins/rundeck-winrm-plugin and not this plugin https://github.com/NetDocuments/rd-winrm-plugin
Can you please post a screenshot of your Default Node Executor settings for the project having issues?

Thanks Riedy. Found the issue. Im using both plugins. Winrm executor and Winrm. After changing the resources.xml it started working


BAvatar shows false false before avatar ({{ badgeLeft }}   {{ badgeLeftBoolean }})

https://github.com/cdmoro/bootstrap-vue-3/blob/104b083d1e868fc0b40d9ac552daba601518b6b9/packages/bootstrap-vue-3/src/components/BAvatar/BAvatar.vue#L2
Also replicable in playground. Not sure how these were working in 0.1.x
{{ badgeLeft }}
{{ badgeLeftBoolean }}

They weren't present before: https://github.com/cdmoro/bootstrap-vue-3/blob/b96867ffef735b1ea44c4475cf2d56223ac96fd1/src/components/BAvatar/BAvatar.vue
Were these added for debugging and forgotten?

I woke up and the first thing I thought of was... "Did I leave that debug code in? 🤔 "


small translate issue ko

{
"azimuth": "방위각",
"dawn": "새벽",
"dusk": "저녁",
"elevation": "태양 고도",
"moonrise": "월출",
"moonset": "월몰",
"noon": "태양 정오",
"sunrise": "해돋이",
"sunset": "해넘이"
}
this is original.
but after moon support. have some issue.
can you change some keyword?
"dawn": "새벽녘",
"dusk": "해질녘",
"elevation": "고도",
"moonrise": "달돋이",
"moonset": "달넘이",
"noon": "태양 남중",
thank you.

A friend of mine wrote:
These translations seem accurate:

"azimuth" is indeed translated as "방위각" in Korean.
"dawn" translates to "새벽".
"dusk" to "저녁" is slightly ambiguous because "저녁" typically means "evening" or "dinner". However, in the context of sunrise/sunset, it can also refer to the time of day just before the sun sets.
"elevation" in the context of the sun's position in the sky translates to "태양 고도".
"moonrise" and "moonset" are correctly translated as "월출" and "월몰" respectively.
"noon" referring to the sun's highest point in the sky is translated as "태양 정오".
"sunrise" and "sunset" are correctly translated as "해돋이" and "해넘이" respectively.

Overall, the translations are quite accurate and should be understood by Korean speakers. However, for "dusk", you might encounter a slight ambiguity. If you want to be very specific about the time when the sun is just setting or has just set, "황혼" might be a more precise term for "dusk".

A friend of mine wrote:
These translations seem accurate and more precisely reflect the original English expressions:
"dawn" as "새벽녘": This exactly means "dawn" or the approach of dawn.
"dusk" as "해질녘": This means the time of sunset or the approach of sunset, so this is an accurate translation.
"elevation" as "고도": "고도" is a commonly used term for "height" or "elevation". Depending on the context, this could be an appropriate translation.
"moonrise" as "달돋이": This correctly means "moonrise".
"moonset" as "달넘이": This correctly means "moonset".
"noon" as "태양 남중": "태양 남중" means the sun's midday height or the time when the sun is at its highest point, which aligns with the original meaning of "noon".
These translations show that there was an effort to use more precise and nuanced expressions in the Korean language.


Update build.yml to support python 3.12

Fixes #109

Thank you!

Any chance for a new release on PyPI with the 3.12 wheels? arviz would like to rely on dm-tree, but needs a stable release.

Hey @ColCarroll, I think I can just add 3.12 wheel to the last release. The problem is that the CI builds currently fail on some architectures and I have no time at the moment to investigate.


Custom user test cases

I would love to be able to write a 'test' case, and make sure that it goes to the expected destination.
Given e.g. 5 files, precedence of variables coming from all of those + potential 'default' sections, it would be nice to simulate a rule given things like their user/group/role/etc
I understand the python could be prohibitive to mock, so if it was just for non-python-y rules it would be fine.

Makes sense and most of the scenario based test cases: https://github.com/galaxyproject/total-perspective-vortex/blob/3d166f5065bb7690e016a3390b6860e11e8f370b/tests/test_scenarios.py#L13
simulate situations similar to what you're looking for I think.
For example, this test case: https://github.com/galaxyproject/total-perspective-vortex/blob/3d166f5065bb7690e016a3390b6860e11e8f370b/tests/test_scenarios.py#L210 ensures that a tpv rule restricting the maximum number of jobs for a particular highmem destination to 4, is tested by dispatching 5 artificial jobs.
Everything, including any embedded python code, is evaluated, so we had pretty high confidence in correctness before that rule was deployed into production.

Ah that looks perfect! Cheers
(aren't you supposed to be on holiday? @Slugger70 said something about that. Anyway, no rush in answering these!)

Bad habit of not being able to turn off :-)
This has a scenario based test for the usegalaxy-eu test case which might come in handy.
https://github.com/galaxyproject/total-perspective-vortex/pull/41/commits/664d1e9a58ea0b4b24e6233ee1a9e5877df67e1e


[AutoPR cdn/resource-manager] Generate cdn package

Created to sync https://github.com/Azure/azure-rest-api-specs/pull/4098

(message created by the CI based on PR content)


Unintuitive error message when some JSX children is invalid

Bug Report

🔎 Search Terms
JSX children error message
🕗 Version & Regression Information

This can probably go all the way back when better JSX children error messages were added, but it went away unnoticed until @types/react has stricter ReactNode typing.
⏯ Playground Link

Playground link with relevant code
💻 Code

import React from "react";

const a = (
  <main>
    {(<div />) as unknown}
    <span />
  </main>
);

🙁 Actual behavior
Error message: "This JSX tag's 'children' prop expects a single child of type 'ReactNode', but multiple children were provided." This is weird, because when you remove that as unknown, it's still technically "multiple children".
🙂 Expected behavior
When there's only one child (by deleting the <span />), the error message is "Type 'unknown' is not assignable to type 'ReactNode'.". In this case, we could give an error like "some of the children have incompatible types with ReactNode"

@Josh-Cena , thank you so much. I had no clue what this error was about. As soon as you gave me the hint with type unknown I could immediately fix all errors. ❤


two potion effect and a sword

I am wandering about that what's the effect of blood seal and dragon wrack.Still,I didn't find the " dragon slayer" sword even I have installed twilight forest,drconic evolution , your forbidden magic and thaumcraft4 of course.
I leart the sword from here :https://m.ftbwiki.org/Sword_of_the_Dragonslayer

Well, I've found your answer about the sword,why not make it only as a weapon against dragons?Or make it will cost a lot of DE armor's energy(just like bloodrapier do)?
I do hope it will be add again, please!

I don't like trying to impose PvP balance across mods, so I won't be adding the item back in. If I were doing the mod again, I probably wouldn't add the Rapier of the Strix back in either.
Blood Seal is a debuff that prevents a player from adding LP to their soul network.


Is it possible to use have an Android library as the native module of a React Native project?

Description
(I can't create a reproducer since it's a private code, but the steps might let my goal clear)
I'm trying to create an NPM project to be a ReactNative layer of my company's Android/iOS native SDK, so I turned the generated Android project into a library. But it seems that the RN plugin will always look for an application instead. I need the project to be a library because it's only an SDK, it doesn't have Activities or Application and obviously I need it to be as simple as possible.
So is there any way to achieve this? The official docs project generator would suffice (since it creates a linked example project for tests as well) if it were not by this issue.
android/build.gradle:
// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    ext {
        buildToolsVersion = "34.0.0"
        minSdkVersion = 24
        compileSdkVersion = 34
        targetSdkVersion = 34
        ndkVersion = "26.1.10909125"
        kotlinVersion = "1.9.22"
    }
    repositories {
        google()
        mavenCentral()
    }
    dependencies {
        classpath("com.android.tools.build:gradle")
        classpath("com.facebook.react:react-native-gradle-plugin")
        classpath("org.jetbrains.kotlin:kotlin-gradle-plugin")

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

android/lib/build.gradle (you might notice some workarounds I needed to add in order to build it as a library):

apply plugin: "com.android.library"
apply plugin: "org.jetbrains.kotlin.android"
apply plugin: "com.facebook.react"

/**
 * This is the configuration block to customize your React Native Android app.
 * By default you don't need to apply any configuration, just uncomment the lines you need.
 */
react {
    /* Folders */
    //   The root of your project, i.e. where "package.json" lives. Default is '..'
    // root = file("../")
    //   The folder where the react-native NPM package is. Default is ../node_modules/react-native
    // reactNativeDir = file("../node_modules/react-native")
    //   The folder where the react-native Codegen package is. Default is ../node_modules/@react-native/codegen
    // codegenDir = file("../node_modules/@react-native/codegen")
    //   The cli.js file which is the React Native CLI entrypoint. Default is ../node_modules/react-native/cli.js
    // cliFile = file("../node_modules/react-native/cli.js")

    /* Variants */
    //   The list of variants to that are debuggable. For those we're going to
    //   skip the bundling of the JS bundle and the assets. By default is just 'debug'.
    //   If you add flavors like lite, prod, etc. you'll have to list your debuggableVariants.
    // debuggableVariants = ["liteDebug", "prodDebug"]

    /* Bundling */
    //   A list containing the node command and its flags. Default is just 'node'.
    // nodeExecutableAndArgs = ["node"]
    //
    //   The command to run when bundling. By default is 'bundle'
    // bundleCommand = "ram-bundle"
    //
    //   The path to the CLI configuration file. Default is empty.
    // bundleConfig = file(../rn-cli.config.js)
    //
    //   The name of the generated asset file containing your JS bundle
    // bundleAssetName = "MyApplication.android.bundle"
    //
    //   The entry file for bundle generation. Default is 'index.android.js' or 'index.js'
    // entryFile = file("../js/MyApplication.android.js")
    //
    //   A list of extra flags to pass to the 'bundle' commands.
    //   See https://github.com/react-native-community/cli/blob/main/docs/commands.md#bundle
    // extraPackagerArgs = []

    /* Hermes Commands */
    //   The hermes compiler command to run. By default it is 'hermesc'
    // hermesCommand = "$rootDir/my-custom-hermesc/bin/hermesc"
    //
    //   The list of flags to pass to the Hermes compiler. By default is "-O", "-output-source-map"
    // hermesFlags = ["-O", "-output-source-map"]
}

/**
 * Run Proguard to shrink the Java bytecode in release builds.
 */
def enableProguardInReleaseBuilds = false

/**
 * The preferred build flavor of JavaScriptCore.
 *
 * For example, to use the international variant, you can use:
 * `def jscFlavor = 'org.webkit:android-jsc-intl:+'`
 *
 * The international variant includes ICU i18n library and necessary data
 * allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that
 * give correct results when using with locales other than en-US.  Note that
 * this variant is about 6MiB larger per architecture than default.
 */
def jscFlavor = 'org.webkit:android-jsc:+'
/**
 * Whether to enable the Hermes VM.
 *
 * This should be set on project.ext.react and mirrored here.  If it is not set
 * on project.ext.react, JavaScript will not be compiled to Hermes Bytecode
 * and the benefits of using Hermes will therefore be sharply reduced.
 */
def enableHermes = project.ext.react.get("enableHermes", false);

android {
    namespace = "com.glancenetworks.reactnativebridge"

    compileSdkVersion rootProject.ext.compileSdkVersion
    buildToolsVersion rootProject.ext.buildToolsVersion

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    defaultConfig {
        minSdkVersion rootProject.ext.minSdkVersion
        targetSdkVersion rootProject.ext.targetSdkVersion
        versionCode 87
        versionName "6.1.0"
        ndk {
            abiFilters "armeabi-v7a", "x86", "x86_64"
        }
        // Enabling multidex support.
        multiDexEnabled true
    }

    signingConfigs {
        debug {
            storeFile file('debug.keystore')
            storePassword 'android'
            keyAlias 'androiddebugkey'
            keyPassword 'android'
        }
        release {
            if (project.hasProperty('RELEASE_STORE_FILE')) {
                storeFile file(RELEASE_STORE_FILE)
                storePassword RELEASE_STORE_PASSWORD
                keyAlias RELEASE_KEY_ALIAS
                keyPassword RELEASE_KEY_PASSWORD
            }
        }
    }

    splits {
        abi {
            reset()
            enable enableSeparateBuildPerCPUArchitecture
            universalApk false  // If true, also generate a universal APK
            include "armeabi-v7a", "x86", "x86_64"
        }
    }
    aaptOptions {
        cruncherEnabled = false
    }
    buildTypes {
        debug {
            signingConfig signingConfigs.debug
        }
        release {
            minifyEnabled enableProguardInReleaseBuilds
            proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
            signingConfig signingConfigs.release
        }
    }
    // applicationVariants are e.g. debug, release
    libraryVariants.all { variant ->
        variant.outputs.each { output ->
            // For each separate APK per architecture, set a unique version code as described here:
            // https://developer.android.com/studio/build/configure-apk-splits.html
            def versionCodes = ["armeabi-v7a": 1, "x86": 2, "arm64-v8a": 3, "x86_64": 4]
            def abi = output.getFilter(OutputFile.ABI)
            if (abi != null) {  // null for the universal-debug, universal-release variants
                output.versionCodeOverride =
                        versionCodes.get(abi) * 1048576 + defaultConfig.versionCode
            }
        }
    }

    packagingOptions {
        pickFirst 'lib/x86_64/libjsc.so'
        pickFirst 'lib/arm64-v8a/libjsc.so'
    }
}

tasks.whenTaskAdded { task ->
    if (task.name == 'copyDebugJniLibsProjectAndLocalJars') {
        task.dependsOn 'copyDebugBundledJs'
    }
}

dependencies {
    implementation 'com.facebook.soloader:soloader:0.10.4'

    def SdkVersion = "X.X.X.X"
    implementation "<my-private-sdk>:$SdkVersion"

    implementation "androidx.appcompat:appcompat:1.3.1"

    //noinspection GradleDynamicVersion
    implementation "com.facebook.react:react-native:+"  // From node_modules

    implementation "org.java-websocket:Java-WebSocket:1.4.0"
    implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
    annotationProcessor "androidx.lifecycle:lifecycle-compiler:2.2.0"
    implementation 'androidx.constraintlayout:constraintlayout:2.1.4'

    implementation 'androidx.multidex:multidex:2.0.1'

    if (enableHermes) {
        def hermesPath = "../../node_modules/hermes-engine/android/";
        debugImplementation files(hermesPath + "hermes-debug.aar")
        releaseImplementation files(hermesPath + "hermes-release.aar")
    } else {
        implementation jscFlavor
    }
}

// Run this once to be able to run the application with BUCK
// puts all compile dependencies into folder libs for BUCK to use
task copyDownloadableDepsToLibs(type: Copy) {
    from configurations.implementation
    into 'libs'
}

project.afterEvaluate {
    android.libraryVariants.all { variant ->
        def targetName = variant.name.capitalize()

        // Custom task to set up VM cleanup
        tasks.create(name: "setupVmCleanupFor${targetName}", type: DefaultTask) {
            doLast {
                def task = tasks.findByName("package${targetName}")
                if (task != null) {
                    task.doFirst {
                        // Your vmSelectionAction logic here
                        println "VM cleanup set up for ${targetName}"
                    }
                } else {
                    println "Warning: Task package${targetName} not found. Skipping VM cleanup."
                }
            }
        }

        // Ensure the custom task runs before package task
        tasks.findByName("package${targetName}")?.dependsOn "setupVmCleanupFor${targetName}"
    }
}

android/settings.gradle:

pluginManagement {
    repositories {
        gradlePluginPortal()
        google()
        mavenCentral()
    }
}

dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
        // Glance SDK
        maven { url 'MY-PRIVATE-MAVEN-URL' }
    }
}

rootProject.name = 'myreactnative-bridge'
apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings)
include ':lib'
includeBuild('../node_modules/@react-native/gradle-plugin')

Steps to reproduce

Create a NativeModule with the instructions provided on the docs
Transform the android/ project into a library
Try to build it

React Native Version
0.74.1
Affected Platforms
Runtime - Android, Build - MacOS
Output of npx react-native info
System:
  OS: macOS 14.4.1
  CPU: (8) arm64 Apple M1
  Memory: 134.38 MB / 16.00 GB
  Shell:
    version: "5.9"
    path: /bin/zsh
Binaries:
  Node:
    version: 18.20.3
    path: ~/.nvm/versions/node/v18.20.3/bin/node
  Yarn:
    version: 3.6.4
    path: ~/.nvm/versions/node/v18.20.3/bin/yarn
  npm:
    version: 10.7.0
    path: ~/.nvm/versions/node/v18.20.3/bin/npm
  Watchman:
    version: 2<IP_ADDRESS>
    path: /opt/homebrew/bin/watchman
Managers:
  CocoaPods:
    version: 1.11.3
    path: /usr/local/bin/pod
SDKs:
  iOS SDK: Not Found
  Android SDK: Not Found
IDEs:
  Android Studio: 2023.3 AI-233.14808.21.2331.11709847
  Xcode:
    version: /undefined
    path: /usr/bin/xcodebuild
Languages:
  Java:
    version: javac 18
    path: /opt/homebrew/opt/openjdk/bin/javac
  Ruby:
    version: 2.6.10
    path: /usr/bin/ruby
npmPackages:
  "@react-native-community/cli": Not Found
  react:
    installed: 18.2.0
    wanted: 18.2.0
  react-native:
    installed: 0.74.1
    wanted: 0.74.1
  react-native-macos: Not Found
npmGlobalPackages:
  "*react-native*": Not Found
Android:
  hermesEnabled: true
  newArchEnabled: false
iOS:
  hermesEnabled: Not found
  newArchEnabled: Not found

Stacktrace or Logs
FAILURE: Build completed with 2 failures.

1: Task failed with an exception.
-----------
* Where:
Build file 'myreactnative-bridge/android/lib/build.gradle' line: 85

* What went wrong:
A problem occurred evaluating project ':myreactnative-bridge'.
> Cannot get property 'react' on extra properties extension as it does not exist

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
> Get more help at https://help.gradle.org.
==============================================================================

2: Task failed with an exception.
-----------
* What went wrong:
A problem occurred configuring project ':glance-networks_reactnative-bridge'.
> compileSdkVersion is not specified. Please add it to build.gradle

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
> Get more help at https://help.gradle.org.
==============================================================================

BUILD FAILED in 1s
5 actionable tasks: 1 executed, 4 up-to-date

Reproducer
https://github.com/facebook/react-native
Screenshots and Videos
No response

You can use: https://github.com/callstack/react-native-builder-bob
You'll have to create either a Module or a Component, based on what your SDK is doing.
Then you can publish it as a NPM package and it will be using the Android Library plugin (so it's not an app) + it comes with an example app that you can use to excercise your plugin.

well, I already used it as I described in Step 1. The problem is that the generated Android project cannot download any Gradle dependency, no matter where I set the repositories.
It logs something like:
FAILURE: Build failed with an exception.

* What went wrong:
Could not determine the dependencies of task ':app:processDebugResources'.
> Could not resolve all task dependencies for configuration ':app:debugRuntimeClasspath'.
   > Could not find net.company.android:company-android-core-sdk:<VERSION>.
     Searched in the following locations:
       - https://oss.sonatype.org/content/repositories/snapshots/net/company/android/company-android-core-sdk/<VERSION>/company-android-core-sdk-<VERSION>.pom
       - https://repo.maven.apache.org/maven2/net/company/android/company-android-core-sdk/<VERSION>/company-android-core-sdk-<VERSION>.pom
       - file:/Users/geraldo.lima/git/native-modules-sample/test/react-native-awesome-module/example/node_modules/jsc-android/dist/net/company/android/company-android-core-sdk/<VERSION>/company-android-core-sdk-<VERSION>.pom
       - https://dl.google.com/dl/android/maven2/net/company/android/company-android-core-sdk/<VERSION>/company-android-core-sdk-<VERSION>.pom
       - https://www.jitpack.io/net/company/android/company-android-core-sdk/<VERSION>/company-android-core-sdk-<VERSION>.pom
     Required by:
         project :app > project :react-native-awesome-module

Where is net.company.android:company-android-core-sdk:<VERSION>. stored or hosted?

In a private Gitlab Maven repo.

btw, I can use this same library in a common ReactNative Android project, but I need to extract the Android/iOS modules to an NPM package so it can be used as a dependency in our customer's RN apps.

In a private Gitlab Maven repo.

You would have to declare that in a repositories {} block in your build.gradle file so that the dependency can be found

So I did. That's my current build.gradle:

buildscript {
  repositories {
    google()
    mavenCentral()
    maven { url '<gitlab URL>' }
  }

  dependencies {
    classpath "com.android.tools.build:gradle:7.2.1"
  }
}

def isNewArchitectureEnabled() {
  return rootProject.hasProperty("newArchEnabled") && rootProject.getProperty("newArchEnabled") == "true"
}

apply plugin: "com.android.library"

if (isNewArchitectureEnabled()) {
  apply plugin: "com.facebook.react"
}

def getExtOrDefault(name) {
  return rootProject.ext.has(name) ? rootProject.ext.get(name) : project.properties["AwesomeModule_" + name]
}

def getExtOrIntegerDefault(name) {
  return rootProject.ext.has(name) ? rootProject.ext.get(name) : (project.properties["AwesomeModule_" + name]).toInteger()
}

def supportsNamespace() {
  def parsed = com.android.Version.ANDROID_GRADLE_PLUGIN_VERSION.tokenize('.')
  def major = parsed[0].toInteger()
  def minor = parsed[1].toInteger()

  // Namespace support was added in 7.3.0
  return (major == 7 && minor >= 3) || major >= 8
}

android {
  if (supportsNamespace()) {
    namespace "com.awesomemodule"

    sourceSets {
      main {
        manifest.srcFile "src/main/AndroidManifestNew.xml"
      }
    }
  }

  compileSdkVersion getExtOrIntegerDefault("compileSdkVersion")

  defaultConfig {
    minSdkVersion getExtOrIntegerDefault("minSdkVersion")
    targetSdkVersion getExtOrIntegerDefault("targetSdkVersion")

  }

  buildTypes {
    release {
      minifyEnabled false
    }
  }

  lintOptions {
    disable "GradleCompatible"
  }

  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
}

repositories {
  mavenCentral()
  google()
  // Glance SDK
  maven { url '<gitlab URL>' }
}

dependencies {
  // For < 0.71, this will be from the local maven repo
  // For > 0.71, this will be replaced by `com.facebook.react:react-android:$version` by react gradle plugin
  //noinspection GradleDynamicVersion
  implementation "com.facebook.react:react-native:+"

  def companyCoreSdkVersion = "<VERSION>"
  implementation "net.company.android:company-android-core-sdk:$companyCoreSdkVersion"
}

I tried a lot of variations, putting it in the buildscript block and not in the outer repositories block, putting it in both, etc. I also tried to create a settings.gradle file but the result remains the same.

pluginManagement {
    repositories {
        gradlePluginPortal()
        google()
        mavenCentral()
    }
}

dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
        maven { url '<gitlab URL>' }
    }
}

include ':src'

Well, I'll end up doing the same thing I did before, since the beginning. The problem is that the generated Android project for some reason doesn't allow me to add custom repositories so I can't import my SDK.

The problem is that the generated Android project

What do you mean with the "generated" Android project?

doesn't allow me to add

What do you mean with "doesn't allow me to add"? Is the file read only?

I mean the project created after running one of the Bob tools options to create the ReactNative project. It will create a sub Android and an iOS project...
By "doesn't allow me to add" I mean this. As I described before, No matter where I put the repositories {} block or even which repositoriesMode, it will always ignore my specific maven { url '<url>' }

Can you share a repository where you created your module? I can look into it and point to the right line and/or assess if this is a bug in our infrastructure

Sure, here it is. Please note that it will compile if you remove my custom dependency here

Thanks for providing the repro @GeraldoLimaGlance
You should be able to achieve what you're looking for by updating those lines:
https://github.com/GeraldoLimaGlance/react-native-issue-44807-reproducer/blob/500b2baf23b498f930e21325019b16ec0a121172/issue-44807-reproducer-lib/android/build.gradle#L80-L84
with
repositories {
  maven { url 'https://gitlab.com/api/v4/projects/48670956/packages/maven' }
}
project(":app") {
  repositories {
    maven { url 'https://gitlab.com/api/v4/projects/48670956/packages/maven' }
  }
}

Thank you very much @cortinico, it worked! So now can I use this same project to publish my bridge as an NPM package? That's the main goal.
Also, could you please update the docs to add this piece of code with a brief explanation like "add this if you need to import custom dependencies"? Those few lines that could save days of research 🙏🏽


Bug: Combobox - label breaks from container on certain length

Describe the bug
Reported by Alexandra Malyshenko.
Expected behavior
Label should not break outside of containing element in the Combobox.
Screenshots

No plans to fix.


Validator should be able to handle Streams

I'm using the Mustangproject validator maven artifact to create and validate Zugferd files in my project. Thanks a lot for this very helpful tool! :-)
One thing though bothers me: in order to use the validator I have to save my PDF-Output as a temporary file on the disk, because the validator methods only handle filenames.
Would be great if the validator had methods to deal with streams instead of files as well.

that was on my list for 2.0 and I tried it three times for a couple of hours each but I did not manage. I'd love to see it as well and I'm almost certain I'll try a fourth time but I'm not sure when. How about having a look together e.g. on tuesday?

First step would be to remove BatchProcessor (meaning DirectoryProcessor) from PDF validator and create the XML on oneself. This  is possible because we're anyway only using it on a per-single-file-basis.


Automated cherry pick of #5242: fix: 避免根磁盘小于镜像大小导致创建失败

Cherry pick of #5242 on release/3.0.
#5242: fix: 避免根磁盘小于镜像大小导致创建失败

Codecov Report

:exclamation: No coverage uploaded for pull request base (release/3.0@12f3df9). Click here to learn what that means.
The diff coverage is n/a.

@@              Coverage Diff              @@
##             release/3.0   #5244   +/-   ##
=============================================
  Coverage               ?   6.87%
=============================================
  Files                  ?     535
  Lines                  ?   91061
  Branches               ?       0
=============================================
  Hits                   ?    6262
  Misses                 ?   84278
  Partials               ?     521

Flag
Coverage Δ

#aFlag
6.87% <ø> (?)

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 12f3df9...b69f4b5. Read the comment docs.

/lgtm

/approve

/approve


Sync bronzeman unlocks on multiple devices

I play on desktop and laptop and the item unlocks are not synchronized when I switch devices. I am signed in to runelite on each device, so is there any way to sync the unlocks with my runelite account instead of storing them locally on each device? Some runelite plugins already do this, like loot tracker and tile markers.

Hello! Thank you for your suggestion!
I can definitely take a look at how hard it would be to implement this. Do you by chance know of any specific 'plugin hub' plugins that do this? These plugins work a bit differently, so it would help a lot to be able to draw inspiration form such a plugin.

I am not aware of any plugin hub plugins that sync like this, which may be an indication that it isn't possible. But it'd be pretty neat if plugin hub plugins could send data to the online runelite account page https://runelite.net/account/home somehow

How would I go about accessing the unlock list in order to transfer them to a new device?

If you are on windows, you can find the unlock file here:
C:\Users**.runelite\profiles\rsprofile.**\another-bronzeman-mode-unlocks.txt
On a new device, runelite might assign a new unique profile key to your account; so I would suggest installing the plugin on this device, seeing where it created your new another-bronzeman-mode-unlocks.txt file, and replacing that with your old one.


update 0.9.2 on NPM

Hello I'm using this plugin on Angular4
On version 0.9.1 the code below
https://github.com/vedmack/yadcf/blob/0fef198b9bb8193ef517ca690ac5f322cc9f0ad8/src/jquery.dataTables.yadcf.js#L3732
appears like
https://github.com/vedmack/yadcf/blob/4efab911d2b92d3febfffb0578f0c8f6157f2fb4/jquery.dataTables.yadcf.js#L3649
and this made yadcf cannot find table which is initialised without selector
ex) $(element).DataTable()
So... please release current code with tag 0.9.2 and upload on NPM
Anyway thanks for making this beautiful plugin :)

done...

@vedmack
Thanks for the fix :)

@darron1217 I thought that tagging repo' will trigger npm version update but it looks like was wrong? because the npm site shows 0.9.1 , can you remind me what else do I need to do in order to tell npm about my update?

@vedmack Did you execute npm publish on your project folder?

@darron1217 now I did, thanks


Add feature to add neccessary ARIA attributes on initialization

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Can't download on OSX

nvm download 5
Requesting http://nodejs.orghttp://nodejs.org/dist/v5/node-v5.tar.gz did not return 200 (got 404)

Per https://github.com/creationix/nvm/issues/1037#issuecomment-195818832, you've installed the wrong nvm. Please reopen if it still fails after reinstalling properly from the curl script in the readme.


[fr] Support insert from select syntax

When one copies associations for example it can be much more efficient to use insert from select syntax instead of fetching and manually inserting.

Currently, Jimmer is working towards 1.0.0. Many of these features are actually implemented in longer-term plans. The current priority in the Jimmer plan is more towards the qualitative change of core functions rather than the non-core functions represented by data transformation.
For example, embeddable was an experimental feature that was not heavily developed before, because the user's desire to transform data was almost limitless. Getting involved in these features too early can cause the framework to deviate from the pre-planned design plan early on.
So, unless the lack of a feature is going to be overwhelmingly difficult for you, try to refrain from it.

Already In plan, but not now. It is will be done when jimmer is perfectly enough, so directly close it


Conflicting naming

On NPMJS this plugin is named branch-cordova-sdk, when it is saved in the config.xml in your project it appears as:
<plugin name="io.branch.sdk" spec="~2.2.2" />

This means when you restore the platforms for the project cordova tries to download the plugin io.branch.sdk which can't be found on NPMJS.
Could the name of this plugin match the name on NPMJS?

Hey @hx-markterry - Thanks for pointing this out. It's unfortunately due to a legacy migration and we're pretty stuck with it at the moment, lest we break a lot of builds for an update. https://github.com/BranchMetrics/cordova-ionic-phonegap-branch-deep-linking/issues/199


DansTonChatBridge: Update to follow DTC website changes

Now, entry title is optionnal and may be found in h3 HTML element.
Entry content is mandatory and may be found in div[class="item-content"] HTML element.
Moreover, the title may contain simple quotes (here, encoded) so the bridge have to decode first to apply format library function. In case we don't do that, the format function double encode the quote and something like ' could appear.

Merged, thanks !


add checking for bgpstream broker version

Exit with error if the bgpstream major version does not match the broker response version.
It only executes checking if the broker returns a version number, therefore it is safe against older version of the broker who does not return version number.

I think we want to decouple the bgpstream library version from the broker version.
E.g., we might release 2.1 of libbgpstream that uses a new broker version (v3).
How about we create a BROKER_VERSION macro in bsdi_broker.c and set that to 2?

I think we want to decouple the bgpstream library version from the broker version.
E.g., we might release 2.1 of libbgpstream that uses a new broker version (v3).
How about we create a BROKER_VERSION macro in bsdi_broker.c and set that to 2?

Agreed. Pushed commit bc96073 for this.


[PE-D][Tester E] Unable to view full name of person with long name

The app truncates the long name of a person, making the user unable to view the full name of a person with a long name. Perhaps the window could become scrollable horizontally to address this issue and the one with many tags. This would be higher in severity since there are many people out there with long names!

Labels: type.FeatureFlaw severity.Medium
original: zhengyup/ped#5

TODO:

Fix this behaviour

Bug fixed by @nicleongyj


Evaluate function()

Is it possible to return a group of css selectors from this function then pass it back into another Evaluate function later on ? Or an equivalent workaround ? Thank you.

The returned value from your function is JSONified and returned. You could embed that in a second eval script later on.
https://github.com/benbjohnson/phantomjs/blob/master/phantomjs.go#L1614-L1620
You may also be able to set the value on a property of window on your first eval & reference that on your second eval.

Thank you for the explanation @benbjohnson !


Feat/1603 unit lessons filter

Adds Unit and Lesson Filter to Search Page

Updates elastic search
Updates Search and Active Search Components
Updates corresponding test files

Issue(s)
Fixes #1603
How to test

Go to {cloud link}
Click on _______
You should see _______

Screenshots
How it used to look (delete if n/a):
{screenshots}

How it should now look:
{screenshots}

Checklist

[x] Added or updated tests where appropriate
[x] Manually tested across browsers / devices
[x] Considered impact on accessibility
[x] Design sign-off
[x] Approved by product owner

:tada: This PR is included in version 1.185.9 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


How can I add wildcard A record

I want to configure a wildcard A record, but I can't do it:
in config.cfg
records = [
# domain pointing to the public IP of your acme-dns server
"a.test.com. A <IP_ADDRESS>",
"b.test.com. A <IP_ADDRESS>",
"*.a.test.com. A <IP_ADDRESS>",
]
When I want to query bb.a.test.com or cc.a.test.com, etc. I got an error.

That goes beyond just trying to add a wildcard when you're trying to add another level  *.a.test.com is an additional level from *.test.com

see my pull request https://github.com/joohoi/acme-dns/pull/174
I improved wild cards support


MV-LRS dataset

Hi! Thanks for sharing the code. Could you please tell me where I can found the MV-LRS dataset? I cannot found it in the LRS paper. Is it a subset of LRS? Thank you!

Did you solve it?I'm having the same problem.


How to Expand floating button horizontally

i successfully  open fab vertically but i need to open it horizontally , i don't know how to do that or even it is possible or not

I have the same query.

me too,how?

you cant , because there is one property regrading open it horizontally  or vertically , but it is not working properly .it'll trigger errors , So according to me . not possible.

for horizontal... https://github.com/Clans/FloatingActionButton

@abiemann This library doesn't support horizontal floating either.


position of next and prev button in inline gallery

When inline module, vertically center the button to the image (not to the whole galleria)
Shorten the spacing between image and icon

Done. Added responsiveness as well.

Working


Mention rui_enable somewhere

hides HUD

also hides everything else that isn't vgui

Wasn't it rui_DrawEnable ?


Commercial use of deps.dev

Is it permissible to use the API service definitions in this repo, as part of a commercial product or a service, in order to query deps.dev?

The code in this repo (deps.dev service definitions) are licensed under Apache v2.0.
However, the deps.dev API itself is subject to Google API Terms of Service as noted in the README.

I am unsure what the implications of the two together are for commercial use of deps.dev.
Thanks in advance for the clarification.

The license and ToS of deps.dev's client code and API are the same as for most other Google services (eg, Google Cloud Platform).


v8: adding files to another folder

In the file manager files can only be added to another folder when the file is on the same level. File 1 can be placed in Folder C but is unable to be added to folder A.
|- FolderA
|- FolderB
- file 1
- file 2
|- Folder C

I'm not sure I understand this issue, but if you're talking about files added to a folder being unable to add be added to a folder at a level above - just drag the file to the "File Manager" or parent file in the breadcrumb to drag it up a level, then move it back down a level.


Autodetect protocol from git address

This PR adds support for detecting the protocol from the githooks.json. Previously it was assuming all connections are going over https. Now they can go over ssh as well.
Example structure:
{
    "pre-commit": {
        "ssh://git@my.git.repo:org/repo": [
            "script1"
        ],
        "https://my.git.repo/org/repo": [
            "script1"
        ],
        "my.git.repo/org/repo": [
            "script1"
        ]
    }
}

v1.2.0 is the latest release.


plugin: Added filter feature per record.

fluentd cannot apply filter per record currenty.
This patch provides user-defined filter feature per record,
even when using MultiEventStream.
This problem is one proposal for solving the issue #39(https://github.com/fluent/fluentd/issues/39)．
Signed-off-by: UEMURA Yuichi<EMAIL_ADDRESS>

I think it was tough work to clear legal procedures to make your patch open:-)
I understood the filtering/validating feature at the input-side is important.
But your proposal is too big to add just a filtering feature into the in_tail plugin. I believe the plugin mechanism should be simple to keep simplicity of Fluentd.
It needs more examples or estimations of use-cases to add a new type of plugins.
You can do same thing by extending TailInput and overriding the parse_line method (ref. http://fluentd.org/doc/devel.html#custom-parser-for-tail-input-plugin).

Unfortunately, as an OSS product, it's hard to accept the patch which includes company's copyright.
That could be a problem, when we change the license or donate the code to somewhere.
Please reconsider it. Sorry about this.
Thanks - K

@frsyuki Yes, TailInput is enough to filter when tailing. Therefore, my patch is needless in case just tail-time filtering.
Our problem is that some input plugins of fluentd cannot restrict the size of input.
Input-time restriction is useful when the the owners of fluentd's instances are different.
For example, the ForwardInput plugin doesn't have such mechanism:
module Fluent
class ForwardInput < Input
  # ...elision...
  def on_message(msg)
    # ...elision...
    elsif entries.class == Array
      # Forward
      es = MultiEventStream.new
      entries.each {|e|
        time = e[0].to_i
        time = (now ||= Engine.now) if time == 0
        record = e[1]
        # We'd like to hook record and to reduce output traffic.
        es.add(time, record)
      }
      Engine.emit_stream(tag, es)
      ...elision...
  end

I think my filtering patch is one solution, but I don't know whether my idea is the best or not.
Do you have any idea?

@kzk Yeah, Okey, I'll delete it next patch. Thank you for your pointing out :-)

@kzk Yeah, Okey, I'll delete it next patch. Thank you for your pointing out :-)

@frsyuki Note that this patch is just prototype... our goal is the generic method to limit input size.

Input-time restriction is useful when the the owners of fluentd's instances are different.

So, you can't trust the sender of logs at all, right? I imagine you need "multi-tenant" capability.
To satisfy your needs, the input plugin will need following features:
a) authentication
b) size/structure/semantics validation of records (validation per records)
c) bandwidth limitation (validation over multiple records)
In my opinion, a) should be done at the boundary of the "untrusted zone" and "trusted zone" not to allow unauthorized users to consume resources of the "trusted zone". And b) should be done at the boundary of the "frontend system" and "backend system". These validations tend to be expensive task because it needs to check strictly to prevent potential security hole.
They have different requirements than backend aggregation system which needs high performance.
in/out_forward plugins and Fluentd's emit/write mechanisms are optimized for performance. So we will need a filtering feature that doesn't degrade their performance.
I think it will be a another input plugin like in_secure_forward rather than a kind of add-ons.

So, you can't trust the sender of logs at all, right? I imagine you need "multi-tenant" capability.

Yes, you're right.

These validations tend to be complex and slow task because it needs be strict to prevent potential security holes.
They have different requirements than backend aggregation system which needs simplicity and high performance.

It seems like the best solution to layer between trusted and untrusted zone.

So it will be a another input plugin like in_secure_forward rather than a kind of add-ons.

This is our next work to come true layering :-)
We're going to share it as soon as possible.


webhooks endpoints added

Hey @nickhammond
I added in the webhook endpoint calls - only couple of liners. Could you take a quick look/review?
(future docs are here: https://github.com/wildbit/postmark-gem/wiki/Webhooks)

tx! releasing in a minute


PowerToys: Add two examples of RegEx search/replace

Small one.
Adressing https://github.com/microsoft/PowerToys/issues/685 and https://github.com/microsoft/PowerToys/issues/1585

@Jay-o-Way : Thanks for your contribution! The author(s) have been notified to review your proposed change.

@mattwojo
Can you review this PR?
IMPORTANT: When this content is ready to merge, you must add #sign-off in a comment or the approval may get overlooked.
#label:"aq-pr-triaged"
@MicrosoftDocs/public-repo-pr-review-team

#sign-off


[docs] Add summary to introduce rest hooks

adding some links for further reading on terminology i reference


php artisan assets:generate doesn't work well with concat.

When concat is on, and cache files are not generated, I run "php artisan assets:generate", the application.js will always be the empty one with a ';'.  But when cache files are generated, php artisan assets:generate works fine.
It seems like the command does not consider concat

Experiencing this as well


Comply with graphql-over-http specification

It would be great if the standard server were compliant with the GraphQL-over-HTTP specification.
The test suite could be done in a way that is reusable by other servers: https://github.com/graphql/graphql-over-http/issues/57

Hey @spawnia. Someone has mentioned before that we could just use graphql-http's test suite to tests for graphql-over-http spec compliance. I've made a tiny branch to run those: https://github.com/webonyx/graphql-php/compare/master...oprypkhantc:graphql-php:graphql-over-http
Could you take a look to see if this is even remotely what you had in mind? It's messy, but enough to show the idea. The test suite is in JS, so I thought simply running a real HTTP server is our best bet here.
If this looks alright to you, I can clean it up, add GH actions and, of course, work on the spec compliance. I believe I have a good understanding of the spec, plus there are 60 tests (only 20 of which pass with the current implementation) that cover just about everything.
What do you think?

Of course that can be moved out of graphql-php to graphql-http once the spec compliance is ready, merged and stable. They host tests for a lot of implementations already. Unit tests should be plenty to test against basic stuff.


Ginkgo: Add segmentation fault check on ValidateErrorsOnLogs

Add new assert to validate that Envoy didn't crash.
Related #3233
Signed-off-by: Eloy Coto<EMAIL_ADDRESS>

test-me-please

I don't think we should make an assertion about segmentation faults because it might block the CI due to spurious failures that aren't even caused by our Envoy filters (i.e., it could be an issue with Envoy itself). I think printing a huge warning on console is best for now that is visible to users on Jenkins. It'd be nice if we could dump these warnings at the end of each suite (Runtime, K8s, etc.), i.e.
=================================================================
==
==
==
== SEGMENTATION FAULT FOUND IN ENVOY - PLEASE DEBUG IF POSSIBLE
==
==
==
=================================================================

This will not fail the tests, but will make it very apparent to users that something happened which shouldn't. Once we do find the reason behind the segmentation faults that are currently occurring, we can re-add the assertion as you have done with your initial patch here. What do you think?

@ianvernon I'll hold this until end of the week, I remember that in the past I used something that set the Build as warning, but test continue to mark as green (I do not remember the plugin name) .

I'd love to make this fails the build. But only after we at least start collecting Envoy logs, or even better after we run a debug build of Envoy so we can get good tracebacks.
I'll work on including the logs in the Cilium logs ASAP.

@rlenglet ok

@rlenglet can I merge this?

@eloycoto We need this, but for the logs to be useful we'd need --debug-verbose=flow in addition to --debug, but then logs are very verbose.

test-me-please

@jrajahalme  is already in there https://github.com/cilium/cilium/blob/master/test/helpers/cilium.go#L752

Tests failed, but that shows that the logic in this PR is correct, because they discovered a core dump:
11:22:31
11:22:31     Found a "segmentation fault" in Cilium logs
11:22:31     Expected
...
11:22:31         2018-04-06T11:21:25.030765148Z level=info msg="Imported CiliumNetworkPolicy" ciliumNetworkPolicyName=rule-to-services k8sApiVersion= k8sNamespace=default
11:22:31         2018-04-06T11:21:25.21740674Z level=error msg="error while receiving request from xDS stream" error="rpc error: code = 1 desc = context canceled" xdsStreamID=3
11:22:31         2018-04-06T11:21:25.217773488Z level=warning msg="Envoy: Proxy crashed" error="signal: segmentation fault (core dumped)"
11:22:31         2018-04-06T11:21:25.217834813Z level=error msg="error while receiving request from xDS stream" error="rpc error: code = 1 desc = context canceled" xdsStreamID=1
11:22:31         2018-04-06T11:21:25.217840345Z level=info msg="Envoy: Closing access log connection"
11:22:31         2018-04-06T11:21:25.217854741Z level=error msg="xDS stream context canceled" error="context canceled" xdsStreamID=1
11:22:31         2018-04-06T11:21:25.217869671Z level=error msg="error while receiving request from xDS stream" error="rpc error: code = 1 desc = context canceled" xdsStreamID=2
11:22:31         2018-04-06T11:21:25.217873174Z level=error msg="xDS stream context canceled" error="context canceled" xdsStreamID=2
11:22:31         2018-04-06T11:21:25.21788611Z level=error msg="xDS stream context canceled" error="context canceled" xdsStreamID=3
11:22:31         2018-04-06T11:21:25.227322504Z level=info msg="Envoy: Proxy started with pid 5882"
11:22:31         2018-04-06T11:21:25.227377975Z level=info msg="Envoy: Sleeping for 100ms before restarting proxy"
...
11:22:31
11:22:31     not to contain substring
11:22:31         <string>: segmentation fault
11:22:31

But, we still don't gather the core. We should not merge this until we gather the core dump, otherwise the build will fail and we'll have nothing to debug.

@ianvernon Some changes are waiting in the packer-ci-build related with the cores:
https://github.com/cilium/packer-ci-build/pull/43

As @ianvernon mention, the PR #3683 was merged into this PR and now is part of this PR to have all in the same PR.

test-me-please

Fix #3399
Needs to wait until: PR #3354
This unblocks PR #3355

test-me-please

test-me-please

@eloycoto we will need a way to get the core dump from the Cilium pods, as the core dump logic is only available for the runtime tests right now. The tests found a core dump, but there is no core to debug. For this to be merged, we need corresponding logic for gathering logs from Cilium pods as well.
13:42:45     Found a "segmentation fault" in Cilium logs
13:42:45     Expected
13:42:45         <string>: 2018-04-16T13:42:44.362530083Z level=error msg="xDS stream context canceled" error="context canceled" xdsStreamID=1
13:42:45         2018-04-16T13:42:44.362627557Z level=info msg="Envoy: Closing access log connection"
13:42:45         2018-04-16T13:42:44.362791762Z level=warning msg="Envoy: Proxy crashed" error="signal: segmentation fault (core dumped)"
13:42:45         2018-04-16T13:42:44.362990557Z level=error msg="error while receiving request from xDS stream" error="rpc error: code = 1 desc = context canceled" xdsStreamID=1
13:42:45         2018-04-16T13:42:44.362996955Z level=error msg="xDS stream context canceled" error="context canceled" xdsStreamID=2
13:42:45         2018-04-16T13:42:44.363048418Z level=error msg="error while receiving request from xDS stream" error="rpc error: code = 1 desc = context canceled" xdsStreamID=2
13:42:45         2018-04-16T13:42:44.363057869Z level=error msg="xDS stream context canceled" error="context canceled" xdsStreamID=3
13:42:45         2018-04-16T13:42:44.367300634Z level=info msg="Envoy: Proxy started with pid 3530"
13:42:45         2018-04-16T13:42:44.36731808Z level=info msg="Envoy: Sleeping for 100ms before restarting proxy"
13:42:45         2018-04-16T13:42:44.374432428Z level=info msg="starting xDS stream processing" xdsStreamID=4
13:42:45         2018-04-16T13:42:25.548416607Z level=info msg="Policy imported via API, recalculating..." policyRevision=39
13:42:45         2018-04-16T13:42:25.548480341Z level=info msg="Imported CiliumNetworkPolicy" ciliumNetworkPolicyName=rule-to-services k8sApiVersion= k8sNamespace=default
13:42:45         2018-04-16T13:42:44.138108875Z level=info msg="Deleted CiliumNetworkPolicy" ciliumNetworkPolicyName=rule-to-services k8sApiVersion= k8sNamespace=default
13:42:45
13:42:45     not to contain substring
13:42:45         <string>: segmentation fault
13:42:45
13:42:45     /home/jenkins/workspace/Cilium-PR-Ginkgo-Tests-Validated/src/github.com/cilium/cilium/test/k8sT/Services.go:71

No dump in logs:
Ians-MBP:K8sValidatedServicesTestExternalservicesToServicesfirstpolicy,matchservicebylabels ianvernon$ ls
cmds.log	test-output.log

test-me-please

test-me-please

test-me-please

I tried the newer box versions locally and found that the core dump pattern was not set when I logged into the VM started by ginkgo for the runtime tests. I have to apply this:
sudo sysctl -w kernel.core_pattern=/tmp/core.%e.%p.%t

Maybe this needs to be added to test/provision/compile.sh to make sure it is set correctly?

@jrajahalme is already in the newer images: https://github.com/cilium/packer-ci-build/blob/master/provision/ubuntu/install.sh#L160
@ianvernon  ATM we need to merge the monitor first https://github.com/cilium/cilium/pull/3354. Instead of having a invalid log, I'm happy to merge this to another branch, added in the Jenkins job that run every two hours and Jarno can triage when it fails. As soon is it stable can be merged in master. sounds like a plan?

@eloycoto @ianvernon Now that we have fixed known segfaults, IMO it would be good time to make CI runs fail on any observed segfaults. We can always temporarily disable flaky tests if such appear in the future.

@jrajahalme I've just rebase ;-)

test-me-please

test-me-please

test-me-please

test-me-please


Create bastion with rhel version 9 is failing in latest code

This issue has been fixed and PR got merged into main branch.


Ability to override @screens in plugins

Hello Adam,
I've got a feature request. I'd like to be able to override the screens in the plugins on demand. I came across a use case when writing a plugin. I have screens defined in the tailwind.config.js as:
"theme": {         "screens": {             "xl": {"min": "1279px"},             "lg": {"max": "1278px"},             "md": {"max": "1023px"},             "sm": {"max": "767px"},             "xs": {"max": "640px"}         } }
I'm building a plugin which requires a side effect for which I need to pass the screens as:
const screens = {             "xs": {"min": "0px"},             "sm": {"min": "767px"},             "md": {"min": "1023px"},             "lg": {"min": "1278px"},             "xl": {"min": "1279px"}         };
Looking at the source code I don't think it is possible as it seems to me that tailwind will always pull screens as defined in the the tailwind.config.js
The plugin is a simple component helper class for defining grid like blocks.
I'm posting the code here as well for a reference.
`module.exports = function() {
return function({ addComponents, theme }) {
    const screens = [ 'xl','lg','md', 'sm', 'xs'];

    const columns = theme('columns').forEach((col) => {
        screens.forEach(screen => {
            const classKey = `.${screen}\\:col-${col.columns}-${col.gap}`;
            const value = {
                '> *' : {
                    width: `calc((${col.width} / ${col.columns}) - (${col.gap} * (${col.columns} - 1) / ${col.columns}) - 0.02px)`,
                    margin: `0 ${col.gap} ${col.gap} 0`
                }
            };
            let screenKey = `@screen ${screen}`;
            addComponents({[screenKey] : {[classKey] : value}});
        });
    });

    theme('columns').forEach((col) => {
        screens.forEach((screen, index) => {

            const classKey = `.${screen}\\:col-${col.columns}-${col.gap}`;
            let selector = `> *:nth-of-type(${col.columns}n)`;

            const value = {
                [selector]: {
                    marginRight: 0
                }
            };
            let screenKey = `@screen ${screen}`;
            addComponents({[screenKey] : {[classKey] : value}});
        });
    });
}

};`
One more thing I'd like to explain. I realize the screens defined in the config file might look a bit odd but it is my preferred use case and there's no way I could possibly change it.

I have been fiddling with this component plugin little bit more and although I think it would be a nice feature to have to be able to define custom screens in the plugins, I'm abandoning this component. It's simply not worth the time, it will be very difficult to implement the side effect to work properly. I'll use native grid for this. I'll leave this opened for now, if you'll consider implementing the feature.

Sorry I don't think I totally understand what you want to do. Do you want your plugin to completely override the screens for all utilities for the whole build? Or do you just want your plugin to use different screens than the rest of Tailwind? Either way it doesn't sound like something I want to support with any first class feature but if you want to go in to more detail happy to discuss alternative solutions that can be done in user-land.

Hi Adam,
sorry for not being clear about this. I would like to be able to supply the screen sizes for the plugin only, not to override the whole build. I will have to get back on this in the future. I'm sure I'll get to a use case and I will supply a detailed example. Let's keep this closed. Thank you.


How can I count the number of commits I have made in my own project?

Thanks I do want to check my commits.

Did you tr looking at the insights tab?


How to find 'debug_logger' function in firmware?

Where should be placed the FIDB files (ecos-mips.be.32.fidb and ecos-mips.le.32.fidb) in Ghidra directory?
Also about eCOS Broadcom Function Auto-Renaming (Ghidra) - BcmDebugLogsRenameFunctions.java script: how to find  'debug_logger' function in firmware for auto-renaming?

I just had the same problem, and managed to figure it out:

First, click Search > Memory, and search for any named function (one that worked for me was setBridgePortEnable).  Make sure format is set to "string" and memory block types is set to "all blocks"

Right-click on the string name, and click References > Show references to (name)

Now it should be clear which function it is

I searched for setBridgePortEnable, but the search did not yield results. Same for 'debug_logger'. Based on strings, I have eCos 2.0 version.
ds "/projects/bfc/work/sdunlap/sdunlap_ProdRlsD30Ver553/rbb_cm_ecos/ecos-src/ecos-2.0/packages/net/bsd_tcpip/v2_0/src/sys/netinet6/icmp6.c"
In general, I have to find a specific function that a) actually exists in my eCos version and b) get it exact name, correct? Then, using that function as a basis, define other functions. I'm correct? Is it possible to find an exact name of target function using the CLI shell? (I have a full shell).

In general, I have to find a specific function that a) actually exists in my eCos version and b) get it exact name, correct?

Yes, but you only need to find one named function, and then using that named function you can find debug_logger.  Once you find debug_logger, you should be able to automatically find the rest.
Is this a bootloader image or an image1/image2 image?  If it's a bootloader image, you can try searching for the function names listed here.  If none of those have any results, you can try the instructions below
If it's an image1/image2 image, you can try going to Window > Defined strings and looking for anything that looks like a function name, then follow my instructions in the previous comment
If Defined strings is empty, make sure you unpacked it properly with ProgramStore (by using the -f and -f2 arguments), applied FunctionID and set up memory mappings

image1.out is actual image1 (not bootloader) which I dumped from RAM using bcm2dump.
Then I decompressed it to image1.out use ./ProgramStore -f image1.bin -x
In Window > Defined strings, I tried strings that looks like a function name, there are many potential candidates, but in all cases when right-click on the string name, and click References > Show references to (name), there are only "Show Reference To Address", not to function name.
By the way, there are errors in 2 recos scripts: BcmDebugLogsRenameFunctions.java and BcmRenameLabelVTable.java: when I placed it via Ghidra Script Manager, it show me error (red color) and does not allow select it as valid scripts:
BcmDebugLogsRenameFunctions.java:34: error: class DebugLogsAnnotateFunctions is public, should be declared in a file named DebugLogsAnnotateFunctions.java
public class DebugLogsAnnotateFunctions extends GhidraScript {
       ^
BcmRenameLabelVTable.java:25: error: class RenameLabelVTable is public, should be declared in a file named RenameLabelVTable.java
public class RenameLabelVTable extends GhidraScript {
       ^
skipping /home/teknos/ghidra_scripts/BcmRenameLabelVTable.java
skipping /home/teknos/ghidra_scripts/BcmDebugLogsRenameFunctions.java

As far I understand, it's because Name of public class must match the name of .java file in which it is placed (like public class Foo{} must be placed in Foo.java file). So either I should to rename file from BcmDebugLogsRenameFunctions.java to DebugLogsAnnotateFunctions.java or rename the class from public class DebugLogsAnnotateFunctions { to public class BcmDebugLogsRenameFunctions {
I've chosed the second way. Same for another script.
Also, what's not clear with image1.out in Ghidra: part of functions not shown in Symbol Tree pane "Functions" Label: there are misssing FUN_007 label. Why it missing and where is these functions?

image1.out is actual image1 (not bootloader) which I dumped from RAM using bcm2dump. Then I decompressed it to image1.out use ./ProgramStore -f image1.bin -x

Is there also an image2?  If so, it might (but I'm not sure) be required to get the full firmware.  That's what I did for my router and was able to decompile it, try running ./ProgramStore -f image1.bin -f2 image2.bin -x, then using that file.  Maybe that will have setBridgePortEnable

when right-click on the string name, and click References > Show references to (name), there are only "Show Reference To Address", not to function name.

That should probably work as well, try that.  If it doesn't work, you can try searching for the function names you see now (see my first comment)

As far I understand, it's because Name of public class must match the name of .java file in which it is placed (like public class Foo{} must be placed in Foo.java file). So either I should to rename file from BcmDebugLogsRenameFunctions.java to DebugLogsAnnotateFunctions.java or rename the class from public class DebugLogsAnnotateFunctions { to public class BcmDebugLogsRenameFunctions { I've chosed the second way. Same for another script.

That's exactly what I did, and it fixed it for me too (and it successfully ran, so there aren't any other issues).  It's probably because the scripts are for an old version

Yes, there is image2. Same size, but different md5.  Normally, the second image in cable modem is used as a backup if something happens with image1. I figured they should be identical. But not in this case: they are different, the image2 has SIP in its name . I decompressed it ./ProgramStore -f image1.bin -f2 image2.bin -x and will take a look tomorrow.

Normally, the second image in cable modem is used as a backup if something happens with image1. I figured they should be identical.

I didn't know that, for me it's a different size so maybe it varies by router

the image decompressed by ./ProgramStore -f image1.bin -f2 image2.bin -x has the same MD5 as image1 - that is, they are the same. Decompressed image2(with SIP) is a newer version, I'll test it.

I find two functions, BcmAmdFlashDEvice and  UcdMsgEvent, but as I noted in previous posts, it only "Show Reference To Address", not to function name, and no references found to that addresses. Maybe addresses are wrong.

It's not fully clear, how to split RAM in two regions: .text (code) and .data (data). My memory layout is as follows:

Ah, I think that's been the issue all along.  I found the instructions confusing too, and the screenshots were extremely helpful.  Here's how I did it:

The start address is set when you import the firmware image into Ghidra.  Unless you specifically change it, it'll default to 0x00000000, which is why that's the starting address for you.  You have to click the house icon and change it to the value of .text start
For some reason, the Ghidra's length is always 1 more then the recos script says.  So set the end to .text end, and length in Ghidra should automatically be set to 1 more then .text end
For the new block, set its name to .data, and leave length as it is
Now click split again and name it .bss, set its start address to .bss_start, and its length to .bss_end - .bss_start.  You have to manually do this in a hexadecimal calculator, in this case it's 0x80d19760 - 0x80aad090 = 0x26c6d0
Click split a final time, name it stack, and do the same thing as .bss

Once all these are set, hopefully it will finally tell you where those strings are referenced

I'm confused in the 4 step

Now click split again and name it .bss, set its start address to .bss_start, and its length to .bss_end - .bss_start.
Should I select and split here the ram or .data section, or click Add a new block to memory?

Not sure if its correct:

I don't see .text section

Should I select and split here the ram or .data section, or click Add a new block to memory?

Use Add a new block to memory for everything except for the first time when you split ram and .data

I don't see .text section

That only exists in the recos script's output, not in Ghidra

Not sure if its correct:

Here's what I have:

Here's the map_memory.py output:
.text start: 0x80004000
.text end: 0x80d5e618
.text length: 0xd5a618
.data start: 0x80d5e61c
.data end: 0x80fc64d0
.data length: 0x267eb4
.bss_start: 0x8140ece8
.bss_end: 0x81642430
stack start: 0x8151a6e8
stack end: 0x8151e6e8

So it looks correct, try extracting the functions again

Your screen looks mostly correct, but there's an off-by-one error, "length" should be what you see in map_memory.py and "end" should be one off. eg ram's length should be 0x79a4d0, not 0x79a4d1

I'm not sure: if ram length should be 0x79a4d0, because if I set "Block Length" to 0x79a4d0,  ghidra automatically recalculates the "End Address", and it will be 0x8079e4cf, not 0x8079e4d0 that was specified in map_memory.py output.

@mediotex The screenshots in the recos article show end, not length, being one off from the map_memory.py output.  Both cause Ghidra to calculate the other

Ok, got it. So I adjusted Memory Map and re-analyzed image. I find function s_BcmAmdFlashDevice_807a316c, how to proceed to rename functions?

There are available functions s_BcmAgentDescriptor::Bind_80868acc,  s_BcmEcosSocket_808a0014 but  no any debug_logger string - can you explain what specifically should be renamed? In script description noted:

// Identify calls to debug logging functions, re-construct the debug
// logging parameters and rename the calling function based on that
// string.
//
// Example: a function do: debug_logger(2, "Entering func: BcmEcosSocket::Bind"),
// we can consider the calling function is BcmEcosSocket::Bind.

It's not clear at all what should renamed there.

Sorry for the delay, I forgot to check my GitHub notifications

What if that logging function is not available in the code? For example, I can't find in code any strings called debug_logger. How did you rename the function and to what name in your post?

There isn't actually a string called debug_logger in any router; you have to manually find and rename it yourself in Ghidra.  My screenshot showed it after I already renamed it, but you have to figure out its name from what's passed into it, since there aren't any strings
Judging from your screenshot, you're 99% of the way there - just right-click on FUN_802da918 in the disassembly, choose Rename Function, and name it debug_logger yourself.  Then hopefully you should be able to just run the BcmDebugLogsRenameFunctions script.  If it fails, try renaming FUN_802714f4 instead to debug_logger

Oh, that changes things.
Is this what I should get? Not so many, only 36 functions.

And for C++ vtable Auto-Renaming: should I just run BcmRenameLabelVTable.java?

Is this what I should get? Not so many, only 36 functions.

I don't think so, I got hundreds of functions.  Can you show what the function names are on the symbol tree? (it should be under one of the   Also, can you show a screenshot of the decompile window scrolled to the right?

And for C++ vtable Auto-Renaming: should I just run BcmRenameLabelVTable.java?

Yes, you can just execute it after they're renamed (but I'm not sure that it worked correctly)

Not sure, how to expand functions tree to show all. Window > Functions: I have total 31813 functions, but they were already present there (just after I've analyzed image), before I ran the script. Also, I have a lot of FID_conflict:_GLOBAL__I$52000_files labels.
Maybe I have to rename the FUN_802da918 not to debug_logger, but to BcmAmdFlashDevice?

I used the ghidra loader for ecos, and it does all the work. The problem is, When I try to load it using angr framewrok,  i could not get the same functions addresses. have anyone of you face the same issue?

From the recos author's web pages appears that there are a few debug_loggers (up to 5?)

Not sure what you mean...

Window > Functions: I have total 31813 functions, but they were already present there (just after I've analyzed image), before I ran the script

I meant under "Symbol Tree" (shown in your screenshot), there should be something you can expand called "Labels"
The function in your screenshot (FUN_8004578) should definitely be automatically renamed to BcmAndFlashDevice, but for some reason it's not.  The only reason I can think of is either the memory map is incorrect, or there's a bug in recos.  @ecos-wtf any ideas?

From document, chapter "Automated Function Renaming", we can see that there are few 'debug_logger' names, debug_logger2, debug_logger5, in next pics debug_logger3, debug_logger4: Not sure what this mean, and @ecos-wtf explanations are unclear in this point.

Here is a function tree expanded.
For Memory Map I used values from script, and I only added "stub entry vector" block as shown in pic.

Hi ! I was AFK for the last 3 months, I'll look into this in the coming days :)

Hi ! I was AFK for the last 3 months, I'll look into this in the coming days :)

btw thanks for making these tools!  They've been really helpful for modding my router

Where should be placed the FIDB files (ecos-mips.be.32.fidb and ecos-mips.le.32.fidb) in Ghidra directory?

You can put the FIDB files under ./Ghidra/Features/FunctionID/data/ or you can import it manually using the GUI (Tools -> Function ID -> Attach existing FIDB).

Also about eCOS Broadcom Function Auto-Renaming (Ghidra) - BcmDebugLogsRenameFunctions.java script: how to find 'debug_logger' function in firmware for auto-renaming?

All the debug_logger functions are function that were manually reversed and renamed as explained by @Anonymous941 . They're not present like this when you load the firmware. x-referencing debug strings usually does the trick to find these functions. You can choose a different name too, just edit the Java files to reflect that.

As noted in the recos manual, the FunctionID database files work for eCOS 1.0, 2.0, and parts of 3.0. My eCos revision is 3.0.2, so possible, the FIDB files are not valid.

I don't think there were lots of changes between revisions 3.0 and 3.0.2 so most standard functions will be matched by Function ID. The FIDB is built for MIPS targets so make sure that's what your firmware is running on.

From document, chapter "Automated Function Renaming", we can see that there are a few 'debug_logger' names - debug_logger2, debug_logger5, in next pics debug_logger3, debug_logger4: not sure what this mean, but @ecos-wtf explanations are unclear in this point.

These are just logging functions that were manually renamed during the reversing process. They're named differently because they have different signatures (which the Ghidra script needs to know since it's resolving the log string argument using Ghidra's API).

I used the ghidra loader for ecos, and it does all the work. The problem is, When I try to load it using angr framewrok, i could not get the same functions addresses. have anyone of you face the same issue?

Can you expand on that ? Any specific reason you want to use angr rather than Ghidra for this ?

@mediotex do you need more help with this ? Otherwise I'll close the ticket.

I will try to rename function tomorrow and answer.

I'm back to the issue. First of all, there are a vast number of functions designated as FID_conflict:_xxx
I guess this related to  FIDB database and incorrect recognition of functions. Why?
So I tried to rename function FUN_802da918 BcmAmdFlashDEvice to "debug_logger", then I ran the BcmDebugLogsRenameFunctions script: it renamed 36 functions. Is this what I am supposed to get from these actions? What is the benefit and convenience of this renaming?  What did it give me?

I'm back to the issue. First of all, there are a vast number of functions designated as FID_conflict:_xxx
I guess this related to FIDB database and incorrect recognition of functions. Why?

Small or inlined functions can be recognized as corresponding to multiple FIDB signatures, which leads to conflicts. It's not really problematic as it should not affect main standard functions.

So I tried to rename function FUN_802da918 BcmAmdFlashDEvice to "debug_logger", then I ran the BcmDebugLogsRenameFunctions script: it renamed 36 functions. Is this what I am supposed to get from these actions?

Yes. The script renames functions calling debug loggers based on the function name located in the debug string provided to the debug logger.
You can double check that this function is indeed called 36 times by tracing cross-references to the now renamed debug_logger. There are other debug logging functions. The more you spot, the more you'll be able to rename functions and understand what's going on.

What is the benefit and convenience of this renaming? What did it give me?

All reverse engineering work, whether you're looking at raw embedded firmwares or malware starts by renaming functions, renaming variables, infering function signatures, and reconstructing structs. This is done to reduce the cognitive charge that it takes to understand code paths.
From my own experience (and @Anonymous941 apparently), both FIDB and renaming scripts allows for the recovery of approximately 5000 functions (function name and the VTable they're linked to). This leads to easier understanding and analysis of large embedded firmwares. Without this, you're basically trying to find something within 50.000 obfuscated functions.

@mediotex I think it would help if you could explain what you're trying to achieve with your firmware image and this toolkit. Do you have any experience with reverse engineering ?

Generally, following this logic, now I need to search for UcdMsgEvent function (as example), find the references to it and rename FUN again? Then search again for some functions, containing debug logging events and repeat. But what if the specific function I'm interested in isn't related to debug logging in any way: these renames just narrow the search by excluding logging functions?
As I think, these eCos functions vary across different BCM processors and f/w implementations.

I think it would help if you could explain what you're trying to achieve with your firmware image and this toolkit. Do you have any experience with reverse engineering ?

I'm trying to make the firmware more handy by tweaking some features. I have no much experience in reverse engineering, I'm just at the very beginning of my journey.
Regarding the setting up the Memory Map and assigning memory regions: do you recommend to add also all vectors as shown in your pic? These Start - End addresses are same for Broadcom chips?

common vector
stub entry vector
debug vector
vsr_table
virtual vector table

But what if the specific function I'm interested in isn't related to debug logging in any way: these renames just narrow the search by excluding logging functions?

You misunderstand: whether functions have to do with debug logging doesn't affect this.  For testing, certain functions (not sure what decides which functions are included) have strings in them, which are used for crashes.  So it makes it easier for Broadcom engineers to debug crashes during development, because it would say, for example, something like Crash in UcdMsgEvent rather then Crash in 0xabcdef.  Because of an oversight, these strings stay in retail routers and can be used to figure out the original function names, which would be otherwise impossibl

As I think, these eCos functions vary across different BCM processors and f/w implementations.

Yes, that's correct

I'm trying to make the firmware more handy by tweaking some features.

Do you mind making this open source if you end up doing it?  I'd be interested to see (kind of) the first softmod for routers, and might even port it to my DDW36C.  Also here's an article that might be useful, it could be used to give you remote access, and also is an example of modifying this firmware image

About assigning memory regions in the Memory Map: are there a special cases where we also need to define locations of vectors (common vector, stub entry vector, debug vector, vsr_table, virtual vector table), in addition to .text, .data, .bss and stack? Are their Start / End addresses same for Broadcom chips?

I doubt it, these are probably just for other platforms that have these things


Exception parsing hostname

My corporate hostname is something “funny” like MUCM29044565D and when I launch my Spring Boot application, I get the following exception

java.lang.IllegalArgumentException: value is not supported [MAC-48, EUI-48, EUI-64]
at io.netty.util.internal.MacAddressUtil.parseMAC(MacAddressUtil.java:166) ~[netty-all-4.1.8.Final.jar:4.1.8.Final]
at io.netty.channel.DefaultChannelId.(DefaultChannelId.java:90) ~[netty-all-4.1.8.Final.jar:4.1.8.Final]
at io.netty.channel.AbstractChannel.newId(AbstractChannel.java:107) [netty-all-4.1.8.Final.jar:4.1.8.Final]
at io.netty.channel.AbstractChannel.(AbstractChannel.java:79) [netty-all-4.1.8.Final.jar:4.1.8.Final]

I think that you're setting io.netty.machineId to your hostname and that's not right, it should look like a MAC address (or just don't set it all).

I am not setting anything explicitly. Apparently it’s the Spring Boot that uses some defaults that are wrong and come to light with my odd host name. So it looks rather like a Spring Boot issue that passes wrong values.

Actually in the logs I see something like

2017-02-07 23:04:14.273  WARN 94119 --- [  restartedMain] io.netty.channel.DefaultChannelId        : -Dio.netty.machineId: 9a47e861 (malformed)

…for some reason.

Again, that's because it's explicitly being set to an invalid value. That specific log message is only emitted if the system property io.netty.machineId is defined and can not be parsed as a MAC address. You have to find where that it is being done and stop it.


[Popover] using defaultOpen in Portal does not render correctly

🐛 Bug report
💥 Steps to reproduce

Open examples/next-ts/pages/popover.tsx.
Insert defaultOpen: true under id: React.useId() (line 14)
pnpm start-react and open http://localhost:3000/popover

https://user-images.githubusercontent.com/102206520/229860287-4450c831-caa7-443d-9f8b-6fb29fda0a5c.mov
💻 Link to reproduction

CodeSandbox reproduction: https://codesandbox.io/s/musing-pike-2n3jl2?file=/src/App.tsx
defaultOpen is set true, initial transform of popper part is transform: translate3d(0px, -200%, 0px);, so it is not rendered in screen.
🧐 Expected behavior

Popover should be rendered on Anchor element.
🧭 Possible Solution

[@zag-js/dismissable] node is `null` or `undefined`

warning occurs, because dom.getPositionerEl(ctx) is undefined on initial trackPositioning call, if Positioner is rendered in portal.
I am using following workaround:

wrap trackPositioning activity with nextTick().

https://github.com/chakra-ui/zag/blob/571bb18d990a3d05cf4e3502307531f8a9517188/packages/machines/popover/src/popover.machine.ts#L78-L90
        trackPositioning(ctx) {
          return nextTick(() => {
            ctx.currentPlacement = ctx.positioning.placement;
            const anchorEl = dom.getAnchorEl(ctx) ?? dom.getTriggerEl(ctx);

            return getPlacement(anchorEl, dom.getPositionerEl(ctx), {
              ...ctx.positioning,
              onComplete(data) {
                ctx.currentPlacement = data.placement;
              },
              onCleanup() {
                ctx.currentPlacement = undefined;
              },
            });
          });

This approach works, but currentPlacement is initialized after first render, which causes flickering.
https://user-images.githubusercontent.com/102206520/229863095-10e3b38c-9fd3-4621-afd0-befca6bf9900.mov
So, I added following code inside my react integration layer:

Programmatically call setPositioning on initial useLayoutEffect call.

  // FIXME: This is a workaround for a bug in `@zag-js/popover`
  // where the popover is not positioned correctly on the first render.
  useLayoutEffect(() => {
    apiRef.current.setPositioning({});
  }, []);

I didn't tested about this workaround in other frameworks.
🌍 System information

Software
Version(s)

Zag Version
@zag-js/popover: 0.2.15, @zag-js/react: 0.3.12

Browser
Chrome 111.0.5563.64 arm64

Operating System
MacOS 12.6

📝 Additional information

I just pushed a fix for this. We'll release an update shortly.
If the issue persists after upgrading, I'll re-open it.


[Beginner] Unable to run client container

I was following Docker and remote Selenium Installation step-by-step and I am now stuck at the last step (4. Run client container). Anytime I try to run this:
docker run --network selenium -it -e SELENIUM='http://firefox:4444/wd/hub' -v $(pwd):/app webwhatsapi /bin/bash -c "pip inst
all ./;pip list;python sample/remote.py"

I get this error:
C:\Program Files\Docker Toolbox\docker.exe: invalid reference format: repository name must be lowercase.
See 'C:\Program Files\Docker Toolbox\docker.exe run --help'.

I tried code on CMD and PowerShelI and still no change. I have cracking my head for hours trying to figure out how to resolve the problem🤯. Help would be great.

Uses linux instead of Windows

@jersonjunior Linux? Do I have get another operating system or I can add Linux within Windows?

Other SO. I use Debian and Ubuntu.

There is Linux bash I can to windows? Getting another operating system is out the question for me.

You can use a vmware o similar plataform to make a virtualiced SO
El jue., 17 oct. 2019 16:00, A. A. Isa<EMAIL_ADDRESS>escribió:

There is Linux bash I can to windows? Getting another operating system is
out the question for me.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/mukulhase/WebWhatsapp-Wrapper/issues/736?email_source=notifications&email_token=AAVMMGASLEQJTUAR2ASATBDQPBVYPA5CNFSM4JBOQXR2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEBQGNXY#issuecomment-543188703,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAVMMGGLUVKVFZFEJ3IZBW3QPBVYPANCNFSM4JBOQXRQ
.

Is the question solved?

repository name must be lowercase.

Try clone the repo to your pc and then change the name to lowercase and then run the docker...
Here on my windows 10 works fine!

Could you tell what exactly name I need to change?

@ShaubertIlya i've changed mine to "wzapwrapper"

And it helped? You just changed the folder name to lowercase? And what about folder directory? Did you use whole path to folder?

Could you please share the command and folder path you used?

@guicuton Could you please share steps you did to solve the issue? It would be very nice of you cause the same issue mentioned several times.


cli: add a backstage-cli info command

Feature Suggestion

Similarly to the Tauri CLI, add an info command to backstage-cli that lists at least

[ ] operating system
[ ] node version
[ ] npm version
[ ] yarn version (even if this is expected to be the pinned one in the repo - still useful to look for deviations)
[ ] the version of the currently running backstage-cli
[ ] whether the current repo is a clone or a fork or a create-app generated repo?
[ ] more? Perhaps actual resolved versions of backstage libraries that the app and backend packages build against?

Context
When helping users with issues, we very often ask for info like this. It would be very useful to be able to tell users to paste the output of this command as-is.

Is someone working on this?

@allentv Doesn't look like it. Would you like to work on this?

@OrkoHunter I would like to take a stab at this.

Builds are failing while trying to use documentation. backstage-cli not found.
Perhaps a updated Dockerfile / packages.json could solve this issue?
 ---> Running in 05802f86acf8
yarn run v1.22.1
error Command "backstage-cli" not found.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
The command '/bin/sh -c yarn --cwd packages/cli/bin backstage-cli backend:bundle --build-dependencies' returned a non-zero code: 1```

@lmasiero You're running backstage-cli from a different place than the one on docs https://backstage.io/docs/deployment/docker#multi-stage-build
yarn --cwd packages/cli/bin backstage-cli ... vs yarn --cwd packages/backend backstage-cli

@OrkoHunter Hi, could you please give me an advice of the documentation of multi-stage build since it isn't working exactly on the step you've mentioned in your last message here?
I've tried both of that folders you have mentioned and none of them worked.

[build 8/8] RUN yarn --cwd packages/cli/bin build:
#11 0.559 yarn run v1.22.1
#11 0.628 $ backstage-cli package build
#11 0.642 /bin/sh: 1: backstage-cli: not found


Fix share desktop picture using av1 codec made browser page crash

details in https://github.com/livekit/livekit/issues/2569

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.zesun seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.

I don't think this is the right fix.. this will prevent all browsers from being able to use AV1.
which version of the client SDK did you see this error with?

Mabye it is a webrtc bugs? I can't be sure.
The example can be triggered.