Allow for multiple source images

This is useful for super-resolution and for allowing multiple scales/rotations of the input.

I realize this issue is just a short note to yourself, but I'm curious about what you have in mind more exactly. I have a somewhat unusual use case, and I've just started working on a version of your code that works with multiple images. I'm super-interested in your input. If we figure out some principled, general way of solving both my use case and other, more common issues as well, I'll happily provide a pull request.
Here's my use case: I'd like to generate a neural doodle with a ridiculously high resolution. Fortunately, I can restrict the camera position to a few zoom positions, so in practice I'll have a big lower-resolution overview image, and some lower-resolution zoom-in images.
Here's what I plan to implement: There are several A, A', B triplets as input, and the program works on these triplets one at a time, like before. But we also provide geometric information about how the B' output images are supposed to be placed on a plane. Whenever there's an overlap between two B' image rectangles, that's a constraint on both of them. I simply plan to enforce this constraint unidirectionally, from smaller to larger rectangles, so that's just an extra synchronization loss term that I have to calculate between generating two images.
Do you think this plan could work? Do you see some better way of doing this, that might benefit other image-analogies users as well?


Api down?

Is your api down? Wanted to dump the dB to have a look.

It crashed at some point, I've restarted it, and the database is publicly accessible via read-only credentials in the readme, no need to use the API to dump it.

I have done that! https://github.com/ShayBox/BoxMod has a random server button, to randomly add a server from the list

That's sick, good work man


chore: Add in deprecation warning for removal of strip_debug flag.

closes #15

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 100.00%. Comparing base (5a5413d) to head (3f380f2).

Additional details and impacted files
@@            Coverage Diff            @@
##              main       #16   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files            1         1
  Lines           71        74    +3
  Branches         7         8    +1
=========================================
+ Hits            71        74    +3

Flag
Coverage Δ

unittests
100.00% <100.00%> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


library not found using pip

Operating system and version: Raspbian Stretch kernel 4.14
Python version: 3.5.3
picam-motiondetect version: ???

My Issue
I can't seem to install the picam lib in the terminal usign pip. I don't know how to install it otherwise
WHYT
When using the command pip3 install picam in the terminal it outputs
Could not find a version that satisfies the requirement picam (from versions: )
No matching distribution found for picam
in red. When I use the command pip3 install https://github.com/n8henrie/picam/ it outputs:
Cannot unpack file /tmp/pip-unpack-e2un_9an/picam (downloaded from /tmp/pip-req-build-kxy4q9lx, content-type: text/html; charset=utf-8); cannot detect archive format
Cannot determine archive format of /tmp/pip-req-build-kxy4q9lx
in red. I've also tried python3.5 -m pip install picam but this gives me the same error as pip3 install picam

Thanks for your interest.
I never got a whole lot done on this repo, and as a result it is not available on PyPI (for instillation with pip), but you're welcome to give it a shot if you'd like.
To install a Python package directly from a git repo like GitHub, you can follow this pattern:
$ python3 -m pip install -e git+git@github.com:n8henrie/picam.git#egg=picam

where #egg=picam shows that picam is the name you want to use for the package.

Thanks for your interest.
I never got a whole lot done on this repo, and as a result it is not available on PyPI (for instillation with pip), but you're welcome to give it a shot if you'd like.
To install a Python package directly from a git repo like GitHub, you can follow this pattern:
$ python3 -m pip install -e git+git@github.com:n8henrie/picam.git#egg=picam

where #egg=picam shows that picam is the name you want to use for the package.

I got the following error when trying that (error 128):
Obtaining picam from git+git@github.com:n8henrie/picam.git#egg=picam
Cloning git@github.com:n8henrie/picam.git to ./src/picam
The authenticity of host 'github.com (<IP_ADDRESS>)' can't be established.
RSA key fingerprint is [idk if this has to be private but there is a randomly generated string here].
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'github.com,<IP_ADDRESS>' (RSA) to the list of known hosts.
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
Command "git clone -q git@github.com:n8henrie/picam.git/home/pi/src/picam" failed with error code 128 in None

Gah sorry. I tested before posting but forgot it's different depending on whether you have commit privileges and SSH set up. Please see my edit above.


Add converted LaTex files from Sui white paper to docs directory

For review only!
Let's get these in better shape before shipping.

Quick Q: should we verion the whitepaper? Say starting here at v0.1, and aiming for v1.0 to be mainnet?
Ideally we would extend the whitepaper with more details on testnet v0.2, pre-mainnet v0.3 and then mainnet to be an accurate record of what the system does when live.

Bumping this to avoid:
https://github.com/MystenLabs/sui/pull/3818
And see if Francois and team think it's worth working together to resolve the aforementioned macro conversion issue.

Closing this for now as low priority


GALAUSDT listing 13/09 feedback

Anyone have any joy with this using the latest margin script?  Looks like mine traded -6.146 (good) in test mode.
@CyberPunkMetalHead can you confirm which wallet the USDT needs to be in on our binance accounts, is it ok in the spot wallet or should we move to a specific margin wallet to execute the trades now?

I made some small modification to the original script, and today I'm going to try save some time in some parts. But as today it was able to make a profit, it managed to buy it quickly but the tsl didn't kick in I have to check what parameters I was using but i sold it manually

@Lautaro-L Do you mind  sharing your script?

Yes of course, let me finish some changes, I'll make a fork and remove some credentials then is good to go. Also I added telegram support to send messages there since I run it on a headless server and I'm not seeing console often.
it isn't tested this time so I recommend plugin it on the testnet

Yes of course, let me finish some changes, I'll make a fork and remove some credentials then is good to go. Also I added telegram support to send messages there since I run it on a headless server and I'm not seeing console often.
it isn't tested this time so I recommend plugin it on the testnet

Thank you

Yes of course, let me finish some changes, I'll make a fork and remove some credentials then is good to go. Also I added telegram support to send messages there since I run it on a headless server and I'm not seeing console often.
it isn't tested this time so I recommend plugin it on the testnet

Heeeee testing your script and run into an error information for others the file TRADE_CLIENT.PY has line from your local computer in it : client = load_binance_creds(r'C:\Users\MINERO\Documents\binance-trading-bot-new-coins\auth\auth.yml')
And we dont have access to your computer so it cant find it lol

Lol i forgot to delete that part I'm on it

Lol i forgot to delete that part I'm on it
Edit: done

Heee Lautaro question from my side, when i run your script i get this error ModuleNotFoundError: No module named 'auth.binance_auth'
When i run the other script with the same line in it it runs just fine. Do you have an idea?

Hmm really weird, since i didn't touch the import lines and the script runs with no trouble for me, really weird any more info about the error code?

Hmm really weird, since i didn't touch the import lines and the script runs with no trouble for me, really weird any more info about the error code?

This is the complete error
Traceback (most recent call last):
File "main.py", line 1, in
from trade_client import *
File "/home/pi/Desktop/botwithtelegram/trade_client.py", line 1, in
from auth.binance_auth import *
ModuleNotFoundError: No module named 'auth.binance_auth'

Tested it a couple times on different computers and I couldn't replicate the issue

Guys, the margin script hasn't yet been pushed. Will push soon but please be aware that currently it's still placing spot buy orders. I realised that there are some complexities that need to be addressed such as: not all coins are being listed on margin/futures trading which effectively means that shorting coins can only work if said coin is pre-owned.
I've also enabled discussions for this repo so we can talk about this in more detail.

Yes I saw the videos shorting is a good strategy, I thought on porting the code to c++ or c if the changes I made don't manages to place the spot order fast enough currently is really fast, but another problem that might occur is lack of liquidity to fullfil spot orders since those are filled chronologically, but limit orders with a value a little higher than market price fills faster.
And about the margin one I think you can place both long and shorts orders one first if you catch the coin quick enough but we can talk on the channel not here

for some reason my bot didn't buy GALA. I think it was still stuck in ELF, trying to track order/sell. Is that normal?


Update JavaMail dependency to 1.6.2, adding support for UTF-8 charset

Address
<EMAIL_ADDRESS>is not valid
MailerBuilder.clearEmailAddressCriteria()
doesn't play any role because
org.hazlewood.connor.bottema.emailaddress.EmailAddressValidator#isValidMailbox still return false
Just change email to
<EMAIL_ADDRESS>it became valid. Using RFC strategy also is not working. According to the latest RFC UTF-8 is valid to be used in emails.

This issue can be closed. Here is example:

In version 5.1.0 with clearEmailAddressCriteria it works but I used 5.0.1 in which it doesn't work.

I was just looking at your report! So, it is not an issue anymore? clearEmailAddressCriteria had a bug in previous versions, that's indeed fixed now.

Still stays a question why EmailAddressCriteria.RFC_COMPLIANT mailer doesn't accept UTF-8 when it became standard. It would be better to have validator, which accepts UTF-8 and validate a lot of other things, then to not have any.

Perhaps this similar issue sheds some light on the issue: https://github.com/bbottema/email-rfc2822-validator/issues/9

com.sun.mail:javax.mail for example already changed logic according to the specification. And I will add this here in case someone have same problem. In my app this was dependency tree(javax.mail was loaded from spring-boot parent)
[INFO] +- org.simplejavamail:simple-java-mail:jar:5.1.0:compile
[INFO] |  +- com.sun.mail:javax.mail:jar:1.5.6:compile

and even if I use clearEmailAddressCriteria it want pass because this version of javax.mail will not validate positively non asci email.
And then I had to exclude javax.mail and provide explicit dependency to the latest
[INFO] +- org.simplejavamail:simple-java-mail:jar:5.1.0:compile
[INFO]   +- com.sun.mail:javax.mail:jar:1.6.2:compile

Now it works.

Updated javax.mail version for upcoming  release 6.0.0.


build/config.rs: non-native build fix

I got an error when i tried to build without the "native" feature active:
error[E0026]: struct `BuildConfig` does not have a field named `native`
   --> esp-idf-sys/build/config.rs:129:21
    |
129 |                     native: _,
    |                     ^^^^^^ struct `BuildConfig` does not have this field

For more information about this error, try `rustc --explain E0026`.
error: could not compile `esp-idf-sys` (build script) due to previous error

For completeness sake, I thought this might have been interesting for you upstream.

Well with what alternative feature did you build and what is your goal here? You need to pick one. Read https://github.com/esp-rs/esp-idf-sys/blob/master/BUILD-OPTIONS.md#features

I understand, in the end I build with the native feature so that was my goal. But before I enabled that, I added pio as a feature and not native. The point is that the native configuration only exists in BuildConfig if the native feature is set. This means that this error is triggered whenever native isn't set, thereby only native is buildable. This check is done at other places, see line 33.

