[iOS] Scan - BleError: BluetoothLE is in unknown state

Prerequisites

[x] I am running the latest version
[x] I checked the documentation and found no answer
[x] I checked to make sure that this issue has not already been filed

Expected Behavior
When the BleState is PoweredOn, I should be able to startScanDevices() without having BleError: BluetoothLE is in unknown state.
I should be able to scan devices with and without "Remote Debug" enabled.
Current Behavior
When I start scanning my devices, I receive the BleError: BluetoothLE is in unknown state even if I waited that the BleManager State was in 'PoweredOn'.
This behavior is only present when I enable the "Remote Debug" on iOS. It's working fine if I'm disable the "Remote Debug".
It's really annoying because everybody is developing with the Remote Debug active I guess... Otherwise it's a bit complicated.
I don't see anything about this issue in the documentation. It's just written that we have to wait that the status is PoweredOnon iOS. And that's done...
I found that it's not working with the "Remote Debug" active in this issue. I don't understand why there is no related issue or documentation about that...
Steps to Reproduce
Please provide detailed steps for reproducing the issue.

Run your app
Activate Remote Debug
Wait until State is PoweredOn
Call startDevicesScan()
See error...

Context

Library version: 2.0.1
Platform: iOS.
JS logs:

DeviceScanner.js:17 LIB : Wait until bluetooth ready...
DeviceScanner.js:28 Base state PoweredOn
DeviceScanner.js:57 LIB : Start scan...
DeviceScanner.js:70 Scan error :  {"message":"BluetoothLE is in unknown state","errorCode":103,"attErrorCode":null,"iosErrorCode":null,"androidErrorCode":null,"reason":null,"name":"BleError"}
DeviceScanner.js:85 LIB : Scan stopped
DeviceScanner.js:22 State change :  PoweredOn

Formatted code sample or link to a repository:

App.js

 startScan() {
    _deviceScanner.startDevicesScan(
      error => {
        console.error(error);
        _deviceScanner.stopDevicesScan();
      },
      device => {
        console.log(device);
      }
    );
  };

DeviceScanner.js
  /**
   * Wait until Bluetooth is ready. On iOS the BLE stack is not immediately ready,
   * we need to wait for the "PoweredOn" status.
   */
  async waitUntilBluetoothReady() {
    let {PoweredOn, PoweredOff, Unauthorized, Unsupported} = State;
    console.log('LIB : Wait until bluetooth ready...');
    return new Promise(async (resolve, reject) => {
      this._bleManager.onStateChange(state => {
        console.log('State changed : ', state);
        if (state === PoweredOn) {
          resolve(true);
        }
      });

     // Verify if the state is already poweredOn before the listener was created
      let crtState = await this._bleManager.state();
      console.log('Base state', crtState);
      if (crtState === PoweredOn) {
        resolve(true);
      }
      else if (
        crtState === PoweredOff ||
        crtState === Unauthorized ||
        crtState === Unsupported
      ) {
        reject(new Error('Bluetooth is not available :', crtState));
      }
    });
  }

  /**
   * Start device scanning only if the BleManager State is ready
   */
  async startDevicesScan(
    onError: (error: Error) => void,
    onDeviceFound: (device: ConnectHubDevice) => void,
  ) {
    this.waitUntilBluetoothReady()
      .then(() => {
        console.log('LIB : Start scan...');
        const scanOptions = {
          allowDuplicates: false,
          scanMode: ScanMode.LowLatency,
        };
        this._bleManager.startDeviceScan(
          [SERVICE_UUID],
          scanOptions,
          (error, device) => {
            if (error) {
              onError(error);
            }
            if (device) {
              onDeviceFound(device);
            }
          },
        );
      })
      .catch(error => console.log(JSON.stringify(error));
  }

Hi. Could you add logs on when the BleManager is being created? It looks like an issue with different lifecycles of your JS code and native parts.

Having the same issue. Working on my android device but not on my iPhone XR...

We see the same problem, it happens when I change anything outside React code. Only restarting the app fixes this. Do you know when and how different lifecycles of JS code and native parts can cause a problem?

same here

In my case, when the BleManager is being created and its log is
_activePromises: {}
_activeSubscriptions: {}
_errorCodesToMessagesMapping: {0: "Unknown error occurred. This is probably a bug! Check reason property.", 1: "BleManager was destroyed", 2: "Operation was cancelled", 3: "Operation timed out", 4: "Operation was rejected", 5: "Invalid UUIDs or IDs were passed: {internalMessage}", 100: "BluetoothLE is unsupported on this device", 101: "Device is not authorized to use BluetoothLE", 102: "BluetoothLE is powered off", 103: "BluetoothLE is in unknown state", 104: "BluetoothLE is resetting", 105: "Bluetooth state change failed", 200: "Device {deviceID} connection failed", 201: "Device {deviceID} was disconnected", 202: "RSSI read failed for device {deviceID}", 203: "Device {deviceID} is already connected", 204: "Device {deviceID} not found", 205: "Device {deviceID} is not connected", 206: "Device {deviceID} could not change MTU size", 300: "Services discovery failed for device {deviceID}", 301: "Included services discovery failed for device {deviceID} and service: {serviceUUID}", 302: "Service {serviceUUID} for device {deviceID} not found", 303: "Services not discovered for device {deviceID}", 400: "Characteristic discovery failed for device {deviceID} and service {serviceUUID}", 401: "Characteristic {characteristicUUID} write failed for device {deviceID} and service {serviceUUID}", 402: "Characteristic {characteristicUUID} read failed for device {deviceID} and service {serviceUUID}", 403: "Characteristic {characteristicUUID} notify change …d for device {deviceID} and service {serviceUUID}", 404: "Characteristic {characteristicUUID} not found", 405: "Characteristics not discovered for device {deviceID} and service {serviceUUID}", 406: "Cannot write to characteristic {characteristicUUID} with invalid data format: {internalMessage}", 500: "Descriptor {descriptorUUID} discovery failed for d…viceUUID} and characteristic {characteristicUUID}", 501: "Descriptor {descriptorUUID} write failed for devic…viceUUID} and characteristic {characteristicUUID}", 502: "Descriptor {descriptorUUID} read failed for device…viceUUID} and characteristic {characteristicUUID}", 503: "Descriptor {descriptorUUID} not found", 504: "Descriptors not discovered for device {deviceID}, …viceUUID} and characteristic {characteristicUUID}", 505: "Cannot write to descriptor {descriptorUUID} with invalid data format: {internalMessage}", 506: "Cannot write to descriptor {descriptorUUID}. It's …y iOS and therefore forbidden on Android as well.", 600: "Cannot start scanning operation", 601: "Location services are disabled"}
_eventEmitter: NativeEventEmitter {_subscriber: EventSubscriptionVendor, _nativeModule: {…}}
_uniqueId: 0
and when things went well log is
_activePromises:
9: ƒ (reason)
proto: Object
_activeSubscriptions:
8: {remove: ƒ}
proto: Object
_errorCodesToMessagesMapping: {0: "Unknown error occurred. This is probably a bug! Check reason property.", 1: "BleManager was destroyed", 2: "Operation was cancelled", 3: "Operation timed out", 4: "Operation was rejected", 5: "Invalid UUIDs or IDs were passed: {internalMessage}", 100: "BluetoothLE is unsupported on this device", 101: "Device is not authorized to use BluetoothLE", 102: "BluetoothLE is powered off", 103: "BluetoothLE is in unknown state", 104: "BluetoothLE is resetting", 105: "Bluetooth state change failed", 200: "Device {deviceID} connection failed", 201: "Device {deviceID} was disconnected", 202: "RSSI read failed for device {deviceID}", 203: "Device {deviceID} is already connected", 204: "Device {deviceID} not found", 205: "Device {deviceID} is not connected", 206: "Device {deviceID} could not change MTU size", 300: "Services discovery failed for device {deviceID}", 301: "Included services discovery failed for device {deviceID} and service: {serviceUUID}", 302: "Service {serviceUUID} for device {deviceID} not found", 303: "Services not discovered for device {deviceID}", 400: "Characteristic discovery failed for device {deviceID} and service {serviceUUID}", 401: "Characteristic {characteristicUUID} write failed for device {deviceID} and service {serviceUUID}", 402: "Characteristic {characteristicUUID} read failed for device {deviceID} and service {serviceUUID}", 403: "Characteristic {characteristicUUID} notify change …d for device {deviceID} and service {serviceUUID}", 404: "Characteristic {characteristicUUID} not found", 405: "Characteristics not discovered for device {deviceID} and service {serviceUUID}", 406: "Cannot write to characteristic {characteristicUUID} with invalid data format: {internalMessage}", 500: "Descriptor {descriptorUUID} discovery failed for d…viceUUID} and characteristic {characteristicUUID}", 501: "Descriptor {descriptorUUID} write failed for devic…viceUUID} and characteristic {characteristicUUID}", 502: "Descriptor {descriptorUUID} read failed for device…viceUUID} and characteristic {characteristicUUID}", 503: "Descriptor {descriptorUUID} not found", 504: "Descriptors not discovered for device {deviceID}, …viceUUID} and characteristic {characteristicUUID}", 505: "Cannot write to descriptor {descriptorUUID} with invalid data format: {internalMessage}", 506: "Cannot write to descriptor {descriptorUUID}. It's …y iOS and therefore forbidden on Android as well.", 600: "Cannot start scanning operation", 601: "Location services are disabled"}
_eventEmitter: NativeEventEmitter {_subscriber: EventSubscriptionVendor, _nativeModule: {…}}
_scanEventSubscription: null
_uniqueId: 9
proto: Object
it seems BleMangager's _activePromises and _activeSubscriptions are different. I marked with bold text.

Is there any progress??

This also happen when you're using functional components and/or Hooks. Even if you disable the remote debug, still shows the Unknown state Error.

Could you make a repository with reproduction of this issue? Main part missing in code above is how BleManager is created and how it's passed to the component.

I am also having this issue: BluetoothLE is in unknown state
in the Xcode console I can see also this error
2020-12-27 10:00:07.279967+0100 [19145:4875543] [CoreBluetooth] API MISUSE: <CBCentralManager: 0x2820e9180> has no restore identifier but the delegate implements the centralManager:willRestoreState: method. Restoring will not be supported
2020-12-27 10:00:07.280866+0100 [19145:4874888] [CoreBluetooth] XPC connection invalid

I'm getting exactly the same problem.
This is the log:
2020-12-29 17:43:54.156254+0100 MiPlus[670:31923] [CoreBluetooth] API MISUSE: <CBCentralManager: 0x2821b07e0> has no restore identifier but the delegate implements the centralManager:willRestoreState: method. Restoring will not be supported
2020-12-29 17:43:54.160394+0100 MiPlus[670:33450] [CoreBluetooth] XPC connection invalid

It is important to keep only a single instance of BleManager. Readme was recently updated to stress this out.

Am using only one single instance of BleManager and I still get the error

Using Hooks does not mean that you use only a single instance of anything. You need to learn what each hook does and when it reloads its value.

My code was something like this:
constructor() {
  this.manager = new BleManager()
}

reset() {
  this.manager.destroy()
  this.manager = new BleManager()
}

connect() {
  this.reset()
  this.manager.scan()
}

In Android i need to reset the BLE manager because of some problems on re-connection with a Huawei Tablet.
In IOS I'm getting the error "[CoreBluetooth] XPC connection invalid".
I resolved the bug in release mode with this edit:
// ...
connect() {
  if (Platform.os === 'android') this.reset()
  this.manager.scan()
}

However I still have the problem in debug mode with active debugger.

@ad-boschung  Are you able to solve this issue?
I am facing the same issue

When initializing BleManager, adding an arrow function is effective for me: const [bleManager]=useSafeState()=>new BleManage()//Use the function initialization to ensure that only one instance is created


2023.3.x feature remove user filter presets

The following changes are implemented
TODO: Summary
Changes in the user interface:
TODO: Add screenshots, recordings or remove this section
Checklist when submitting a final (!draft) PR

[ ] Commits are tidied up, squashed if needed and follow guidelines in CONTRIBUTING.md
[ ] Code builds
[ ] All existing tests pass
[ ] All new critical code is covered by tests
[ ] PR is linked to the relevant issue(s)
[ ] Rebased with the target branch

I'm getting this err when trying to sort by recordID


wireActor[] - proposal

Instead of creating actor in form of
// deps ...
val aref: ActorRef = Props(wire[ActorImpl])

which may lead to problems when using within the actor code MacWire could provide such API:
val aref = wireActor[ActorImpl]

wireActor macro could call factory method using Props object instead of constructor as it is done usually.
Such approach (not calling Actor constructor directly) is the recommended way (along akka docs) of creating actors.
Implementation of feature can be in separate project (say macwire-akka) with akka dependency in provided scope. Thanks to that  user can decide if wants to use this feature.
It's only a proposal. Let me know your opinion before someone (me ;)) starts working on it. Does it make any sense?

After some reading I think that above can be achieved by combining: Akka's IndirectActorProducer and wireWith. Later I try to provide working snipped here.

I'm not sure what's the "best" way to do this, personally I'm usually using the discouraged method of using new inside Props ;)
Maybe it would be a good idea to ask on akka-user or sth like that, what would be the recommended, type-safe (this rules out passing the Class and arguments) way of creating an actor with dependencies.
Btw. they also mention a macro "in the future", maybe there's a PR candidate there as well, but again, would be best to ask akka maintainers.

I'm not sure what's the "best" way to do this, personally I'm usually using the discouraged method of using new inside Props ;)

The recommendation mentioned above is mostly about stopping people from closing over dangerous things accidentally (via => new ...). In fact, the "best" way is to have a companion object with def props = Props(new Actor(blabla)), it's also the fastest AFAIR.
Since mac-wire kind of is "close over stuff" (well, "pass them in") anyway, I don't think generating a Props(new MyActor...) would be unexpected.
I just noticed the docs mention we'd provide a macro... We're not working on that, must be some ancient plans there - would be awesome if macwire could provide this :-)

