Google Home option to disable adding devices to known_devices.yaml

Home Assistant release with the issue:
0.88.0
Last working Home Assistant release (if known):
N/A
Operating environment (Hass.io/Docker/Windows/etc.):
Docker
Component/platform:
https://www.home-assistant.io/components/googlehome/
Description of problem:
The Google Home component automatically adds new devices it finds to the known_devices.yaml file. Even if track_new_devices is false, it still adds the devices to the file, just with track set to false. The problem is that many bluetooth devices randomize their MAC addresses if they are not paired, so it winds up adding thousands of entries to the known_devices.yaml file. This results in Home Assistant taking multiple minutes to restart.
I first added the Google Home tracker about a month ago, and my known_devices.yaml file had already gotten to nearly 10MB, and startup of device tracker was taking over two minutes. When I cleared all the untracked devices from my file, startup time dropped to under 10 seconds.
I tried just removing the write permission bit from the known_devices.yaml file, but as I believe Home Assistant runs as root inside the Docker container, it just added the write bit back. As of now, my only option is to keep a separate known_devices.yaml file with only the tracked devices, and overwrite the normal one before every restart, which is not a sustainable option. An option like look_for_new_devices with a default of true would take care of this problem.
Problem-relevant configuration.yaml entries:
googlehome:
  devices:
    - host: <IP_ADDRESS>
      rssi_threshold: -80
    - host: <IP_ADDRESS>
      rssi_threshold: -80
    - host: <IP_ADDRESS>
      rssi_threshold: -80
    - host: <IP_ADDRESS>
      rssi_threshold: -80
    - host: <IP_ADDRESS>
      rssi_threshold: -80
    - host: <IP_ADDRESS>
      rssi_threshold: -80

Traceback (if applicable):
N/A
Additional information:
N/A

The Google Home component automatically adds new devices it finds to the known_devices.yaml file. Even if track_new_devices is false, it still adds the devices to the file, just with track set to false.

That's just how the track_new_devices option works, as noted in the docs: https://www.home-assistant.io/components/device_tracker/:
"Note that setting track_new_devices: false will still result in new devices being recorded in known_devices.yaml, but they won’t be tracked (track: false)."

@ludeeus anything we can do to improve the UX here?

Limiting the device_type can certainly help.
Usually, you do not need/want to track devices that are LE only (2)
https://www.home-assistant.io/components/googlehome/#device_types
device_types: [1, 3]

@tjorim I'm aware that's how it currently works, but the current behavior is causing the extended startup times I mentioned above.
@ludeeus That could probably help, but it would only slow down how long it takes for the file to get oversized. I want to avoid having to manually go in and clear out all the unneeded entries every so often.

The issue is with LE devices that changes their mac, if you do not track LE devices you will not have an issue :)
Note: I'm not discarding the idea of a look_for_new_devices key, just trying to help you with what you can do now

I'll add the device types filter to my config and see how that goes. I'm hoping adding an option to not look for new devices won't be a huge amount of work, and will definitely help for people who do need to track LE only devices.

As of now, I'm not sure which option would be best.

Add logic similar to device_tracker/bluetooth_le_tracker.py (track_new_devices) option
Add include option to specify the mac adresses.

googlehome:
  - host: <IP_ADDRESS>
    include:
      - 23:34:f3:d3:32

Option 2 will give more controll, and be lighter on the system not having to read and parse the known_devices file.

I vote option 1 to deal with BLE devices

I would also vote for option 1 so there aren't two places to keep up with tracked devices. I would rather everything be managed in one place (known_devices.yaml).

I like the idea of it being light on the system, per Ludeeus' option 2. Can the parsing of the known-devices.yaml be limited to just startup, or is that already current behavior?

Since it would be a config option (you have to restart for it to take effect) loading on startup migth work

Given that this component is both a SENSOR and a DEVICE_TRACKER, would it not make sense to be consistent with how these kinds of devices have been historically configured?
I underestand the Device Type solution, but I also think that adding the default options would be a great step towards configuration and documentation consistency.
    new_device_defaults:
      track_new_devices: true
      hide_if_away: false

The issue is that known_devices.yaml is being polluted with thousands of entries. Device defaults don't address that, as they are still recorded in the yaml file, just not tracked in HA.

I've run into this issue, not specifically with Google Home, but just devices cluttering up my known_devices.yaml file. I'd prefer not to track every device on my network as being "Home" just for simplicity's sake, just the few I want to track. I ended up adding a add_new_devices option that defaults to True. If False, it just doesn't add anything new that it finds.
new_device_defaults:
  add_new_devices: false
  track_new_devices: false
  hide_if_away: false

I've forked and pushed a commit and if it's something the HA team wants I can do a pull request to fix both this issue and #20022, and then add the appropriate documentation.
Also while in there I can add more features for granularity if folks want, but I felt this was a pretty straightforward solution for those who want it. Any more suggestions appreciated.