I am still asleep , to early here - i read the PR as an issue - coffee is needed. Thanks for looking into it and fixing it. Though i am not sure in what state the current pio option is and if it fully works with just that additional flag checked.

I typically need my coffee in the morning before I start making sense. You are right, I think pio build is a bit in progress also. This is just a tiny correction.


Handle follower addresses

Adds handling for orchestrating a follower's new log address within a thread.
Adds a top-level NewThreadstore to the datastore implementation.

I need to add some more tests here. Otherwise, looking okay.

Thanks @jsign! I'll make those tweaks this evening and get this merged. I got down a rabbit hole today.


Use custom event to trigger multus configuration

Description
This PR updates the multus library to include the fix for https://github.com/canonical/kubernetes-charm-libraries/issues/16 and implements the necessary changes in the charm part.
Checklist:

[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my own code
[x] I have made corresponding changes to the documentation
[x] I have added tests that validate the behaviour of the software
[x] I validated that new and existing unit tests pass locally with my changes
[x] Any dependent changes have been merged and published in downstream modules
[x] I have bumped the version of the library

LXD version will be updated to 5.17/stable.

Just the one small comment. Otherwise LGTM.

Ahh I guess with a docstring you don't even need pass. TIL.

I will remove the init method of NadConfigChangedEvent from Docstring in the library part.


'Show current track information * Ctrl+D' Overloads LMS

Whenever I use the 'Show current track information * Ctrl+D' button at the top right of the interface, I get a "Server connection lost!" alert while things are "Fetching".  If I wait long enough things eventually get back to normal.
Funny things is I can manually retrieve this information through the normal 'More' menus.
Is their a way to disable the 'Show current track information * Ctrl+D' feature from the main interface?

Sorry, never seen this. All I can think of is that you are holding down 'Ctrl-D' and it is firing repeatedly - if so I have changed the code (for the next release) to ignore the same keyboard short cut if less than 100ms between events.
You can only disable all shortcuts (in the settings dialog) not all.

Thanks CD.  I figured out that it only happens on tracks that have no album metadata.  I guess the 'Music and Artist Information' plugin doesn't like tracks labelled as "No Album" in the interface.  In my collection, I tag tracks with the album information only if I actually have all of the tracks from the album.  I will stop using this feature for my "singles" collection.


Update dsrv.toml for testnet-15

previous PRs

https://github.com/anoma/namada-testnets/pull/1077
https://github.com/anoma/namada-testnets/pull/128

Description
All previous genesis validators should name their PRs "Update {validator_alias}.toml for tesntet-15" and provide links to previous PRs merged.
If this is an UPDATE for a previous genesis validator
Checks are made against your net_address. If this has changed since the previous testnet, make sure you provide links of previous prs merged from your previous git username.
Thanks in advance!
Checklist before merging

[ ] Only one toml is added in this PR
[ ] The file being added is indeed a .toml file
[ ] The toml being added is to the correct folder, and only to the correct folder
[ ] The eth_hot_key and eth_cold_key are present
[ ] The email, discord, elements telegram, and twitter fields are present and valid

I generated dsrv.toml only with CLI, didn't add twitter, element, telegram, as @bengtlofgren recommended.
https://github.com/anoma/namada-testnets/pull/2625#issuecomment-1854659720

Successfully validated transactions.toml file for commit hash bb2a435


Fix binding errors when switching ContentControl content

What does the pull request do?
When changing the Content in a ContentControl, often a different type of control will be created. In these cases, the new Content was briefly applied to the old control's DataContext causing the binding errors seen in #1099.
There were two separate causes of this:

In the case of inherited properties changing, PropertyChanged was raised on the child before the parent. This is because the inherited value change was being notified by listening to the parent PropertyChanged event, and this event handler was added before any other handlers (in the AvaloniaObject.InheritanceParent setter).
In ContentPresenter.UpdateChild, the new DataContext was being set before the old child was removed from the logical tree, causing the new incorrect data context to be briefly inherited by the old child control.

What is the current behavior?
The current behavior is that seen in #1099.
What is the updated/expected behavior with this PR?
#1099 no longer occurs. See the tests added in 302bf55 for unit tests.
I've also updated the content controls to use the recommended pattern for registering content presenters, i.e. implementing IContentPresenterHost.RegisterContentPresenter and forwarding that to a virtual method.
How was the solution implemented (if it's not obvious)?
For the points above:

Added an IAvaloniaObject.InheritablePropertyChanged event which will be called only after all other property changed events have been raised and only for inheritable properties. Subscribe to this in AvaloniaObject.InheritanceParent  instead of PropertyChanged
Adds an extra ChildChanging event to IContentPresenter which is called before the DataContext is updated. This event is listened for in ContentControlMixin to remove the old control from the logical tree

Checklist

[x] Added unit tests (if possible)?

Fixed issues
Fixes #1099

@ahopper the problem shown up by your repro should now be addressed.

This now fixes everything in my repro. It does not fix binding errors in https://github.com/AvaloniaUI/Avalonia/issues/2258 but that may be something different


Documentation for LD

Create a technical documentation for the LD work.

Started work on documentation yesterday. Attaching the first draftLinked Data POC v1.0.docx


Add failing test

8.1 failing test
prehistory here
Test in first commit is new.
Changes in second commit is about that such keys also need to be deleted from this.state

2 fix first failing test, it's need to change
const resetValue = (_, key) => ({[key]: undefined });

on this
const resetValue = (r, key) => ({ ...r, [key]: undefined });

Third commit fixes both tests,
to emulate replaceState i've moved current state to state.props


iD couldn't proceess a conflict

URL
No response
How to reproduce the issue?

Open a location and edit a node without uploading
Open the same area from another profile in iD and update the same node
Upload from the first account
Try to upload from the second account

Screenshot(s) or anything else?
The check for conflicts is stuck in an infinite loop. The console is overfilled with the same error

Here is a video of the result from the issue
https://user-images.githubusercontent.com/19364673/140080515-60afc752-4101-4e50-aeca-ddc0c1894e0f.mp4
:
Which iD Editor versions do you see the issue on?
Released version at openstreetmap.org/edit
Which browsers are you seeing this problem on?
Firefox

this is also #7199


Emulator polyfills need to handle secure vs non-secure

The Chrome 79 emulator has several failures in it's polyfills - many are the result of things not being available in a non-secure environment. These are things like Bluetooth, registerProtocolHandler, etc.
Polyfills can access the window location, so they should be altered to handle secure vs non-secure pages. This will require new data for http property orders

This seems like such a low priority given the state of the web that I think we won't get to it.


Content-Proposals: Section "Community"

Proposals for the following website section please in the comments

We bring together people and ideas to help build resilient environments for strong knowledge exchange within numerous communities … in towns, villages, and local neighborhoods, including within refugee or IDP settlements. We strive to harness and make public the collective knowledge and skills of local experts, refugees, activists, and CSOs to deepen local impact and create opportunities for mutual support and collaboration.


Oxygen Mixing Solution

One of the requirements in the system is to provide both 50% and 90%+ oxygen (FiO2). See the RMVS Gas & Electricity 3a for details. This was originally thought to occur upstream of the fan, before fire risks were identified flowing high concentration oxygen through the fan. It was decided to try and integrate the O2 mixing downstream. Oxygen is expected to come from wall supply or tanks. There is at least going to be a pressure regulator if not a rotameter to display flow. The baseline design is shown below:

Here, oxygen is constantly mixed into the system on both inhale and exhale. The flow is constant set by manually (User Action) tuning the regulator flow rate. The device should provide an indication of FiO2 as feedback.
Another tweak is to use an O2 control solenoid to switch the O2 supply on only when it is during an inhale cycle. This potentially allows higher O2 rates, limits the risk of O2 backflow into the fan and limits the risk of inadvertently over-pressuring the patient during inhale (if the O2 flow valve is too high).
Below is a subsection schematic:

Work on this is being summarized here: https://docs.google.com/presentation/d/1tEIRDNIFct4DQpMUWZZn-SIk56GaNQ7PR2nPpMT_X8Y/edit#slide=id.g8ee06a2ec6_0_0

See above document.  A working proof of concept based around flow control has been demonstrated.  Some pneumatic elements will have to change, and a sensor will need to be added.


Cannot boot higher-half kernel with custom linker script

Hello, I have a custom kernel that I tried to update to bootloader v0.11, you can find it here.
First, I must say, thanks for this project, it has been really useful and the last update seems to simplify a lot of the workflow.
While migrating from v0.10 I found two problems, first the linker script had to align sections to pages (this isn't really a "problem", more it is not written in the migration guide).
Second, and more interesting is that, after correctly loading the kernel sections, it does not jump to the correct entrypoint.
The kernel entry point is at 0xffff800000101de0 (read from the ELF), but since the virtual address offset is 0xffffffffffffffff0000807fffeff000 the sum overflows and it jumps to 0x8000000de0.
I don't have any more clues on where the problem might be, I'm sorry if this is a problem with my setup.
Bootloader output:
INFO: Framebuffer info: FrameBufferInfo { byte_len: 2764800, width: 1280, height: 720, pixel_format: Bgr, bytes_per_pixel: 3, stride: 1280 }
INFO: 4th Stage
INFO: BiosInfo { stage 4: Region { start: 130000, len: 28d90 }, kernel: Region { start: 1000000, len: 3f83e8 }, ramdisk: Region { start: 13f9 000, len: 0 }, config_file: Region { start: 13f9000, len: 0 }, last_used_addr: 13f8fff, framebuffer: Bios FramebufferInfo { region: Region { st art: fd000000, len: 2a3000 }, width: 500, height: 2d0, bytes_per_pixel: 3, stride: 500, pixel_format: Bgr }, memory_map_addr: e7e0, memory_map_len: 7 }
INFO: BIOS boot
INFO: Elf file loaded at 0x0000000001000000
INFO: virtual_address_offset: 0xffffffffffffffff0000807fffeff000
INFO: Handling Segment: Ph64 (ProgramHeader64 {type_: Ok (Load), flags: Flags(5), offset: 1000, virtual_addr: ffff800000101000, physical_addr: 1000, file_size: 51000, mem_size: 51000, align: 1000 })
INFO: Handling Segment: Ph64 (ProgramHeader64 { type_: Ok (Load), flags: Flags (4), offset: 52000, virtual_addr: ffff800000152000, physical_addr : 52000, file_size: e5e0, mem_size: e5e0, align: 1000 })
INFO: Handling Segment: Ph64 (ProgramHeader64 { type_: Ok (Load), flags: Flags (4), offset: 61000, virtual_addr: ffff800000161000, physical_addr 61000, file_size: 21907c, mem_size: 21907c, align: 1000 })
INFO: Handling Segment: Ph64 (ProgramHeader64 { type_: Ok (Load), flags: Flags (6), offset: 27b000, virtual_addr: ffff80000037b000, physical_add r: 27b000, file_size: a0e0, mem_size: a0e0, align: 1000 })
INFO: Handling Segment: Ph64 (ProgramHeader64 { type_: Ok (Load), flags: Flags (6), offset: 286000, virtual_addr: ffff800000386000, physical_add r: 286000, file_size: 6000, mem_size: 6000, align: 1000 })
INFO: Entry point at: 0x8000000de0
INFO: Creating GDT at PhysAddr(0x1420000)
INFO: Map framebuffer
INFO: Map physical memory
INFO: Allocate bootinfo
INFO: Create Memory Map
INFO: Create bootinfo
INFO: Jumping to kernel entry point at VirtAddr(0x8000000de0)

(might be wrong, I used an image-to-text site)
If I can help with anything I'd be happy to, I just don't have enough knowledge to know where the bug is.

AFAICT everything in the bootloader is working as intended. IIUC you compiiled your kernel using the x86_64-unknown-none target which emits position independent executable by default. For those we currently don't make any guarantees about where the kernel is loaded. I compiled your kernel and attached a debugger to QEMU and it seems to me that the entrypoint is mapped and jumped to correctly. I assume that something eventually breaks because your code assumes a specific kernel base.
If you don't want your kernel to be a position independent executable you can pass -C relocation-model=static via rustflags.

I'm sorry you are correct, I assumed my kernel was broken because it was loaded to a lower-half location but that is not the case.
Still, you should not say that you support higher-half kernel if you still load it in a lower-half virtual memory offset.

Still, you should not say that you support higher-half kernel if you still load it in a lower-half virtual memory offset.

We support higher-half kernels compiled with -C relocation-model=static.


Combine expand bounds

Determines coordinates to be expanded automatically, and uses boolean argument to determine whether to use the upper (default) or midpoint as the new coordinate point.
Testing:

[x] Ran tests and they passed OK
[x] Added new tests for the new feature(s)

 Here is an overview of what got changed by this pull request:

Complexity increasing per file
==============================
- improver/cube_combiner.py  3

See the complete overview on Codacy

 Here is an overview of what got changed by this pull request:

Complexity increasing per file
==============================
- improver/cube_combiner.py  3

See the complete overview on Codacy

 Here is an overview of what got changed by this pull request:

Complexity increasing per file
==============================
- improver/cube_combiner.py  3

See the complete overview on Codacy


Invalid Stack Pointer in go 1.5beta3

An issue popped up while testing gonum/stat in 1.5beta3:
https://travis-ci.org/gonum/stat/jobs/73395998
runtime: bad pointer in frame github.com/gonum/matrix/mat64.(*SymDense).CopySym at 0xc820024370: 0x40
fatal error: invalid stack pointer
and also in gonum/matrix:
https://travis-ci.org/gonum/matrix/jobs/73396137
runtime: bad pointer in frame github.com/gonum/matrix/mat64.(*Dense).Clone at 0xc8200432a0: 0x4
fatal error: invalid stack pointer
and also in optimize:
https://travis-ci.org/gonum/optimize/jobs/73396336
runtime: bad pointer in frame github.com/gonum/matrix/mat64.Inner at 0xc820046418: 0x2
fatal error: invalid stack pointer
The same tests pass without panic in 1.4.2 and 1.3.3.

Those do look like bad stack pointers.
CC @rsc @RLH @aclements

I get this too intermittently when calling "xml.NewDecoder(f).Decode(r)" e.g.:
runtime: bad pointer in frame encoding/xml.(*Decoder).Token at 0xc08208d0a8: 0x7
fatal error: invalid stack pointer

I can reproduce this locally with:
$ go version
go version devel +e95bc5f Wed Jul 29 18:56:11 2015 +0000 linux/amd64
$ go get -t github.com/gonum/stat/distmv
$ go test -v github.com/gonum/stat/distmv

Note that this started in 1.5beta3 because we set the invalidptr GODEBUG to 1 by default (which is what the documentation always claimed it was). I suspect you'd be able to reproduce this on earlier Go 1.5 betas by setting GODEBUG=invalidptr=1 explicitly.

The failures seem to be happening in different parts of mat64. Two comments that may help debugging

It is not known at compile time if mat64 will use cgo. The mat64 functions call into the blas64 package (github.com/gonum/blas/blas64). The user can "Use" either a native go BLAS implementation or a c-based BLAS implementation. By default, the Go installation is used, and the steps by @aclements  above should be using pure-go code. Possibly though there's some interaction with the possibility of cgo.

We have one unusual construct in the mat64 package. As part of the API, it is fine for a user to supply the same concrete value for the receiver and input arguments (for example, a.Mul(a,b), where a is a *mat64.Dense). For most of the methods, the underlying matrix data cannot be shared, so if the pointers are the same, we allocate new storage, and then at the conclusion of the method copy the data over. "at the conclusion" is implemented using a defer statement, that only sometimes executes.
This particular code can be found in the "isolatedWorkspace" function https://github.com/gonum/matrix/blob/master/mat64/dense.go#L129 . You can see this in use in the add method https://github.com/gonum/matrix/blob/master/mat64/dense_arithmetic.go#L124.
There have been some changes to the code for closures in 1.5, so possibly one of these introduced a bug.

Here's a program that recreates the problem on my machine. I'm only using the standard library and the error occurs when calling "xml.NewDecoder(f).Decode(r)" (line 36 in the snippet). There's a comment at the end of the snippet with an example stack trace and go version + go env for my machine):
http://pastebin.com/XHUxVZDH

Thanks for the pointers.
Before I go trawling through the mat64 code, are there any places where you might intentionally store a non-pointer in a pointer-typed variable (using unsafe)? I ask because cgo code tends to be susceptible to such things.

(Pun not intended. :)

We don't use unsafe in the pure-Go code (which again, the code you ran should be pure go). In cgo we do use unsafe, but only in the explicit calls to c functions https://github.com/gonum/blas/blob/master/cgo/blas.go.
We do, however, use asm in some of the routines.

In all three failures you posted, the bad pointer comes from a frame that's executing "switch b := a.(type)". In two a is a Matrix and in the other it's a Symmetric. The exact same is true of @dajoo75's example, except it's in encoding/xml. It's possible we're generating a bad stack map for this.

We do, however, use asm in some of the routines. Does the failure still happen if you run with -tags=noasm?

noasm doesn't affect it.

Building with -gcflags '-S -live=2' reveals that we're passing &b as the "r" argument of runtime.assertI2I2, but we never zeroed b. So, b contains whatever junk was on the stack at that point, but it's considered a live pointer, and the stack scan rightfully complains.
Specifically, we have the sequence
60376 (/tmp/11941/src/github.com/gonum/matrix/mat64/symmetric.go:123)	LEAQ	"".b-216(SP), BX
	avarinit=b
60377 (/tmp/11941/src/github.com/gonum/matrix/mat64/symmetric.go:123)	MOVQ	BX, 24(SP)
60692 (/tmp/11941/src/github.com/gonum/matrix/mat64/symmetric.go:123)	PCDATA	$0, $2
60378 (/tmp/11941/src/github.com/gonum/matrix/mat64/symmetric.go:123)	CALL	runtime.assertI2I2(SB)
	live=s,a,autotmp_2790,b

but this is the first mention of 216(SP) in this function.

Turns out @rsc fixed this last night with c4092ac, but that was after beta 3 was cut. Once the next beta rolls out, you should be good.


Laptop Keyboard cant be analyze

The keyboard inspector cant analyze the polling rate of my laptop's keyboard

And how can I read your mind and your laptop's state? Attach a recording.

[testpoll.zip(https://github.com/mat1jaczyyy/Keyboard-Inspector/files/10890668/test.poll.zip)
https://user-images.githubusercontent.com/126963618/222939409-6c58b2bf-9b42-4e65-afc0-cfc06d8301b4.mp4

And how can I read your mind and your laptop's state? Attach a recording.

my bad i forgot about it

sorry i missed the comment reply notification somehow.
your laptop uses PS/2 for the internal keyboard and not usb, you will get really accurate timings on your key presses but you probably can't register multiple keypresses simultaneously without a few ms delay (your keyboard will chord split)
you can test for this by trying to press a lot of keys simultaneously and then look at the delta graph between 0 and 8 ms


Updates HomePageSeo component to add titleTemplate

Description
Closes #1321

Additional context

This is not an ideal fix, and the SEO component should really be refactored to improve maintainability. Right now each route type has a completely independent SEO component, where it should really be a series of parts that combine together.

Before submitting the PR, please make sure you do the following:

[x] Read the Contributing Guidelines
[x] Provide a description in this PR that addresses what the PR is solving, or reference the issue that it solves (e.g. fixes #123)
[x] Update docs in this repository according to your change
[x] Run yarn changeset add if this PR cause a version bump based on Keep a Changelog and adheres to Semantic Versioning

@benjaminsehl Somehow this modified some files in vendor. Can you revert that?


Copy Paste into the Cline Chat Window | Context Stops working for long contexts

Which API Provider are you using?
Anthropic
Which Model are you using?
Claude 3.5 sonnet
What happened?
I noticed that sometimes if I copy paste rly long contexts (in vs code, while having jupyternotebook open) copy paste stops working? (no matter from where im copying and trying to paste into the cline chat context)
Steps to reproduce

Input very long instruction into the cline chat window
Get some edited code result in jupyternotebook file format ipynb.
Talk with it for a while, via the chat window further editing and improving the code you got in the first place
Then suddenly notice that you no longer able to copy paste into the cline chat window whatever you copied from the notebooks debug | error cell's

Relevant API REQUEST output
No response
Additional context
No response

Ive seen it do this as well - it hangs basically, but you've functionally token DDOS'd it. Just don't exceed 180K input tokens. CLINE probably should detect some of these scenarios & a system prompt for somethings like command outputs use tail -50 or ask user to issue commands for long outputs; debug, test scripts, etc. helps.


Add support for multiple CC, BCC, ... addresses in the ACS Commons Email API

Required Information

[ ] AEM Version, including Service Packs, Cumulative Fix Packs, etc: 6.5 SP4
[ ] ACS AEM Commons Version: 4.7.0
[ ] Reproducible on Latest? yes

There is no proper way now to add multiple CC, BCC, ... addresses through the ACS Commons Email API, because it doesn't handle these email addresses as a special case but just as a single String property, which of course is not a valid InternetAddress.
The underlying Email API from Sling supports multiple addresses (https://commons.apache.org/proper/commons-email/javadocs/api-release/org/apache/commons/mail/Email.html#addCc-java.lang.String-).
There is a workaround right now, but it is really hacky: constructing a custom CC/BCC header yourself and use it directly in the email template.
I would suggest to add additional methods with parameters for CC, BCC (and maybe more) in the API (https://github.com/Adobe-Consulting-Services/acs-aem-commons/blob/master/bundle/src/main/java/com/adobe/acs/commons/email/EmailService.java) to add support for multiple CC, BCC addresses and then add the right addresses through the Sling Email API.
What do you guys think of this?

In that case I would recommend to redesign this API alltogether. Instead of having a simple API call which does everything I would use both the Apache Commons EMail for the general handling, and augment it with the body templating part from ACS AEM Commons, plus the mail submission.
In that case creating a simple mail requires more lines of code, but it's much more flexible.


Adding a bulk copy data record to test

Adding a data record to this bulk copy test to ensure we don't encounter another regression for the scenario.

/azp run

/azp run


Allow for serializing large arrays.  Fix #42

byte array sizes are now varinted, so that we can serialize large arrays.

Codecov Report

Merging #45 into mirror will increase coverage by 0.01%.
The diff coverage is 60%.

@@            Coverage Diff            @@
##           mirror     #45      +/-   ##
=========================================
+ Coverage    3.75%   3.76%   +0.01%
=========================================
  Files          33      33
  Lines        6739    6739
  Branches     1082    1082
=========================================
+ Hits          253     254       +1
  Misses       6481    6481
+ Partials        5       4       -1

Impacted Files
Coverage Δ

Mirror/Runtime/NetworkReader.cs
39.91% <100%> (ø)
:arrow_up:

Mirror/Runtime/NetworkWriter.cs
51.63% <33.33%> (+0.36%)
:arrow_up:

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 e34e8ba...94fc892. Read the comment docs.

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


Gutter dones't show the break points after closing atom/file

Gutter only shows the breakpoints and the moment I set them. If I close atom, or the file and open it again, the break points exist and are shown in the debug panel but not in the gutter.
Awesome work btw :)

Have implemented this now, should be working in the latest release (v0.1.0)


Feat/icon title

Closes #60
Changes made by this Pull Request

New title and new favicon

Definition of Done

[ ] Tests are written and run successful
[ ] Code is documented
[ ] User Manual is updated
[ ] All requirements of the user story are met

Codecov Report

Merging #61 (fba227f) into dev (b75cb9e) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##              dev      #61   +/-   ##
=======================================
  Coverage   99.16%   99.16%
=======================================
  Files           5        5
  Lines         120      120
=======================================
  Hits          119      119
  Misses          1        1

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 b75cb9e...fba227f. Read the comment docs.


update dependencies

I just updated de win32 dependencies because it makes the package incompatible with some other packages.
The dart analysis warned up some issues minor issues that I fixed at the same time.

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

according to issue #99 I added a namespace


Can't create user

Hi, Yesterday I discover that fantastic project (congrats for your progress with it).
I'm trying to create a user with artisan command:
php artisan make:admin nickname<EMAIL_ADDRESS>secretpassword
And on installation, but it says User already exists! (artisan command), and the installation doesn't create any user.
I'm working local on Windows 10 with PHP-FPM, IIS (but I try with php serve command). So I will contribute with this project.

Hi, can you say more information
What software do you use? And what version? (PHP, Laravel, MySQL or PostgreSQL)

Yes, Laravel 5.4 (last version, fresh installation), PHP 7.1.2, MariaDB 10.1.21

JSON format support MariaDB 10.2

Ok, so you have json in migrations.
Thanks, I try upgrading MariaDB 👍

Ok, sorry, but still can't because migrations of Orchid doesn't migrate (the user schema that I can see in my database is the user from Laravel fresh installation).

You made
php artisan vendor:publish &
php artisan migrate ?
At these stages there were no problems?

Yes, I change the query exception for make:admin command and this is the result:
https://gist.github.com/d8vjork/71264a2f0b909ac17c16ec0379662602
The solution: I change the json/jsonb to text from some migration files and run php artisan migrate (and yes, I upgrade MariaDB to 10.2 but it continues having problems with JSON from Laravel).

But he also clearly says that not all migrations have passed.
I need some time to reproduce the problem on MariaDB

I was able to reproduce the problem and get an error.
But, as it turned out the JSON type is still not supported in MariaDB.
Link 1
Link 2
Link 3

So, this only support MariaDB 10.3 (alpha) / MySQL 5.7 and future versions of both.


[NewEnv] Plan to create an env and agent for Pommerman game

Not sure whether this is a good place to discuss new features, but I can't find another channel(slack, email list etc) to discuss my plan based on rlpyt.
I'm a CS graduate student at USC, my team of 8 graduate students(https://github.com/pommerman) is taking an experimental game class' Applied Machine Learning on Games'(https://web-app.usc.edu/soc/syllabus/20193/30384.pdf). Our goal is to learn and understand more by applying more RL algos on Pommerman. Also, we want to try our best to figure out some insights so that we can take part in the Pommerman Competition (https://www.pommerman.com/) in NIPS 2019 on Nov 22nd.
We learned new RL algos and tried to apply RL lib both on PyTorch and Tensorflow, then we found most of the libs are not modular, and it is hard to apply them on Pommerman without rewriting envs or agents. It was pretty painful for the past 5 weeks. Luckily, I found rlpyt this Wed and it is the RL lib want to use. As there is no env or agent for Pommerman, I want to implement one, any suggestion to kick it off?

Sounds great!  Want to email me (email is on the paper) and we can communicate that way, maybe even set up a time to chat?  Some documentation that would be helpful for you doesn't exist yet ;)

Thanks, email sent. Let's talk more by email.


Add tests for editing notebook metadata

https://github.com/microsoft/vscode-jupyter/pulls?q=is%3Apr+sort%3Aupdated-desc+is%3Aclosed

@DonJayamanne do you have any more information? Editiing metadata outside of VS code? So like kernel changes? Or cell metadata too?
Is the test to ensure metadata is there after opening and saving in VS code?

So like kernel changes

Yes,
Basically test:

Select a kernel
Ensure nb metadata contains the necessary information (interpreter hash, etc)
Close the notebook and verify changes in the ipynb file.

Is the test to ensure metadata is there after opening and saving in VS code?

Yes


Missing hover-over variable information while debugging multi-threaded applications

When I hit a breakpoint in one thread, I can inspect variables by hovering over them, but if I change the thread (e.g. back to the main thread) I don't get anything when hovering over variables. The locals window does display variables from that thread, so it's not like the information is inaccessible.
The following code reproduces the issue. Place a breakpoint on the print statement, and then change back to the main thread.
import threading

def f():
    a = 'test'
    print(a)

t = threading.Thread(target=f)
t.start()
t.join()

PTVS 2.2 on VS2015, Python 2.7.10

That's expected behaviour, as the variable a has not been defined in the main thread. If you also call a() before t.join() then you'll hit the breakpoint twice (once in each thread) and a will be defined in both.

Sorry, I could have been clearer with this. I meant that variables that are defined in the main thread don't give any information when hovering over (such as t and threading, not a which is obviously only visible in the scope of f)

It looks like the Thread.join call prevents us from being able to evaluate variables on that thread. I changed it to while True: pass and it works fine.
We get the list of variables in the Locals window from a different source that apparently still works here, so maybe we just need to fall back on that when the thread is otherwise locked.

Oh, we also need to display the error in the datatip. Currently we're just swallowing it and not displaying it anywhere...


Update to really build in Windows

instead of repackaging the upstream binary.
The upstream binary bundles libclang.dll, and this clobbers the same
file from libclang package.

Checklist

[ ] Used a personal fork of the feedstock to propose changes
[ ] Bumped the build number (if the version is unchanged)
[ ] Reset the build number to 0 (if the version changed)
[ ] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[ ] Ensured the license file is being packaged.

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.
I do have some suggestions for making it better though...
For recipe:

License is not an SPDX identifier (or a custom LicenseRef) nor an SPDX license expression.

Documentation on acceptable licenses can be found here.

@conda-forge-admin, please rerender

Awesome, thanks @isuruf, I was thinking that Library/bin would be only for .dll's in Windows, but that's not the case, right? In fact it makes more sense when there's no Python installation :)


Intro *Node cache and recycling

As a result, adding Release(*idr.Node) to FormatReader so that Ingester will free up *idr.Node allocations for recycling
Updated all benchmarks.
Not much degradation so far. The reason the json sample bench mark didn't improve much is because there isn't much nodes allocated per read. However typically in the CSV parsing/transform scenarios, files are usually very long and node allocation caching saving would start to show significantly.
resolves #83

all right i gave up. this PR it is. no checks that's fine. already ran tests many times locally.


Multiple push url for the same remote origin.

Multiple remote url for git repo with the same name Example:

Please try posting questions like this to stackoverflow first.


Multiple unsatisfiable classes resulting from uberon import chain

go-plus became incoherent, many explanations like this:

Diagnosis: uberon assumes 'reproductive structure' is metazoan (inferred from the assumption that the root class is metazoan); GO uses this also for plants
Long term fix: EITHER uberon does not bake in metazoan assumptions (effectively taking over some of the role of CARO) or we put functional groupings like this in CARO (as @dosumis did originally in FUNCARO)
Short term fix: remove uberon taxon constraints from import module
Note: the short term fix was already queued in the Makefile. However, it the rebuild of uberon_import.owl never happened due to the unsatisfiability. Race conditions in ontologies, fun. Some of this will be fixed by a clearer separation of edit vs public artefacts with #12211

The explanation above shows inconsistency because of the mesoderm thing.  I tried to fix that with an edit to uberon (it's not even true for metazoans), but looks like that didn't make it into a release yet.
If there is also inconsistency through 'reproductive structure' in Uberon, then maybe we should just remove the GO link to Uberon reproductive structure for now.  Presumably could be functionally defined using GO. As you say, this could live in CARO rather than Uberon to keep it metazoan only.

On 4 Jan 2016, at 13:37, David Osumi-Sutherland wrote:

The explanation above shows inconsistency because of the mesoderm
thing.

Ah yes, you're right

I tried to fix that with an edit to uberon (it's not even true for
metazoans), but looks like that didn't make it into a release yet.

will be in next one

If there is also inconsistency through 'reproductive structure' in
Uberon, then maybe we should just remove the GO link to Uberon
reproductive structure for now.  Presumably could be functionally
defined using GO. As you say, this could live in CARO rather than
Uberon to keep it metazoan only.

there is less of a commitment issue than I thought. There is no problem
with reproductive structure with your fix.
However, I will progress with the short term fix for now until the new
uberon release is propagated, hopefully later today

Reply to this email directly or view it on GitHub:
https://github.com/geneontology/go-ontology/issues/12223#issuecomment-168817594

short term fix committed with r30654
This eliminates the majority of unsats. Will file with remaining ones

back on: http://viewvc.geneontology.org/viewvc/GO-SVN/trunk/ontology/extensions/Makefile?r1=32321&r2=32925

To fix:

Possible fixes:

'cardiocyte differentiation' 'part of' some 'heart development'
->
'cardiocyte differentiation' 'part of' some 'primary circulatory organ development' (GO, TBA?)

Relax constraints on heart in Uberon.

Fix: Need separate terms in Uberon for 'vertebrate trachea' and arthropod trachea - both under 'respiratory tube'

post-anal tail: "A tail that extends from the posterior tip of the organism to the anus, contains muscle and skeleton."
The skeleton clause excludes nematodes.  Should 'post-anal tail' be broadened, or do we need a new term?

ecotdermal placodes are common in developing arthropods.  Remove this taxon restriction from Uberon.

Uberon needs a term for arthropod spiracle. - perhaps 'spiracle of open tracheal system' ?

Unsatisfiable class module
@cmungall  - Safe to turn import of constraints off until these are fixed.

Makefile reverted with r32951
I can regenerate uberon_imports too
I recognize many of the issues above, will provide feedback shortly

r32952 committed new imports module, minus TCs. GO should now be satisfiable

Is GO satisfiable after changes made in r32952?  If yes, then we can close the related issues, correct?

epithelial cell fate determination, open tracheal system

Spiracles:  Fish vs Arthropods.  Needs Uberon fix.

Arthropods have ectodermal placodes too!

@cmungall: should now be all fixed. Please try turning taxon constraint import back on. Ta.

@cmungall - reminder.  Thanks

r35423
Let's see what happens tonight...

Looks like there’s one remaining Uberon issue to fix. We missed this because this class was inconsistent for two separate reasons and we’ve only fixed one.

[ ] Quick fix.  Delete this, it's wrong:  'optic lobe placode formation' part_of some 'optic placode formation'.  This fixes the inconsistency.

Explanation: The optic placode referred to is the eye primordium in chordates. The optic lobe placode is the precurosor of the optic lobes - part of the brain in arthropods.  In holometabolous insects at least, the eye develops from an imaginal disc formed by invagination of the embryonic epithelium not an ectdermal placode.

good catch, I agree with the fix.
At some point we should go through and improve the labels and the definitions in GO. Everyone interested should contribute to the review of the placode hierarchy here: https://github.com/obophenotype/uberon/issues/135

FIxed.


Somewhat significant update

This PR addresses most of the issues mentioned in #135. Specifically:

It updates the data prep pipeline to include all data partitions in the pre-training as the default.  This does lead to a little redundancy in prepped.npz because the x_vars get repeated in the pre-train split.  This is something we may want to come back to down the line.
The general format of the training has been changed to make the train_model call slightly more general and allow us to break up pre-train and finetuning rules in the snakemake. This doesn't apply to the cli version of rule since I think our plan is to remove it (#117)
It calculates validation loss at each epoch during training
It adds two callbacks to the training phase, one of which allows for early stopping and the other saves the weights from the best validation model during training (default predictions are now with best validation weights)
It updates the initialization of the rgcn weights to the Xavier initialization following #139.
It changes the default evaluation from the val partition (which is now used in training), to the test partition.

There's kind of a lot here, so feel free to provide feedback and suggestions.  @jsadler2, @jzwart, @janetrbarclay, if any of you have time to review that'd be awesome! Also, my google drive just updated and it changed my paths/confused git a little.  The files below that say 'empty file' have not been changed.

Cool update! I had some thoughts and questions that are about the ML approach.

It changes the default evaluation from the val partition (which is now used in training), to the test partition.

Clarification on existing workflow (prior to this PR): the test set isn't used for anything, right? (It's being saved for a final evaluation of some sort to make sure that you haven't overfit hyperparameters (e.g., model choice) to the validation set)
I think it would be preferable to still evaluate on the validation set because the validation set is intended to help choose hyperparameters, and the number of epochs (as determined by early stopping) is a hyperparameter. Also, if you don't continue to evaluate on the validation set, you may be using years of data just to tune one knob (# of fine tune epochs). Likewise, the test set becomes a second validation set, so if you want a final assessment of performance you'll need even more data or smaller partitions.

It updates the data prep pipeline to include all data partitions in the pre-training as the default.

Are the pre-training targets for the validation and testing partitions informed using real targets during this time? i.e., have the PB models seen any of this data and been optimized with it or are they more theoretical or derived from different/earlier data. I have sort of a gut-reaction against using the same output (e.g., PB temperature) from unseen dates for pretraining when we will later evaluate that output (e.g., true temperature)on those dates as "out-of-sample", but I don't think that's a problem if the PB can be thought of as simply simulations for that time using equations that were not fit to that time.

Thanks Jeremy! To clarify:

I think it would be preferable to still evaluate on the validation set because the validation set is intended to help choose hyperparameters, and the number of epochs (as determined by early stopping) is a hyperparameter.

Here, the validation is used to tune the number of epochs during training.  Then, when we're calculating the final metrics after all training and hypertuning, I changed the default partition from the val partition to the test.  Our final test of model performance used to be on the val partition, but since we're now training to that in some ways, the new final test is on the test partition. Does that make sense?

but I don't think that's a problem if the PB can be thought of as simply simulations for that time using equations that were not fit to that time.

This change, of showing the pretraining the entire time period of the SB outputs is meant to help the model generalize to 'out-of-sample' conditions.  I think it's safe to think of the PB outputs/pretraining here as somewhat independent from our val/test partitions even though it's giving the model a sneak peak of those years and/or reaches that are being held out.

Here, the validation is used to tune the number of epochs during training

This is what the validation set would/can be used for normally (i.e., setting a hyperparameter, while the training set is used for setting parameters/weights/coefficients), so I don't think using it for early stopping means that you can't use it for between-model evaluation (here, models A and B stopping at training epoch 16 versus 17, respectively). For example, in a generic scenario, you train the same model with 100 epochs, 200 epochs, and 300 epochs, then the validation set would be used to say "ok, 200 epochs is the way to go based on validation set RMSE." Using the validation set for early stopping is just more of a dynamic grid search-like approach for determining the number of epochs (to combat overfitting).

Our final test of model performance used to be on the val partition

We might be using the word 'final' differently. I generally see the validation partition as a way for you (e.g.) to compare the RGCN with 200 pretraining epochs versus the RGCN with 0 pretraining epochs (i.e., compare hyperparameter settings). So, the RMSEs generated on the validation set will be used to compare those different hyperparameters (here, training conditions), then once you have picked the best model (as determined by the validation set), the test set is used to assess performance on data that has not been used in your model construction decision making.
So now (with this PR), if you were to experiment with a RGCN with 200 pretraining epochs versus a RGCN with 0 pretraining epochs (or lets say you added a new variable), the test set would be used to compare those two, and all of your data would have been used in your decision making, leaving no data for a final (more objective) assessment of performance. Is this type of experimentation being done or is it a goal (e.g., with other hyperparameters: different model architectures, loss functions, variable sets)?

I think it's safe to think of the PB outputs/pretraining here as somewhat independent from our val/test partitions even though it's giving the model a sneak peak of those years and/or reaches that are being held out.

Cool, my only concern was if PB pretraining are learned from PB outputs, representing a sort of data leak. Like if I had a data set from 2000-2020 of Y1 and made predictions for that (Y2). Then I tried to predict Y1 with a different approach using 2015-2020 as out-of-sample, then used Y2 2000-2020 as pretraining.
Hope that makes sense and sorry for the book! 😵

Haha, no worries about the book! I think we're on the same page now.  I've seen the test holdout go both ways, but I do see the logic in what you're suggesting (leaving it until the model has been completely finalized).  In the snakemake it's pretty easy to calculate the error metrics for either or both.  What do you think, calculate both or not even calculate test because we're humans and can't help but look at those test numbers during hypertuning/development?

I prefer calculating and looking at error metrics on the validation set and locking away the test set until it's paper-writing time to help it be as out-of-sample as possible (i.e., not looking at its performance and that affecting your decision making). Surprises can happen with that approach, but I think that's part of the scientific discovery and narrative.
Also, agreed that I've seen it both ways; I prefer this way because (informally) I've heard teachers and mentors express skepticism to not having a "true" test set / (over)fitting to the set you are using for evaluation.

locking away the test set until it's paper-writing time to help it be as out-of-sample as possible

Wise.

If I'm reading this correctly, the default is for the early stopping to only be on the fine tuning with the base options (not the pretraining and not with the gw loss option). Is there a reason for this?
I've made a bunch of minor comments throughout the code, but haven't quite finished. I'll look more tomorrow morning.

I'm starting to review this. @SimonTopp  - do you (or I guess anyone else) know why these are showing up like this in the "Files changed" tab? I've never seen that before.

@jsadler2 I mention it in the PR description, but basically my google drive updated in between two commits and I think it changed the base filepaths, then when I pushed, even though the files hadn't changed it thought they were different. I didn't notice it until I actually submitted the PR.  When you look at the diffs though they show that they're identical with the existing files in riv-dl though.

 If you find it worrisome I can rollback those specific files, just let me know.
Oh. Sorry I didn't read that part in the description at the end. I'm not worried about it. Just glad to know that there is a reason and it's not some mysterious git thing that we would be dealing with on the reg.

If I'm reading this correctly, the default is for the early stopping to only be on the fine tuning with the base options (not the pretraining and not with the gw loss option). Is there a reason for this?

@janetrbarclay, the default is to use early stopping with the finetuning (either base options or gw), but not for pretraining because we don't have a validation partition there that can benchmark model performance each epoch..

Looks 👌 to me, @SimonTopp


Unnecessary index calculation

In the function erasureExtendRow when setting a row slice, the start index calculation len(shares)-int(eds.originalDataWidth) is unnecessary because len(shares) is the same as the eds.originalDataWidth.
Same problem exists in the erasureExtendCol function as well.

because len(shares) is the same as the eds.originalDataWidth

Appears correct b/c https://github.com/rootulp/rsmt2d/blob/2e59fbaa585e44d26cc294edb89b51af48dc61eb/codecs.go#L15-L17


feat(tutorial): complete step 2 (Poughkeepsie)

Congratulations! 🥇 You have successfully completed part 2 of the Carbon tutorial.


change navbar properties on scroll

I changed navbar properties on scroll
I changed the scrollbar properties. It looks transparent, to sync with the whole page design features {glassmorphism}
I made the cart icon a react-icon icon so it's not just a png image

great job @theo-fortune
feel free to  contribute more .

great job @theo-fortune feel free to contribute more .

Thank you so much
I will


Adding reason for failing stats

The output looks like this:
local:
    ----------
    Compliance:
        78%
    Failure:
        |_
          ----------
          description:
              /etc/cron.d must be owned by root and must have permissions 700
          gid:
              0
          group:
              root
          mode:
              700
          module:
              stat
          name:
              /etc/cron.d
          reason:
              ----------
              mode:
                  ----------
                  current:
                      755
                  expected:
                      700
          tag:
              CIS-6.1.9
          uid:
              0
          user:
              root

This is going to make the output super verbose. Can this be used via a kwargs flag, or maybe cut down to just the bare minimum required to show the reason.

The kwargs flag should bring modifications also in hubble.py. Maybe @basepi has something to say about this.
Also, I could create a string for reason. I just have to think of its format (in case all mode, uid, user, gid and group fail - I guess it will be longer). I could also cut the gid / group and uid /  user since both ways reflect the same thing.

Something like: expected 600 0 0 / found 644 0 0.

local:
    ----------
    Compliance:
        78%
    Failure:
        |_
          ----------
          description:
              /etc/cron.d must be owned by root and must have permissions 700
          diff:
              expected:  gid 0  uid 0  mode 700  / found:  gid 61572  uid 61572  mode 755
          gid:
              0
          group:
              root
          mode:
              700
          module:
              stat
          name:
              /etc/cron.d
          tag:
              CIS-6.1.9
          uid:
              0
          user:
              root

@cedwards, what about this?

Can you show me an example of just displaying the diff key:value? The rest still seems verbose.

+1

I think it's fine. Most of the time you won't be running with verbose=True. And most people will probably be running with show_success=False and won't have many failures once they fix them. So you see a failure, run the audit again with verbose if you want to see exactly how the failure happened.
I don't think it makes sense to show the diff in non-verbose mode. So either we keep it super-verbose, pull information out of verbose mode, or add a half-verbose mode. I vote for just keeping it super-verbose, since this will only be used sometimes.

I think it's better how it is now: show the diff in verbose mode. I still don't like how the diff string looks though... Any suggestions, @basepi?

I think the first way you did it might be better. I don't think @cedwards was worried about the actual diff being verbose, but rather was worried about all the rest of verbose mode.

@cedwards, @basepi, so should I come back to the first way?

That's my vote. @cedwards can comment as well.

The first way is good.

@basepi, should I deal with the conflicts here?

Ah yes, sorry for that. I moved the modules into hubblestack_nova/modules/. You can try rebasing, but with the rename you might have to manually port your fixes over.


[1.14.4] Sidedness issue

https://gist.github.com/ProsperCraft/b7aaf9c44a2bc19c4807602d4c39443c
Apotheosis-1.14.4-2.0.5

Fixed with 2.0.7 thank you.


'redrawtime' exceeded, syntax highlighting disabled

On Debian 12 OverClock3000
curl 'https://play.google.com/store/apps/details?id=com.discord' | xmllint --format --html - > my.html
vim my.html

and /Discord - Talk, Play, Hang Out.
Source: the Stack Overflow comment 66123465

Would not expect computation time issue as I prettified the HTML.


LOF_sieve

I am running gemini 0.11.0a.  When I run the gemini lof_sieve or gemini lof_interactions it throws a ton of errors.  the comp_het, AR, and AD, and burden work fine.  Had them work fine on previous versions.
My vcf was annotated using snpeff 3.6.
Thanks
Traceback (most recent call last):
File "/usr/local/bin/gemini", line 5, in
pkg_resources.run_script('gemini==0.11.0a', 'gemini')
File "/usr/local/lib/python2.7/site-packages/setuptools-2.1-py2.7.egg/pkg_resources.py", line 488, in run_script
self.require(requires)[0].run_script(script_name, ns)
File "/usr/local/lib/python2.7/site-packages/setuptools-2.1-py2.7.egg/pkg_resources.py", line 1338, in run_script
execfile(script_filename, namespace, namespace)
File "/usr/local/lib/python2.7/site-packages/gemini-0.11.0a-py2.7.egg/EGG-INFO/scripts/gemini", line 6, in
gemini.gemini_main.main()
File "/usr/local/lib/python2.7/site-packages/gemini-0.11.0a-py2.7.egg/gemini/gemini_main.py", line 1099, in main
args.func(parser, args)
File "/usr/local/lib/python2.7/site-packages/gemini-0.11.0a-py2.7.egg/gemini/gemini_main.py", line 638, in lof_sieve_fn
tool_lof_sieve.lof_sieve(parser, args)
File "/usr/local/lib/python2.7/site-packages/gemini-0.11.0a-py2.7.egg/gemini/tool_lof_sieve.py", line 80, in lof_sieve
get_ind_lof(c, args)
File "/usr/local/lib/python2.7/site-packages/gemini-0.11.0a-py2.7.egg/gemini/tool_lof_sieve.py", line 55, in get_ind_lof
transcript_pct = float(transcript_pos) / float(aa_length)
TypeError: float() argument must be a string or a number

I have the same problem and singled the problem down to splice_donor_variant's:
CSQ=splice_donor_variant|||ENSG00000099866|MADCAM1|ENST00000587541||||-/163|protein_coding
And it is caused by -/163 because changing this to 0/163, solves the problem
chr19.VEP.3.part.vcf.zip
$ gemini load --skip-gene-tables -v chr19.VEP.3.part.vcf --skip-gerp-bp --skip-cadd -t VEP test.3.db
$ lof_sieve test.3.db
chrom   start   end     ref     alt     highest_impact  aa_change       var_trans_pos   trans_aa_length var_trans_pct   sample  genotype        gene    transcript      trans_type
Traceback (most recent call last):
  File "/usr/local/bin/gemini", line 6, in <module>
    gemini.gemini_main.main()
  File "/usr/local/share/gemini/anaconda/lib/python2.7/site-packages/gemini/gemini_main.py", line 1179, in main
    args.func(parser, args)
  File "/usr/local/share/gemini/anaconda/lib/python2.7/site-packages/gemini/gemini_main.py", line 728, in lof_sieve_fn
    tool_lof_sieve.lof_sieve(parser, args)
  File "/usr/local/share/gemini/anaconda/lib/python2.7/site-packages/gemini/tool_lof_sieve.py", line 78, in lof_sieve
    get_ind_lof(c, args)
  File "/usr/local/share/gemini/anaconda/lib/python2.7/site-packages/gemini/tool_lof_sieve.py", line 56, in get_ind_lof
    transcript_pct = float(transcript_pos) / float(aa_length.split("/")[1])
TypeError: float() argument must be a string or a number


Generate Code off of YAML / JSON Input FIle

Cool feature would be to generate your model / routes/ controller off of a YAML file - quick test of this was tedious to generate fields off of CLI input. If this is something that you think would be beneficial, I can put together a quick draft for this - or feel free to go for it yourself - in either case, I think I would definitely use this for projects with functionality like that (allows you to source the input YAML / use it as documentation).

We're planning a feature like that for after the v1.0.0. And yeah a draft would be very helpful!

Useful resource: https://github.com/getkin/kin-openapi


chore: add perm needed to sign file urls

s/chore:/fix: ?

I didn't want to use the fix prefix, since this is a merge into another dev branch and it's not a fix to the mainline, just a fix in this branch. We can squash this commit away later


Generating ionic-angular app with Jest and Cypress

Is it possible to generate up configured with Jest and Cypress

Not currently directly through the plugin. However, this plugin just leverages other default plugins, so you could always generate an app with --unitTestRunner none and then run nx g @nrwl/jest:jest-project to configure Jest for your project. I'll try and add this to the docs soon.


Email for vkontakte

The VK provider does not handle email which is returned with the access_token response.
It should be added as a claim.
I cannot extend the current code properly.
Check:
https://github.com/DukeNuken/Duke.Owin.VkontakteMiddleware

now on 2.11.1


Add 'encoding' config option to allow / force opening files with a specific encoding

I originally created my site on my Linux box, and everything worked fine. Unfortunately, one day I tried to build my site on a Windows machine and kept getting the following error:
Error caught: 'charmap' codec can't decode byte 0x9d in position 179: character maps to <undefined>
Unable to clean up properly: 'NoneType' object has no attribute 'shutdown'

The issue was that Python was opening all of my files using Windows' cp1252 encoding, when several of my source files were actually saved as utf-8 encoded. By specifying the encoding named parameter in the open functions, you can tell Python to use a specific encoding rather than that platform's default one; so this is basically what the PR does.
It adds an config variable named encoding, which when set, will open all text files using that encoding. If the variable isn't set, it defaults to None, and things return to the original behaviour.
Let me know if you see any issues, and thanks for making a great tool for people like myself!

Thanks for this! :+1: :grin: Now released in v0.7.0.


Allow group reading admin macaroon

This changes file creation mode on admin macaroon from 0600 to 0640. The
reason is to make permission management easier.
Closes #4385
Is this safe?
Yes, it is. Assuming a reasonably secure Linux system, it will have a
separate group for each user. E.g. a new user lnd gets assigned group
lnd which nothing else blongs to. A system that does not do this is
inherently broken already.
Since there is no other user in the group, no other user can read admin
macaroon unless the administrator explicitly allowed it. Thus there's no
harm allowing group read.
Pull Request Checklist
Because of how trivial the change is, I didn't bother to run tests myself, will let CI do that.

[x] If this is your first time contributing, we recommend you read the Code
Contribution Guidelines
[x] All changes are Go version 1.12 compliant
[x] The code being submitted is commented according to Code Documentation and Commenting
[ ] For new code: Code is accompanied by tests which exercise both
the positive and negative (error paths) conditions (if applicable)
[ ] For bug fixes: Code is accompanied by new tests which trigger
the bug being fixed to prevent regressions - is this necessary here?
[ ] Any new logging statements use an appropriate subsystem and
logging level no new logging
[ ] Code has been formatted with go fmt
[ ] Protobuf files (lnrpc/**/*.proto) have been formatted with
make rpc-format and compiled with make rpc
[ ] New configuration flags have been added to sample-lnd.conf
[ ] For code and documentation: lines are wrapped at 80 characters
(the tab character should be counted as 8 characters, not 4, as some IDEs do
per default)
[ ] Running make check does not fail any tests
[ ] Running go vet does not report any issues
[ ] Running make lint does not report any new issues that did not
already exist
[ ] All commits build properly and pass tests. Only in exceptional
cases it can be justifiable to violate this condition. In that case, the
reason should be stated in the commit message.
[ ] Commits have a logical structure according to Ideal Git Commit Structure

I guess this will go into 0.14 due to its nature? Although if #5150 goes to 0.13.1, then maybe this should as well. I'm asking to know into which release notes file should I write.

OK, I've extracted the constant and added the whole message. I named it adminMacaroonPermissions because it's not umask (that would be 7137) and I found "mac" confusing (mac address? message authentication code?).
What about release notes?

because it's not umask (that would be 7137)

Ah, I guess I still don't understand umasks then :)

What about release notes?

See https://github.com/lightningnetwork/lnd/pull/5537#issuecomment-882371904
I suggest to add a new section # Security and add a bullet point below.

I mean which version this should go to? There are release notes for 1.13 and 1.14

I suggest a larger subsection rather than bullet point to make it clear for readers right away - see PR, what do you think?

Needs a rebase due to conflicts in the release notes section! Somewhat unavoidable, but maybe we can like pre-allocate certain sections to reduce it in the future.

No problem, rebased. Also added myself to contributors which I forgot earlier.
OT: I noticed release notes contain multiple top-level headings, which doesn't seem right - is that intentional?


Add proof status bar

Adds a rich.progress.Progress bar to track proofs as they are running. This includes a timer which stops when the proof completes, the ID of the proof, a status which tracks the overall stage of proof execution: [Loading proof,  Starting KoreServer, Initializing proof, Running proof, Finished], and a summary which is proof-type specific but which for APRProofs shows their status and number of total, pending, passed, failing, vacuous, and stuck nodes, and number of branches. If multiple proofs are proven in the same batch (the same _run_cfg_group call) in sequence, the bars for the thus far completed proofs remain grouped at the bottom of the screen with the currently running proof.
This only works in single-proof mode, i.e. where we run init_and_run_proof directly rather than through multiprocess. A different bar is displayed for the multiprocess mode, which shows the number of proofs finished, total number of proofs, how many passed and how many failed, and the number of workers requested. Unfortunately the display with the multiprocess mode is a bit buggy, though still usable. The worker processes aren't aware of updates to the progress bar, so when they emit a log message, they update the progress bar to its default state, so it appears to "flicker" back to its default state when --verbose is turned on in this mode. For this same reason I was unable to add the proofs as additional bars as they finish in this mode. This is not an issue with single-proof parallelism because there all the log printing is done on one process.
To facilitate the multiprocess mode, I changed from using map to apply_async to be able to run code upon completion of each task. I also bypass the multiprocessing in the case where multiple workers were requested but there is only one proof selected.
The status bar is enabled by default on kontrol prove. To disable it pass --hide-status-bar.

Overall it looks great! I added some screenshots below.

A couple suggestions:

maybe also adding terminal nodes to the list?
is it possible by any chance to replace / with \n and display the different nodes on multiple lines?

0:01:12 test%GLDTokenTest.testTransferFailure_0(address,uint256,bytes32):0 Finished PASSED
    6 nodes
    0 pending
    1 passed
    0 failing
    0 branches
    0 vacuous
    0 stuck

 -

@nwatson22  Thank you for looking into this! Then it makes sense to keep it on one line. I didn't execute multiple proofs :sweat_smile: . Perhaps it would improve the readability if you would replace the column separator with | ? The current one / might be confused with the division? I don't know.

@nwatson22 Thank you for looking into this! Then it makes sense to keep it on one line. I didn't execute multiple proofs 😅 . Perhaps it would improve the readability if you would replace the column separator with | ? The current one / might be confused with the division? I don't know.

@anvacaru I opened a branch in the k repo here which does both these: https://github.com/runtimeverification/k/pull/4566


Rename :primitive as :module.

As discussed in Zulip, we think this will make the intent of the concept more clear to newcomers that don't already know Pony concepts.

I am curious how a Savi :class with no fields will be different from a :module. Is it merely that :module restricts all functions to be non and that no constructors are allowed (or are the constructors statically initialized)?

Yes, a :module cannot be constructed and it has one statically allocated singleton instance, so when you check its identity you will always see the same identity.
An empty :class would have a different identity each time, so you could for example use one as you use make_ref in Erlang to get a token that is guaranteed to be unique during its lifetime. In this case the token is the pointer address where the class was allocated, which is guaranteed to be unique by the garbage collector.

Very clear when used as a "bag of functions". I assume you'll add mixin capabilities later on :).

We do have :is and :copies today which are two slightly different ways of mixing in common methods, though I've been using them with :trait as the mixin source rather than :primitive/:module.
:is implies that there is a direct subtype relationship, so it would only work with :trait (nothing can be a subtype of a concrete type, including a :primitive/:module. An example is the Equatable trait - when you "mix it in" via :is the compiler will also enforce that you do everything necessary to make it a valid subtype of the trait.
:copies by contrast will only mix in the functions but will not enforce that the end result is a valid subtype. So this can be used for code sharing without enforcing a subtyping relationship.
In both cases I think :trait is usually the most logical choice for a "mix in" source, but in theory I think you could use a :primitive/:module as the mix in source for a :copies declaration. You just wouldn't have the ability to have non-implemented methods in the source module like you do with trait.
In general, I think when you see "module" in Savi, you should think about modules from functional programming languages rather than modules from Ruby. In Ruby, the concept of a module is rather conflated together with what in Savi we would call a :trait. But if you have to think about Ruby, then think about module_function which is basically the right concept for a Savi module.

e.g. None. In Rust, this would be just a zero-sized struct

In theory we could make it a zero-sized struct in Savi too, though in today's Savi compiler that would be non-optimal because when we wrap it in a union (e.g. (String | None)) we would allocate a new wrapper every time. We don't (yet, I suppose) have an optimization in place that recognizes that an empty struct could use a statically allocated wrapper - quite similar to :primitive/:module.


Improve makeArrayTypeName's algorithm for choosing array type names.

As before, we start by prepending one underscore (truncating the base name if necessary).  But if there is a conflict, then instead of prepending more and more underscores, append an underscore and some digits, in much the same way that ChooseRelationName does.  While the previous logic could be driven to fail by creating a lot of types with long names differing only near the end, this version seems certain enough to eventually succeed that we can remove the failure code path that was there before.
While at it, undo 6df7a9698's decision to split this code out of makeArrayTypeName.  That wasn't actually accomplishing anything, because no other function was using it --- and it would have been wrong to do so.  The convention that a prefix "_" means an array, not something else, is too ancient to mess with.
Andrey Lepikhov and Dmitry Koval, reviewed by Masahiko Sawada and myself
Discussion<EMAIL_ADDRESS>

closes: #ISSUE_Number

Change logs
Describe your change clearly, including what problem is being solved or what feature is being added.
If it has some breaking backward or forward compatibility, please clary.
Why are the changes needed?
Describe why the changes are necessary.
Does this PR introduce any user-facing change?
If yes, please clarify the previous behavior and the change this PR proposes.
How was this patch tested?
Please detail how the changes were tested, including manual tests and any relevant unit or integration tests.
Contributor's Checklist
Here are some reminders and checklists before/when submitting your pull request, please check them:

[x] Make sure your Pull Request has a clear title and commit message. You can take git-commit template as a reference.
[x] Sign the Contributor License Agreement as prompted for your first-time contribution.
[x] List your communication in the GitHub Issues or Discussions (if has or needed).
[x] Document changes.
[x] Add tests for the change
[x] Pass make installcheck
[x] Pass make -C src/test installcheck-cbdb-parallel
[x] Feel free to @cloudberrydb/dev team for review and approval when your PR is ready🥳

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.


Exact duplicate of an appointment

TEOS accepts multiple appointments with the same locator and handles them. This is desired since not doing so would make TEOS susceptible to appointment replacement and appointment front running attacks:
Appointment replacement attack: TEOS keeps track of the latest appointment received given a locator. An attacker replaces a valid appointment by registering an invalid one after the honest party.
Appointment front running attack: TEOS keeps track of the first appointment received given a locator. An attacker prevents an appointment to be registered by an honest party by registering an invalid appointment with the same locator.
However, we may want to avoid storing identical appointments.

This is partially covered by #124. Replicas of the same appointment within the same user subscription are updates, and only the last one is kept.
Copies of the same appointment within different users are possible. This is still an issue atm, but should be solved once the subscriptions require a payment, provided that no small subscriptions are allowed.


Some prefabs were missed when moving the location of Interpolator.cs

Update the prefabs so they don't try to reference a script they can't find.

Hi @timGerken, I'm your friendly neighborhood Microsoft Pull Request Bot (You can call me MSBOT). Thanks for your contribution!

It looks like you're a Microsoft contributor (Tim Gerken). If you're full-time, we DON'T require a Contribution License Agreement. If you are a vendor, please DO sign the electronic Contribution License Agreement. It will take 2 minutes and there's no faxing! https://cla.microsoft.com.

TTYL, MSBOT;

@ChimeraScorn


Subcollections support

It's not possible to have a subcollection tied to the function, it has to be on the root or it won't work.

I am not sure I understand your use case.  If you can provide more details, I can try to look into it.  thanks

Sorry, what I meant is that if it's possible to use listeners to collections with interpolated document keys something like "parent_collection/$document_id/target_collection"

It is supported.  Example syntax is parent_collection/{parentId}/target_collection.  One note, there is not depublication process on subcollections.  So if there is a record with the same data in multiple sub collection but with different ids, you will have multiple corresponding records in Algolia.

Also, if you plan to use a new index for the subcollection, make sure the API key you are using has the proper permission.

Reopen the issue if you have further questions.

Hi @smomin !
Is it possible for generic path as well something like parent_collection/*/target_collection, because I tried it already and it didn;t work. Or it is only possible for specific parentId.

Could you provide the proper syntax for adding a subcollection. I have tried the below with no success.
Recipes/{parentId}/recipes
Recipes/{documentId}/recipes

Can you provide more detail on this issue?  Are the parent and child collection both are called recipes?

@smomin I have the following structure:

ParentCollection

Document1

CollectionA

Document2

CollectionB

Document3

CollectionC

How can I index the contents of all (documents and collections) inside ParentCollection? Should I just use the /ParentCollection path?


Add library size check in CI

This will help in keeping redux tiny.
It's basically,
this in the terminal:
 PASS  ./dist/redux.min.js: 2.18kB < maxSize 2.5kB gzip

and something like this in the pull request:

Setting the file and threshold:
The config sits inside package.json, the maxSize is set to 2.5kB right now.
You can add multiple files here. (docs)

Authorize bundlesize:
bundlesize needs access to github API with scope repo:status, You can follow the steps here

Changes made:

[x] Add bundlesize as dev dependency
[x] Add config for bundlesize
[x] Move build before test in prepare script
[x] Split test script to test:unit and test:size
[ ] Add github token to travis environment variables (you have to do this)

Happy to hear your feedback 😄

Hmm, I like this. Would be interesting for our efforts in #2358.
@gaearon Thoughts? Is this something you care about at all?

@timdorr Anything I can do to help? 😅


Add avatar component

✍ Description
Added avatar component so it properly shows avatar wherever we need it. This component includes options for different sizes, avatar source, or displaying initials if no picture is available. It also has different background colors for different initials.
An example of how to use it:
<%= render AvatarComponent.new(alt: current_user.first_name.first.upcase, src: current_user.avatar) %>
This component shows a picture if the user has an avatar. If the user has no avatar it shows it's initial with a colored background.
I already added the component to the navbar/dashboard/dropdown.
📷 Screenshots/Demos

looks good thank you. I will make an issue to add to the staff index page as well.

Thanks @BakiVernes  for your contribution! I like ViewComponents and I introduced at my work. I'am debating however if this is the right technical choice for this project. When deciding between ViewComponents and nice_partials, we opted to use nice_partials because it's similarity with regular rails partials. My reservation from using ViewComponent is forcing newer contributors to learn a new syntax for handling view logic and thus causing contributions to take longer.
I'am working with the internal team to decide if we should reverse that decision or continue with this. Apologies for the back & forth on this one but I feel it is important to re-exam here.
What do you think @BakiVernes ?

@BakiVernes my fault. I initiated the discussion on this but made the decision to merge a little too soon. I think this is worth some consideration to streamline implementations and approaches within an open source app.

I agree @edwinthinks. I just saw something in the app that I wanted to touch up and did it without consider the broader picture. Since I am new to this project I don't know the in and outs of the architecture so bear with me if I make and oversight like this.
I'll gladly make another PR to remedy this and use nice_partials for this feature if you'd like.

Hey @BakiVernes thank you for taking the initiative! Are you open to doing the same but with nice_partials? That would be awesome.


Filter: path support for RequestRedirectFilter

As a user of NGF
I want to have a RequestRedirect Filter for my paths for my API
So that I can redirect using paths.
Acceptance

The path option of the RequestRedirect filter is implemented as defined for HTTP Routes here.
The compatibility doc is updated with path support for the requestRedirect filter.
Existing how-to guide for redirects is updated to describe how to use the path option of a redirect filter.
Conformance test for path redirects is enabled

@sjberman @mpstefan
Hi, I am new to the open source contribution. I would like to working/look on this issue.
Is there anyone working on this issue?
Thanks

@Imesh7 Nobody is currently working on this issue, feel free to take a look at it! Thanks for your interest!

Hi @sjberman ,
I am working on this issue.
As in the doc HTTPPathModifier has replacePrefixMatch , In here how to get the prefix match to the createRewritesValForRewriteFilter fuction

@Imesh7 The HTTPRequestRedirectFilter struct will need to be updated to include the path.

Proposal to solve the Issue
1. add Path field to HTTPRequestRedirectFilter struct , type is pointer to HTTPPathModifier
type HTTPRequestRedirectFilter struct {
	Scheme *string
	Hostname *string
	Port *int32
	StatusCode *int
	Path *HTTPPathModifier
}

2. configure nginx
Existing function
https://github.com/nginxinc/nginx-gateway-fabric/blob/bf87eec5cb510659971b7836348e4fbf256f260f/internal/mode/static/nginx/config/servers.go#L269C29-L269C29
Proposed function (Please read the comments on the below function)
//added 'path' as paramter , because it is the Request Path
func createReturnValForRedirectFilter(filter *dataplane.HTTPRequestRedirectFilter, listenerPort int32, path string) *http.Return {
	if filter == nil {
		return nil
	}

	hostname := "$host"
	if filter.Hostname != nil {
		hostname = *filter.Hostname
	}

	code := http.StatusFound
	if filter.StatusCode != nil {
		code = http.StatusCode(*filter.StatusCode)
	}

	port := listenerPort
	if filter.Port != nil {
		port = *filter.Port
	}

	hostnamePort := fmt.Sprintf("%s:%d", hostname, port)

	scheme := "$scheme"
	if filter.Scheme != nil {
		scheme = *filter.Scheme
		// Don't specify the port in the return url if the scheme is
		// well known and the port is already set to the correct well known port
		if (port == 80 && scheme == "http") || (port == 443 && scheme == "https") {
			hostnamePort = hostname
		}
		if filter.Port == nil {
			// Don't specify the port in the return url if the scheme is
			// well known and the port is not specified by the user
			if scheme == "http" || scheme == "https" {
				hostnamePort = hostname
			}
		}
	}

         // Starts from here
	newPath := "$replace_path"
	redirectFilter := filter.Path.Replacement

	if filter.Path != nil {
		switch filter.Path.Type {
		case dataplane.ReplaceFullPath:
			{
				newPath = filter.Path.Replacement
			}
		case dataplane.ReplacePrefixMatch:
			{
				if filter.Path.Replacement == "" {
					newPath = path
				}

				// eg:= if path is /foo/bar
				// redirectFilter is /xyz/
				regex := fmt.Sprintf("^%s(.*)$", path)

				re, err := regexp.Compile(regex)
				if err != nil {
					fmt.Println("Error compiling regex:", err)
				}
				replacement := fmt.Sprintf("%s$1", redirectFilter)
				newPath = re.ReplaceAllString(path, replacement)
				//newPath is /xyz/bar
			}
		}
	}

	return &http.Return{
		Code: code,
		Body: fmt.Sprintf("%s://%s %s", scheme, hostnamePort, newPath),
	}
}

@sjberman
Can I know I am on the correct move & Happy to have some requests.
Thanks

I think the approach in general is on the right track. We'll know for sure once we start testing all the variants in the example table to see if they redirect properly.
A few things to note:

newPath can just be initialized to an empty string; "$replace_path" doesn't add any value
I don't think you need to use the regexp library at all. Nginx will use the regex to match the incoming request. The control plane doesn't have to do anything.
You can likely follow a similar pattern that is established in createRewritesValForRewriteFilter to ensure that / is handled properly, and probably don't need any string replacements like you have.

@sjberman  I have a question,

You can likely follow a similar pattern that is established in createRewritesValForRewriteFilter to ensure that / is handled properly, and probably don't need any string replacements like you have.

createReturnValForRedirectFilter function should return http.Return
&http.Return{
	Code: code,
	Body: fmt.Sprintf("%s://%s %s", scheme, hostnamePort, redirectPath),
}

for the ReplacePrefixMatch implemtation , without string replace how to return the value

What I mean is that you don't need to use the regexp library and call ReplaceAllString. The regex variable used in the rewrite function is a literal string that is put into the nginx config, it's not used by the control plane to determine how to replace the path. However, this is only used in the rewrite case because the rewrite nginx directive uses the regex string as one of its inputs. The return directive used for a redirect does not use that input.
The redirectPath for the prefix case should be whatever was defined in the filter, plus appended to it should be whatever else was a part of the request path. So if the location block is /foo, our filter is /xyz, then a request to /foo/bar would be redirected to /xyz/bar. We have to be able to preserve /bar at the end (or whatever a request path may contain), which we don't know about until a request actually comes into nginx. This means that we need some way in nginx to capture whatever extra path segments are added on to /foo so we can append those to /xyz. This issue is turning out a little more complicated than I originally thought!
@pleshakov Do you know if there's a way in nginx to capture the path segments without using a regex location path, so that we can append them to the redirect path? I'm not finding anything, so we may have to update this specific location block to use a regex path, just so we can capture the request path segments if they exist.

@pleshakov Do you know if there's a way in nginx to capture the path segments without using a regex location path, so that we can append them to the redirect path? I'm not finding anything, so we may have to update this specific location block to use a regex path, just so we can capture the request path segments if they exist.

@sjberman I woudn't use regex location, because they change how request matching is processed https://nginx.org/en/docs/http/ngx_http_core_module.html#location
what if we just use rewrite directive to rewrite uri of the request, similar to what we do in the rewrite filter?

@pleshakov The expectation with a redirect is a 3xx response and the client performs the redirection. A rewrite happens server-side and the client is unaware.

@pleshakov The expectation with a redirect is a 3xx response and the client performs the redirection. A rewrite happens server-side and the client is unaware.

yep, so we do rewrite the same way, but then perform a redirect.
So something like below. Would that work?
server {
    listen 8093;

    location /foo {
        rewrite ^/foo(.*)$ /xyz$1;
        return 302  $uri;
    }
}

curl localhost:8093/foo/abc -I
HTTP/1.1 302 Moved Temporarily
Server: nginx/1.25.3
Date: Thu, 11 Jan 2024 17:28:16 GMT
Content-Type: text/html
Content-Length: 145
Location: http://localhost:8093/xyz/abc
Connection: keep-alive

@pleshakov Oh I see, yeah that looks like it could work. I'm curious if there is much of a performance difference doing it this way versus a regex location with just a return.
Regarding the regex location, what specifically should we be worried about in regards to the matching? Is it the case of a user specifying /foo and /foo/bar in their HTTPRoute, with the former using a regex and therefore unintentionally matching the latter?

@sjberman
regex location can mess up prefix matching, because if it matches, all prefix locations will be ignored. Please see https://nginx.org/en/docs/http/ngx_http_core_module.html#location
server {
    listen 8094;

    location /hello/abc {
        return 200 "hello/abc\n";
    }

    location ~^/hello {
        return 200 "hello\n";
    }
}

curl localhost:8094/hello/abc
hello

@pleshakov Understood. This will make regex path support very interesting in the future...

Moving to backlog as there has been no PR activity.


Connect wallet on mobile

seems the mobile version needs tune 🥹

👋

seems the mobile version needs tune 🥹

I guess reloading the page on mobile could help.