One note, please remember to support wireActor[BlaBla]("myname")

@ktoso thanks for the info! :)
@pawelpanasewicz wireActor it is then

Additional thoughts - please remember to support child actors as well.
Perhaps it would be better to provide it as extension methods on system and context?
import macwire.MacWireAkka._ // whatever the name would be

system.wireActor[Bartender]("bob")
context.wireActor[Charlie]("charlie")

??

Even more thoughts, pulling in future things from Akka Typed already:
We always want to encourage giving actors proper names.
Nowadays it's not as strongly recommended as it could be.
In typed what we'll have is spawnAnonymous(...) vs. spawn(..., name).
So here you could already encourage that best practice via wireAnonymousActor and wireActor.
Yeah the anonymous one is longer and uglier, on purpose, to encourage people to use the nicer one with a proper name :-)

Cool! Thanks for advices :) I'll work on it.

Very cool, grats guys 👍

@ktoso thanks! Could you as well take a look at #112. Chapter akka-integration.

@pawelpanasewicz  looks great! When creating child actors, how come all child actor constructor parameters (dependencies) have to be 'wired' (e.g: val dep1 = wire[Dep]) in into the parent actor if they were previously defined in another module? Well I guess it's a question of scope, since macwire can't determine whether the module would've even executed. However, the follow-up question is that if another module already wires in val dep1 = wire[Dep], when also defining the same dependency in the parent actor, would dep1 point to the same reference?

Hey @saamalik!
Resolving dependencies here works in the same way as standard macwire. So there are (at least) 3 options available to you in order to pass instance of Dep to your anonymous actor:

just wire it somewhere before creating nonymous actor
pass it as constructor parameter to the parent actor
pass whole module containing this dep1 as constructor parameter to the parent actor.


MODE-2535: Readonly user is not allowed in Web Explorer

This PR handles case when user has no permission to read access control content. In this case access list is not displayed rather then exception is thrown.

looks good


Warn or error if link is invalid

What problem will this feature address?
[Page](./path/to/invalid-page)

Should throw error or warn. But now it builds successfully
Describe the solution you'd like
I hope there's a way to detect if a internal link is invalid
Describe alternatives you've considered
Could enable this feature in config
Additional context
No response

Next.js doesn't have a function built-in, we cannot detect that without fs operations and custom algorithms.
I think we can take some inspirations from https://github.com/vercel/turborepo/tree/main/docs/src, it's a bit difficult to have that in runtime, but it's possible to make a script/github action. PR welcome

Quick Update: Implemented a small algorithm, I'm actually thinking to make it work without Fumadocs so I can publish that as a separate package for Next.js

working on docs, you can take this as an example.
import { validateFiles, scanURLs, printErrors } from 'next-validate-link';
import fg from 'fast-glob';
import * as path from 'node:path';
import { getSlugs, parseFilePath } from 'fumadocs-core/source';
import * as fs from 'node:fs/promises';
import { getTableOfContents } from 'fumadocs-core/server';
import matter from 'gray-matter';

async function readFromPath(file: string) {
  const content = await fs
    .readFile(path.resolve(file))
    .then((res) => res.toString());
  const parsed = matter(content);

  return {
    path: file,
    data: parsed.data,
    content: parsed.content,
  };
}

async function main() {
  async function checkLinks() {
    const docsFiles = await Promise.all(
      await fg('content/docs/**/*.mdx').then((files) =>
        files.map(readFromPath),
      ),
    );

    const blogFiles = await Promise.all(
      await fg('content/blog/**/*.mdx').then((files) =>
        files.map(readFromPath),
      ),
    );

    const scanned = await scanURLs({
      populate: {
        '(home)/blog/[slug]': blogFiles.map((file) => {
          const info = parseFilePath(file.path);
          return { value: getSlugs(info)[2] };
        }),
        'docs/[...slug]': await Promise.all(
          docsFiles.map(async (file) => {
            const info = parseFilePath(file.path);
            // optional, you can remove this if you don't need to check for fragments.
            const toc = await getTableOfContents(file.content);

            return {
              value: getSlugs(info).slice(2),
              hashes: toc.map((item) => item.url.slice(1))
            };
          }),
        ),
      },
    });
    console.log(
      `collected ${scanned.urls.size} URLs, ${scanned.fallbackUrls.length} fallbacks`,
    );

    const files = [
      ...docsFiles.map((file) => path.resolve(file.path)),
      ...blogFiles.map((file) => path.resolve(file.path)),
    ];

    printErrors(
      await validateFiles(files, {
        scanned,
      }),
    );
  }

  await checkLinks();
}

await main().catch((e) => {
  console.error('Failed to run pre build script', e);
});

https://next-validate-link.vercel.app/


How do you access local server from other devices?

I tried putting in the address and got nothing.

It uses localhost IP address, so you cannot access it from other devices.


doc: fix mapStream function error

Codecov Report

Merging #64 (975f0c2) into main (f7fb299) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main      #64   +/-   ##
=======================================
  Coverage   99.45%   99.45%
=======================================
  Files          10       10
  Lines         364      364
=======================================
  Hits          362      362
  Misses          2        2

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


Front End: CSS Libraries

I have a good hold on CSS and want to contribute 📜

Domain of Contribution 📊

[ ] Android Dev (Flutter, Java, Kotlin)
[ ] Backend Dev (Java, .NET, Python)
[ ] C/CPP
[ ] Competitive Programming
[ ] Cyber Security
[ ] DSA
[ ] Database
[ ] Datascience with Python
[ ] Datascience with R
[x] Frontend Dev (HTML, CSS, JS)
[ ] Frontend Dev (React, Angular, Vue)
[ ] Golang
[ ] Interview Prep
[ ] Java
[ ] JavaScript
[ ] MERN
[ ] Machine Learning
[ ] Open Source
[ ] Python
[ ] Rust
[ ] Statistics
[ ] UI/UX

/assign

@praveenscience

hey i want to contribute ?
what to do please assign

/assign

please assign me this issue i will work on it and Definitely make it amazing

@code-reaper08 I have created this issue but github bot not assigning me can you pls assign it to me

/assign

/assign


add / update swagger docs

closes #292
Plan

[ ] update swagger docs (add routes, parameters)

[ ] /login
[ ] /logout
[ ]  /user
[ ] /user/feed
[ ] /user/repos
[ ] /user/token (post, delete)
[ ] /users (get, post)
[ ] /users/:login (get, patch, delete)
[ ] /repos/:owner/:name (post, get)
[ ] /repos/:owner/:name/builds
[ ] /repos/:owner/:name/builds/:number
[ ] ...

I had a look at graphql especially https://gqlgen.com. It looks quite promosing and I would like to give it a try and replace our rest api with graphql in the long run. If we will stick to REST we can reopen / reuse the changes of this PR again.


A bunch of minor tweaks in EditLog and Journal related files

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Tachyon-Pull-Request-Builder/2973/
Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Tachyon-Pull-Request-Builder/2974/
Test PASSed.


404 error in main.631d0299.chunk.css

Describe the bug
Main CSS files are not loading in the browsers, receiving 404 errors looks like the file is not found in the server
To Reproduce
Steps to reproduce the behavior:

Go to 'Inspect element'
Click on 'Network'
Scroll down to 'main.631d0299.chunk.css'
See 404 error

Expected behavior
Its should be 200 status code, which seems the file is missing from the server
Screenshots

Desktop (please complete the following information):

OS: Windows, Android
Browser chrome
Version [e.g. 22]

#608

#607 Already this been addressed. Closing due to duplication


Hotfix for widget labels overflowing on long strings

Hotfix for widget labels overflowing on long strings

@justindg hotfix means it's going out to the app store, right? :)

Might've used the wrong term, editing title


Serialization failure

SQLSTATE[40001]: Serialization failure: 7 FATAL:  terminating connection due to conflict ... a moment you should be able to reconnect to the database and repeat your command. SSL connection has been closed unexpectedly
https://connection.eu-central-1.keboola.com/admin/utils/logs?file=2018/07/08/12/2018-07-08-12-28-44-5b41e75ccd25c-exception