@apetlock Presumably the documentation would need to be updated as well?  Hopefully it could be made crystal clear the difference between "add_new" and "track_new"  (it isn't entirely clear to me).

@apetlock Presumably the documentation would need to be updated as well? Hopefully it could be made crystal clear the difference between "add_new" and "track_new" (it isn't entirely clear to me).

Yeah, I will add and make a pull request for the docs too, as I could see the confusion. Also could just change the option name to something else if anyone has better ideas.

Since i can't see it mentioned here. What is the benefit/use of it to add to know devices if track_new is false?

@elupus It still adds them to known_devices.yaml and they show up in History as well, all being labeled as "Home" even if they don't show up in search lists even if track is false.
Between this issue and the other one listed, either hundreds of devices are added (which affects restart/load times according to those users) and some change their hardware id thus showing up multiple times and continually adding to the file. My issue is more like the former, although I haven't seen performance issues yet. I added the devices I wanted to known_devices.yaml, and those are the ones I want to maintain. There's no reason for anything else to be added to that file, at least in my case (and in others apparently.)
This could also be fixed simply by making track_new_devices just not add anything to known_devices.yaml as well. That'd be a single line of code, excluding the test. (Although from an ease-of-use perspective I can see why it is that way, which is why defaulting to True would be best for both track and/or add.)
It could also be considered a privacy issue of sorts. My particular device_tracker is the ubiquiti unifi component, which means every time a guest connects to the network, their device info is added (effectively permanently until I remove it manually).
It was enough of a desire that I decided to make the code change on my local setup, at the very least, and saw that a couple open issues were related.

either hundreds of devices are added

If HA is deployed in a large "house," like a college house (frat, sorority, or otherwise), I think it could be thousands.
Or even a small house, but a scanner located where it might pick up devices from a bustling nearby sidewalk in a urban city, lots of thousands.

What is use case of adding to know_devices of track new is false?

Maybe instead of constantly scanning and adding devices a service call could be created that just adds devices for a short time window after calling the service?
Also the more minis you have the more of a problem this is.. Why doesn't this platform treat all discovered devices as one device like all of the other device trackers? It would cut down on the known device clutter a lot for those of us with multiple devices.

@bagobones having them as separate devices opens up the possibility of using them for room-level presence detection. If we can get these little issues worked out, that's how I was planning on using them.

@bagobones having them as separate devices opens up the possibility of using them for room-level presence detection. If we can get these little issues worked out, that's how I was planning on using them.

More in line with the way other modules work the tracked devices are always considered one device and any tracker that tracks the same device simply updates its current state. The tracked device is supposed to represent the device not the tracker and could be updated by multiple trackers that support the same device type.
I would suggest that simply adding an attribute for closest_mini: 192.168.1.x would give you the same functionality. The component as a whole would take the reports from ALL minis and for any BLE mac addresses that are the same, the closest_mini would always return the name / IP of the mini closest to that device.
You could also make the naming consistent with the bluetooth_le_tracker and just use the MAC field prefixed with BLE_ for BLE devices and a normal mac for others like the bluetooth_tracker.
You might also be able to allow the user to define the zone name for each mini, and when polled the component simply returns the zone name for the closest mini as the current location.
The current naming of known devices for this module is  completely inconsistent with other components and doesn't really allow the user to rename them to something friendly like the other components currently do.

@bagobones are there any other presence detection components which are distributed like this, with the ability to add multiple nodes? I'm not up-to-date on every component, but happy bubbles is the first one that comes to mind, and it requires you running a separate server to crunch the data and publish messages to mqtt.
This component is different. Closest mini wouldn't be appropriate in all use cases, as triangulation would sometimes be necessary.
To do the automations from within home assistant, it must be structured like this, or major changes would need to be made to the component. I'm not saying that shouldn't happen, but it's outside the scope of this discussion.

@bagobones isnt the whole problem with ble devices that their MAC is randomized? That is a privacy feature to avoid stuff like presence detections. I you can never attribute them in that state to a tracked device.

@bagobones are there any other presence detection components which are distributed like this, with the ability to add multiple nodes?

If we take signal strength out of separate components can update the state of the same object already.. For example if you setup the iOS app AND you setup the ubiquiti unifi tracker, a phone till be tracked both by WiFi AND by iOS GPS, it will simply take the most recent hit. This works without multipule nodes.
This component however has been setup as a platform instead of individual device trackers, so I would suspect logic wise the platform could internally do something more intelligent.

@bagobones isnt the whole problem with ble devices that their MAC is randomized? That is a privacy feature to avoid stuff like presence detections. I you can never attribute them in that state to a tracked device.

Not all BLE devices are randomized, you can purchase BLE tags that do not randomize on Aliexpress etc. You can get devices that would work great.
However smart phones and many other devices with privacy enabled will randomize, which is why constantly adding and discovered devices to known devices is so bad.

If we take signal strength out of separate components can update the state of the same object already.. For example if you setup the iOS app AND you setup the ubiquiti unifi tracker, a phone till be tracked both by WiFi AND by iOS GPS, it will simply take the most recent hit. This works without multipule nodes.

@bagobones I don't this is true. This is only of you combine the device trackers as a "person" entity. They are separate device trackers, and recorded as such, otherwise. Heck, even if you do combine them as a person, the device trackers are still recorded separately.

@bagobones I don't this is true. This is only of you combine the device trackers as a "person" entity. They are separate device trackers, and recorded as such, otherwise. Heck, even if you do combine them as a person, the device trackers are still recorded separately.

The Person entity is a VERY recent addtion, I have been using this for a long time, items that track a device based on the MAC address can share the single logical item and update it. It has worked this way for as long as I have used HA..
https://www.home-assistant.io/components/device_tracker/
"Multiple device trackers can be used in parallel, such as Owntracks and Nmap. The state of the device will be determined by the source that reported last."
This is why the current implementation of the googlehome component is so strange. In no way what so ever should there be more than one known device object for each bluetooth device tracked.

@bagobones I see, that's news to me. I, personally don't think a departure from existing implementations of device trackers is a bad thing. Just because there isn't an implementation which doesn't currently function this way doesn't mean one should be forbidden. That's why we have these discussions. Your use case and assumed implementation doesn't necessarily match every other user's use case or mean it's the best way of leveraging the capabilities of the Google home API in home assistant.
Something that might work is if the rssi values of each Google home were included as attributes of the device tracker. Might need rssi and last update time to make it complete, but seems doable. Would mean major changes to the existing component, however, which someone would have to implement :wink:

@bagobones I see, that's news to me. I, personally don't think a departure from existing implementations of device trackers is a bad thing.

I disagree, there needs to be some level of consistency in large shared projects in terms of implementation. You can have diversity in functionality and extend the implementations however.
How a device_tracker should respond and how the fields should be used is actually fairly clear here.
https://www.home-assistant.io/components/device_tracker/
Expectations:

If a tracked device has a UNIQUE MAC address it should be used to identify the device
no component should under normal use fill the hard drive by filling the know_devices file with random devices ( a new configuration attribute for scanning or a service is needed to deal with randomized ID) this could be a big problem for PI users with small SD cards. Not to mention it will constantly slow HA down.
setting the zone by the device_tracker is also supported in the documentation.
having attributes that show the last RSSI for each mini that saw the device at the same time would still fit under extending the functionality.


strip pipes from skinCluster names

There is a bug if you have non-unique names in your geo. Your node names change to longNames, and the pm.skinCluster command will not accept a name flag that has pipes in it.
You end up with "Invalid deformer name was specified." errors from Maya. Stripping the pipes from the skinCluster name appears to fix this bug.
This fixes the bug on the skinCluster name only. So skinCopy() and importSkin() are fixed. But I do not know if this has any additional bugs related to pipe characters in the filenames of the jSkin or gSkin files. I do know that longNames with pipes work as filenames on MacOS and Linux. I do not know about Windows.

@chris-lesage sorry for taking so long to check this.
I will merge this now
Thanks!


Update our process-cache script to produce only a single json file

As an APISnoop developer, who wants a simple process for bringing in new data to our backend services,
I want the existing 3 files generated by --process-cache to be a single, well-organized file; so I can reduce the logic necessary to starting up our backend service.
Given a cache of downloaded data
When --process-cache is run
Then it produces a single JSN for each release/build.
And this JSON contains the contents currently held in apisnoop.json, finished.json, and manifest.json

related to #89

Will revisit later in the week.

@zachmandeville with our work on the backend startup today, let's go ahead and pull down multiple files.


Post installation error

I get the following error when trying to use the import "import RNRasa from 'react-native-rasa'"

I can't reproduce, but in case you couldn't install it, you can copy content of RNRasa inside the library and use it when ever you want. @kalmansour

Even I am facing same issue
Any fixes??

I get the following error when trying to use the import "import RNRasa from 'react-native-rasa'"

Did u find a solution??

@hungvu193 @kalmansour  pls help me out


feat(cli): support tailwind.config.mjs file

When the extension of the tailwind configuration file is mjs, transform cjs syntax to esm syntax.
If I understand it right, we just need to handle tailwind.config.mjs file correctly in astro framework?
cc @sadeghbarati @selemondev

Yes, Right<EMAIL_ADDRESS>integration will create tailwind.config.mjs
https://github.com/withastro/astro/blob/main/packages/integrations/tailwind/CHANGELOG.md#502

Can I push some changes? @Dunqing

Can I push some changes? @Dunqing

Sure！

Thanks for the PR @Dunqing  @sadeghbarati ! However seems like the Test in the pipeline has failed. Could you check on that? 😁

Thanks for the PR @Dunqing @sadeghbarati ! However seems like the Test in the pipeline has failed. Could you check on that? 😁

Done


how to show two fields aggregation at the same pivot ???

Hi Nicolas,
I want to show two fields aggregations at the same time.For example i want to show average of salary as one column and sum of childrens as another column for names in row Just like microsoft excel did .your library provide only single field aggregation at one time is it possible to do for more then one fields.

Hello Nicolas,
I have one problem with pivot table js. I want to change aggregation count to Integer Sum, how can i do it? Please let me know.

@thearyoun please open a different issue rather than commenting on an unrelated one.

(closing as duplicate)

Hy, I am also trying for the two fields aggregator, Please let me know if anyone success doing this.

Hi, does this feature available?
I'm looking to compare multiple columns and multiple calculation?
Thanks


Update archived-device-list.md

Added HP EliteBook x360 1040 G5 to archived

@jaimeo - here is the pull request for the archived list


Improve error logging

The actual error messages were being eaten. Also, r.raise_for_status() wasn't actually being called. logger.exception() appends the entire exception and traceback to the log file.

Hi @ianshefferman. Thanks for your contribution. Can you squash these commits into one, please? We'd like to keep a clean commit history.

I squashed the commits but it appears I may have accidentally modified some of the old history. Tell me if you need me to do anything else.

Accidentally corrupted this PR. New one is #3.


Several Issues running code through visual studio

Hi,
I just tried to run the whole Blockchain code in Visual Studio, and I have had a host of issues.
It would be good if someone could help me understand holistically what is going wrong?
i.e you cannot import "internal/cpu"
This in turn has created problems throughout the code.

this sounds like an issue with the installation of your Go toolchain and is not specific to this repo. Closing this issue. This might help you get started in debugging: https://stackoverflow.com/questions/46377604/cannot-find-package-internal-cpu-error-in-go


Revert "Change optparse.rbi T::Class overload (#8146)"

This reverts commit 496b7bdb546c2385592f9f3d502f563c3852251e.

Test plan

See included automated tests.

We have a policy of testing changes to Sorbet against Stripe's codebase before
merging them. I've kicked off a test run for the current PR.  When the build
finishes, I'll share with you whether or how it failed. Thanks!
Stripe employees can see the build results here:
→ https://go/builds/bui_QnG9nv5bwA0qif
→ https://go/builds/bui_QnG9j29lQ30Ugd
→ https://go/builds/bui_QnG94Iadn7WHjy

Stripe's Sorbet build infrastructure is a little sad at the moment, but I verified on my devbox that there are numerous errors before this PR and none after this PR.


[FEA] Asynchronous TensorFlow DataLoader

Similar to https://github.com/NVIDIA/NVTabular/issues/81, we should add the ability for the TF dataloader to load chunks concurrently with training.

Closed with #224


Fix Key Vault URL checks in KeyVaultKeyResolver.

Fix incorrect Key Vault URL suffix in KeyVaultKeyResolver.

Closing to roll up additional changes.


MongoDB\Driver\Exception\BulkWriteException on insert not documented

If I have a collection with an indexed field, and I call insertOne to try to insert a duplicate value in that field, I get a BulkWriteException:
class MongoDB\Driver\Exception\BulkWriteException#197 (9) {
  protected $message =>
  string(126) "insertDocument :: caused by :: 11000 E11000 duplicate key error index: STF.preferences.$sviUserId_1  dup key: { : "00090A19" }"
...

Shouldn't this throw one of the exceptions from this library, or an InsertOneResult? The documentation doesn't say that this function can throw an exception.
Using mongodb extension 1.1.8, PHP library 1.0.2, PHP 5.4.5.

You wouldn't get a InsertOneResult as that would imply you got a "positive" (non Error/Exception) result. This library has very few exceptions coded actually. They are for when you use the library incorrectly as opposed to doing something that the database itself feels is wrong (inserting a duplicate).
One could argue that BulkWriteException is odd, but remember that all insert/update/deletes by the driver are done via BulkWrite, so it does make sense in that respect. At least it has a useful exception message!

Yeah, it's not a big deal once you know about it. Feel free to close. I was a little confused, because other similar things don't throw an exception (e.g. deleteOne when nothing matches the filter).

But "nothing matches filter" isn't supposed to throw an exception, though, as that isn't actually an error. Trying to insert a document with a duplicate _id, however, is.

@schmalliso: Do you recall if the new documentation covers thrown exceptions? This is likely something we'll want to add if not.

@jmikola I do not believe it does currently, no…

Documentation task is being tracked in PHPLIB-214.


PARQUET-526: Add unit tests for Scanner.

I recommend either rebasing this on the commits in #49 before that's merged or waiting for it to be merged and then rebasing, either way will work. The Thrift removal also led to some light refactoring in column/test-util.h which touches most of the test code here.

I will update and rebase this PR once PARQUET-499 is finished.

@wesm do you have more feedback for this ?

Yes -- high level comments

Test data is not very diverse, and only tests with a single data page. Can you ensure that the batch size being used by the scanner to page data from the ColumnReader is less than the number of values being scanned? That's more important than having multiple data pages.

Code duplication. See for example https://www.diffchecker.com/t5iymjqd. Can you: use templates to limit copy-pasting, and create a reusable scanner-tester function that can create either of the 3 cases (values only, values + def levels, values + rep + def levels). The type of approach @majetideepak used for PARQUET-515 should help here

Does not test ByteArray / FixedLenByteArray yet, can we do that in this patch? Strictly speaking the fix for PARQUET-502 here is not complete because the original bug has not yet been reproduced.

About to step on an airplane but will be avail throughout the day

Lastly -- can you add test coverage for TypedScanner<T>::FormatValue?

@wesm Can you please clarify your comments?

TestSmallBatch addresses the case when the batch size < # of read values.
TestSmallBatch is also the unit test for PARQUET-502. Please review the jira.
The patch for parquet-515, and column-reader-test.cc in general, do not use any templating, and only test a few hard-coded cases for Int32 columns. What approach do you mean?

It would be a good idea to make sure the scanner batch-buffering works for all of the data types, especially ByteArray / FixedLenByteArray
The original bug report for PARQUET-502 was "Scanner segfaults when reading a FIXED_LEN_BYTE_ARRAY column". Even though the underlying cause was something else, it is a good idea in my experience to have tests cases that reproduce observed bugs if possible.
Sorry, I meant PARQUET-499, not 515, https://github.com/apache/parquet-cpp/commit/4ae1b921bb86133f3b1be753259f20a89c128366

I'm adding unit tests for BA and FLBA. After that, I'll change TestSmallBatch to test with FLBA. I'll look at parquet-499 patch, too. Thanks.

@wesm @majetideepak Please review the updated PR. It contains tests for all primitive datatypes, all repetition levels, multiple pages per columns. I've fixed a few bugs in the process. This PR also incorporates fixes for PARQUET-502 and PARQUET-532.

Can you please use TYPED_TEST to reduce the code duplication? https://www.diffchecker.com/xahzfgom
See
https://github.com/apache/arrow/blob/master/cpp/src/arrow/types/primitive-test.cc#L200
for an example usage. I'm reviewing the rest of the patch now.

How's the timeline for this patch looking?


Make options overwritable

Options that affect the snapshot creation should be overwritable for manual triggers. This gives people more flexibility when using their own automations.

Implemented in v3.0
Overwritable options are "exclude_addons", "exclude_folders", "backup_name" and "backup_password"


lbryum is not a bitcoin wallet

Many places, particularly the README, reference this project as a Bitcoin wallet. It is not.
These should be corrected to explain what this project actually is and what it does.

#83 will fix this when merged


suport redux enhancer with extraEnhancers

Close #258

Coverage increased (+0.09%) to 95.023% when pulling 5fa07b6edf664497acba75c3f89bdc9711ccb2b9 on enhancer into 4102f3451d522aea196f32ed38e536872554d91f on master.


access: deklerk@ approvers + may-start-trybots

See https://golang.org/wiki/GerritAccess
(for things like x/tools/digraph, x/exp/cmd/modgraphviz, blog/ etc)
(per @dmitshur suggestion)

Hi Jean,
Thank you for contributing to the Go project and helping out so much in the world of modules! I've discussed this request with the team (/cc @golang/osp-team), and we agreed to grant you access. I've added you to the may-start-trybots and approvers groups now.
Please be familiar with the rules for voting and submitting changes as described at https://golang.org/wiki/GerritAccess#approver-access-approvers. If you're unsure or have any questions, please don't hesitate to ask us.
Additionally, as described at https://golang.org/wiki/GerritAccess#trybot-access-may-start-trybots, please be sure to at least skim CLs before starting a trybot run.
Thank you again for contributing, your help is greatly appreciated!

Woohoo, thanks!


oras pull with cache

Resolves #193. The cache is enabled only when the environment variable ORAS_CACHE is set in the CLI.
Example usage:
# Set cache root
export ORAS_CACHE=~/.oras/cache

# Pull artifacts as usual
oras pull localhost:5000/hello:latest

Could you please show the layout of the cache?

@sajayantony The cache uses github.com/containerd/containerd/content/local as its content store.
The layout of the cache is
$ORAS_CACHE
├── blobs
│   └── <algorithm>
│       └── <digest>
└── ingest
    └── <ref_digest>
        ├── data
        ├── ref
        ├── startedat
        ├── total
        └── updatedat

Note that the ingest folder is used only when downloading. After downloading, the ingest folder should be empty.

Hey, this is great. Does it make sense to include index.json (as in OCI Layout?)
We have OCIStore to manage this file: https://github.com/deislabs/oras/blob/main/pkg/content/oci.go
Can we combine that with the containerd/local cache?

@jdolitsky The cache store here must be a pure content-addressable storage (i.e. no refs) so that the cache can be used by multiple oras clients concurrently with no race conditions.
Besides, we are actually caching at the blob level not images. Therefore, it does not make sense to add an index.

Josh, are you asking if we can store the manifests? Both image-index and image-manifest, so they are cached and available to compute digests?

I'm thinking of Helm here. Had this type of cache (combined with index.json support) had existed, we would not have needed to implemented.. I understand an "oras" pull of reference when working with files does not require saving of the reference (e.g. localhost:5000/hello:latest).
This has value as general purpose local CAS, will approve. Later if needed we can make a hybrid store from this and OCIStore. @shizhMSFT merge when ready


fix(challenge): add support for IIFE arrow function

[x] I have read freeCodeCamp's contribution guidelines.
[x] My pull request has a descriptive title (not a vague title like Update index.md)
[x] My pull request targets the master branch of freeCodeCamp.
[x] None of my changes are plagiarized from another source without proper attribution.
[x] All the files I changed are in the same world language (for example: only English changes, or only Chinese changes, etc.)
[x] My changes do not use shortened URLs or affiliate links.

Add support for arrow function.

Remove secondary assert messages.

Tested locally.
Closes https://github.com/freeCodeCamp/freeCodeCamp/issues/18193
There is a PR https://github.com/freeCodeCamp/freeCodeCamp/pull/18223 for this but it looks stale.
If anyone has an opinion on the regex, or see a problem, I'm all for some feedback.
This is the regex from the old PR
assert(/\(\s*function\s*\(\s*\)\s*{|\(.*\(\s*\)\s*=>\s*{/.test(code))
This is the regex in this PR
assert(/\(\s*?(?:function|\(\s*?\))\s*?(?:=>|\(\s*?\)\s*?)\s*?{/.test(code))
I think the regex from the old PR is more legible. Also, I'm not sure if the non-greedy matching and non-capturing groups are really needed. I'm more than happy to change the regex to whatever is considered best, including any other versions.
BTW, there is no test for the removal of the makeNest() function call and I didn't add one. Not sure if it should be tested for?

@ojeytonwilliams  Is this better?
Side note: First I tried to add support for both IIFE syntaxes
(function() {
  console.log("A cozy nest is ready");
}())

(function() {
  console.log("A cozy nest is ready");
})()

Like so:
assert(/}(\)|\(\))(\(\)|\))/.test(code.replace(/\s/g, "")));
However I then later realized the first IIFE version is not valid syntax with an arrow function. I don't think it is worth trying to support both IIFE syntaxes and the arrow function. Right now I'm not even sure how I would do it, to be honest. So I just gave up.

@lasjorg That's much better, thanks!
I think your PR is fine as it stands.  It fixes the issue, which is all it needs to do.  Any further changes would warrant first starting a new issue to discuss it, anyway.
@RandellDawson would you mind giving this a quick look?  It LGTM, but I'm very new to the reviewing process.

Although not a related to arrow functions per say, don't forget with ES6, the following is technically an IIFE:
{
  console.log("This is an IIFE");
}

You can create private variables with let and const within it's scope.  It has some limitations like the fact that you can not pass arguments to it, but it is still an IIFE.  If you decide to create an issue for covering all the possible IIFEs, I would consider trying to include this syntax also.
That being said, I have tested this PR and tested the following two IIFE patterns and they work fine.
(function() {
  console.log("A cozy nest is ready");
})()

(() => {
  console.log("A cozy nest is ready");
})()

I am also in agreement that In a separate issue, we could discuss how to test for the following valid IIFE and the basic one I mentioned at the top here.
(function() {
  console.log("A cozy nest is ready");
}())

Thank you for your contribution to the page! 👍
We're happy to accept these changes, and look forward to future contributions. 🎉


Use feature flags for SearchBar and SuggestNewPointButton

Pull Request Test Coverage Report for Build<PHONE_NUMBER>4
Details

0 of 0   changed or added relevant lines in 0 files are covered.
3 unchanged lines in 1 file lost coverage.
Overall coverage decreased (-1.2%) to 72.789%

Files with Coverage Reduction
New Missed Lines
%

src/components/Map/components/MapAutocomplete.jsx
3
33.33%

Totals

Change from base Build<PHONE_NUMBER>2:
-1.2%

Covered Lines:
171

Relevant Lines:
235

💛  - Coveralls


remove v1.19-v1.22 generated api ref

removed generated api references v1.19-v1.22

/approve

Seems reasonable given we don't support older docs versions (something to revisit when we have capacity).
/lgtm


toXml got different result between 1.5-1 and 1.5-2

Hello, thandks for nice work.
example4-table2xml.lua in 1.5-1  got result as follows
XML Representation <people>     <person type="natural">       <city>Palmas-TO</city>       <name>Manoel</name>     </person>     <person type="natural">       <city>Palmas-TO</city>       <name>Breno</name>     </person>     <person type="legal">       <city>Brasília-DF</city>       <name>University of Brasília</name>     </person> </people>
while got different one as
XML Representation <people>     <person>       <person type="natural">         <city>Palmas-TO</city>         <name>Manoel</name>       </person>       <person type="natural">         <city>Palmas-TO</city>         <name>Breno</name>       </person>       <person type="legal">         <city>Brasília-DF</city>         <name>University of Brasília</name>       </person>     </person> </people>
in 1.5-2
Is this a feature of the new version?

Thanks for reporting. The example passed the name for a surrounding tag when calling xml2lua.toXml(). That is not needed anymore. Them, the example was just updated. Thanks for reporting.


Missing some titles in the jsguide.html page under 3 Source file structure section.

Hi, I realised we are missing some titles under the 3 Source file structure section.
jsguide
it shows us 3.3 and we do not have 3.3.1, 3.3.2 but we have 3.3.3.
The Table content links are being created inside of the "include/jsguide.js" with pure javascript.

更新 jsguide.html期 #656 #658


how do i edit command names

for example, instead of !myakish there will be !fish or something

@Xanthozz change the files in the commands folder


[Bug]: Docker image creation fails for ASP.NET Core 8 Web API project

Testcontainers version
3.6.0
Using the latest Testcontainers version?
 (Docker Inc.)
    Version:  0.1
    Path:     C:\Program Files\Docker\cli-plugins\docker-feedback.exe
  init: Creates Docker-related starter files for your project (Docker Inc.)
    Version:  v0.1.0-beta.10
    Path:     C:\Program Files\Docker\cli-plugins\docker-init.exe
  sbom: View the packaged-based Software Bill Of Materials (SBOM) for an image (Anchore Inc.)
    Version:  0.6.0
    Path:     C:\Program Files\Docker\cli-plugins\docker-sbom.exe
  scan: Docker Scan (Docker Inc.)
    Version:  v0.26.0
    Path:     C:\Program Files\Docker\cli-plugins\docker-scan.exe
  scout: Docker Scout (Docker Inc.)
    Version:  v1.2.0
    Path:     C:\Program Files\Docker\cli-plugins\docker-scout.exe

Server:
 Containers: 1
  Running: 0
  Paused: 0
  Stopped: 1
 Images: 9
 Server Version: 24.0.7
 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true
  Using metacopy: false
  Native Overlay Diff: true
  userxattr: false
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Cgroup Version: 1
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: io.containerd.runc.v2 runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: d8f198a4ed8892c764191ef7b3b06d8a2eeb5c7f
 runc version: v1.1.10-0-g18a0cb0
 init version: de40ad0
 Security Options:
  seccomp
   Profile: unconfined
 Kernel Version: <IP_ADDRESS>-microsoft-standard-WSL2
 Operating System: Docker Desktop
 OSType: linux
 Architecture: x86_64
 CPUs: 4
 Total Memory: 7.733GiB
 Name: docker-desktop
 ID: a2a88f6a-5f21-432f-b153-0252e0c04c27
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 HTTP Proxy: http.docker.internal:3128
 HTTPS Proxy: http.docker.internal:3128
 No Proxy: hubproxy.docker.internal
 Experimental: false
 Insecure Registries:
  hubproxy.docker.internal:5555
  <IP_ADDRESS>/8
 Live Restore Enabled: false

WARNING: No blkio throttle.read_bps_device support
WARNING: No blkio throttle.write_bps_device support
WARNING: No blkio throttle.read_iops_device support
WARNING: No blkio throttle.write_iops_device support
WARNING: daemon is not using the default seccomp profile

What happened?
I have an ASP.NET Core 8 Web API project with a dockerfile in it. Building an image using ImageFromDockerfileBuilder fails due to being unable to copy the project file (see log below). The dockerfile is generated automatically by Visual Studio 2022.
Building the docker image using the Docker CLI works just fine, and so does starting the container via Visual Studio using the Docker profile from launchSettings.json.
Steps to reproduce this behavior (using Visual Studio 2022):

Create a new ASP.NET Core Web API project. Do not use https, OpenAPI, controllers or any authentication. Enable Docker with the Docker OS set to Linux.
Create a new .NET Console App in the same solution. Add a reference to the OpenContainers NuGet package.
Use the code provided below in Program.cs and run the project.

using DotNet.Testcontainers.Builders;
using DotNet.Testcontainers.Configurations;
using DotNet.Testcontainers.Containers;
using DotNet.Testcontainers.Images;
using Microsoft.Extensions.Logging;

namespace Tester
{
    public static class Program
    {
        private static IFutureDockerImage? serviceImage;
        private static IContainer? serviceContainer;

        public static async Task Main()
        {
            Console.WriteLine("Hello, World!");

            var factory = LoggerFactory.Create(o => o.AddConsole());
            TestcontainersSettings.Logger = factory.CreateLogger("logger");

            serviceImage = new ImageFromDockerfileBuilder()
                .WithName("containertest")
                .WithDockerfileDirectory(CommonDirectoryPath.GetSolutionDirectory(), "ContainerTest")
                .WithDockerfile("Dockerfile")
                .Build();

            await serviceImage.CreateAsync();

            serviceContainer = new ContainerBuilder()
                .WithCleanUp(true)
                .WithEnvironment("ASPNETCORE_HTTP_PORTS", "8080")
                .WithImage(serviceImage)
                .WithPortBinding(8080, true)
                .Build();

            ushort port = serviceContainer.GetMappedPublicPort(8080);
            Console.WriteLine($"Port: {port}");

            await serviceContainer.StartAsync();

            Console.ReadLine();

            await serviceContainer.DisposeAsync();
            await serviceImage.DisposeAsync();
        }
    }
}

Relevant log output
info: logger[0]
      Connected to Docker:
        Host: npipe://./pipe/docker_engine
        Server Version: 24.0.7
        Kernel Version: <IP_ADDRESS>-microsoft-standard-WSL2
        API Version: 1.43
        Operating System: Docker Desktop
        Total Memory: 7.73 GB
info: logger[0]
      Pattern ^(.+)\/\.idea added to the regex cache
info: logger[0]
      Pattern ^([\\\/]?(\.idea\b|$)) added to the regex cache
info: logger[0]
      Pattern ^([\\\/]?((.+)\/\.vs\b|$)) added to the regex cache
info: logger[0]
      Pattern ^([\\\/]?(\.vs\b|$)) added to the regex cache
info: logger[0]
      Pattern ^([\\\/]?(\.dockerignore\b|$)) added to the regex cache
info: logger[0]
      Pattern ^([\\\/]?(Dockerfile\b|$)) added to the regex cache
fail: logger[0]
      COPY failed: file not found in build context or excluded by .dockerignore: stat ContainerTest/ContainerTest.csproj: file does not exist
Unhandled exception. System.InvalidOperationException: Docker image containertest:latest has not been created.
   at DotNet.Testcontainers.Clients.DockerImageOperations.BuildAsync(IImageFromDockerfileConfiguration configuration, ITarArchive dockerfileArchive, CancellationToken ct)
   at DotNet.Testcontainers.Clients.TestcontainersClient.BuildAsync(IImageFromDockerfileConfiguration configuration, CancellationToken ct)
   at DotNet.Testcontainers.Images.FutureDockerImage.UnsafeCreateAsync(CancellationToken ct)
   at DotNet.Testcontainers.Images.FutureDockerImage.CreateAsync(CancellationToken ct)
   at Tester.Program.Main() in F:\My projects\ContainerTest\Tester\Program.cs:line 27
   at Tester.Program.<Main>()

Additional information
Sample project:
https://github.com/Crumbler/ContainerTest

I think you are using incorrect paths. The build context, respectively the paths inside the Dockerfile, look wrong. The log message says

COPY failed: file not found in build context or excluded by .dockerignore: stat ContainerTest/ContainerTest.csproj: file does not exist

which makes sense, because your build context (root directory being F:\My projects\ContainerTest\ContainerTest\) does not contain ContainerTest\ContainerTest.csproj. The correct copy instruction path is ContainerTest.csproj.
Move the Dockerfile to your solution file directory and set the Dockerfile root directory to WithDockerfileDirectory(CommonDirectoryPath.GetSolutionDirectory(), string.Empty).

@HofmeisterAn Huge thanks to you.
I've edited the Dockerfile and now everything works as intended.
I've realized that Visual Studio uses the Solution folder as the build context by default.

👍 I have seen similar issues with VS's generated configuration before. I definitely need to take a look into the configuration VS generates. Maybe we can support it out of the box in Testcontainers.


The deleted table displays after manually refreshing Tables node if cloning the table then deleting the original table

Storage Explorer Version: 1.25.0-dev
Build Number: 20220705.1
Branch: main
Platform/OS: Windows 10
Architecture: ia32
Azurite Version: 3.18.0
How Found: Ad-hoc testing
Regression From: Not a regression
Steps to Reproduce

Install and run Azurite 3.18.0 -> Launch Storage Explorer.
Expand 'Emulator & Attached -> Storage Accounts -> (Emulator - Default Ports) (Key)' -> Tables.
Create a table named 'test' -> Right click the new created table -> Click 'Clone...'.
Type 'test123' to the 'New name' field -> Click 'Clone' -> The cloned table displays.
Delete table 'test' -> The deleted table disappears.
Refresh Tables node.
Check whether the deleted table 'test' doesn't display and the cloned table 'test123' displays.

Expected Experience

The deleted table 'test' doesn't display.
The cloned table 'test123' displays.

Actual Experience

The deleted table 'test' displays.
The cloned table 'test123' doesn't display.

Additional Context
This issue only reproduces when the original table name is same as the first few characters of the cloned table name.

Yet another problem with Azurite and not Storage Explorer. See https://github.com/Azure/Azurite/issues/1584.

@v-kellyluo This appears to be fixed as of Azurite 3.19.0.

Verified this this issue after installing Azurite 3.19.0. Fixed.


is it possible to delete my account on the blockchain?

is it possible to delete my account on the blockchain?
Then how about the coin held in my account if deleted?

Hi @aihuawu,
It is currently not possible to delete your account on the blockchain. We have a proposal for how to do so, but it has not been implemented yet.
Stay tuned.

Hi @aihuawu, I wanted to also note that we plan on refreshing the testnet periodically. All accounts should be purged by this action.
As @ladiJ2N mentioned above, additional functionality is coming.


Multiple Replicas for controller

Let's say I wanted to deploy multiple replicas of the controller for scalability and redundancy. What design method would you use for this? The watcher is going to alert each GameServer handler. Do we create a simple mutex to prevent duplication of efforts? This seems like a standard problem. Is there a standard solution?

That is a very good question. We have to break down the answers:

Scalability:

The controller has already a high QPS that will allow way more requests to the K8S API than usual. I am following the same approach as applications like Prometheus while communicating with K8S API. Though, I didn't have the chance to test the ingress controller with a huge Fleet of GS. Unfortunately, I don't have the cloud resources available. What I can say is that I would not expect issues in terms of scalability due to the nature of this application. The reconcile process is pretty simple and it is only creating a couple of resources. Not much business logic involved or external calls to DBs, APIs or external services. That said, I have a few tricks under my sleeve to improve a bit the Reconcile process. That means, splitting the OnAdd and OnUpdate into 2 different queues/channels and having 2 types of workers dealing with messages. Additionally, as an example of another application following similar pattern is Agones itself. There is only one single controller available and expecting that K8S will guarantee that this replica is always up and running.
Changing the Deployment manifest of the gameserver ingress controller and increasing the Replicas > 1 will not make much difference. Instead, it will put extra load on the API. That is because each controller has its own internal cache/watcher subscription.

Redundancy:
It is on my roadmap to implement lead election which will allow more than one controller running at the same time but only one will be handling events OnAdd OnUpdate. However, I would need to justify this effort with something that shows me that the time to elect a new leader is lower than a controller pod being scheduled again in case of a crash.

I hope that all makes sense and let me know if you need any other information.
Feel free to close the issue if that answer your question.

It makes perfect sense. I've been hacking on this code base for a while. I am quite familiar with it as a result.
Appreciate the thoughts. Happy Turkey Day!

If we want to rely on the service being online and have k8s replace it if its down, should we consider a very effective health check?

Great suggestion. I can add the health checks.

It will be part of the release 0.1.5

I have implemented LeaderElection. I'll test it next week in my cloud environment next week. Minikube is working nicely. Pretty straight forward really. My complications were getting RBAC just right for my rather complicated CICD pipeline.

Cool, I can also give it a try this weekend using the built in support from Controller Runtime.


anki fails to start with No module named BeautifulSoup

Issue description
Wanted to try anki so I installed it but on launch anki triggers

Traceback (most recent call last):
  File "/nix/store/lw7z3zdwcz57x3p7485vv3kvvn608mrc-anki-2.0.47/bin/.anki-wrapped", line 3, in <module>
    import aqt
  File "/nix/store/lw7z3zdwcz57x3p7485vv3kvvn608mrc-anki-2.0.47/lib/python2.7/site-packages/aqt/__init__.py", line 79, in <module>
    dialogs = DialogManager()
  File "/nix/store/lw7z3zdwcz57x3p7485vv3kvvn608mrc-anki-2.0.47/lib/python2.7/site-packages/aqt/__init__.py", line 46, in __init__
    from aqt import addcards, browser, editcurrent
  File "/nix/store/lw7z3zdwcz57x3p7485vv3kvvn608mrc-anki-2.0.47/lib/python2.7/site-packages/aqt/addcards.py", line 13, in <module>
    import aqt.editor, aqt.modelchooser, aqt.deckchooser
  File "/nix/store/lw7z3zdwcz57x3p7485vv3kvvn608mrc-anki-2.0.47/lib/python2.7/site-packages/aqt/editor.py", line 21, in <module>
    from BeautifulSoup import BeautifulSoup
ImportError: No module named BeautifulSoup

beautfiulsoup is packaged but I suspect it' due to python oddities
@the-kenny
Steps to reproduce
Technical details

system: "x86_64-linux"
host os: Linux 4.13.12, NixOS, 18.03.git.203c952 (Impala)
multi-user?: yes
sandbox: no
version: nix-env (Nix) 1.11.15
channels(root): "nixos-17.09.1502.19879836d1"
channels(teto): "nixos-18.03pre120249.9ea242c617"
nixpkgs: /home/teto/nixpkgs

This is fixed in commit https://github.com/NixOS/nixpkgs/commit/c28911e0f99100b588b5392c9a9d86435957c2c6
I can see your channel is at https://github.com/NixOS/nixpkgs-channels/commit/9ea242c617 which does not contain this fix.

indeed that fixed it thanks !


unread: Fix exception handling mentions in private messages.

Private messages with mentions are included in unread_mentions_counter, but of course don't have a stream ID, so should be skipped when calculating which streams contain unread mentions.
This code has always been wrong, it put undefined in the set of stream IDs with unread mentions.
What changed recently is that in 98162b7a3a01ef97aed935908e43c42ebd950bb9, we started using the stream_id to do an additional lookup in the unmuted version of the function, and doing that lookup with undefined threw an exception.

Fixes:

Screenshots and screen captures:

Self-review checklist

[ ] Self-reviewed the changes for clarity and maintainability
(variable names, code reuse, readability, etc.).

Communicate decisions, questions, and potential concerns.

[ ] Explains differences from previous plans (e.g., issue description).
[ ] Highlights technical choices and bugs encountered.
[ ] Calls out remaining decisions and concerns.
[ ] Automated tests verify logic where appropriate.

Individual commits are ready for review (see commit discipline).

[ ] Each commit is a coherent idea.
[ ] Commit message(s) explain reasoning and motivation for changes.

Completed manual review and testing of the following:

[ ] Visual appearance of the changes.
[ ] Responsiveness and internationalization.
[ ] Strings and tooltips.
[ ] End-to-end functionality of buttons, interactions and flows.
[ ] Corner cases, error conditions, and easily imagined bugs.

@Ddharmani3 it would be awesome if you can put up a follow-up PR to extend the unread.js tests such that they would have failed with this bug; i.e. a new test that passes including this PR but fails if you revert it.

@Ddharmani3 it would be awesome if you can put up a follow-up PR to extend the unread.js tests such that they would have failed with this bug; i.e. a new test that passes including this PR but fails if you revert it.

sure, I will create a follow-up PR for this by tomorrow.


Add update_member

Function explicitly update member (as compared to implicit via autofix=True in get_member).

Completed with 3e7611cd0337d5a2eb2ac120dee7951e3ec20af7


Is this project dead?

I am wondering if my PRs are ever going to be pulled in, is there still someone maintaining this project or not?

Any feedback on this would be appreciated, may you can add someone as a collaborator to keep things going on this project.

Just came across this issue while searching to see if it was possible to contribute to this project.
As a heavy user of Emacs/Magit who is slowly migrating to Sublime, this seems to hit the basic Magit functionality I need, but I would love to see this project continue to be maintained/enhanced (#262 would be a great next feature).
Maybe we could start a community fork with interested contributors, in lieu of an official response?

I thougt of that a while ago, but i am now using vs code so i am not needing sublimegit anymore

This project pretty much looks like the predecessor of GitSavvy.  I do maintain GitSavvy now but did not write its first versions.  In fact I did not know about SublimeGit ever.  I'm here because this package is "trending" on Package Control right now which made me curious.  😬


fix: Pass wiki page name as filter instead of route

Before:

After:

@surajshetty3416
Wiki page name is currently set to random
Older pages still have the route set as name, but newer won't
Hence scope is set via the route


Doc: Migrate Using Kernel Threads

Migrate page Using Kernel Threads from Confluence wiki to official wiki
Summary
Migrate Using Kernel Threads to official wiki
Impact
None, just update wiki
Testing
Build doc with make autobuild

[Experimental Bot, please feedback here]
NuttX PR Requirements Review:
This PR appears to meet the basic NuttX requirements, but could benefit from some clarification:
✅ Summary:

Why?  Clearly states the purpose is content migration to the official wiki.
What/How?  Specifies the exact page being moved.
Related Issues: Not applicable for content migration.

✅ Impact:

Correctly identifies no functional changes, only documentation movement.
However, specifying the "official wiki" URL would be helpful for reviewers.

⚠ Testing:

While building the documentation is a good step, it doesn't prove content accuracy.
Ideally, manually verify the migrated page renders correctly on the new platform.
Include links to both the old and new page locations for easy comparison.

In summary:  The PR is on the right track, but bolstering the Testing section with specific verification steps and links will make it stronger.


Develop high fedility prototype using Adobe XD

@AhrasAli bought licensing for Adobe Xd. This enables us to create the Hi-Fi design of our mobile app.

@AhrasAli has completed developing the Hi-Fi prototype using Adobe XD and compiled some user testing. Using the user testing feedback, he made version 2 of the Hi-Fi prototype.
The files and screenshots are posted in our Wiki.


improve the confused assert message

The test cases for bean parse are good, but some assert messages make people coufused, some fields are found but described as not working, while another fields are not found but described as found.

@Alanscut thanks for helping improve the unit tests. I think some of your assert messages may still be off, have commented same. Let me know if you disagree.
These asserts are very confusing, adding comments and clear assert messages helps everyone to understand them better.

@stleary  Thanks your suggestion! It make the assert messages more clear :+1:


Use Web Workers if browser supports them.

If the client's system has multiple cores (processors), and the browser implements the Web workers standard, FractalViewer should parallelize code execution when rendering a fractal.

Moving issue to private project tracker.


nodeA nodeB ordering

there is this statement in the docs:

(nodeA-nodeB where nodeA is always smaller than nodeB)

however in current master i cant find anything ensuring this and indeed there are edges that baseNode is greater than adjNode.
is this behaviour intended? docs are outdated?

The technical document describe the underlying storage mechanism. See here.
Please post questions to the forum first. When you are then sure it is an issue you or we'll create an issue.


🔑 Update Validator to 6.2.1

no issue
Uses new version of validator which checks also for in URL embedded script tags.
Return 'invalid' as well, when a query within the URL is submitted. A URL in general can have a querystring, but a website shouldn't have one.
Adds isEmptyOrWebsite method to validator and uses it in user schema for website.

@kirrg001: This should be fine now!


MCC/MNC list

I would like to use the module in Thailand and have received the following list of providers from my operator.
What is the smartest way to test the dial-in until the module has dialed in successfully?
True Move Company Ltd. (MCC: 520, MNC: 00, 04, 99):
2G: 900 und 1800 MHz
3G: Band 1 und 5
4G: Band 1, 3, 8 und 41
Advanced Wireless Network Company (AIS) (MCC: 520, MNC: 01, 03)
2G: 900 and 1800 MHz
3G: Band 1 and 8
4G: Band 1, 3, 8 und 41
True Move H Universal Communication  (MCC: 520, MNC: 04)
2G: 900 und 1800 MHz
3G: Band 1
4G: Band 1, 3, 8 und 41
dtac TriNet Co., Ltd. (MCC: 520, MNC: 05)
3G: Band 1 und 5
4G: Band 1, 3, 28 und 40

Hi Alex.  The simplest approach would be to call uDeviceOpen() on the cellular device as normal and then, rather than calling uNetworkInterfaceUp() (which uses automatic network selection), you would call uCellNetConnect() with the pMccMnc field set to point to the string giving the MCC/MNC of one of the networks (e.g. "52000" for the first TrueMove Company Ltd MCC/MNC), wait for the connection to succeed or fail, if it succeeds then call uCellNetDisconnect(), then repeat for the next MCC/MNC (e.g. "52004" for the next True Move Company Ltd. MCC/MNC).
It might be worth doing a network scan first to see what networks are actually available at that location (see the lte_cfg_main.c for how to do that, which also shows you how to configure the supported network bands, should you need it) in order to avoid wasting time trying to connect to networks which just aren't visible.
Since both uCellNetScanGetFirst() and uCellNetScanGetNext() return the MCC/MNC string anyway, you could just try each one in turn.

Hi Rob, I tried the lte_cfg_main.c example and get this:
AT+UMNOPROF?
+UMNOPROF: 100
OK
AT+UGPRF?
+UGPRF: 2,0,""
OK
AT+CFUN=4
OK
+CEDRXP: 4,"0010"
U_CELL_CFG: getting band mask for RAT 10 (in module terms 0).
AT+UBANDMASK?
+UBANDMASK: 0,524420,1,524416
OK
U_CELL_CFG: band mask for RAT 10 (in module terms 7) is 0x0000000000000000<PHONE_NUMBER>080084.
Band mask for RAT CAT-M1 is 0x0000000000000000<PHONE_NUMBER>080084.
Setting band mask for RAT CAT-M1 to 0x0000000000000000 000000400b0f189f...
I (28269) CELL: >>>>>>>>>>SARA is not alive<<<<<<<<<<
U_CELL_CFG: setting band mask for RAT 10 (in module terms 0) to 0x0000000000000000 000000400b0f189f.
AT+UBANDMASK=0,275063445663,0
ERROR
Unable to change band mask for RAT CAT-M1, it is likely your module does not support one of those bands.
U_CELL_CFG: getting band mask for RAT 10 (in module terms 0).
AT+UBANDMASK?
+UBANDMASK: 0,524420,1,524416
OK
U_CELL_CFG: band mask for RAT 10 (in module terms 7) is 0x0000000000000000<PHONE_NUMBER>080084.
Band mask for RAT CAT-M1 is 0x0000000000000000<PHONE_NUMBER>080084.
AT+CFUN?
+CFUN: 0
OK
AT+CFUN=1
OK
+CEDRXP: 4,"0010","0010","0001"
AT+COPS=?
+COPS: (1,"262 01","262 01","26201",0),(2,"262 01","262 01","26201",7),(1,"262 03","262 03","26203",0),(1,"262 02","262 02","26202",0),(1,"262 02","262 02","26202",7),(1,"262 03","262 03","26203",7),,(0,1,2,3,4),(0,1,2)
OK
AT
OK
AT+CFUN=0
OK
+CEDRXP: 4,"0010"
6: network: 26201
I (63329) CELL: >>>>>>>>>>SARA is not alive<<<<<<<<<<
4: network: 26201
3: network: 26203
2: network: 26202
1: network: 26202
0: network: 26203
U_CELL_NET: preparing to register/connect...
AT+CREG=2
OK
AT+CGREG=2
OK

Different RATs I think:
(1,"262 01","262 01","26201",0), (2,"262 01","262 01","26201",7)
                             ^                                ^
                            2G                               LTE

Hi Alex: are you OK with this now?

Hi Rob
Sorry for the intermediate question but why not add pMccMnc  to uNetworkCfgCell_t so that uNetworkInterfaceUp() can be used? This way pMccMnc  can be passed to uCellNetConnect in uNetworkPrivateChangeStateCell().

Hi @eeFLis and happy new year to you:  that's an excellent idea, I will add it to the TODO list.

Hi Alex: are you OK with this now?

Hi Rob, I'll tackle the task a little later. I'm currently working on another problem (not ubxlib).

Hi @eeFLis and happy new year to you: that's an excellent idea, I will add it to the TODO list.

Thank you, a happy new year to you too

@eeFLis: now done in commit https://github.com/u-blox/ubxlib/commit/41349f324ed52de37ade97f8de638b4ab1549f9a.

Hi Rob, I'll tackle the task a little later. I'm currently working on another problem (not ubxlib).

Hi Alex: do you still need this one open?

I'm going to assume this can be closed, please re-open (or open another issue) if there is more to discuss.


[Logger and vital] Vital files  value to be removed

vbat;rh;psi; can be removed from the logger and from the logger and the vital node

fixed in #412


[Bug] Store failures log message keeps reporting the failures table as None

Is this a new bug in dbt-core?

[X] I believe this is a new bug in dbt-core
[X] I have searched the existing issues, and I could not find an existing issue for this bug

Current Behavior
I didn't see anyone mention this yet so I'm not ruling out that it is user error somewhere but after upgrading to 1.4.1 all of our test failure logs stopped showing the --store-failures table in the query:
[2023-02-09, 00:23:44 UTC] {dbt_hook.py:154} INFO - 00:23:44    See test failures:
[2023-02-09, 00:23:44 UTC] {dbt_hook.py:154} INFO -   ------------------
[2023-02-09, 00:23:44 UTC] {dbt_hook.py:154} INFO -   select * from None
[2023-02-09, 00:23:44 UTC] {dbt_hook.py:154} INFO -   ------------------

Expected Behavior
[2023-02-01, 11:44:39 UTC] {dbt_hook.py:154} INFO - 11:44:39    See test failures:
[2023-02-01, 11:44:39 UTC] {dbt_hook.py:154} INFO -   ---------------------------------------------------------------------
[2023-02-01, 11:44:39 UTC] {dbt_hook.py:154} INFO -   select * from PROD.dbt_test__audit.measures_rate_of_change_validation
[2023-02-01, 11:44:39 UTC] {dbt_hook.py:154} INFO -   ---------------------------------------------------------------------

Steps To Reproduce
dbt test with any failing tests
Relevant log output
No response
Environment
- OS: ubuntu
- Python: 3.9.10
- dbt: 1.4.1

Which database adapter are you using with dbt?
snowflake
Additional Context
I tried poking around the new logging code to see if there was something obvious. It looks like the property that it is trying to print is self.relation_name but I don't know what should go there in its place. (code)

@jsnb-devoted Thanks for opening!
I wasn't able to reproduce this quickly, when I tried just now:
-- models/my_model.sql
select 1 as id
union all
select 1 as id

# models/schema.yml
version: 2
models:
  - name: my_model
    columns:
      - name: id
        tests:
          - unique

$ dbt build --store-failures
23:57:38  Running with dbt=1.4.1
...
23:57:39  Failure in test unique_my_model_id (models/schema.yml)
23:57:39    Got 1 result, configured to fail if != 0
23:57:39
23:57:39    compiled Code at target/compiled/test/models/schema.yml/unique_my_model_id.sql
23:57:39
23:57:39    See test failures:
  -----------------------------------------------------------------------
  select * from "jerco"."dbt_jcohen_dbt_test__audit"."unique_my_model_id"
  -----------------------------------------------------------------------
23:57:39
23:57:39  Done. PASS=2 WARN=0 ERROR=1 SKIP=0 TOTAL=3

So, some follow-up questions that may (or may not) help with debugging, and getting to a reproduction case:

Are you seeing this for all tests? Some tests in particular?
If you pop open manifest.json and take a look at one of the tests in question, does it have database, schema, alias defined, and only relation_name missing / None?

Thanks for taking a look at this @jtcohen6 -- that definitely makes me think it is us. I'm AFK for a bit but I will check out the manifest first thing tomorrow.

As you expected -- relation_name is null and database/schema/alias are all populated as expected.
This has happened for all test failures that I have seen so far. Not sure I have a great way of confirming it is truly 100% of them.
For this case I ran/tested the model directly:
dbt run -m sample_model
dbt -- test -m sample_model --store-failures

Below is the full node from the manifest:
        "test.devoted.dbt_expectations_expect_table_row_count_to_be_between_sample_model_1.374a0bca32": {
            "test_metadata": {
                "name": "expect_table_row_count_to_be_between",
                "kwargs": {
                    "min_value": 1,
                    "model": "{{ get_where_subquery(ref('sample_model')) }}"
                },
                "namespace": "dbt_expectations"
            },
            "database": "dev_jbrownstein",
            "schema": "dbt_test__audit",
            "name": "dbt_expectations_expect_table_row_count_to_be_between_sample_model_1",
            "resource_type": "test",
            "package_name": "devoted",
            "path": "dbt_expectations_expect_table__1a15a1299c7337ce59664ee712e0fcbb.sql",
            "original_file_path": "models/sample_model_group/sample_model/schema.yml",
            "unique_id": "test.devoted.dbt_expectations_expect_table_row_count_to_be_between_sample_model_1.374a0bca32",
            "fqn": [
                "devoted",
                "sample_model_group",
                "sample_model",
                "dbt_expectations_expect_table_row_count_to_be_between_sample_model_1"
            ],
            "alias": "dbt_expectations_expect_table__1a15a1299c7337ce59664ee712e0fcbb",
            "checksum": {
                "name": "none",
                "checksum": ""
            },
            "config": {
                "enabled": true,
                "alias": "dbt_expectations_expect_table__1a15a1299c7337ce59664ee712e0fcbb",
                "schema": "dbt_test__audit",
                "database": null,
                "tags": [],
                "meta": {},
                "materialized": "test",
                "severity": "ERROR",
                "store_failures": null,
                "where": null,
                "limit": null,
                "fail_calc": "count(*)",
                "warn_if": "!= 0",
                "error_if": "!= 0"
            },
            "tags": [],
            "description": "",
            "columns": {},
            "meta": {},
            "docs": {
                "show": true,
                "node_color": null
            },
            "patch_path": null,
            "build_path": "target/run/devoted/models/sample_model_group/sample_model/schema.yml/dbt_expectations_expect_table__1a15a1299c7337ce59664ee712e0fcbb.sql",
            "deferred": false,
            "unrendered_config": {
                "alias": "dbt_expectations_expect_table__1a15a1299c7337ce59664ee712e0fcbb"
            },
            "created_at":<PHONE_NUMBER>.90605,
            "relation_name": null,
            "raw_code": "{{ dbt_expectations.test_expect_table_row_count_to_be_between(**_dbt_generic_test_kwargs) }}{{ config(alias=\"dbt_expectations_expect_table__1a15a1299c7337ce59664ee712e0fcbb\") }}",
            "language": "sql",
            "refs": [
                [
                    "sample_model"
                ]
            ],
            "sources": [],
            "metrics": [],
            "depends_on": {
                "macros": [
                    "macro.dbt_expectations.test_expect_table_row_count_to_be_between",
                    "macro.dbt.get_where_subquery",
                    "macro.devoted.ref",
                    "macro.elementary.materialize_test",
                    "macro.dbt_snowflake.materialization_test_snowflake"
                ],
                "nodes": [
                    "model.devoted.sample_model"
                ]
            },
            "compiled_path": "target/compiled/devoted/models/sample_model_group/sample_model/schema.yml/dbt_expectations_expect_table__1a15a1299c7337ce59664ee712e0fcbb.sql",
            "compiled": true,
            "compiled_code": "\n\n\n\n    with grouped_expression as (\n    select\n        \n        \n    \n  \n( 1=1 and count(*) >= 1\n)\n as expression\n\n\n    from dev_jbrownstein.transform.sample_model\n    \n\n),\nvalidation_errors as (\n\n    select\n        *\n    from\n        grouped_expression\n    where\n        not(expression = true)\n\n)\n\nselect *\nfrom validation_errors\n\n\n\n\n\n",
            "extra_ctes_injected": true,
            "extra_ctes": [],
            "column_name": null,
            "file_key_name": "models.sample_model"
        },

One other data point to add is that the test audit table dbt_expectations_expect_table__1a15a1299c7337ce59664ee712e0fcbb does exist and has the expected failure row.

For tests the relation_name is only set if "store_failures" is set in the test config, and it isn't for that test node: "store_failures": null.  The logging message should be fixed though, to not display that query when there is no relation_name.  What are you using that logging message for if you're not storing the failures for the test?

@gshank -- we aren't setting the store_failures setting in the test config but we are specifying --store-failures flag in the cli call to dbt test. I would expect the manifest to reflect store_failures: true when we use the flag like that even if we don't have in the test config and for the table to show in the log.
We use the flag so that it can be an opt in feature decided by the developer in the orchestration code.

Okay, the problem is that we moved generation of relation_name to parse time. The manifest is probably generated in a prior run (not the one with --store-failures), and so when the test command is run, the relation_name is not set in the test nodes.
We could either re-generate the relation_name at compile time or always set it on tests. My inclination would be to re-generate it at compile time, but I'll let @jtcohen6 weigh in on that.

We could either re-generate the relation_name at compile time or always set it on tests. My inclination would be to re-generate it at compile time, but I'll let @jtcohen6 weigh in on that.

Ah, right, this makes sense! The parse took place without --store-failures (no relation_name), and then the test is rerun with --store-failures (re-compiled but not re-parsed). I'm happy with your instinct here @gshank.

Thank you @gshank + @jtcohen6!


Add Spark Hire

What is the vendor's name?
Spark Hire
What is the vendor's pricing site?
https://www.sparkhire.com/pricing
What is the base pricing? Use the lowest tier that looks sane for a small business customer, not free or personal tiers.
$149/month
What is the minimum pricing for SSO support?
Paid add-on - unspecified price
Does this pricing info come from a quote or other non-public source?
No
Are there any caveats we should list in the footnotes?
No

Hey @mattharper8 ,
as this repository was not maintained for a long time, I decided to start a new initiative under https://ssotax.org/. The data is already way more up2date than in this repository! Moreover I integrated feedback from the community like a Friends of SSO page.
Feel free to contribute there. I will merge changes quickly, I promise!


Will batch predicion be supported?

Seems it is not supported currently. As predict row by row is slow, I just wonder if this feature will be added.

Could you please provide a bit more detail on your use case? In which case you've found the row by row prediction slow? Thank you!

I'm using mleap with a deep learning based ranking model developed by bigdl,  I need to score hunderds of items for each user. If the score process for one user is executed in a single batch, the prediction time is much shorter.


[PDI-19003] "Unexpected error during job metadata load" when using Ge…

…t Parameters on transformation/job entries when connected to the repository
@pentaho-lmartins
@smmribeiro
@bcostahitachivantara

:white_check_mark: Build finished in 17m 54s
Build command:
mvn clean verify -B -e -Daudit -amd -pl ui

:ok_hand: All tests passed!
Tests run: 1172, Failures: 0, Skipped: 0    Test Results

:information_source:  This is an automatic message


Remove/redirect open source contribution methods on China site

https://app.asana.com/0/694028898835437/1129644507505018/f

there are 4 places changed:
about page:

front page footer:

legal page: (i don't know if code MIT license show hide too)

user settting page:

please remove this two buttons too, thanks


use latest coreos-stable for testing to avoid upgrades during deployment

Fixes #1326.

ci check this


[BUG] [PG]: Relational Query generating faulty SQL query

What version of drizzle-orm are you using?
0.26.3
What version of drizzle-kit are you using?
0.18.1
Describe the Bug
So I have this schema:
export const Campaign = pgTable('Campaign', {
    id: serial('id').primaryKey().notNull(),
    templateId: campaignTemplateEnum('templateId'),
    name: text('name').notNull(),
    active: boolean('active').default(true).notNull(),
  });

  export const campaignRelations = relations(Campaign, ({ one, many }) => ({
    Characters: many(Character),
    Attributes: many(CampaignAttribute),
    Conditions: many(CampaignCondition),
  }));

export const CampaignAttribute = pgTable(
    'CampaignAttribute',
    {
      id: serial('id').notNull(),
      campaignId: integer('campaignId')
        .notNull()
        .references(() => Campaign.id, { onDelete: 'cascade', onUpdate: 'cascade' }),
      name: text('name').notNull(),
      description: text('description').default('').notNull(),
      color: char('color', { length: 9 }).notNull(),
      rollable: attributeRollableEnum('rollable'),
      portrait: attributePortraitEnum('portrait'),
    },
    (table) => ({
      primaryKey: primaryKey(table.id, table.campaignId),
    })
  );

  export const campaignAttributeRelations = relations(CampaignAttribute, ({ one, many }) => ({
    CharacterAttributes: many(CharacterAttribute),
    Campaign: one(Campaign, {
      fields: [CampaignAttribute.campaignId],
      references: [Campaign.id],
    }),
  }));

  export const CampaignCondition = pgTable(
    'CampaignCondition',
    {
      id: serial('id').notNull(),
      campaignId: integer('campaignId')
        .notNull()
        .references(() => Campaign.id, { onDelete: 'cascade', onUpdate: 'cascade' }),
      name: text('name').notNull(),
    },
    (table) => ({
      primaryKey: primaryKey(table.id, table.campaignId),
    })
  );

  export const campaignConditionRelations = relations(CampaignCondition, ({ one, many }) => ({
    CharacterConditions: many(CharacterCondition),
    Campaign: one(Campaign, {
      fields: [CampaignCondition.campaignId],
      references: [Campaign.id],
    }),
  }));

  export const Character = pgTable('Character', {
	id: serial('id').primaryKey().notNull(),
	campaignId: integer('campaignId')
		.notNull()
		.references(() => Campaign.id, { onDelete: 'cascade', onUpdate: 'cascade' }),
	accessToken: text('accessToken').notNull(),
	name: text('name').notNull(),
    ///...
});

export const characterRelations = relations(Character, ({ one, many }) => ({
	Campaign: one(Campaign, {
		fields: [Character.campaignId],
		references: [Campaign.id],
	}),
	Attributes: many(CharacterAttribute),
	Conditions: many(CharacterCondition),
}));

export const CharacterAttribute = pgTable(
	'CharacterAttribute',
	{
		campaignId: integer('campaignId').notNull(),
		characterId: integer('characterId')
			.notNull()
			.references(() => Character.id, { onDelete: 'cascade', onUpdate: 'cascade' }),
		attributeId: integer('attributeId').notNull(),
		value: integer('value').notNull().default(0),
		maxValue: integer('maxValue').notNull().default(0),
		extraValue: integer('extraValue').notNull().default(0),
		show: boolean('show').notNull().default(true),
	},
	(table) => ({
		primaryKey: primaryKey(table.attributeId, table.characterId),
		characterAttributeCampaignAttribute: foreignKey({
			columns: [table.attributeId, table.campaignId],
			foreignColumns: [CampaignAttribute.id, CampaignAttribute.campaignId],
		})
			.onUpdate('cascade')
			.onDelete('cascade'),
	})
);

export const characterAttributeRelations = relations(CharacterAttribute, ({ one }) => ({
	Character: one(Character, {
		fields: [CharacterAttribute.characterId],
		references: [Character.id],
	}),
	CampaignAttribute: one(CampaignAttribute, {
		fields: [CharacterAttribute.attributeId, CharacterAttribute.campaignId],
		references: [CampaignAttribute.id, CampaignAttribute.campaignId],
	}),
}));

export const CharacterCondition = pgTable(
	'CharacterCondition',
	{
		campaignId: integer('campaignId').notNull(),
		characterId: integer('characterId')
			.notNull()
			.references(() => Character.id, { onDelete: 'cascade', onUpdate: 'cascade' }),
		conditionId: integer('conditionId').notNull(),
		link: text('link'),
		value: boolean('value').notNull().default(false),
	},
	(table) => ({
		primaryKey: primaryKey(table.conditionId, table.characterId),
		characterConditionCampaignCondition: foreignKey({
			columns: [table.conditionId, table.campaignId],
			foreignColumns: [CampaignCondition.id, CampaignCondition.campaignId],
		})
			.onUpdate('cascade')
			.onDelete('cascade'),
	})
);

export const characterConditionRelations = relations(CharacterCondition, ({ one }) => ({
	Character: one(Character, {
		fields: [CharacterCondition.characterId],
		references: [Character.id],
	}),
	CampaignCondition: one(CampaignCondition, {
		fields: [CharacterCondition.conditionId, CharacterCondition.campaignId],
		references: [CampaignCondition.id, CampaignCondition.campaignId],
	}),
}));

By calling this:
const campaign = await db.query.Campaign.findFirst({
    where: eq(Campaign.id, campaignId),
    with: {
      Characters: {
        with: {
          Attributes: { with: { CampaignAttribute: true } },
          Conditions: true,
        },
      },
    },
  });

it generates a faulty query that cannot run:
ERROR:  argument of OR must be type boolean, not type integer
LINE 82: ...                                                  "Campaign_...

I have looked up the generated SQL and, for the sake of compatibility, I'll leave it as a file.
pgquery.txt
So, at line 82-83, we see that it's trying to compare 2 values using OR inside a count() function. Of course, using the OR in this context is not valid and the query is not completed.
Expected behavior
What I think it was trying to say was:
when count(
    "Campaign_Characters_Attributes_CampaignAttribute"."id"
) = 0
or count(
    "Campaign_Characters_Attributes_CampaignAttribute"."campaignId"
) = 0 then '[]'

but it generated the comparison inside one count() function instead.
This query is really messy and I'm not an SQL expert, so this was the solution I came up with to solve this error and when changing these lines, the query actually works.
I think this has something to do with grouped primary keys. For some reason, every relational query that I do that involves a table with grouped primary keys, something always goes wrong.
Environment & setup
No response

The query is generated correctly and using or on two columns actually works in some cases and was used intentionally, but apparently doesn't work in Postgres. I'll look at how this can be worked around.

@alyssapiresfernandescefet this should now be fixed in<EMAIL_ADDRESS>

Using<EMAIL_ADDRESS>this query:
const campaigns = await db.query.Campaign.findMany({
		where: eq(Campaign.userId, session.userId),
})

now generates this SQL:
select "id", "userId", "templateId", "name", "active" from "Campaign" where $1"Campaign"."userId"$2$3$4 -- params: [{"value":[""]}, {"value":[" = "]}, [object Object], {"value":[""]}]

I got it fixed by using the callback:
const campaigns = await db.query.Campaign.findMany({
    where: (Campaign, { eq }) => eq(Campaign.userId, session.userId),
  })

But now other queries in my app fail with some errors that I have not seen before: Relation PlanPrice not found. PlanPrice is a simple table that just stores my Stripe plans priceIds on the database. I checked all the relations tables and I don't think the problem is in my end.
For convenience measures, I will also add the tables in question here:
const user = await db.query.User.findFirst({
	where: eq(User.id, userId),
	with: {
		PlanPrice: { with: { PlanFeatures: true } },
	},
}); // This call throws the error I mentioned above.

// ---------------
// ---------------
// ---------------

export const PlanPrice = pgTable('PlanPrice', {
	priceId: text('priceId').primaryKey().notNull(),
	plan: planEnum('plan')
		.notNull()
		.references(() => PlanFeatures.plan),
	value: real('value').notNull(),
	yearly: boolean('yearly').notNull(),
});

export const planPriceRelations = relations(PlanPrice, ({ one, many }) => ({
	PlanFeatures: one(PlanFeatures, {
		fields: [PlanPrice.plan],
		references: [PlanFeatures.plan],
	}),
	users: many(User),
}));

export const PlanFeatures = pgTable('PlanFeatures', {
	plan: planEnum('plan').primaryKey().notNull(),
	maxCampaigns: integer('maxcampaigns').notNull(),
	maxPlayers: integer('maxPlayers').notNull(),
	maxNpcs: integer('maxNpcs').notNull(),
	maxEnemies: integer('maxEnemies').notNull(),
	maxWeapons: integer('maxWeapons').notNull(),
	maxSpells: integer('maxSpells').notNull(),
	maxItems: integer('maxItems').notNull(),
	maxScenarios: integer('maxScenarios').notNull(),
	assetStorageCapacity: integer('assetStorageCapacity').notNull(),
	customSoundboards: integer('customSoundboards').notNull(),
	freeTemplates: boolean('freeTemplates').notNull(),
	noAds: boolean('noAds').notNull(),
	premiumTemplates: boolean('premiumTemplates').notNull(),
	copyCampaign: boolean('copycampaign').notNull(),
	customThemes: boolean('customThemes').notNull(),
	printSheet: boolean('printSheet').notNull(),
	premiumPortrait: boolean('premiumPortrait').notNull(),
	characterTemplates: boolean('characterTemplates').notNull(),
	discordBeyondRole: boolean('discordBeyondRole').notNull(),
	beyondPortrait: boolean('beyondPortrait').notNull(),
	campaignChat: boolean('campaignChat').notNull(),
});

export const planFeaturesRelations = relations(PlanFeatures, ({ many }) => ({
	planPrices: many(PlanPrice),
}));

export const User = pgTable('User', {
	id: serial('id').primaryKey().notNull(),
	customerId: text('customerId'),
	alias: text('alias').notNull(),
	email: text('email').notNull(),
	password: text('password').notNull(),
	active: boolean('active').default(false).notNull(),
	priceId: text('priceId').references(() => PlanPrice.priceId),
	subscriptionStatus: subscriptionStatusEnum('subscriptionStatus').default('active').notNull(),
	subscriptionEnd: date('subscriptionEnd', { mode: 'date' })
		.default(sql`(CURRENT_TIMESTAMP(3))`)
		.notNull(),
});

export const userRelations = relations(User, ({ one, many }) => ({
	PlanPrice: one(PlanPrice, {
		fields: [User.priceId],
		references: [PlanPrice.priceId],
	}),
	campaigns: many(Campaign), //This relation was omitted in the Campaign table I showed before.
}));

Well, I think this issue was solved, but with it came some side effects. Should I close this one and open another issue addressing these errors?

I'm getting some similar errors.
If I do something like this:
export const getAdminUserFromEmail = async (db: AdminDatabase, email: string) => {
  return db.query.adminUsers.findFirst({
    where: eq(adminUsers.email, email)
  });
};

I'll get:
error PostgresError: syntax error at or near "$2"
    at ErrorResponse (webpack-internal:///(sc_server)/../../packages/admin/node_modules/.pnpm/postgres@3.3.5/node_modules/postgres/src/connection.js:528:70)
    at handle (webpack-internal:///(sc_server)/../../packages/admin/node_modules/.pnpm/postgres@3.3.5/node_modules/postgres/src/connection.js:335:728)
    at Socket.data (webpack-internal:///(sc_server)/../../packages/admin/node_modules/.pnpm/postgres@3.3.5/node_modules/postgres/src/connection.js:223:17)
    at Socket.emit (node:events:513:28)
    at Socket.emit (node:domain:489:12)
    at addChunk (node:internal/streams/readable:324:12)
    at readableAddChunk (node:internal/streams/readable:297:9)
    at Readable.push (node:internal/streams/readable:234:10)
    at TCP.onStreamRead (node:internal/stream_base_commons:190:23)
    at TCP.callbackTrampoline (node:internal/async_hooks:130:17)

If I pass a function to where, it works but I get weird type errors:
export const getAdminUserFromEmail = async (db: AdminDatabase, email: string) => {
  return db.query.adminUsers.findFirst({
    where: (au, { eq }) => eq(au.email, email),
  });
};

Can anybody confirm if this issues is fixed? There has been several changes after this and I think there was not tracked. I think this was fixed.

Yes, it was. Thank you, Drizzle team!


wav to mp3

Would love to see a context menu option to convert wav to mp3 or other compressed audio, much like your image resizer.
📝 Provide a description of the new feature
What is the expected behavior of the proposed feature?  What is the scenario this woudl be used?

If you'd like to see this feature implemented, add a 👍 reaction to this post.

See also #3442

Being tracked in #3442


kwok controller deployment shouldn't schedule onto a kwok node

What would you like to be added?
Currently I'm adding in a node affinity so that the kwok controller deployment doesn't schedule onto a kwok node here in Karpenter: https://github.com/kubernetes-sigs/karpenter/blob/main/hack/install-kwok.sh#L34-L40
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: kwok.x-k8s.io/node
                operator: DoesNotExist

I see the current deployment spec doesn't have this, https://github.com/kubernetes-sigs/kwok/blob/main/kustomize/kwok/deployment.yaml
Which means that I have to orchestrate patching this in my kustomize, when I think it's pretty normal to not want to schedule the pod that needs to run to a fake node.
Happy to help add this in if it would be supported.
Why is this needed?
Kwok controller pods shouldn't schedule onto a kwok node, since the controller wouldn't be able to run.

That makes sense, soon I will support helm chart #1138. this one in the chart which may be more appropriate. WDYT?

If you're porting over everything to a helm chart, that makes sense to me.  I'm also thinking it probably could be added to the existing deployment spec in the meantime, right? Unless you think the chart will be coming out with the next release.

I've released helm chart 0.0.1, looks pretty well.
https://github.com/kubernetes-sigs/kwok/blob/main/charts/kwok/
https://artifacthub.io/packages/helm/kwok/kwok
I plan to release kwok 0.6 and kwok chart 0.1 this week.

Got it. I'm using Kwok in Kind clusters in Karpenter presubmit tests. I currently have 10 replicated copies of the kwok install, all pointing to different partitions to get around the scalability limits.
Is it possible to add configuration in the helm chart for https://github.com/kubernetes-sigs/kwok/blob/main/kustomize/kwok/deployment.yaml#L16
    value: --manage-nodes-with-label-selector=kwok-partition=a

or make it so that there's some way in the helm chart to replicate the deployment?

The roadmap had added an operator for this.

#1122
#1126

value: --manage-nodes-with-label-selector=kwok-partition=a

I feel adding to helm chart is more appropriate. it just needs to add a new parameter in chart


Compute perplexity

https://github.com/ggerganov/llama.cpp/commit/486ae645fd3eda8b9d7413d5ff34fb65a3e337fb
This should be part of the library (potentially part of InferenceStats).

@philpax I implemented it, but could you expand on perplexity being a part of InferenceStats ? - since perplexity computation is generally done on prompts and is not a part of inference cycle afaik. Having it as a separate tool (as llama.cpp does) might be the way to go.

Hi, awesome to see you've implemented it!
Yes, you're absolutely right - my understanding of the perplexity calculation was wrong when I wrote that issue. It should indeed be separate; I'm not sure what the best interface would be, but I think I'd be fine with InferenceSession::perplexity or similar for now.


Add skip_retries and skip_scheduled options to Sidekiq macro

First, thanks for your work on HireFire!
With very large scheduled and retry queues, the enumeration over the queues to count relevant jobs can cause very long requests. On platforms like Heroku, this will cause the request to timeout before being completed, thus creating checkup issues for the app.
Let me know if you think there's a better way to approach this. It didn't seem like there was a more performant way of calculating these sums, so I opted to skip them. While not being able to pre-spin-up workers for scheduled or soon-to-be-retried jobs is less than ideal, it is certainly favorable to app-wide checkup issues.

Hi @prsimp,
Thanks for the PR!
Adding this functionality seems fine to me.
I see that you've added two accessors, as well as the options variable. However, you're currently not using the options variable.
I think it'd be better to remove the two accessors and use the options variable that you've defined instead to configure whether or not to skip retries/scheduled.
i.e. instead of skip_retries and skip_scheduled, use options[:skip_retries] and options[:skip_scheduled]. This way the configuration isn't global and you can have different options for different queues if necessary.
If you can make that change, and amend/rebase, I'll pull it in. :)

Then you can simply use:
HireFire::Macro::Sidekiq.queue(skip_retries: true, skip_scheduled: true)
HireFire::Macro::Sidekiq.queue("mailer", skip_retries: true, skip_scheduled: true)
# etc

If you could also add a comment with an example using these options that'd be great!

@meskyanichi -- I debated on which implementation I liked better, but ended up going with global setting as the first pass and forgot to remove some of the options code. In the end, it just made the switch to an options-based implementation even easier ;)
I've added examples as well. Thanks for the quick feedback and let me know if there's anything else I can do!

Thanks @prsimp! I've merged your commit and released v0.3.9. :+1:


SRM RN - added hotfix tab

Harness Developer Pull Request
Thanks for helping us make the Developer Hub better. The PR will be looked at
by the maintainers.
What Type of PR is This?

[ ] Issue
[ ] Feature
[ ] Maintenance/Chore

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

Issue(s)

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

[ ] Tested Locally
[ ] Optional Screen Shoot.

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

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

I'm unable to comment on the line.
As per the style guide, in The ErrorBudgetReset API, ErrorBudgetReset should be boldface.


ARMNN - Training Support

Hi, is there an ARM NN training support?
Regards
Yao

Hi @pure-water
There is a selection of online guides available at https://developer.arm.com/solutions/machine-learning-on-arm/developer-material/how-to-guides which might be helpful? If you have any specific questions that aren't covered there then please raise an issue here on GitHub ticket and we might be able to help.
Best regards,
Mike

Hi @Mike
Apology. I should have said it with more clarification. I mean "training support" (agains inference as now) on ARM NN level ?
Regards
Yao

Hi @pure-water,
we support purely inference in armnn.
Regards

Hi Teresa，
Is there any plan for "training support" in the roadmap?
Regards

Hi,
no, there is not.
Kindest Regards


feat: display subscriptions table on poke

Description
https://github.com/dust-tt/tasks/issues/572

displays a list of all subscriptions on Poke. For now, the whole JSON of the active subscription is kept. We'll likely want to get rid of it or at least collapse it by default
Risk

Deploy Plan

wrong screenshot :)


Added min date option to the datetime picker component

Changes

Added min date option to the DateTime picker (previous dates disabled)
Set a minimum of DateTime picker in the marketplace to be one day.

Related Issues

https://github.com/threefoldtech/js-sdk/issues/1581

Codecov Report

Merging #1627 into development will not change coverage.
The diff coverage is 0.00%.

@@             Coverage Diff              @@
##           development    #1627   +/-   ##
============================================
  Coverage        32.15%   32.15%
============================================
  Files              134      134
  Lines            12754    12754
============================================
  Hits              4101     4101
  Misses            8653     8653

Impacted Files
Coverage Δ

jumpscale/sals/marketplace/deployer.py
12.57% <0.00%> (ø)

Continue to review full report at Codecov.

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


Documentation issues

Following the documentation provided in this Wiki, some things are not clear:
1) SSLEngine required
Error
Invalid command 'SSLEngine', perhaps misspelled or defined by a module not included in the server configuration

Solution
mod_ssl still needs to be enabled (a2enmod ssl)
2) ServerAdmin required
Error
[Mon Nov 13 14:29:51.987135 2017] [md:error] [pid 30:tid<PHONE_NUMBER>12352] (22)Invalid argument: no contact information for md example.com

Solution
I added the ServerAdmin
This mentioned at the last section.
3) MDCertificateAgreement required
Error
[Mon Nov 13 14:53:17.692973 2017] [md:error] [pid 29:tid<PHONE_NUMBER>56384] (70008)Partial results are valid but processing is incomplete: example.com: the CA requires you to accept the terms-of-service as specified in <https://letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.pdf>. Please read the document that you find at that URL and, if you agree to the conditions, configure "MDCertificateAgreement url" with exactly that URL in your Apache. Then (graceful) restart the server to activate.

[EDIT]: Even after a restart, I cannot access my domain via https.
Solution
I added
MDCertificateAgreement https://letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.pdf

4) Server restart required
Error
Now, everything is configured, the server tells me the following:
[Mon Nov 13 14:55:52.800165 2017] [md:notice] [pid 29:tid<PHONE_NUMBER>92416] AH10059: The Managed Domain example.com has been setup and changes will be activated on next (graceful) server restart.

I expeted, that the certifcates are fully installed and renewed automatically without further reload/restart.
Resoution
Unknown. What do you recommend?

I just realized, that you mention 3) and 4) under apache already:

There are 2 additional settings that are necessary for a Managed Domain: ServerAdmin and MDCertificateAgreement. The mail address of ServerAdmin is used to register at the CA (Let's Encrypt by default). The CA may use it to notify you about changes in its service or status of your certificates.
The second setting, MDCertificateAgreement, is the URL of the Terms of Service of the CA. When you configure the URL, you confirm that you have read and agree to the terms described in the linked document. Before you do that, the CA will not hand out certificates to you.

For now (and the documentation needs to be more clear on that), the server needs a graceful restart (e.g. what of often called reload) when new certificates have been obtained. This will not interrupt any ongoing requests and therefore should not pose a problem to a site.
The typical lifetime of certs is 90 days and renewal is weeks before that. So, adding a cron job that reloads the server once a week should be sufficient to keep it running with valid certificates indefinitely.
As to the reasons for this: the main one is security. The certificate signup runs in a child process as user www-data (or such, depends on the OS) and that user has no permission to even read the real certificates. Instead, mod_md saves them somewhere else and on reload, the part of the server running as root can take the new certificates into the store and prep children to use them.
It is possible to do that differently and more automated, but that'd need some weeks of focussed work which are not available atm.

Thx for the quick feedback. Right, the certs are valid for 90 days. How many weeks before expiration do you refresh them?
In my case, I configured a Docker container, thus, I will handle the reload as follows:
docker exec -it my-ubuntu /etc/init.d/apache2 reload

I edited my inital post, maybe you havn't seen it:

Even after a restart, I cannot access my domain via https.

/etc/apache2/md is the standard directory (on ubuntu) where the information is kept. You will find key and certificates and some json files there. When the module reports that everything is ready and needs a restart, you should see the cert and other stuff in /etc/apache2/md/staging/<your_domain>. After the restart those should be gone and the files now reside in /etc/apache2/md/domains/<your_domain> from where they area loaded.

Staging is empty and I can see this files unter /etc/apache2/md/domains/<your_domain>:

md.json
privkey.pem
pubcert.pem

I found my issue: Since I use docker, I forgot to publish the port 443.
I can access my domain via https now.
Btw: all mod_md logs are written to error.log. Is that intended?

You say:

In the latest Apache httpd version, there is a short-hand for this:
SSLPolicy modern

Maybe its better to be specific here, that this is only available from Apache 2.5.

Nice that it works now for you. I updated parts of the wiki where you missed information/config.
Unfortunately, github seems to miss collaboration on the wiki, but if you want to contribute any makrdown, I'd be happy to add it.

Maybe you can here  the same note as in the apache docs:

There are 2 additional settings that are necessary for a Managed Domain: ServerAdmin and MDCertificateAgreement. The mail address of ServerAdmin is used to register at the CA (Let's Encrypt by default). The CA may use it to notify you about changes in its service or status of your certificates.
The second setting, MDCertificateAgreement, is the URL of the Terms of Service of the CA. When you configure the URL, you confirm that you have read and agree to the terms described in the linked document. Before you do that, the CA will not hand out certificates to you.

Or meantion at least, that these two are required.