better retries should fix this in https://github.com/keboola/db-extractor-pgsql/pull/29

this should be long solved


ServiceRequest Box hides delete confirmation

When trying to delete an observation, the ServiceRequest quick selector hides the "OK" button.

Fixed with https://github.com/medplum/medplum/pull/1335


NickServ and ChanServ

Please tell me how to configure so that notifications are not sent for query-messages from nickserv and chanserv.

/msg *push nick_blacklist NickServ ChanServ


slow connection mode when navigator.connection.saveData is enabled

Use slow connection mode when navigator.connection.saveData is enabled
issue
https://github.com/vercel/swr/issues/1122

Thanks!


Help transfer learning ECAPA-TDNN

Hi there,
I have been using the speaker verification model ECAPA-TDNN and it works great for speaker verification.
I want to take this model and apply it to other speech classification tasks like sentiment classification. I believe I should be able to load and freeze the embedding layers up to the last layer where the classifier is trained and then retrain a classifier model from scratch using the pretrained ECAPA as input. Does that sound right?
I have been looking at the speechbrain tutorials like this one and it wasn't so clear to me how I could train this new classifier model. Could you please enlighten me regarding the pretraining process?
I'd also appreciate it if there is a more detailed example for transfer learning. Once I learn the proper way to do it, I would be happy to contribute with more examples on the topic.

Hi Gabriel,
in the repository you can find other examples where we used ECAPA-TDNN for
other tasks. For instance, language-id (
https://github.com/speechbrain/speechbrain/tree/develop/recipes/VoxLingua107/lang_id/hparams)
and urban sound classification (
https://github.com/speechbrain/speechbrain/tree/develop/recipes/UrbanSound8k/SoundClassification/hparams
).
For studying the transfer learning properties of the model, the simplest
way is to pretrain the encoder and train the classifier from scratch. You
can use the pretrainer class, as shown here:
https://github.com/speechbrain/speechbrain/blob/develop/recipes/VoxCeleb/SpeakerRec/hparams/verification_ecapa.yaml#L77
.
I hope this could be useful for you.
Best,
Mirco
On Thu, 30 Dec 2021 at 09:31, Gabriel Ziegler @.***>
wrote:

Hi there,
I have been using the speaker verification model ECAPA-TDNN and it works
great for speaker verification.
I want to take this model and apply it to other speech classification
tasks like sentiment classification. I believe I should be able to load and
freeze the embedding layers up to the last layer where the classifier is
trained and then retrain a classifier model from scratch using the
pretrained ECAPA as input. Does that sound right?
I have been looking at the speechbrain tutorials like this one
https://colab.research.google.com/drive/1LN7R3U3xneDgDRK2gC5MzGkLysCWxuC3?usp=sharing
and it wasn't so clear to me how I could train this new classifier model.
Could you please enlighten me regarding the pretraining process?
I'd also appreciate it if there is a more detailed example for transfer
learning. Once I learn the proper way to do it, I would be happy to
contribute with more examples on the topic.
—
Reply to this email directly, view it on GitHub
https://github.com/speechbrain/speechbrain/issues/1218, or unsubscribe
https://github.com/notifications/unsubscribe-auth/AEA2ZVQIA6XPHY2JCZGCCS3UTRUKJANCNFSM5K7Z7UNQ
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>

Hi Mirco,
Thanks a lot for your resources and fast reply!
For this task, would it best to create a new recipe and base this new recipe on the UrbanSound8k recipe or it would be simpler to try to adapt the dataset to the UrbanSound structure and try to use the UrbanSound recipe?
I have tried adapting the dataset but it doesn't look like a good path to go. I am not sure if I am going through the wrong steps or if the recipes are highly dependent on the task's dataset...

I think the best approach is to start from an existing recipe (e.g,
UrbanSound , CommonLanguage, Voxceleb-spk-id). If you plan to use your own
dataset, however, remember to write your own data preparation script. The
data preparation script has to create three data annotation files in JSON
or CSV formats (train.csv, valid.csv, test.csv) needed by train.py.  This
step is documented in the basic speechbrain tutorials that you find online
(see, for instance, speaker classification from scratch). Once you have
done the data preparation, you can try to run your scripts (remember to
adjust the number of output classes to your targets). Very likely  you have
to do some hyperparameter tuning to make things working well for your task.
On Thu, 30 Dec 2021 at 15:33, Gabriel Ziegler @.***>
wrote:

Hi Mirco,
Thanks a lot for your resources and fast reply!
For this task, would it best to create a new recipe and base this new
recipe on the UrbanSound8k recipe or it would be simpler to try to adapt
the dataset to the UrbanSound structure and try to use the UrbanSound
recipe?
I have tried adapting the dataset but it doesn't look like a good path to
go. I am not sure if I am going through the wrong steps or if the recipes
are highly dependent on the task's dataset...
—
Reply to this email directly, view it on GitHub
https://github.com/speechbrain/speechbrain/issues/1218#issuecomment-1003173106,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AEA2ZVSNANS4NK7Q4MFAFF3UTS6ZZANCNFSM5K7Z7UNQ
.
You are receiving this because you commented.Message ID:
@.***>

Sounds great, Mirco. Thanks again for your time! It is clearer for me now.
Happy holidays!

Hi @mravanelli,
The training has been working well, but the classifier is struggling a bit due to the imbalanced nature of my custom dataset.
I searched but couldn't find how to deal with this in the proper manner with speechbrain. Should I be using a sampler like the WeightedRandomSampler? If so, how could I add this to the yaml file?
Not sure if my questions are already answered in the documentation, but I couldn't find the answers.
My classes' distribution is:

class 0: 393
class 1: 71
class 2: 36

I appreciate any tips to mitigate this issue (loss function, classifier, sampler, etc...)

Update:
I have been using ReproducibleWeightedRandomSampler to weigh the classes to deal with the imbalanced classes.
...
# NOTE Create custom weight sampler
from collections import Counter

def get_class_weights(dataset):
    labels = [sample["sentiment_encoded"].item() for sample in dataset]
    classes_counts = sorted(Counter(labels).items())
    classes_n_samples = torch.tensor([count[1] for count in classes_counts])
    classes_weights = 1. / classes_n_samples
    classes_weights = torch.tensor([classes_weights[t] for t in labels])
    return classes_weights

train_class_weights = get_class_weights(datasets["train"])

from speechbrain.dataio.sampler import ReproducibleWeightedRandomSampler
train_sampler = ReproducibleWeightedRandomSampler(
    weights=train_class_weights,
    num_samples=len(train_class_weights),
    replacement=True
)

train_dataloader_options = hparams["dataloader_options"]
train_dataloader_options["sampler"] = train_sampler

sentiment_brain.fit(
    epoch_counter=sentiment_brain.hparams.epoch_counter,
    train_set=datasets["train"],
    valid_set=datasets["valid"],
    train_loader_kwargs=train_dataloader_options,
    valid_loader_kwargs=hparams["dataloader_options"],
    # progressbar=True,
)

# Load the best checkpoint for evaluation
test_stats = sentiment_brain.evaluate(
    test_set=datasets["test"],
    min_key="error",
    progressbar=True,
    test_loader_kwargs=hparams["dataloader_options"],
)
...

It happens that I get the following error when speechbrain tries to run the validation step.
speechbrain.utils.epoch_loop - Going into epoch 1
100%|█████████████████████████████████████████████████████████████████████| 125/125 [01:43<00:00,  1.21it/s, train_loss=6.79]
  0%|                                                                                | 0/125 [00:00<?, ?it/s]
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
~/SideProjects/speech-emotion-recogntion-ser2022/speechbrain/recipes/CORAA/train.py in <module>
    455     # print("DEBUG", hparams["dataloader_options"])
    456     sentiment_brain.fit(
--> 457         epoch_counter=sentiment_brain.hparams.epoch_counter,
    458         train_set=datasets["train"],
    459         valid_set=datasets["valid"],

~/PyEnv/DeepLearning/lib/python3.8/site-packages/speechbrain/core.py in fit(self, epoch_counter, train_set, valid_set, progressbar, train_loader_kwargs, valid_loader_kwargs)
   1069                 avg_valid_loss = 0.0
   1070                 with torch.no_grad():
-> 1071                     for batch in tqdm(
   1072                         valid_set, dynamic_ncols=True, disable=not enable
   1073                     ):

~/PyEnv/DeepLearning/lib/python3.8/site-packages/tqdm/std.py in __iter__(self)
   1178
   1179         try:
-> 1180             for obj in iterable:
   1181                 yield obj
   1182                 # Update and possibly print the progressbar.

~/PyEnv/DeepLearning/lib/python3.8/site-packages/torch/utils/data/dataloader.py in __next__(self)
    519             if self._sampler_iter is None:
    520                 self._reset()
--> 521             data = self._next_data()
    522             self._num_yielded += 1
    523             if self._dataset_kind == _DatasetKind.Iterable and \

~/PyEnv/DeepLearning/lib/python3.8/site-packages/torch/utils/data/dataloader.py in _next_data(self)
    559     def _next_data(self):
    560         index = self._next_index()  # may raise StopIteration
--> 561         data = self._dataset_fetcher.fetch(index)  # may raise StopIteration
    562         if self._pin_memory:
    563             data = _utils.pin_memory.pin_memory(data)

~/PyEnv/DeepLearning/lib/python3.8/site-packages/torch/utils/data/_utils/fetch.py in fetch(self, possibly_batched_index)
     47     def fetch(self, possibly_batched_index):
     48         if self.auto_collation:
---> 49             data = [self.dataset[idx] for idx in possibly_batched_index]
     50         else:
     51             data = self.dataset[possibly_batched_index]

~/PyEnv/DeepLearning/lib/python3.8/site-packages/torch/utils/data/_utils/fetch.py in <listcomp>(.0)
     47     def fetch(self, possibly_batched_index):
     48         if self.auto_collation:
---> 49             data = [self.dataset[idx] for idx in possibly_batched_index]
     50         else:
     51             data = self.dataset[possibly_batched_index]

~/PyEnv/DeepLearning/lib/python3.8/site-packages/speechbrain/dataio/dataset.py in __getitem__(self, index)
    161
    162     def __getitem__(self, index):
--> 163         data_id = self.data_ids[index]
    164         data_point = self.data[data_id]
    165         return self.pipeline.compute_outputs({"id": data_id, **data_point})

IndexError: list index out of range

This code can be seen in this commit 61e43cb1.
I believe this is something I am doing wrong when passing the ReproducibleWeightedRandomSampler, but I am not sure what.


Cannot clean up blobs data

Description
This directory takes up so much space, but I can't reclaim the space.
Steps to reproduce the issue
[root@worker1-k8s sha256]# pwd
/var/lib/containerd/io.containerd.content.v1.content/blobs/sha256
[root@worker1-k8s sha256]# du -sh
132G	.

[root@worker1-k8s sha256]# crictl images

Describe the results you received and expected
I would like to know how to free up space in this directory
/var/lib/containerd/io.containerd.content.v1.content/blobs/sha256
What version of nerdctl are you using?
nerdctl version 0.23.0
Are you using a variant of nerdctl? (e.g., Rancher Desktop)
None
Host information
No response

nerdctl images shows images on the default. You may have an other namespace this disk space

nerdctl images display images on the default namespace. you may have other(s) namespace that occupying this disk space ( e.g k8s.io => nerdctl --namespace k8s.io image), k8s.io is for kubernetes oci images

FYI: nerdctl ns ls will show images in every namespace
$ sudo nerdctl ns ls
NAME            CONTAINERS    IMAGES    VOLUMES    LABELS
buildkit        0             0         0
default         7             4         12
moby            1             0         0
nerdctl-test    0             3         6


Drop HasSourcePath in favor of FindSourceFiles

What problem are you trying to solve?
Both recipes do the same in slightly different ways; rather than maintain both we want to only have one going forward.
Logging here, but should also be updated downstream.
Describe the solution you'd like
HasSourcePath fully removed, here and downstream, where it can be replaced with FindSourceFiles.

[x] Evaluate if any downstream projects use the HasSourcePath regex option, and if so add that to FindSourceFiles.
[x] Replace HasSourcePath with FindSourceFiles downstream.
[x] Remove HasSourcePath here.

Additional context

#3749

Turns out HasSourcePath supported {.md,.txt} syntax, which FindSourceFiles does not (yet) support. Worked around this in downstream projects where we saw test failures; did not spot this elsewhere.

https://github.com/openrewrite/rewrite-spring/commit/fa4e1c9c20d7373ea1d5d3bf1fdf44a29ab6c537
https://github.com/openrewrite/rewrite-micronaut/commit/c1c0ebd5637b1f145a4bc5f3d4b87d71a4114199


cannot detach tmux session without closing/minimizing iTerm

I have the following set in zpreztorc
# Auto start a session when Zsh is launched in a local terminal.
zstyle ':prezto:module:tmux:auto-start' local 'yes'

# Auto start a session when Zsh is launched in a SSH connection.
zstyle ':prezto:module:tmux:auto-start' remote 'yes'

I cannot seem to detach <Prefix> + d out of the auto-started tmux session without closing iTerm altogether. I am new to tmux, so I might be missing something obvious. Is this by design? Or is there a way to retain auto-start with the ability to detach?

@pruett Yes I was wondering the same thing as well because I only have this set for use over ssh connections but if I detach then it disconnects. I couldn't figure out how to disable this setting so I could have more than one tmux session at once since it's not recommended to nest.


[DOC]: How to config isolationgroupId for system task such as JOIN?

Is it possible to specify an isolation group for JOIN tasks which are system task out of user's control?

Hello @BrandonDotLin Join task is a sync system task, so it won't support isolationgroupId


Overflow Menu - Showing cannot set property 'tabIndex' of undefined

Whenever we open overflow menu it always give error "Cannot set property 'tabIndex' of undefined" in console.

@cal-smith @zvonimirfras

I can't seem to reproduce the issue, what version of carbon-components-angular are you using?

@Donisius, We are using latest version.
We are using ibmOverflowMenu directive and passing custom template.
We are not using overflow menu options as they are not required.
Snippet is attached below.
<div class="filter-btn bx--toolbar-action" *ngIf="showFilter && filterComponent" [ibmOverflowMenu]="filterPanel" [flip]="true" [placement]="'bottom' [offset]="filterDetails?.offset">
<ibm-icon-settings-adjust16>         </ibm-icon-settings-adjust16>
</div>
<ng-template #filterPanel><div (click)="stopPropagation($event)">
<woo-table-filter-placeholder [data]="filterDetails" (applyFilters)="applyFilters($event)">     </woo-table-filter-placeholder>
</div>
</ng-template>


CSS position:sticky - added a height/scroll height related issue due to different browser implementations

This implementation difference can cause incoherent behavior when dealing with elements that are sensitive to scroll position - for example, a sticky header that shrinks in height by 1px after the user scrolls down by 1px will cause the scrolling parent of the sticky header to scroll up by 1px in Chrome, resetting the sticky header to its former larger height as it is now at the top of its parent element.
Thanks to Craig Brown for providing the SO question and test case.

Thanks!


MEN-523: Add section about disabling Mender as a system service.

@csimmonds: Feel free to change the location of the text, "Customizations" may not be the best section name...


Ability to join segments

Since #164 splits the status segment into three segments, anyone who wants to use all three will have two (or more?) additional segment separators, which can take up precious space. Could we make it possible to join segments so that they display as one segment?

I think @Tritlo has an excellent point, here.
Thoughts on how to make this possible in #164, @dritter?

Excellent idea! Shouldn't be too hard to do. :+1:
Only thing is: I would like to do this in a separate PR, to avoid a merge conflict with #165 (and this one should be merged first).

@dritter - Don't forget you have push access to the project. Why don't you create a new branch on top of the HEAD of next, merge in #164, base your new branch on top of it, and then submit a PR to next from the second branch?

Yeah. Anyway. I have an local integration branch and resolved the conflicts there. :)

Okay. I pushed my integration branch as integration_165_164. Check it out! :)

@dritter - Looks awesome! Can you submit a PR against next so that we have a logged record of the merge?

Here we go. #167 it is.

Closing since #167 has been merged.


Fix PodMonitor name conflicts for multiple releases in same namespace

Signed-off-by: Edward Zeng<EMAIL_ADDRESS>Fixes #257
Motivation
Fix PodMonitor name conflicts for multiple releases in same namespace
Modifications
Use release name instead of hardcode pulsar.name for pod monitor name.
Verifying this change

[x] Make sure that the change passes the CI checks.

/cc @tuteng

In order to include this in the upcoming release, I committed my suggestion.

We failed the lint-test for the previous commit due to an unexpected error. I merged master into this branch to get the latest tests to run.

Closing and re-opening to get the latest changes to the CI pipeline.


feat: add option to provide babelPlugins

fixes: #1614

It should give a possibility to add plugins into javascriptMutator like so:
stryker.config.js
mutator: {
  name: 'javascript';
  excludedMutations: [];
  babelPlugins: ['classPrivateProperties', 'classProperties', 'classPrivateMethods'];
}

Note:  if you like this change - we need to provide tests to it (i guess using #1614 as an example) and update docs

@Archcry There is some issue with mutatorDescriptor in  packages/javascript-mutator/src/JavaScriptMutator.ts.
It seems it can be undefined in some cases.
Changing line 22 to
const babelPlugins = (this.mutatorDescriptor || {}).babelPlugins || [];

solve that but tests still aren't passing.
Could you please take a look on that / fix it / provide some explanation about it so i can fix it?

@nicojs I think it finally is done, let's just wait for the green :)

@nicojs You might want to take a look since this is a quite important feature 🏭 🚀


⚠ ClamAV has degraded performance

In d8550fb, ClamAV (https://spamassassin.apache.org/) experienced degraded performance:

HTTP code: 200
Response time: 68 ms

Resolved: ClamAV performance has improved in bc4dad9 after 6 minutes.


Sending properly formatted 404 Not Found

Hello, first thanks for this library, looking great.
I am trying to test 404 endpoints and realized that jsonapi maybe does not catch Ecto.NoResultsError and does not show proper 404 error.
It should show a JSON:API spec formatted error as for any other:
"{\"errors\":[{\"status\":\"404\",\"title\":\"Not found\"}]}"

am I not realizing something? It feels like it counts on Phoenix to serve 404 error which is without the formatted message above.

Interesting. In a project I have I see the following:
{"errors":[{"status":"404","title":"Page not found"}]}

I have a bit of manual error set up though. I'm sure we can do something to improve this situation.

Just for anybody coming here I can achieve this with the following:
defmodule Web.ErrorView do
  use Web, :view

  # 404 Not Found following JSON:API
  def render("404.json", _assigns) do
    Jason.encode!(%{errors: [%{status: "401", title: "Not Found"}]})
  end
end

It works, but won't allow me to easily test this in a controller test, because I need to catch the exception. Maybe jsonapi could catch the exception before Phoenix does and this way it would work? I am sorry I am just one-week-in in Phoenix so a bit hard for me to figure this out on my own.


Why do we change colors while clicking Q REmove it and E AND R T ALREADY ADDED its annoying

fix

why not?

No. How can we know which are we control if color don't change.

Not everyone installs the userscript to control bots.

@NameYT #7

Q controls function differently: Due to recent protocol changes and updates in Agar.io, adding letters to your name with the Q key no longer works. We had to settle with color change instead. (see "How to use?")

@Megabyte918 I USE THE SCRIPT E R T BUT STILL :( MAKE MY COLORS ded

@NameYT if you don't want the cell to change color, go to PacketHandler.js and remove lines 155-158 and 163-165.


Fixes to ex1, ex2; Change ex3 to use internal registry; Complete ex4

This looks like fantastic progress. Merging to provide a better basis for upcoming changes.


coverage % changes when no code change occurred

Even though I do not make any code change, I get slight variations in coverage % if i run the coverage multiple times.  Does anyone know why this might be?
The only thing I can think of is perhaps babel is messing with with the output, but in another project we don't use babel and I get diff results if I run multiple test runs.
File                         |  % Stmts | % Branch |  % Funcs |  % Lines |Uncovered Lines |
-----------------------------|----------|----------|----------|----------|----------------|
All files                    |    49.26 |    33.48 |     40.4 |     49.5 |                |

-----------------------------|----------|----------|----------|----------|----------------|
File                         |  % Stmts | % Branch |  % Funcs |  % Lines |Uncovered Lines |
-----------------------------|----------|----------|----------|----------|----------------|
All files                    |     49.9 |    31.17 |    41.98 |    50.44 |                |

Same issue here. What is your solution @epikhighs ?

@pebie refer to my comment https://github.com/istanbuljs/nyc/issues/630
GL


Register Roccat Kone Pure driver

Closes #1006.
@Vectrex can you test this? Else it won't be merged.
If you need help to test it (i. e. how to use it without installing libratbag from source), just ask here, I'll help you.

Will give it a try.
If I can avoid compiling alltogether: Nice. Overwriting binaries and restarting services shouldn't be problem.
If I have to compile: Is there a simple way to list all the required dev dependencies?

You have to compile this code, no way around that. Here is the wiki entry: https://github.com/libratbag/libratbag/wiki/Building-from-source
But in short for you:
sudo apt install build-essential check git libevdev-dev libglib2.0-dev libjson-glib-dev libsystemd-dev libudev-dev libunistring-dev meson pkg-config python3-dev python3-evdev python3-gi python3-lxml swig
git clone https://github.com/libratbag/libratbag.git
cd libratbag
git checkout -b stephanlachnit/kone-pure master
git pull https://github.com/stephanlachnit/libratbag.git p/kone-pure
meson builddir -Dtests=false
meson compile -C builddir

This installs all build dependencies and compiles the code from this PR for you.
To test it, run:
cd builddir
sudo ./ratbagd.devel --verbose=debug # test if daemon shows an error, exit with ctrl+c
sudo ./ratbagctl.devel --verbose list # list devices, note name of your mouse
sudo ./ratbagctl.devel <device_name_here> info # show device info

Replacing
meson compile -C builddir

with
ninja -C builddir

gave me
gregor@leia:/tmp/libratbag$ ninja -C builddir
ninja: Entering directory `builddir'
[8/64] Compiling C object<EMAIL_ADDRESS>../src/driver-hidpp10.c: In function ‘hidpp10drv_write_button’:
../src/driver-hidpp10.c:345:41: warning: passing argument 1 of ‘ratbag_action_keycode_from_macro’ discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
   rc = ratbag_action_keycode_from_macro(action, &key, &modifiers);
                                         ^~~~~~
In file included from ../src/driver-hidpp10.c:48:0:
../src/libratbag-private.h:488:1: note: expected ‘struct ratbag_button_action *’ but argument is of type ‘const struct ratbag_button_action *’
 ratbag_action_keycode_from_macro(struct ratbag_button_action *action,
 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[60/64] Generating<EMAIL_ADDRESS>notype name breathing
notype name traveling
notype name blink
notype name on
/tmp/libratbag/src/hidpp20.h:227: Warning 503: Can't wrap class $unnamed5$ unless renamed to a valid identifier.
/tmp/libratbag/src/hidpp20.h:222: Warning 503: Can't wrap class $unnamed4$ unless renamed to a valid identifier.
/tmp/libratbag/src/hidpp20.h:218: Warning 503: Can't wrap class $unnamed3$ unless renamed to a valid identifier.
/tmp/libratbag/src/hidpp20.h:213: Warning 503: Can't wrap class $unnamed2$ unless renamed to a valid identifier.
[64/64] Linking target _hidpp.so.

Since the binaries are created anyway I gave it a try
gregor@leia:/tmp/libratbag/builddir$ sudo ./ratbagd.devel --verbose=debug
Installing DBus policy file to /etc/dbus-1/system.d/org.freedesktop.ratbag_devel1.conf
Initializing libratbag
Speicherzugriffsfehler

Hm, looks like you need to debug it to find out what's wrong, the error message is way to generic.

Can the warnings during compile time be ignored?

Anyway. Starting the non-devel version of ratbagd yields
gregor@leia:/tmp/libratbag/builddir$ sudo ./ratbagd
[sudo] Passwort für gregor:
hidraw9: "ROCCAT ROCCAT Kone Pure", 5 profiles

from a second shell
gregor@leia:/tmp/libratbag/builddir$ sudo ./ratbagctl --verbose list
[sudo] Passwort für gregor:
screaming-acouchy:   ROCCAT ROCCAT Kone Pure

gregor@leia:/tmp/libratbag/builddir$ sudo ./ratbagctl screaming-acouchy info
screaming-acouchy - ROCCAT ROCCAT Kone Pure
             Model: usb:1e7d:2dbe:0
 Number of Buttons: 18
    Number of Leds: 0
Number of Profiles: 5
Profile 0: (active)
  Name: n/a
  Report Rate: 1000Hz
  Resolutions:
    0: 800x800dpi
    1: 1600x1600dpi (active)
    2: 3200x3200dpi
    3: 6400x6400dpi
    4: 8200x8200dpi
  Button: 0 is mapped to 'button 1'
  Button: 1 is mapped to 'button 2'
  Button: 2 is mapped to 'button 3'
  Button: 3 is mapped to 'button 4'
  Button: 4 is mapped to 'button 5'
  Button: 5 is mapped to 'wheel-up'
  Button: 6 is mapped to 'wheel-down'
  Button: 7 is mapped to 'resolution-up'
  Button: 8 is mapped to 'resolution-down'
  Button: 9 is mapped to 'button 5'
  Button: 10 is mapped to 'button 4'
  Button: 11 is mapped to UNKNOWN
  Button: 12 is mapped to UNKNOWN
  Button: 13 is mapped to UNKNOWN
  Button: 14 is mapped to UNKNOWN
  Button: 15 is mapped to UNKNOWN
  Button: 16 is mapped to 'profile-up'
  Button: 17 is mapped to 'profile-down'
Profile 1:
  Name: n/a
  Report Rate: 1000Hz
  Resolutions:
    0: 800x800dpi (active)
    1: 1600x1600dpi
    2: 3200x3200dpi
    3: 6400x6400dpi
    4: 8200x8200dpi
  Button: 0 is mapped to 'button 1'
  Button: 1 is mapped to 'button 2'
  Button: 2 is mapped to 'button 3'
  Button: 3 is mapped to 'button 4'
  Button: 4 is mapped to 'second-mode'
  Button: 5 is mapped to 'wheel-up'
  Button: 6 is mapped to 'wheel-down'
  Button: 7 is mapped to 'resolution-up'
  Button: 8 is mapped to 'resolution-down'
  Button: 9 is mapped to 'button 5'
  Button: 10 is mapped to 'button 4'
  Button: 11 is mapped to UNKNOWN
  Button: 12 is mapped to UNKNOWN
  Button: 13 is mapped to UNKNOWN
  Button: 14 is mapped to UNKNOWN
  Button: 15 is mapped to UNKNOWN
  Button: 16 is mapped to 'profile-up'
  Button: 17 is mapped to 'profile-down'
Profile 2:
  Name: n/a
  Report Rate: 1000Hz
  Resolutions:
    0: 800x800dpi (active)
    1: 1600x1600dpi
    2: 3200x3200dpi
    3: 6400x6400dpi
    4: 8200x8200dpi
  Button: 0 is mapped to 'button 1'
  Button: 1 is mapped to 'button 2'
  Button: 2 is mapped to 'button 3'
  Button: 3 is mapped to 'button 4'
  Button: 4 is mapped to 'second-mode'
  Button: 5 is mapped to 'wheel-up'
  Button: 6 is mapped to 'wheel-down'
  Button: 7 is mapped to 'resolution-up'
  Button: 8 is mapped to 'resolution-down'
  Button: 9 is mapped to 'button 5'
  Button: 10 is mapped to 'button 4'
  Button: 11 is mapped to UNKNOWN
  Button: 12 is mapped to UNKNOWN
  Button: 13 is mapped to UNKNOWN
  Button: 14 is mapped to UNKNOWN
  Button: 15 is mapped to UNKNOWN
  Button: 16 is mapped to 'profile-up'
  Button: 17 is mapped to 'profile-down'
Profile 3:
  Name: n/a
  Report Rate: 1000Hz
  Resolutions:
    0: 800x800dpi (active)
    1: 1600x1600dpi
    2: 3200x3200dpi
    3: 6400x6400dpi
    4: 8200x8200dpi
  Button: 0 is mapped to 'button 1'
  Button: 1 is mapped to 'button 2'
  Button: 2 is mapped to 'button 3'
  Button: 3 is mapped to 'button 4'
  Button: 4 is mapped to 'second-mode'
  Button: 5 is mapped to 'wheel-up'
  Button: 6 is mapped to 'wheel-down'
  Button: 7 is mapped to 'resolution-up'
  Button: 8 is mapped to 'resolution-down'
  Button: 9 is mapped to 'button 5'
  Button: 10 is mapped to 'button 4'
  Button: 11 is mapped to UNKNOWN
  Button: 12 is mapped to UNKNOWN
  Button: 13 is mapped to UNKNOWN
  Button: 14 is mapped to UNKNOWN
  Button: 15 is mapped to UNKNOWN
  Button: 16 is mapped to 'profile-up'
  Button: 17 is mapped to 'profile-down'
Profile 4:
  Name: n/a
  Report Rate: 1000Hz
  Resolutions:
    0: 800x800dpi (active)
    1: 1600x1600dpi
    2: 3200x3200dpi
    3: 6400x6400dpi
    4: 8200x8200dpi
  Button: 0 is mapped to 'button 1'
  Button: 1 is mapped to 'button 2'
  Button: 2 is mapped to 'button 3'
  Button: 3 is mapped to 'button 4'
  Button: 4 is mapped to 'second-mode'
  Button: 5 is mapped to 'wheel-up'
  Button: 6 is mapped to 'wheel-down'
  Button: 7 is mapped to 'resolution-up'
  Button: 8 is mapped to 'resolution-down'
  Button: 9 is mapped to 'button 5'
  Button: 10 is mapped to 'button 4'
  Button: 11 is mapped to UNKNOWN
  Button: 12 is mapped to UNKNOWN
  Button: 13 is mapped to UNKNOWN
  Button: 14 is mapped to UNKNOWN
  Button: 15 is mapped to UNKNOWN
  Button: 16 is mapped to 'profile-up'
  Button: 17 is mapped to 'profile-down'

Launching Piper with the ratbagd still running shows a 404-mouse (device image seems to be missing - perhaps again some driver name mixup) but otherwise lists profiles and allows me to switch resolutions.
Side note: ratbagctl lists zero LEDs on the Kone Pure (which should have one).

That looks promising! I'll check the compile time warnings later, at least some of them are normal.
The 404 screen is due to the missing USB-ID in Piper, you can check the PR there if you want to test that.
I think the 18 buttons are documented in the driver, I'll have to take a look^^

I compared your compile log with the master branch, and the warnings are exactly the same. However, you didn't compile everything, (with a fresh build directory I get 72 Objects, you only got 64, so some of them got compiled earlier). Can you try to remove your build directory entirely, build again and then try to run ratbagctl.devel?
Regarding the buttons:
https://github.com/libratbag/libratbag/blob/0c64dad9e1161f69077f173fe69a09fb0a8cfce7/src/driver-roccat-kone-pure.c#L109-L128
Regarding the svg: https://github.com/libratbag/piper/pull/540
Regarding the LEDs: the person who wrote the driver eventually stopped working on it, but there is a wiki with some information: https://github.com/hipnoizz/libratbag/wiki/Roccat-Kone-Pure
In this wiki is information about the LEDs, but it's not implemented. If you want, you can try to implement it yourself.

Hi everyone, what is the state of this commit, when it can be merge?

Hi everyone, what is the state of this commit, when it can be merge?

When it's tested and confirmed working. If you have this mouse, you can go ahead and test it.

I have this mouse. Is there need to compile this or there are some binaries rady?

I have this mouse. Is there need to compile this or there are some binaries rady?

You need to compile it yourself.

Sorry for not contributing any further after starting this issue. I will try to compile it asap.

Ok, finally have some time to play with it. And it looks very promising. Almost everything work as expected with mouse, no major issues.
What doesn't work:

LED
Mapping in piper "second mode" buttons, but that's piper issue, it works flawlessly from ratbagctl.

Anything else i can do?

Mapping in piper "second mode" buttons, but that's piper issue, it works flawlessly from ratbagctl.

Uh, could you open an issue for this? Thanks :blush:

@FFY00 should we merge this then? Afaik nobody is working on the LED support for this driver anyway. Maybe we got it to work if #1003 unites the Roccat drivers.


Retrieve My STX from Staxs wallet

I have my staxs in my stack wallet and I do not know how to transfer to Binance or Trust wallet.

This isn't an Explorer issue.
Please ask for community support on the #support channel in Discord.


Introduce new status for automatic translations

Short description
Added new machine_translated status to translation status.
Added bot icon to show if a translation is machine_translated
Works for SUMM.AI, XLIFF-Imports can be marked with a checkbox as machine translated, DeepL is also implemented, but I couldn't test it, as I don't know how to activate it.
Works for pages, events and pois
Proposed changes
Removed unnecessary verbose name in AbtractContentTranslations
Moved shared Meta fields of translation forms to customContentModelFrom
Side effects

Resolved issues
Fixes: #1883

Pull Request Review Guidelines

One more thing I noticed. Since I updated the dependencies yesterday I run into an issue when I click on pages, pois or events. Maybe this is again just on me or maybe rebasing and updating the dependencies might already solve this issue :)

@JoeyStk This has nothing to do with dependencies, but with the state of your local database. You changed from another branch to this branch without applying the migrations which are needed for this branch. So the error is completely expected. For the future, just keep in mind those ground rules:

When changing to another branch where the Pipfile.lock or package-lock.json differs, you need to run ./dev-tools/install.sh again
When changing from the default branch to a feature branch with migrations, either restart the server or run ./dev-tools/migrate.sh in another terminal
When changing from a non-default branch with migrations (which were applied) to another branch with different (conflicting) migrations, please reset your database with the ./dev-tools/prune_database.sh script and restart the server

Thank you!
Now I was able to test it also for DeepL and it works as expected :muscle: !


Test that builtin functions don't throw

This is the initial implementation.

The current implementation is monomorphic wrt uni and fun.
Currently, all type variables in polymorphic builtin functions are instantiated to Integer.
Three functions, VerifySignature, VerifyEcdsaSecp256k1Signature and VerifySchnorrSecp256k1Signature, are currently excluded. I need to figure out how to generate valid inputs for them.
Unfortunately I had to use unsafeCoerce in one place (when the argument is a list) :stuck_out_tongue:

Ok, here's my updated understanding of the task itself.
We want to generate random input for each built-in function to ensure that no built-in function ever crashes with an exception. Crucially, at runtime we execute Untyped Plutus Core, which means we don't have types there and the user is allowed to submit an ill-typed program and it will get evaluated and if it happens to succeed, it will be accepted (@michaelpj, right?).
This means that our tests need to cover the ill-typed case just like the well-typed one. We need to make sure that both the cases are present in the generated tests. Which means we need to collect the stats on ill-typed vs well-typed applications (one of the functions from here does that, I always forget which one is for what).
Currently we only generate Constants, we need to generate arbitrary terms too. We don't care about them being sophisticated or well-typed or even well-scoped, so PlutusCore.Generators.AST.genTerm should do the job. A polymorphic built-in function like ifThenElse takes arbitrary terms as its second and third arguments and it'll succeed regardless of types and whether those arguments are constants or not. A monomorphic function will fail, but we want to test failing cases too, so that's fine.
Does this make sense to everyone?
Also, I was wrong about
genArg :: forall k (a :: k). (DefaultUni `Contains` a, PrettyConst a) => TypeRep a -> Gen a

as per the discussion above, but is it possible to make it
genArg :: (a :: *). MakeKnownIn DefaultUni Term a => TypeRep a -> Gen a

and recover the current interface by lifting the result a into Term via makeKnown and then rendering the resulting Term with pretty to recover the String part?
If that works out, we'll still need to have a generator of completely arbitrary Terms alongside the well-typed one from the above to test the failure case.
@zliu41 sorry, I thought that would be a good first task, but it turned out to be rather bad. Too vague, touches quite a lot of pieces of the machinery and requires figuring out what actually needs to be done. You're doing great, it's just that I didn't formulate the task properly, which is why you're rewriting different bits and pieces here.

the user is allowed to submit an ill-typed program and it will get evaluated and if it happens to succeed, it will be accepted

@zliu41 sorry, I thought that would be a good first task, but it turned out to be rather bad.

No worries, but it seems testing ill-typed programs can be a separate ticket, since this one only asks for testing that builtin functions don't throw? If so, this would still be a good first task :smiley:

a generator of completely arbitrary Terms alongside the well-typed one from the above to test the failure case.

That sounds good, so I think where we go from here is: (1) merge this PR after I address existing comments (2) add test cases for ill-typed programs, which will probably go like this:

test builtin function evaluation with arbitrary terms
if evaluating a builtin function throws an exception, the test succeeds. Otherwise, verify that the arguments are indeed well-typed.

What do you think?

genArg :: (a :: *). MakeKnownIn DefaultUni Term a => TypeRep a -> Gen a

I'm not sure about this one either, unless there's a way to write things like Just HRefl <- eqTypeRep (typeRepOfTyCon tr) @[] so that we can refine a to [something], which I'm not aware of.

if evaluating a builtin function throws an exception, the test succeeds

Actually I think I may be wrong on this - evaluating a builtin function never throws an exception, even if the arguments are ill-typed, right? Are you suggesting that the tests should verify that, or the tests should verify that the evaluation fails with an error upon getting ill-typed arguments? Either way I feel like it can be done in a separate PR, but if it's the former, then it does belong to this ticket rather than a separate one.

No worries, but it seems testing ill-typed programs can be a separate ticket, since this one only asks for testing that builtin functions don't throw?

Don't throw exceptions, which is orthogonal to well-typedness.
But yes, great point, testing ill-typed programs and ensuring we generate enough test cases of each kind does sound like it deserves a separate PR.

I'm not sure about this one either, unless there's a way to write things like Just HRefl <- eqTypeRep (typeRepOfTyCon tr) @[] so that we can refine a to [something], which I'm not aware of.

You know what, I won't let you keep all the fun for yourself, I'm gonna look at this particular piece and feel free to merge the current approach once ready.

if evaluating a builtin function throws an exception, the test succeeds

Actually I think I may be wrong on this - evaluating a builtin function never throws an exception, even if the arguments are ill-typed, right?

Yes. But we had a bug once where a builtin would throw an exception. That must never happen, hence this whole endeavor.

Are you suggesting that the tests should verify that

Yes.

or the tests should verify that the evaluation fails with an error upon getting ill-typed arguments?

No. That's not true anyway, you can have an ill-typed builtin application that succeeds, we have such tests.

Ok, I can certainly add some tests using arbitrary Terms, which should be easy given we have genTerm.
I feel like the generators for well-typed Terms are still useful (since if we test with arbitrary Terms, probably 99% of the test cases are ill-typed), so I'll keep them, but let me know if you think otherwise.
For well-typed Terms, if we want to generate non-Constants, it seems we need to write some new generators, which I think can be done in a separate PR.

Added tests using arbitrary (not necessarily well-typed) arguments. I think I addressed all review comments so far.

Three functions, VerifySignature, VerifyEcdsaSecp256k1Signature and VerifySchnorrSecp256k1Signature, are currently excluded. I need to figure out how to generate valid inputs for them.

@kwxm do you happen to know some of that? Also do the latter two have tests in the Plutus Tx compiler? We'll need to generate correct as well as incorrect input to make sure exceptions don't occur in both of these cases. It's fine to leave that for a future PR, though.

Each of the signature verification functions takes three bytestrings as arguments, and some of these have to be of specific sizes (you should get an error if they're the wrong size): see the comments in Crypto.hs.  The functions take three arguments: a public key, a message, and a signature. They check that the signature's been obtained from the message using the private key corresponding to the public key, returning True if it has and False if it hasn't.  For our purposes it shouldn't matter whether or not the signature is correct: the algorithms have to check every bit of the message in order to decide what the result is and there shouldn't be any difference in behaviour for correct and incorrect signatures.  I think we can just generate random bytestrings of appropriate lengths and that should do the job (we won't need inputs where the signature really is valid, but we should check what happens when one or more of the inputs have the wrong length)
We already have some generators in the code that we use for generating the cost models for these functions: see here (although the generators need to be rationalised: there's a comment that says "FIXME: this is terrible), and here.  We currently only have a benchmark for  verifySignature, but Nikos will be adding the other signature functions in the near future.
I don't think there are any tests for these functions in the Plutus Tx compiler, but Koz Ross wrote some extremely comprehensive tests for the builtins in this file (which we should probably rename since it's not just about SECP256k1 any more).  In fact that's probably a much better place to look for generators than the file I mentioned before: I think it even does show you how to generate correct signatures, so ignore what I said earlier about not needing to generate them: if we can, we probably should.

This means that our tests need to cover the ill-typed case just like the well-typed one. We need to make sure that both the cases are present in the generated tests.

Ziyang and I discussed this a bit. I think there are at least two bits of the builtin machinery that we might want to test:

The generic handling of terms and converting them into typed values for builtins to consume.
The implementation of the builtin functions themselves.

I think it's most useful for this check to focus on the second. That is, we're really trying to test that the dentotation functions are well-behaved here, which means we can assume we already have correctly-typed input.
Checking that the term -> typed constant machinery works properly seems like a separate issue, and one we could test perhaps more directly.

@michaelpj

The generic handling of terms and converting them into typed values for builtins to consume.
The implementation of the builtin functions themselves.
Checking that the term -> typed constant machinery works properly seems like a separate issue, and one we could test perhaps more directly.

With deferred unlifting both are indistinguishable parts of the runtime denotation of a builtin. One can extract a constant from a term implicitly via the ReadKnownIn instance or by manually calling asConstant in the denotation of the builtin and we'll get equal Core in the end. Trying to test the two indistinguishable ways of doing the same thing separately would only increase our chances of missing something.
To put it differently, even with immediate unlifting if the denotation of a builtin takes an Opaque, then it may call asConstant on it and you can't predict if that happens or not just by looking at the types, so this possibility needs to be accounted for and non-Constant terms need to be generated, at which point there's no point in testing asConstant separately, since this is handled by the tests here anyway.
I was too sloppy with that well-typed/ill-typed distinction. We don't care about an ifThenElse application being ill-typed: as long as the first argument is a boolean constant, the application succeeds and it doesn't matter whether the branches are of the same type. So the distinction should be between succeeding and failing applications and this is what should be tracked (in a subsequent PR as we've all agreed).
Does this all make sense?

Okay, I think I agree with that.

I was too sloppy with that well-typed/ill-typed distinction.

Well, ill-typed applications are one obvious class of failing applications!

Well, ill-typed applications are one obvious class of failing applications!

Not necessarily! An ill-typed application can run just fine, even in the typed world (i.e. the CK machine). Here's a PR with a test. So the well-typed vs ill-typed dichotomy seems completely orthogonal to what we're trying to achieve here.

Not necessarily! An ill-typed application can run just fine, even in the typed world (i.e. the CK machine).

Ugh, this is hard to talk about. We don't check anything for arguments that are type variables, but we do for those that aren't. I was trying to talk about applications-that-fail-because-of-unlifting-of-constants-to-particular-types, I don't know what to call that :sweat_smile:

Did you test that it fails if we actually have a builtin that throws?

Yeah I manually verified it. Once we make the test polymorphic in fun we can add such a test case.

@effectfully I've switched to your approach in be2efd3da23df090aa51a85b58deb5fe1abf688d, and now we are generating arbitrary Terms for Opaque arguments, in the "success" cases, which happens to be what we wanted.
I think you also suggested, in a separate PR, generating well-typed Terms for Opaque, rather than arbitrary ones (in other words, for IfThenElse we should generate Terms of the same type for both branches), right? This seems much trickier since we don't have an existing generators for Terms of a specific type. So just want to make sure it is worth doing.

I think you also suggested, in a separate PR, generating well-typed Terms for Opaque, rather than arbitrary ones (in other words, for IfThenElse we should generate Terms of the same type for both branches), right?

Not quite.
So I think that for SomeConstant we need to generate:

constants of the right type. I.e. if it's a (a, b) there, we need to generate a tuple. And if a and/or b happen to be type variables (which is always the case with our builtins when a tuple appears inside of SomeConstant), then elements of the tuple need to be generated with random types (for example, a Bool and an Integer, a Text and a Text -- just two completely arbitrary constants, possibly but not necessarily of the same type)
constants of the wrong type. I.e. if it's a (a, b) there, we should occasionally generate an arbitrary constant (most of which are going to be non-tuples) to test the unhappy path
arbitrary terms (most of which are going to be non-constants) to test an even more unhappy path

Similarly for monomorphic builtins we want to generate constants of the right type (most often), constants of the wrong type (rarely) and non-constants (even more rarely).
And for Opaque I think we can just use the same generator that will be implemented for SomeConstant. At least I can't come up with a reason to differentiate them in any way. This does mean that we'll get very few well-typed applications of ifThenElse, but as I'm explaining to myself above we don't care about them being well-typed anyway, we only care whether evaluation succeeds or not.
Hope this is not too messy of an explanation of what I have in mind.

constants of the right type.

We already generate constants of the right type, but right now everything is instantiated to Integer, and that part does need to be updated to allow instantiation to arbitrary types.

constants of the wrong type. I.e. if it's a (a, b) there, we should occasionally generate an arbitrary constant

I feel like this is covered by testing with arbitrary Terms, since an arbitrary Term already a 10% chance to be a constant. Any particular reason that we need to test this case more?

And for Opaque I think we can just use the same generator that will be implemented for SomeConstant.

Same question as above - since Opaque is supposed to accept any Term, there seems to be even less reason to generate constants-only test cases for Opaque.

I feel like this is covered by testing with arbitrary Terms, since an arbitrary Term already has a 10% chance to be a constant. Any particular reason that we need to test this case more?

Good point, not sure what I was thinking about.

since Opaque is supposed to accept any Term, there seems to be even less reason to generate constants-only test cases for Opaque.

It accepts any value, but a builtin is allowed to attempt to extract a constant out of it and then it can look at the type tag of that constant etc. I.e. from the point of view of these tests there doesn't seem to be any difference between SomeConstant and Opaque.
I do now realize we don't need to consider the case of constants of the wrong type separately, it'll be enough to just generate arbitrary terms and some of them will be constants making things ill-typed. Thanks for catching.

The comment on the test is good, but given how much discussion there has been here it might be worth expanding it into a longer Note? What do you think @zliu41 ? "Comprehensively generating arguments for builtin functions" or something


0.3.0 not on npm

Hey folks, we use KaTeX for Gitter where it's very popular amongst some of our communities. Was in the process of upgrading some of our markdown processors and wanted to move up to 0.3.0, but noticed it's not published on npm yet, is there any reason for that?

Looks like an oversight. Just pushed 0.3.0.

Sweet, thanks for the super-fast response too.


Automatic Max Stress Track Calculation

Armour item has been added which means this is now unblocked.

Resolved in 0.1.4


Protecting a folder behind a reverse proxy using .htaccess file

I have two PCs <IP_ADDRESS> and <IP_ADDRESS>. keycloak runs at the <IP_ADDRESS>. I want to protect folder "1" in <IP_ADDRESS> using the settings in .htaccess by accessing through http://<IP_ADDRESS>/1 (proxied to <IP_ADDRESS>). mod_auth_openidc is installed in <IP_ADDRESS>. If I use <location /1> directive in <IP_ADDRESS>, it is working. However, I want to use .htaccess at <IP_ADDRESS>. It is looping and ends with too many redirects.  Is there any chance to use .htaccess at the <IP_ADDRESS> rather than <location /1> directive in <IP_ADDRESS>?
apache settings in <IP_ADDRESS>:
ProxyPass /1 http://<IP_ADDRESS>/1
ProxyPassReverse 1/ http://<IP_ADDRESS>/1

ProxyPreserveHost On
ProxyRequests Off
RequestHeader set X-Forwarded-Proto "https"
RequestHeader set X-Forwarded-Port "443"

ProxyPass /auth http://<IP_ADDRESS>:8080/auth
ProxyPassReverse /auth http://<IP_ADDRESS>:8080/auth

<Location "/oidc">
  AuthType openid-connect
  Require valid-user
</Location>

auth_openidc.conf settings at the <IP_ADDRESS>
OIDCRedirectURI http://<IP_ADDRESS>/oidc
OIDCCryptoPassphrase xyz
OIDCProviderMetadataURL http://<IP_ADDRESS>/auth/realms/test/.well-known/openid-configuration
OIDCClientID basic
OIDCClientSecret xxxxxx
OIDCRemoteUserClaim preferred_username
OIDCSSLValidateServer Off
OIDCOAuthSSLValidateServer Off
OIDCAuthNHeader X-Forwarded-User

.htaccess at the <IP_ADDRESS>
AuthType openid-connect
<Files ~ "^.(htpasswd|htaccess)$">
Require all denied
</Files>
Require user test

https://github.com/zmartzone/mod_auth_openidc/wiki#20-why-is-my-ticket-closed-as-invalid


Update Felipe-Zipitria.md

Update initial text.

btw you should also update the  working-sessions: field since I added those two in random (just needed some items to test the functionality)

Wil! do!


Still using test server. Even after setting up custom server ?

email-auth >> Remote server is not available -- using test server --
email-auth >> ❗ Warning this is not reliable on production
email-auth >> The remote server configurations are valid
email-auth >> OTP sent successfully ✅

Fixed.

Hello, I have the same issue as you. May I know how do you solve this problem? Thanks

Thanks ✌ happy coding

The solution is to pass in the config for the emailauth
Access the emailAuth.condig method


Image layout enhancement

Ref: https://app.usebubbles.com/ikz37gvuWY5SoHQpUpfomo/image-layout-issues
https://github.com/bigbinary/neeto-kb-web/issues/4032

@sandip-mane https://www.loom.com/share/8dee6e0e9ba24c0b9df6ac66c5167e2b Please have a look at this video, neetoEditor has a feature to resize the uploaded images I think this will solve the issue with visibility of uploaded images.

@gaagul awesome, was not aware of it. Please close the issue if no changes are needed.


Created dataset card snli.md

First draft of a dataset card using the SNLI corpus as an example

Resubmitting on a new fork


Update Settings “general”

Automatically generated by Netlify CMS

👷 Deploy Preview for kidskingdom processing.

Name
Link

🔨 Latest commit
ee22e6c2573009d5dc19f7517a078294d119aaf7

🔍 Latest deploy log
https://app.netlify.com/sites/kidskingdom/deploys/63aea38112fe460009c87843


max angular speed

Large ships can turn painfully slowly, since angular velocity is determined by the diameter of the ship. Even though this makes sense, it's not really nice for gameplay. There should be a max angular speed, maybe ~36deg/s so that it can't take longer than 10 seconds to 360 your ship, no matter how large.

might i suggest making this a option to set

the max angular speed
the minimum angular speed
(and mabey other options to determine how it eases between the two values)


Linear mapping + tests

In this PR I added the following:

Linear mapping estimation between empirical distribution (function+ class in ot.da)
Add tests for the new mapping and ot.utils + ot.gromov (>90% coverage now)
Readme+doc update for adding references

OK I'm merging, thank you @ncourty for the code review.
We now have 91% line coverage!


Duplicate Email should be rejected by Default

We need a rejectExistingEmail() hook function for this module.

I created a validateHook with an unique rule for this, you can see its use here.
Hoping I helped

nice


Inside cover specified in [series-information] does not apply

The inside cover specified in structure-books.xlsx [series-information] sheet does not apply.
CAUSE:The row supposed to be named "cover" was set as "inside-cover."

"inside-cover" will be the correct item name by this specification change
#47


Digipeater name not added to some packet

I noticed that some time, I got a packet from a digipeater without no trace of it in the data sent:
I expect to see something like >>>> [originator-1] , [digipeater*] / data load
I got  >>>>>  [originator-1] / data load
see attached example where in the first two row it work fine
in the last two row the digipeater name do not appear.
in both case the originator is [IW2EJH-5]   repeater [IW2EJH-13] and gateway [IW2EJH-11]
(I can understand the data is comming from the digipeater also comparing the dBm of the signal )
I'm running :
FW 2024.01.26 on the tracker
FW 2024.05.27 on the digipeater
FW 2024.05.27 on the iGate

do you have more data to compare?
are this only from digirepeater packets? or is this mixing packets from tracker and digirepeated of the same tracker?

-Q>{are this only from digirepeater packets? or is this mixing packets from tracker and digirepeated of the same tracker?}
-A> This is the syslog comming from the iGate [IW2EJH-11] showing fist line, the signal from the tracker, and the second line, the signal from the digipeater, and it is ok.    then a few data recorded, and finally on line 7, again a signal coming from the tracker, and in line 8, the same data repeated by the digipeater and it is not ok

-Q>{do you have more data to compare?}
Attached highlight of the first data  plus new extract of other log:
(second extract explanation)
row1:   data coming from IW1QAF-12 (I cannot receive it directly because i'm in a closed valley) this signal in fact has been digirepeated by IU2BEF-4 as you can notice in the next two row where we can see in row2: direct data from digi IU2BEF-4 and in raw3: data from IW1QAF-12 repeated by IU2EBF-4*
row6: again signal I cannot receive from IW1QAF-12 that in reality is digirepeated by IU2BEF-4
row8: my tracker IW2EJH-5 that in reality is repeated by my digi IW2EJH-13
row10: APRSdroid IW2EJH-15 connected to tracker that is repeated by my digi IW2EJH-13
What i can notice from these data, is tha if the digipeater get a position signal, this is working normally, and you get the name of the digi with the asterisk ,  if the data are Telemetry, Message or Status, then the Digipeater name  do not appear in the repeated data.

I do not know what I touched and by mistake marked as closed.....  sorry I do not know how to remove this completed tag

so you want the "path" and "tocall" also on the status data log to syslog server?

No, I was wondering why the  digipeater name do not appear when it is repeating a packet that is not a gps position. I do not know if this is normal or if this is a bug.  If this is normal forgot my comments, you can close.

the status packet into the syslog was not defined with this data (path and tocall)
but the original lora packet has it for sure

ok, if via RF all is correct, then for me you can close the case. :)


Haproxy url override

Proper pull request, now with less missing haproxy header.

made a single comment, aside form that it looks good.


action: cleanups with 'yamllint'

Minor fixes by running:
$ yamllint .github/workflows/*.yaml
Signed-off-by: Shachar Sharon<EMAIL_ADDRESS>

Can you pls add a GitHub action also for this in the same PR

Can you pls add a GitHub action also for this in the same PR

Sure, will do

Can you pls separate this into 2 changes one for action and one for linter corrections?
I think we can make use of https://github.com/marketplace/actions/yamllint-github-action

Sure, will do

So now we should have 3 commits

yamllint action
.github changes
config changes

in the same order

ACK

this looks nice!
I think the requests have been addressed. But it needs rebase.

IMO we should revisit this before 4.10 once we are in the development phase, otherwise, it can make automated backports a little difficult.

this looks nice!
I think the requests have been addressed. But it needs rebase.

IMO we should revisit this before 4.10 once we are in the development phase, otherwise, it can make automated backports a little difficult.

After discussing it with Jose, We decided to take this to the main branch now only.

@synarete Can you pls make sure that after running make bundle these config file does not get changed on your local machine as some of them are generated ones?
Moreover type for your last commit should be bundle.
Pls use our contribution guide for more details.

/ok-to-test

/restart
On Wed, Sep 22, 2021 at 1:28 PM openshift-ci[bot] @.***>
wrote:

@synarete https://github.com/synarete: The following test failed, say
/retest to rerun all failed tests or /retest-required to rerun all
mandatory failed tests:
Test name Commit Details Required Rerun command
ci/prow/odf-operator-bundle-e2e-aws d20a4b6
https://github.com/red-hat-storage/odf-operator/commit/d20a4b67ae9f683cae5b957cb438a48f805d1590
link
https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/red-hat-storage_odf-operator/79/pull-ci-red-hat-storage-odf-operator-main-odf-operator-bundle-e2e-aws/1440607458996260864
false /test odf-operator-bundle-e2e-aws
Full PR test history
https://prow.ci.openshift.org/pr-history?org=red-hat-storage&repo=odf-operator&pr=79.
Your PR dashboard
https://prow.ci.openshift.org/pr?query=is:pr+state:open+author:synarete.
Instructions for interacting with me using PR comments are available here
https://git.k8s.io/community/contributors/guide/pull-requests.md. If
you have questions or suggestions related to my behavior, please file an
issue against the kubernetes/test-infra
https://github.com/kubernetes/test-infra/issues/new?title=Prow issue:
repository. I understand the commands that are listed here
https://go.k8s.io/bot-commands.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/red-hat-storage/odf-operator/pull/79#issuecomment-924798264,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AB5ZRR64NCB3JF7TEFUEQMLUDGVTBANCNFSM5DF4MVVQ
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.


[KeyVault] - Clarify certificate version properties

What

Add comment about CertificateProperties#version which can only be populated by
the service
Add explanation for updating the latest version of a certificate using an
empty version string

Why
When updating some of our samples, Dina noticed a few things that can lead to
confusion.
The first is that version is both a positional param and part of
the CertificateProperties param. It's not clear which to use and its due to us
using the same model for both input and output types here.
The second is that version is technically required but not really - a user can
pass an empty string to update the latest version of a certificate. This is
common across all KV APIs but we did not make it truly optional.
Since these would be breaking changes, and no customers have yet to complain
about this, we decided a good middle-ground would be to update the documentation
to make it clearer.
Fixes #18886

@diberry FYI - feel free to make recommendations if you'd like to change anything

@maorleger Looks good - thank you for working on this change.


Build Cache miss links more to GE

Context
Having GE how-to in the GBT docs is confusing https://gradle-community.slack.com/archives/CAHSN3LDN/p1671642735735369
Contributor Checklist

[ ] Review Contribution Guidelines
[ ] Make sure that all commits are signed off to indicate that you agree to the terms of Developer Certificate of Origin.
[ ] Make sure all contributed code can be distributed under the terms of the Apache License 2.0, e.g. the code was written by yourself or the original code is licensed under a license compatible to Apache License 2.0.
[ ] Check "Allow edit from maintainers" option in pull request so that additional changes can be pushed by Gradle team
[ ] Provide integration tests (under <subproject>/src/integTest) to verify changes from a user perspective
[ ] Provide unit tests (under <subproject>/src/test) to verify logic
[ ] Update User Guide, DSL Reference, and Javadoc for public-facing changes
[ ] Ensure that tests pass sanity check: ./gradlew sanityCheck
[ ] Ensure that tests pass locally: ./gradlew <changed-subproject>:quickTest

Gradle Core Team Checklist

[ ] Verify design and implementation
[ ] Verify test coverage and CI build status
[ ] Verify documentation

@bot-gradle test BD

I've triggered the following builds for you:

BuildDistributions build

@bot-gradle test BD

I've triggered the following builds for you:

BuildDistributions build

@bot-gradle test BD

I've triggered the following builds for you:

BuildDistributions build

Rendered doc
Original doc

@bot-gradle test BD

I've triggered the following builds for you:

BuildDistributions build

Rendered doc
Original doc

@bot-gradle test and merge

Your PR is queued. See the queue page for details.

I've triggered a build for you.


[arrow] Update to 6.0.1

Updates the arrow port to version 6.0.1

I tested the features locally with triplets x64-osx, x64-windows, and x64-windows-static and observed no regressions from version 6.0.0.

FYI @GPSnoopy @jgiannuzzi
See https://arrow.apache.org/release/6.0.1.html for what's new in 6.0.1.
I doubt this will have any new impacts on ParquetSharp compared to 6.0.0.

Thanks for the update!

FYI @GPSnoopy @jgiannuzzi
See https://arrow.apache.org/release/6.0.1.html for what's new in 6.0.1.
I doubt this will have any new impacts on ParquetSharp compared to 6.0.0.

Thanks @ianmcook, I will update our branch — I also doubt it will have any impact!


Is it possible to enable Iommu on breath/ where could I set kernel flags in breath to enable iommu?

Discussed in https://github.com/cb-linux/breath/discussions/216

Originally posted by 1Guardian June  3, 2022
Hello, I wanted to mess around with some virtual machines, and wanted to know if it is possible to enable iommu groups for virtual machine passthroughs on a breath linux install. I have done it via boot parameters in grub in the past, but given the lack of grub use, I'm not sure where these parameters would need to be set. Thanks for any help anyone can offer!

Enabling GVT-G is trivial. The main thing to implement is a way o change the kernel command line. I've made this Python script:
#!/usr/bin/env python3

import argparse
import os.path
import subprocess as sp

def parseArgs():
    # Create the parser and add arguments
    parser = argparse.ArgumentParser()

    # Positional argument for the cmdline
    parser.add_argument(
        dest='cmdline',
        type=str, nargs=1,
        help="The new kernel command line (also known as its parameters)"
    )

    # Boolean flag that doesn't accept data
    parser.add_argument(
        '-a', '--append',
        action="store_true", default=False,
        help="Append a flag rather than replacing the whole command line"
    )

    # Parse the arguments
    args = parser.parse_args()

def installPackages():
    if not os.path.exists('/usr/bin/futility'):
        if os.path.exists('/usr/bin/apt'):
            os.system('sudo apt install -y vboot-kernel-utils')
        else:
            print("Please install vboot-kernel-utils or vboot-utils for the futility binary.")
            sys.exit(1)

def generateNewKernel():

    # Get the root device
    rootProcess = sp.Popen("mount | grep ' / ' | cut -d' ' -f 1", shell=True, stdout=sp.PIPE)
    rootDevice = rootProcess.communicate()[0]
    kernelPartition = rootDevice[:-1] + '1'

    # Get the current kernel's command line
    cmdlineProcess = sp.Popen("cat /proc/cmdline", shell=True, stdout=sp.PIPE)
    cmdline = cmdlineProcess.communicate()[0]

    # Write the new kernel commandline to a file
    with open('cmdline', 'w') as f:
        if args.a:
            f.write(f"{cmdline} {args.cmdline}")
        else:
            f.write(args.cmdline)

    sp.run(f'dd if={kernelPartition} of=kernelpart', shell=True, check=True)
    sp.run(f'futility vbutil_kernel --repack newKernelPart --version 1 --keyblock /usr/share/vboot/devkeys/kernel.keyblock --signprivate /usr/share/vboot/devkeys/kernel_data_key.vbprivk --oldblob kernelpart --config cmdline', shell=True, check=True)

def flashKernel():
    sp.run(f'sudo dd if=newKernelPart of={kernelPartition}', check=True, shell=True)

parseArgs()
installPackages()
generateNewKernel()
flashKernel()

Create a file with this text and then invoke it like so:
chmod +x myfile
./myfile --append loglevel=7

Give me a dmesg. Theoretically, you should get more logs than normal if you enable this. This is all just testing to see if this script works; it's unrelated to the GVT-G issue on hand.

I'll let you know if it works when I get a chance to make another bootable. For now I just did what I stated above and recompiled with iommu enabled via the kernel config options. Then added some extra flags in the kernel.flags section to enable it. The issue I was running into with gvt-g originally was it requires intel_iommu=on, but the iommu groups would not populate no matter what, and gvt-g would always give an empty option subsection in the /sys dir. Recompiling with a custom kernel config to enable intel iommu was the only thing that seemed to work, but I will try it when I get a chance with a stock kernel.

Once this CI Deployment finishes, new builds should have an IOMMU-enabled kernel. I'll make sure to document the existence and usage of change-kernel-parameters.

Sounds good, thanks!


Tests are failing now

Travis tests are failing.

Forked and running the tests locally (with 2019.07) they are fine. The travis tests seem to be running with 2018.05.
Can you give me a pointer to your test Docker Images and I'll look to see about implementing them?

Branched the repo and ran the tests in Travis and it built fine.
https://travis-ci.org/Scimon/p6-file-directory-tree (The failed test here was run a year ago).

OK, thanks for testing. I close it then.

I'm going to install new tests, just in case.


Special achievement text not visible on mobile

"Mouse over" doesn't really exist on mobile so it is difficult to tell what special achievements are available or in a player's achievement pile.
This was mentioned in a forum post (but not a bug report).
A good solution would be to imitate what other games do when trying provide details on cards like in Agricola:

There is a button to provide details on the card.  This would work with the specials because nothing happens when you click on a card in normal situations.

You can actually press and hold to make it appear, but I agree there's room for improvement here.

For the record, this was later filed as a bug report (https://boardgamearena.com/bug?id=68916).