Support for rollup v3 (for rollup-plugin-copy)

Hey, there, would be really cool if we could get support for rollup v3. rollup-plugin-copy actually seems to be working just fine, I just had to change how I import the plugin. I need to use
import { copy } from "@guanghechen/rollup-plugin-copy";

instead of
import copy from "@guanghechen/rollup-plugin-copy";`

This is probably related to the fact that the rollup config now is not transpiled to commonjs anymore, but loaded in node as an es module.
So I don't think there's much to do on your side, aside from declaring compatibility with rollup v3 in the package.json. At the moment, a peer dependency to `"rollup": "^2.0.0" prevents using this plugin with rollup v3.
Thanks in advance!

Hi @ghost91-,  do you mean I just need to change the dependency version from "rollup": "^2.0.0" to "rollup": "^2.0.0 || ^3.0.0"? If that is true, feel free to create a PR (I have not a rollup@3 test environment in local machine), I will review it and publish a new release as soon as possible.
PS: I haven't planned to support rollup@3 recently. It seems that it will invalidate my entire packaging toolchain (I still need to support the packaging in commonjs format), but I should take the time to complete support for rollup@3 in the future. This project is one of my core projects and will be supported for a long time.

From what I have seen, that is indeed al that is needed, at least for this particular plugin. I'll create a PR.

Hi @ghost91- , the change is already released.


Added required fields in homology

@VarunReddy1111, @chris-grove  - is it possible to also link this change to an issue in Jira? -- does that happen automatically from the other end (E.g. I would see the link in the Jira issue but maybe not here)?

OK, I've labeled both PRs with the ticket ID, so they are both linked now.


Change background color for selected lines with nvim-cmp

Hi,
I can't find a way to change the background color of the selected/highlighted line in the dropdown-menu that shows up when e.g. nvim-cmp comes with completion suggestions. As of now, the color of the highlighted item is very hard to separate from the other items. Are there any settings I can use to e.g. make the background color any brighter?

As long as you don't have custom highlights set in your nvim-cmp config this should work:
require("nordic").setup({
    override = {
        Pmenu = { bg = "#CB775D" }
    }
})

This works perfectly fine, thanks for the quick response!

Hi,
I can't find a way to change the background color of the selected/highlighted line in the dropdown-menu that shows up when e.g. nvim-cmp comes with completion suggestions. As of now, the color of the highlighted item is very hard to separate from the other items. Are there any settings I can use to e.g. make the background color any brighter?

I now realize that those colors are selected based on the assumption that the user will have border chars for that menu.  Do you think we should change this @5-pebbles?

I now realize that those colors are selected based on the assumption that the user will have border chars for that menu. Do you think we should change this @5-pebbles?

Yeah, we should; it's very hard to see by default. Actually, bg_popup is defined twice for some reason?
I personally like bg_popup = bg_float with bg_selected = gray2:

& with swap_background = true:

I also thing we should change the light visual selection to gray2 but that's its own thing

I now realize that those colors are selected based on the assumption that the user will have border chars for that menu. Do you think we should change this @5-pebbles?

Yeah, we should; it's very hard to see by default. Actually, bg_popup is defined twice for some reason?
I personally like bg_popup = bg_float with bg_selected = gray2:  & with swap_background = true:

I also think we should change the light visual selection to gray2 but that's its own thing.

Yeah that looks good!

I've been trying this on the dev branch and the colours are the same as reported by OP.
Lazy config:
    'AlexvZyl/nordic.nvim',
    lazy = false,
    priority = 1000,
    branch = "dev",
    config = function()
      require('nordic').load({
        on_highlight = function(highlights, palette)
          highlights.NeoTreeGitUntracked = { fg = palette.magenta.dim } -- this is fine
        end
      })
    end

I've tried adding
highlights.Pmenu = { bg = "#ffffff" }

to the on_highlight function but it doesn't change anything.

I've been trying this on the dev branch and the colours are the same as reported by OP.
Lazy config:
    'AlexvZyl/nordic.nvim',
    lazy = false,
    priority = 1000,
    branch = "dev",
    config = function()
      require('nordic').load({
        on_highlight = function(highlights, palette)
          highlights.NeoTreeGitUntracked = { fg = palette.magenta.dim } -- this is fine
        end
      })
    end

I've tried adding
highlights.Pmenu = { bg = "#ffffff" }

to the on_highlight function but it doesn't change anything.

I can't reproduce your issue:
'AlexvZyl/nordic.nvim',
lazy = false,
priority = 1000,
branch = "dev",
config = function()
    require('nordic').load({
        on_highlight = function(highlights, palette)
            highlights.Pmenu = { bg = "#ffffff" }
        end
    })
end

I would guess, however, that your nvim-cmp config is using a different highlight (not Pmenu).
Could you share that config?

Ignore me, you were absolutely right I had highlight overrides that I completely forgot about in nvim-cmp which explains my issue!


Cache - additional paths

Description:
I need more paths to cache: eg when I sued sonar I added:
      - uses<EMAIL_ADDRESS>        with:
          path: |
            ~/.m2/repository
            ~/.sonar/cache

Hello @slawekjaranowski. Thank you for your report. We would not like to implement such kind of logic, because the initial caching logic for setup-java should cover the most often use cases. If you want to use some more complex caching logic we would recomend you to use actions/cache. It's relevant to setup-node ADR.
For now I'm closing the issue.

Ok, it is clear for me.
It will be fine if such assumption will be placed in project.


add sandberg.nl domain

Adding https://sandberg.nl/
The Sandberg Institute is the postgraduate programme of the Gerrit Rietveld Academie Amsterdam.
Most departments engage in new media art / coding / IT but i especially wanna highlight the "Artificial Times" department (2 years) dealing with AI: https://sandberg.nl/temporary-program-artificial-times-course
Adress: Fred. Roeskestraat 96, 1076 ED Amsterdam, NL

@milangress First stage of verification passed, official domain is sandberg.nl as far as I verified. This is just an informational note. Pull request is still in the review. I appreciate your patience while waiting for the final decision.

@milangress I am closing this request as a duplicate, because the domain is already in the trusted list. Thank you!


Switch for rounded corners on widgets

I would like the option of building widgets with rounded corners given the unicode characters for this exist. I have tried to figure out how to implement that option but am having a difficult time figuring out the flow that leads to building a widget and where that option would be introduced.
The below snippets may be confusing, so you can skip those and check https://github.com/stevensonmt/tui-rs/commit/db80ae911174cc388c10092e12a2713d7c8b24ab if that is easier.
In symbols::line I have this:
pub mod line {
    pub const TOP_RIGHT: &str = "┐";
    pub const TOP_RIGHT_ROUNDED: &str = "╮";
    pub const VERTICAL: &str = "│";
    pub const HORIZONTAL: &str = "─";
    pub const TOP_LEFT: &str = "┌";
    pub const TOP_LEFT_ROUNDED: &str = "╭";
    pub const BOTTOM_RIGHT: &str = "┘";
    pub const BOTTOM_RIGHT_ROUNDED: &str = "╯";
    pub const BOTTOM_LEFT: &str = "└";
    pub const BOTTOM_LEFT_ROUNDED: &str = "╰";
    pub const VERTICAL_LEFT: &str = "┤";
    pub const VERTICAL_RIGHT: &str = "├";
    pub const HORIZONTAL_DOWN: &str = "┬";
    pub const HORIZONTAL_UP: &str = "┴";
}

and for layout::Rect
pub struct Rect {
    pub x: u16,
    pub y: u16,
    pub width: u16,
    pub height: u16,
    pub rounded_corners: bool,
}

impl Default for Rect {
    fn default() -> Rect {
        Rect {
            x: 0,
            y: 0,
            width: 0,
            height: 0,
            rounded_corners: false,
        }
    }

and in widgets::block:
        // Corners
        if self.borders.contains(Borders::LEFT | Borders::TOP) {
            let top_left = match area.rounded_corners {
                true => line::TOP_LEFT_ROUNDED,
                _ => line::TOP_LEFT,
            };
            buf.get_mut(area.left(), area.top())
                .set_symbol(top_left)
                .set_style(self.border_style);
        }
        if self.borders.contains(Borders::RIGHT | Borders::TOP) {
            let top_right = match area.rounded_corners {
                true => line::TOP_RIGHT_ROUNDED,
                _ => line::TOP_RIGHT,
            };
            buf.get_mut(area.right() - 1, area.top())
                .set_symbol(top_right)
                .set_style(self.border_style);
        }
        if self.borders.contains(Borders::LEFT | Borders::BOTTOM) {
            let bottom_left = match area.rounded_corners {
                true => line::BOTTOM_LEFT_ROUNDED,
                _ => line::BOTTOM_LEFT,
            };
            buf.get_mut(area.left(), area.bottom() - 1)
                .set_symbol(bottom_left)
                .set_style(self.border_style);
        }
        if self.borders.contains(Borders::RIGHT | Borders::BOTTOM) {
            let bottom_right = match area.rounded_corners {
                true => line::BOTTOM_RIGHT_ROUNDED,
                _ => line::BOTTOM_RIGHT,
            };
            buf.get_mut(area.right() - 1, area.bottom() - 1)
                .set_symbol(bottom_right)
                .set_style(self.border_style);
        }

As I've dug into the rabbit hole of the build pattern I find that terminal_size() returns a rectangle (which seems a bit counter-intuitive to me as "size" implies just dimensions not shape). This seems to be the starting point so I've added a rounded_corners: bool field to the termion::TermionBackend struct and changed the size() method to:
    /// Return the size of the terminal
    fn size(&self) -> io::Result<Rect> {
        let terminal = termion::terminal_size()?;
        Ok(Rect::new(
            0,
            0,
            terminal.0,
            terminal.1,
            self.rounded_corners,
        ))
    }

By then adding appropriate boolean parameters to the termion_demo.rs and ui.rs files I have been able to compile the demo but the corners are still sharp not rounded. Any suggestions?

Just as proof of concept to show that this isn't totally a fool's errand, simply replacing the symbols with the rounded corner symbols does still look nice:

compared to default sharp corners:

It seems the issue is that Layout::split is creating default Rects which use the sharp corners and then applies various settings to the collection of Rects. I don't see an ergonomic way to add the rounded corners option in that function but I don't really grok the solver there. Simply having the default rect be rounded_corners: true does in fact render widgets with rounded corners though, so I think this is the crux of the issue.

https://github.com/stevensonmt/tui-rs/commit/238284fac6cded829af8c8b322ef793a8f1ebc6d
Feels like a better approach but still not propagating the setting from terminal creation to block drawing.

Got it sorted. Working for termion now. Can probably close this issue, but is this something of enough interest to do a PR for?

I think I'm going to work in this over the weekend with a plan to have compile time features to allow use of rounded corners, sharp corners, or both. This should make it simpler than passing along a boolean field to everything. For the "both" option I think I'll just add a Rounded_Block struct that duplicates the Block struct but uses the curved box drawing glyphs.

My initial go at adding features for rounded corners is here. I'd be interested in feedback.

Will be introducing a trait Blocky that will implement all methods currently required for the Block struct. The RoundedBlock and DoubleBlock structs will then implement this trait such that the appropriate unicode characters are used to draw the boxes. These optional block types can be included as features if desired using the features rounded and double. Considering a third optional block type ComplexBlock that will allow combining different line weights or combining single and double line borders.

PR here.


Update go version in go.mod to use 1.N.P format

Update go.mod to use the latest go standard toolchain versioning of 1.N.P. So basically update from 1.21 to 1.21.x

I can have a look at this one!

@jameskim0987 Thank you! Assigned it to you


Working Calyx Implementation of AXI Read channels

This PR adds a working implementation of the read portion of an AXI interface according to the latest spec and RTL kernel specifications for XRT.
Currently the tests are a bit of a pain to run, requiring some replacement of the verilog code generated. To this end here is a zipped .fst showing the waveforms of the three tests, in case anyone is interested.
The calyx is heavily commented, so hopefully not too bad to go through. However I know this is a lot so happy to hop on a call sometime to go over things.
Some thoughts about this so far:

There are definitely some inefficiencies in our interface. The immediate one that comes
to mind is that handshakes require 2 cycles instead of one. Servicing reads (writing them to the seq_mem_d1 in the calyx program takes ~9 cycles. And we also utilize a data_bus only as wide as our memory (32 bits for an eventual integer dot-product test case).
Some of the grouping we were initially trying to have, a blocking group, a servicing group, an assert and deassert group, had to be combined together due to the time it takes to transfer between groups. @sampsyo and I spoke very broadly about there possibly being future work here to enable faster transitions between groups (1 cycle as opposed to 2 right now IIRC).

These will be added to #1733 and tracked there but for now some TODOs:

Make cocotb tests interface with runt
Create tests that perform more than 1 transaction
Work on write channels.

Hopefully this last one will be a bit more straightforward now that there is some infrastructure in place and working channels to pattern match off of.
cc @andrewb1999 @rachitnigam @sampsyo

Awesome!!!!! Really cool that this is minimally working for the read side.
To slightly expand on this:

Some of the grouping we were initially trying to have, a blocking group, a servicing group, an assert and deassert group, had to be combined together due to the time it takes to transfer between groups.

I actually think this is a super interesting problem that has implications for static/dynamic Calyx assignments. Artistically, we would like to be able to manage an AXI transaction with a control program like this:
while <more transactions to do> {
  seq {
    assert_ready;  // tell the remote side we are ready for their data
    wait_for_valid;  // wait for them to send us stuff
    par {
      do_transfer;  // actually do things the data on the bus
      deassert_ready;  // tell them to wait while we process the data
    }
  }
}

The problem is that AXI, of course, is super cycle-timing-sensitive. Remember that one of the core invariants is:

On any cycle when both ready=1 and valid=1, a transaction occurs.

So the remote side can schedule these transaction cycles back-to-back, i.e., 3 transactions can happen in exactly 3 cycles. Most saliently for us, say the remote side just keeps its valid signal high all the time and relies on us to assert/deassert ready to do transfers. Then, if we need to take some time to process a transfer, we have to be absolutely sure we only assert ready for one cycle at a time.
The problem with dynamic Calyx is that it offers no guarantees about how long it takes to go from wait_for_valid above to deassert_ready. And in practice, it actually does waste at least one cycle, meaning that the remote side sees us do two transfers when we only wanted one.
The big upshot of static Calyx is that it does offer these guarantees, so we would like to be able to just sprinkle the static everywhere get the timing we want. There is a critical problem, however: the wait_for_valid group is fundamentally dynamic. Our "dynamic islands" approach does not support sequencing a dynamic group with a static one with a zero-cycle transition latency.
So the big design question that I think this opens up is: is there some rule we can make up that would allow this kind of sequencing? That is, to allow some version of seq { a ; b } where a is dynamic and b is static where we can guarantee that b runs in the same cycle where a says it is done. It seems hard to do in general but maybe there is something we can do for restricted cases?

@sampsyo Interesting point! Do you want to move this into an issue? Seems like there is some level of deeper semantics tweaking needed to make this work because we'd need to think about providing timing guarantees in a dynamic context.

FYI, I think this is good to merge whenever you're ready, @nathanielnrn!


fix: fix cron

Summary
Fix the cron using the error blueprint to run pipelines.
When processing multiple blueprints, when the function in AddFunc is running, the blueprint object actually called at this time is inconsistent with the blueprint when AddFunc is called.
This caused it to select the wrong blueprint to execute the pipeline, which in turn caused an error.
Does this close any open issues?
Closes #4761
Screenshots

Why did this issue happen?

Why did this issue happen?

It happened because of the Variable Scope, the AddFunc is nested inside a for loop which effectively are all using the same blueprint to create new pipelines, when multiple cronjobs get triggered, the first one would succeed but the rest would fail because running multiple pipelines of the same bp is not allowed:
https://github.com/apache/incubator-devlake/blob/1e2b351f4cd2ba86e913c3f11159f409e62718cc/backend/server/services/pipeline_helper.go#L44
This should close the #4779 and #4538 as well


Custom Packages not working on ionic upload or ionic package

Greetings. I am using ionic upload and ionic package build to create my apps. However I see that when I use them, the custom packages are not compiled and the uploaded apps does not have them. Is there any way to solve this? As I need to upload apps using custom cordova packages such as https://www.ezartech.com/
When I build apps using ionic run everything works Ok.
Please help.

We are having a similar issue. When using the cloud package service, the phonegap-plugin-push plugin does not get packaged. Everything is fine if we build ionic locally.

How are you using ionic upload? I assume you mean you are loading the app in Ionic View. If this is the case, the list of supported plugins are listed here.
For Ionic Package, make sure your plugins are listed in config.xml as specified here.

No, we are calling: ionic package android --profile dev.
We then log in to our ionic cloud account and download the .apk directly for install. If you also extract that .apk, you'll notice that phonegap-plugin-push is completely missing from the plugins directory.
Yes the plugin is listed in our config.xml, and works fine on local builds. I have seen 3 other threads detailing the exact same issue. Specifically it appears version 1.9 of phonegap-plugin-push does not work because ionic cloud may not have cocoa pods installed.


Request: Red for "Not planned"

It might be useful to distinguish between the "No-one has volunteered!" and "Thanks but no thanks" packages, right now both are colored orange.
For example, pyyaml has explicitly said they have no plans to support free threaded builds:
https://github.com/yaml/pyyaml/pull/830#issuecomment-2342475334

msgpack has also said "Do not ask support for it"
https://github.com/msgpack/msgpack-python/issues/613#issuecomment-2295558011


Windows CI is failing

The windows CI build has been failing for quite some time, this requires some immediate attention.

Looks like they've been running fine after https://github.com/codex-storage/nim-codex/pull/485


modules/sound: upgrade asahi-audio to 2.2

This PR contains the necessary changes needed to upgrade asahi-audio to the 2.x series. In particular, we:

upgrade nixpkgs to latest (one containing Wireplumber 0.5.2)
bump asahi-audio to 2.2
remove the Wireplumber downgrade
assert a minimum Wireplumber version needed for use
make changes needed to have the sound module work with the 0.5.x Wireplumber series

Supersedes #183 .

Since this needs recent nixpkgs-unstable anyway, please also remove the !newHotness logic.

Manually merged here, latest nixpkgs doesn't work with old wireplumber for whatever reason. I dropped all the compatibility logic too.


Remove all use of Formatting#suffix

Since "whitespace" suffixes could also contain comments, and we want to separate comments and prefix, we need to no longer have any AST elements containing Formatting with suffixes.

This is done on master

This is done on master


Allow user provide more detail to YCSB

This allows the user to modify the YCSB workload a bit.

/rerun all

/rerun all

/rerun all

/rerun all

This is failing in kni and minishift because it is trying to write to /data/db which would be a privileged location.


Generator should give error when submessage with callbacks is used inside oneof

What steps will reproduce the problem?
1. Create a message with callback fields.
2. Put said message inside another message's oneof field.
3. Run generator and try to decode the message.
4. Generator does not complain but decoding will not work properly.

What is the expected output? What do you see instead?
Generator should give an error as callback fields cannot work inside union.

Original issue reported on code.google.com by Petteri.Aimonen on 7 Mar 2015 at 8:06

May I ask why callback fields cannot work inside an union?
I have a repeated field inside a message in an oneof field, and the callback to decode it gets erased and I can't decode the actual data.

In oneof, there is space allocated only to store one of the subfields. So if multiple subfields had callbacks, those callback pointers would overlap and corrupt each other.
One way to resolve this would be to allow "generator time callbacks". This is something I have considered for a while. Instead of setting the callback at runtime, the generator would create the prototypes:
bool MyMessage_myfield_decode_callback(...);
bool MyMessage_myfield_encode_callback(...);
and the function pointers would go into pb_field_t. This way there is no need to store them in the message structure, avoiding the trouble with oneofs. However, it would also mean that you cannot use different callback functions in different situations. This would probably be an option alongside the current callbacks.
If that sounds like it could resolve your problems, feel free to file a separate issue/feature request.


Clarification / more information - migration behaviour for subscriptions

To extend on my previous question.

When it comes to defining a change window for a set of customer subscriptions, does that mean that we target 48-72 hrs change window for each subscription migration to another tenant? Even though it should take a few mins there are scenarios where it may take 48-72 hours? So, best case scenario for subscription migration to complete is ~ in order of minutes. Worst case is that it might take anywhere 48-72 hours.

What does the rollback look like at the end of 48-72 hours in case migration doesn't complete within this timeframe? Configuration is restored as part of the rollback on the original AAD tenant? Or there are manual steps required on part of customer to complete the rollback?

If one is to describe subscription migration across tenants, would it be fair to say that the migration will either succeed in under 48-72 hours or it would fail and a rollback will be triggered. Under no circumstances, once a migration process is initiated that it can be stopped or paused through intervention from MSFT support?

Thanks

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

ID: 9afab524-67c2-2e76-fd7a-46238cb9d249
Version Independent ID: ae2da577-6026-f322-1c09-dbcc6068c01a
Content: Transfer an Azure subscription to a different Azure AD directory
Content Source: articles/role-based-access-control/transfer-subscription.md
Service: role-based-access-control
GitHub Login: @rolyon
Microsoft Alias: rolyon

@amanjeetsingh Thank you for your query . We will investigate and update the thread.

@amanjeetsingh Thank you for your query . We will investigate and update the thread.

Thanks for reaching out. Please find below comments inline.

When it comes to defining a change window for a set of customer subscriptions, does that mean that we target 48-72 hrs change window for each subscription migration to another tenant? Even though it should take a few mins there are scenarios where it may take 48-72 hours? So, best case scenario for subscription migration to complete is ~ in order of minutes. Worst case is that it might take anywhere 48-72 hours.

[Ans] Every subscription migration (Transfer) doesn't consume lot of time as the tenant changes happens immediately, if there is no issue as in account related or authentication failures issues the change will reflect immediately. If we are transferring multiple subscriptions at a time, it may take some time for all of them to transfer and reflect in the new tenant (Window can be up to 24-72 hours, but you can always reached out to MSFT support within an hour or so to get immediate assistant on same rather waiting for that long).

What does the rollback look like at the end of 48-72 hours in case migration doesn't complete within this timeframe? Configuration is restored as part of the rollback on the original AAD tenant? Or there are manual steps required on part of customer to complete the rollback?

[Ans] This means a transfer failure case, if the transfer fails at the initiation the subscription will stay back in source. If for some reason transfer is initiated but not completed because of authentication failures or account related issues it will get
stuck in transfer state and would need manual intervention to resolve the issue. Typically we would involve Azure Subscription engineering teams depending on the type of error would get.

If one is to describe subscription migration across tenants, would it be fair to say that the migration will either succeed in under 48-72 hours or it would fail and a rollback will be triggered. Under no circumstances, once a migration process is initiated that it can be stopped or paused through intervention from MSFT support?

[Ans] As mentioned above , it would either succeed or fail at initiation though there will be cases where migration (transfer) would get stuck due to account related issues. There is no rollback process involved as the tenant changes immediately also there is no way to pause or stop it once initiated.
Hope this helps!

Thanks for reaching out. Please find below comments inline.

When it comes to defining a change window for a set of customer subscriptions, does that mean that we target 48-72 hrs change window for each subscription migration to another tenant? Even though it should take a few mins there are scenarios where it may take 48-72 hours? So, best case scenario for subscription migration to complete is ~ in order of minutes. Worst case is that it might take anywhere 48-72 hours.

[Ans] Every subscription migration (Transfer) doesn't consume lot of time as the tenant changes happens immediately, if there is no issue as in account related or authentication failures issues the change will reflect immediately. If we are transferring multiple subscriptions at a time, it may take some time for all of them to transfer and reflect in the new tenant (Window can be up to 24-72 hours, but you can always reached out to MSFT support within an hour or so to get immediate assistant on same rather waiting for that long).

What does the rollback look like at the end of 48-72 hours in case migration doesn't complete within this timeframe? Configuration is restored as part of the rollback on the original AAD tenant? Or there are manual steps required on part of customer to complete the rollback?

[Ans] This means a transfer failure case, if the transfer fails at the initiation the subscription will stay back in source. If for some reason transfer is initiated but not completed because of authentication failures or account related issues it will get
stuck in transfer state and would need manual intervention to resolve the issue. Typically we would involve Azure Subscription engineering teams depending on the type of error would get.

If one is to describe subscription migration across tenants, would it be fair to say that the migration will either succeed in under 48-72 hours or it would fail and a rollback will be triggered. Under no circumstances, once a migration process is initiated that it can be stopped or paused through intervention from MSFT support?

[Ans] As mentioned above , it would either succeed or fail at initiation though there will be cases where migration (transfer) would get stuck due to account related issues. There is no rollback process involved as the tenant changes immediately also there is no way to pause or stop it once initiated.
Hope this helps!


network utilization

Let's calculate the transfer time theoretically.
llama3 8B
The original experiment data is here.
Since the transfer is full-duplex, there's no interference between uplink and downlink.
So, we can choose the bigger 510 kB as the transfer data volume to calculate the transfer time.
510000*8 bit/1G bps = 4.08ms

4.08ms/199.60 ms ~= 2\%

So, the average transfer time should be 4.08ms. However, your result is 199.60 ms, 50 times higher.
So, the network utilization ratio is merely 2%.
llama2 7B
For comparison, I summarize a similar model (llama2 7B) using different devices:

VMs
In this discussion, the Network Bandwidth is 20 Gbps, reference here.

590000*8 bit/20G bps = 0.236ms

0.236ms/7.62ms= 3\%

So, the network utilization ratio is merely 3%.
Similarly, we can calculate the result of 4 VMs to be 6%.
RaspberryPi

Also, the result of the Raspberry Pi cluster is calculated to be 9.0%, 48.0%, 14.1% for 2,4,8 devices.

llama2 13B
23.9%,25.75%, 9.8%
llama2 70B
8.5%

Summary
I think the network utilization, average around 11%, ranging from 2% to 48%, is under-optimized.
Developing the code possibly ensures a stable and high network utilization.
Originally posted by @zhengpeirong in https://github.com/b4rtaz/distributed-llama/discussions/41#discussioncomment-9480575

The test that you are referring to is very unlucky. 2 Raspberry Pi 5 devices + a cheap switch achieve 80.11 ms / token. I think you underestimate the impact of setup quality on the result. In the google cloud I achieved 8.56 ms / token (Llama 7B Q40), but there is probably something faster than Gigabit Ethernet.
The next thing is the transfer characteristics, a node calulates the result of own slice then synchronizes the result. So it looks like this:

So mostly there is no any transfer, and suddenly some data to transfer appear. In this case the latency has a huge impact on the final transfer time.

The test that you are referring to is very unlucky. 2 Raspberry Pi 5 devices + a cheap switch achieve 80.11 ms / token.

80.11 ms means 15% network utilization, which is not high.

I think you underestimate the impact of setup quality on the result. In the google cloud I achieved 8.56 ms / token (Llama 7B Q40), but there is probably something faster than Gigabit Ethernet.

I have included this factor, the Network Bandwidth is 20 Gbps. And the result is calculated in the issue content.

The next thing is the transfer characteristics, a node calulates the result of own slice then synchronizes the result. So it looks like this:

So mostly there is no any transfer, and suddenly some data to transfer appear. In this case the latency has a huge impact on the final transfer time.

This seems simplified because the transfer process is actually composed of 2 procedures: the transfer time should begin when the source node begins to send, and the transfer time should end when the destination node finishes receiving. So, the statistics, collected only on the root node, deviate from the actual value.

If we build analysis on these statistics, then still the network bandwidth should be enough. 1G>>hidden_dim*8 bits!

I am using ＇tcpdump＇ to capture the real speed of packets and analyze the actual bandwidth utilization. But I only have 4 Raspberry Pi and may need your help to run the experiment of 8 devices, usually achieving highest latency, and share logs. Thank you.


Added the random color generator documents

Description
Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context. List any dependencies that are required for this change.
Fixes:  #655

Type of change

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] This change requires a documentation update

Checklist:

[x] I have made this from my own
[x] I have taken help from some online resourses
[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my own code
[x] I have commented my code, particularly in hard-to-understand areas
[x] I have made corresponding changes to the documentation
[x] My changes generate no new warnings

ATTACH SCREEN-SHOTS / DEPLOYMENT LINK

@DEEPALI-SUK Please review

@arpit456jain pls help with the deploy link

can i help with it, does it hold some points??

It's an internal error, we will fix it dw

@stutimohta20  make this PR again hope it will host it now

@stutimohta20  if possible host it on github and share its link in next PR as backup or upload the code on google drive and share its link


[request] Official dnscrypt-autoinstall from jedisct1 for linux users?

Hello,
I install dnscrypt with dnscrypt-autoinstall from Simon cClausen.
It would be nice to have an up-to-date dnscrypt-autoinstall from Frank Denis ;-)
Instructions for ubuntu users, please ... That would be nice too. Arch Linux users don't need instructions ;-)
Sorry for my English
Grettings

official packages for Debian testing and unstable
https://tracker.debian.org/pkg/dnscrypt-proxy
apt-get install dnscrypt-proxy dnscrypt-proxy-plugins

Ubuntu is based on Debian, maybe you can use these packages.

Thank you ... :-)
There are these packages in Ubuntu Gnome 17.04 too. I have seen that.
In three or four months there will be new packages from Frank Denis and the packages in Ubuntu will be outdated :-(

There are way too many distributions and way too many ways to configure them.
I can't reasonably maintain packages for these.

It was worth a try ;-)
Greetings

https://github.com/jedisct1/dnscrypt-proxy-installer


BF: parse version.py for version instead of trying to import pliers

To be able to run "pip install ." etc when dependencies are not yet available,
imports would fail etc:
$> pip install -e .
Obtaining file:///home/yoh/proj/misc/pliers
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/home/yoh/proj/misc/pliers/setup.py", line 1, in <module>
        from pliers.version import __version__
      File "pliers/__init__.py", line 2, in <module>
        from .graph import Graph
      File "pliers/graph.py", line 4, in <module>
        from pliers.extractors.base import Extractor, merge_results
      File "pliers/extractors/__init__.py", line 6, in <module>
        from .base import Extractor, ExtractorResult, merge_results
      File "pliers/extractors/base.py", line 7, in <module>
        from pliers.transformers import Transformer
      File "pliers/transformers/__init__.py", line 6, in <module>
        from .base import Transformer, BatchTransformerMixin, get_transformer
      File "pliers/transformers/base.py", line 4, in <module>
        from pliers.stimuli.base import Stim, _log_transformation, load_stims
      File "pliers/stimuli/__init__.py", line 5, in <module>
        from .api import TweetStim, TweetStimFactory
      File "pliers/stimuli/api.py", line 6, in <module>
        from .compound import CompoundStim
      File "pliers/stimuli/compound.py", line 7, in <module>
        from .audio import AudioStim
      File "pliers/stimuli/audio.py", line 4, in <module>
        from moviepy.audio.io.AudioFileClip import AudioFileClip
    ImportError: No module named moviepy.audio.io.AudioFileClip

    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /home/yoh/proj/misc/pliers/

Thanks--already been flagged in #241 though! I'm just tweaking the travis config to get forked PRs to skip decryption of encrypted variables (otherwise the PRs fail).

Closing in favor of #240, which achieves the same thing. But thanks!


Static Measurement Count

The number of measurements on the client page seems to be static, and is vastly below our current count. We should update it with the intent of making it a dynamic number at some point.

@collina -- do you have a current count that we can update at the moment before we make it dynamic?

After review with @georgiamoon @pboothe and @pbeshai we have arrived at an update to the # of tests and # of cities, as well as an agreed upon query for updating these numbers regularly.
cities: 87000
SELECT count(distinct client_city) FROM [mlab-oti:data_viz.all_ip_by_day]
tests: 242 million
select count(test_id) as num_tests FROM plx.google:m_lab.ndt.all WHERE IS_EXPLICITLY_DEFINED(web100_log_entry.connection_spec.remote_ip)
AND IS_EXPLICITLY_DEFINED(web100_log_entry.connection_spec.local_ip)
AND IS_EXPLICITLY_DEFINED(web100_log_entry.snap.HCThruOctetsAcked)
AND IS_EXPLICITLY_DEFINED(web100_log_entry.snap.SndLimTimeRwin)
AND IS_EXPLICITLY_DEFINED(web100_log_entry.snap.SndLimTimeCwnd)
AND IS_EXPLICITLY_DEFINED(web100_log_entry.snap.SndLimTimeSnd)
AND project = 0
AND IS_EXPLICITLY_DEFINED(connection_spec.data_direction)
AND connection_spec.data_direction = 1
AND web100_log_entry.snap.HCThruOctetsAcked >= 8192
AND (web100_log_entry.snap.SndLimTimeRwin +
web100_log_entry.snap.SndLimTimeCwnd +
web100_log_entry.snap.SndLimTimeSnd) >= 9000000
AND (web100_log_entry.snap.SndLimTimeRwin +
web100_log_entry.snap.SndLimTimeCwnd +
web100_log_entry.snap.SndLimTimeSnd) <<PHONE_NUMBER>
AND IS_EXPLICITLY_DEFINED(web100_log_entry.snap.CongSignals)
AND web100_log_entry.snap.CongSignals > 0
AND (web100_log_entry.snap.State == 1 OR (web100_log_entry.snap.State >= 5 AND web100_log_entry.snap.State <= 11));

Addressed in #257


Migrate DNS records to cloudflare

Delete vercel nameservers from namecheap
Point domain at Cloudlfare nameservers
Add following record to cloudflare records:

A @ <VERCEL_IP>
A dev <VERCEL_IP>
Ensure google site TXT record carries across

Prod and dev domains migrated. txt and CAA record kept


Quick tap on mobile screen triggers grab-start twice

See live demo: http://jp-dorman.co.uk/aframe_cinema/
There is a counter to the right that increments every time the clickable ">|" button fires the grab-start event.
This works fine on PC but when tested on a phone (OnePlus2 and Samsung GalaxyA5-2015) the function is triggered twice on a quick screen tap and once when slowly held then released.

I think I know what's going on here: mobile browsers emulate mouse events on a quick tap (presumably for compatibility with desktop websites).
I had hoped the super-hands state tracking would prevent the double event, but the order they're fired must be such that it starts, ends, and starts again. I'll have to add a check for AFRAME.utils.device.isMobile() in the gaze-based controls and unregister the mouse event listeners.

Actually, isMobile won't cut it because we also need to consider desktops and tablets with touch. Turns out this is a really difficult topic

Ah, here we go. If we cancel the touch event, then the browser won't fire the mouse events.
Until I get a patch out, you should be able to fix this in your scene with:
document.querySelector('canvas').addEventListener('touchstart', function (e) { e.preventDefault(); })

after the scene has loaded

Been fiddling with it, that line didn't work until I changed it to:
document.querySelector('a-scene').addEventListener('touchstart', function (e) { e.preventDefault(); });
So that works great, but then the videos refuse to play.
Could be wrong but I think it's because most mobile browsers just won't play any video until they've received at least one click for the sake of mobile data saving. (I ran into that problem in my own projects)

Can you tell me what browser you're testing in? I got it to work in your example in firefox desktop (on a windows tablet) by running the the line I posted before in the console.

I'm testing in Chrome for android, it may be specific to that browser?

This SO comment says we may need to cancel all varieties of touch event for the intended effect. Maybe that differs by browser

I don't have  a new release out, but you can link to the master branch to get this fix immediately
<script src="https://rawgit.com/wmurphyrd/aframe-super-hands-component/master/dist/super-hands.min.js"></script>

The issue was that I had to cancel all 3 touch events to keep the mobile browsers form emulating mouse events

That's great, but I'm testing it now and that solution then breaks videos playing in mobile browsers on phones. You need to allow at least the first genuine user click for the browser to allow video to play.
This is on chrome and firefox for android.

Can it be configured to use the trusted touch events instead? If I let even
one mouse event go un-cancelled, then browsers will double all of them.
On Fri, Oct 20, 2017, 7:18 AM JP-Dorman<EMAIL_ADDRESS>wrote:

That's great, but I'm testing it now and that solution then breaks videos
playing in mobile browsers on phones. You need to allow at least the first
genuine user click for the browser to allow video to play.
This is on chrome and firefox for android.
—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub
https://github.com/wmurphyrd/aframe-super-hands-component/issues/71#issuecomment-338190577,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AJkeqx6Rz4eNfVbpQ4iSzMBqi9yRvOLlks5suI-rgaJpZM4Ph8Kw
.

It does seem like video and audio can be activated by user interactions other than clicks:
https://stackoverflow.com/questions/25095769/force-video-autoplay-using-chrome-browser-on-mobile-devices
As a temporary workaround if you add the muted attribute to a video it will still play.


Cascading issue due to is-selected class

In your css, there is a class
.is-selected .pika-button {
    color: #fff;
    font-weight: bold;
    background: #33aaff;
    box-shadow: inset 0 1px 3px #178fe5;
    border-radius: 3px;
}

Here, since the definition is very general, if there is an is-selected class in any of the top level containers, this class is applied to all the date elements, like this:

This can be fixed by making the class definition a bit more precise.

Hi @aswinm - thanks for the report. This is actually not an issue of ember-pikaday, rather of Pikaday itself, which this library wraps.
Feel free to open an issue there.

@duizendnegen Thanks.. Raised an issue in Pikaday
https://github.com/dbushell/Pikaday/issues/635


Windows Update (KB5012599) perhaps rendered WSL unusable

Version
Microsoft Windows [Version 10.0.19044.1645]
WSL Version

[X] WSL 2
[ ] WSL 1

Kernel Version
No response
Distro Version
Debian / Ubuntu
Other Software
Windows updates
KB5012599,
perhaps also: KB5012117, KB5013437, KB5013354
Repro Steps
I believe an update to windows destroyed my wsl machine. It can't be started and the directory \\wsl$ is empty/(does not exist)
Starting my existing Debian WSL gives the error:
Element not found.
Trying to Install new Ubuntu Distribution:
Installing, this may take a few minutes...
WslRegisterDistribution failed with error: 0x80070490
Error: 0x80070490 Element not found.

is there any way to recover the files in my wsl debian instance?
Expected Behavior
Starting Debian runs as usual.
Actual Behavior
Debian does not run.
Diagnostic Logs
wsl.zip

First check if Virtual Machine Platform is enabled in Windows Features. Maybe it was turned off.
Also check CPU virtualization is enabled in the BIOS.
Failing that we should attempt to locate the .vdhx file were the image is stored.
Option1: Does the ext4.vdhx file still exist? This is where the distro image is stored.
Open up regedit.exe and input the following into the address bar, hit enter to see such details:
Computer\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Lxss
Under Lxss you should find all your WSL distro entries and and the BasePath key should give you the folder that a given distro's virtual drive file exists within.
Option2: Use WizTree and look for the biggest files on your disk, Likely the .vdhx file is among them.
Make a backup of the .vdhx image (for safety).

You can try to extract the contents of the copy using 7zip.
You can reinstall WSLg and then attach the .vdhx directly.

Something is off with your trace, I'm not seeing any "element not found" error, but setting a single access denied error. Are you sure this was a repro trace started before observing the behavior and stopped after?

@benhillis, the trace was actually of an instance where wsl did not start at all. This seems to be the case when I run it out of the console. As you can see in the trace it took almost an hour to exit without giving the user any error. What could have been the Problem was that the "Windows Hypervisor Platform" was disabled in the features. I can't really test this anymore as I am in the middle of reinstalling WSL and trying to attach the vdhx.

Trying to reinstall Debian gives me the same error as I have had for Ubuntu:
Installing, this may take a few minutes...
WslRegisterDistribution failed with error: 0x80070490
Error: 0x80070490 Element not found.

Press any key to continue...

wsl2.zip

After rebooting this seems to go away? Since I have done other things (messing around with network drivers) I'm not sure what really solved the issue...

/dupe #8401


Codifying the rules around separate programs and many sources

The current idea is that each program has a folder, and that all sources in that folder gets compiled into a single executable. This is not currently implemented, but the Docker container makes it very easy to do it this way. It always compiles all files in a folder into an executable.
This needs to be implemented properly. Currently two C++ sources in the same folder will produce two executables, each of which contain both sources.

I pushed a change that makes it compile an ELF with the same name as the folder it's in, which temporarily solves this particular issue. It might not work with deeper folder structures. TBD


feat(move): Add --fixup to squash moved commits into the destination

Summary
As the title says, this adds a move --fixup flag to squash commits into the destination, in memory or on disk. With this, both of these use cases:

rebase -i + reordering & marking as fixup!
reword --fixup <dest> <revset> ; rebase -i --autosquash

Can be replaced with just

move -d <dest> -x <revset> --fixup

Add'l examples:

Oops, used commit instead of amend, lets squash HEAD into it's parent: move -d @~ -x @ --fixup
Squash a branch onto a single commit: move -d head(stack()) -s children(head(stack())) --fixup

Useful perhaps for cases like https://github.com/arxanas/git-branchless/discussions/965#discussioncomment-6453119

The original idea came from https://github.com/arxanas/git-branchless/pull/538#pullrequestreview-1105180957 and it's taken me most of a year of on and (mostly) off work to get it working.
Status

In memory squashing seems to be working flawlessly. In the current state, I've yet to encounter any issues with this.
On disk squashing seems to be working well with one caveat:

For some reason, the intermediate squashed commits aren't reliably cleaned up after the rebase, so the smartlog ends up with lots of # This is a combination of ... commits leftover.
This does not seem to be an issue for non-branchless triggered rebases. In other words, if I do add --updated ; absorb ; rebase -i --autosquash, it seems to work fine w/o leftover commits.
I've not been able to repro, but my current suspicion is that it's somehow related to merge conflicts and the usage of --fixup -m to kick things out to disk; and thus probably the rebase plan that I'm creating for on disk rebases or some of the changes related to that.
In all cases, the leftover commits can be safely discarded with some thing like hide 'stack() - main..branches()'

Review request

This is a big PR (13 files changed, 2479 insertions(+), 204 deletions(-)), but most of these (1929 insertions) are new tests.
The summary of how this works is:

sort the commits (inc the destination) topologically
apply all commits to the 'rootiest' of these, one after the other in topological order
remove all moved commits from the tree
replace the dest commit w/ the final squashed commit
For in-memory, this is all done in Rust/git2, creating a new in-mem commit for each squash but only writing the final one to disk. I think that this is "right", but I don't know if it's the fastest approach.
For on-disk, this is all done via git commands fed to rebase -i. This involved lots of manual commit rewriting and hiding to get the order and final tree right. This works (mostly, see above) but feels really clunky and heavy handed.

There are 4 FIXME comments that I left in place w/ questions and/or concerns about my implementation.

I think that most of these are along the lines of "well this is working, but is it the right way to be doing it"

I would love feedback on the names in the UI (--fixup) and API (structs and such).

As always, I welcome any feedback, guidance or suggestions. This has been tricky to get my head around, but I've found it very satisfying to use. I'm pretty happy w/ how it works, and I'd love to get it polished up and merged. Thank you!
Original description
@arxanas I could use some help with this.
This seems to be working for simple cases (ie in memory sticks) but I think I could use some guidance to get unblocked on where to go next. Specifically, I'm having a hard time getting my head around how to handle on-disk fixup rebases and having some issues with fixing up complicated commit graphs. I feel like I'm playing whack-a-mole with errors and conditions: if I get one test working, another breaks; when I get that working, the other one breaks; etc, and I'm left wondering if my approach is heading in the wrong direction and/or is too rigid or something.

This is still pretty "draft"; please don't be too alarmed by the ugly bits that I need to go back through and clean up! :smile:

I added some code that uses git2::Tree::iter() directly

I started to work on this, but it felt very copy-pasty and boilerplate-y and seemed to add a lot more code than I was expecting compared to just using tree.inner.iter(), plus other parts of repo.rs already use tree.inner.iter(), so I gave up and moved on to more fun stuff. :laughing: Does it seem OK to leave that as is, or would you prefer that it be wrapped?

In-memory fix ups seem to work for stick stacks, but fixup rebases that involve trees are being left in a "needs restack" state.

Is this inevitable, or is there is a convenient way to recognize and automatically restack in cases like these? (See test_move_fixup_complicated.

On disk rebase is not working Update On disk fixup rebases are working.

As noted, the last commit in this stack is me hacking around to try to get on-disk fixup rebases to work. It's incomplete and breaks many/most of the in-memory fixup rebase tests.
I have tried doing SkipUpstreamAppliedCommit after every FixUp. This helps in some cases, but not all, and it makes in-memory fixups involving multiple fixup commits complicated b/c it's hard to keep track of the target/fixed-up commit as it's always being "rewritten to zero".
Perhaps I need to be sorting the RebaseCommands differently, so that SkipUpstreamAppliedCommit is only called at the end of the rebase?
Or could it be that I'm not giving the post-rewrite etc hooks the info they need to figure things out?

I just pushed a new stack that has in-mem and on-disk rebases working for (almost) all tests. The last test (in a separate commit) is still buh-roken and I'm just parking it for now so I can ruminate on it some more. I think it's just coming down to the order in which the rebase commands are executed, thus the order in which they're added to the queue. (That is what fixed my problem w/ on-disk rebases: they just weren't being executed in the correct order.)

Sorry for the ongoing monologue, but I'm making progress: all on-disk tests are passing, and I'm close to all in-mem tests, too. The last test revealed a misconception regarding my usage and implementation of amend_fast that I'm working on now.

And, we're good! All tests passing and the amend is working correctly (I think). I still have some proofreading and clean up to do, but I think it's at least working. I'll be playing with it for a few days to see how it behaves under real use.

Sorry I wasn't much help with this! Hopefully I'll have some time to review this weekend or next week.

I just looked through the tests—this is so cool! 😍

Just a comment to myself about something I will need to fix but can't at this moment: encountered a bug related to squashing older commits into newer commits, in particular when interim commits also changed a file. Example with commits A-B-C-D-E:

A introduces file
B&C each make "unrelated" changes to the file, resulting in different hunks (ie they're easily commutable w/o conflict)
D&E introduce changes related to B but to different files (ie no conflicts)

Goal: squash B and E into D, to create A-C-D' where D'=B+D+E.
Ran: git move -Fx B+E -d D. This seems to have correctly applied E to D, but not B. Instead, the resulting commit included none of the changes from B but did include a revert of the change from C.
Have not looked into it, but I suspect that this has something to do w/ comparing commits in the wrong order and possibly to the wrong "parents". (eg git diff B C will show an addition of C, but git diff C B will show a deletion.) This also highlights the need for the tests to be updated to compare the contents of changed files, not just the presence of changed paths.

OK, now I think this is really working. My previous version was naively replacing trees w/o actually comparing their contents, but this version is actually doing what one would expect it to be doing, at least according to the tests. The implementation is still pretty rough and gross and I'll need to go back and deal with FIXMEs, fill in error messages, wrap some git2 function calls, improve the portability, etc before it's really ready. First, though, I'd like to play with it in real code for a while.

Continuing my development monologue: I've used this a bit w/i the past week, and it seems like it's working OK. It's still more "conflict prone" than rebase -i --autosquash, though. Some instances seem to squash in memory just fine, while others fail w/ a conflict that is handled w/o issue by retrying with --merge. It seems related to when the the line positions of the changes being squashed:

I had a case where a file was added and then I fixed a comment later in the stack. There were no intervening changes to that file, and the fixup of the latter commit into the former succeeded as expected.
A couple of other cases where there were intervening changes that weren't in  the same part of the file (ie I'd expect them not to matter) and the in-mem fixup failed, but a subsequent --fixup --merge did succeed without intervention.
I suspect that this is related to the amount of context I'm using for the diffs. I'm using 0 context, which was needed to get some of my tests to work w/o conflict, but perhaps that's hampering git2::tree::apply_path_to_tree from being able to apply the patch.
I'm also not convinced that I'm doing the patch generation and application correctly. It's working in the tests and in some easy cases, but it doesn't feel very robust, as noted above.

So, this branch is still in "it works" mode, not yet in "it's right". There's also still lots of crude debugging and TODOs left all over the place I'll need to clean up before moving forward. I think I'll try to work on cleaning up some of that stuff next so that this will be more ready for review when I'm ready to subject this to scrutiny. 😄

Closing this PR for now since it's been inactive for a while. Feel free to re-open later.

I'll leave this closed until I get further with it, but the branch is rebased and up to date at https://github.com/claytonrcarter/git-branchless/tree/move-fixup

Reopening this PR. This seems to be working as expected for nearly all day-to-day uses, and the code is as good as I can get w/o having add'l 👀 on it.

I'm assuming that the CI lint error is unrelated. I don't get any clippy warnings locally w/ Rust 1.70, but it looks like CI is using 1.71. Also the error is at git-branchless-lib/src/core/dag.rs:402:19, which this PR doesn't touch.

I'm assuming that the CI lint error is unrelated.

Yup. Fixed in #996

For some reason, the intermediate squashed commits aren't reliably cleaned up after the rebase, so the smartlog ends up with lots of # This is a combination of ... commits leftover.

Fwiw I've seen this behaviour with regular rebases as well. I don't think it always happens for me tho

Parking this for the night. There are a couple more things to work through, but most feedback has been resolved. I want to give this another full read through, too, just to be fussy.

🎉 Thanks for your patience and help on this @arxanas. If you notice anything wonky, let me know and I can look into it.

For some reason, the intermediate squashed commits aren't reliably cleaned up after the rebase, so the smartlog ends up with lots of # This is a combination of ... commits leftover.

Fwiw I've seen this behaviour with regular rebases as well. I don't think it always happens for me tho

BTW I looked into this further and I was able to repro this on (pre-merge) master, so I don't think it's related to this PR. Thanks again @pokey


Investigate evolving NFT picture

Need to understand how we can create different pictures based on level and if it is worth the effort.

possible through the nft descriptor contract, quite easy actually. Depends more on design work


embed class

How about finishing it properly and then making a PR? XD

How about finishing it properly and then making a PR? XD

I mean at least it's a start, though that is a good point. I was just being open-minded because of how new of a project this is.

why do you close it, he can make it a draft :D

oh right, new to this 😅

as i said i havent finished it lol

This PR should be marked as a draft.

This PR should be marked as a draft.

how


Got 404 of URL 'register' and 'unregister' in 'Push Subscription'

In the 'Push Subscription' recipe, where is the url 'register' and 'unregister' in the first parameter of fetch API? I got 404 error.
By the way, my server uses PHP.

These examples won't work with a PHP server. You need to run the Node.js server code we supply (see README.md#how-to-contribute for how to run it), or reimplement the corresponding server.js yourself in PHP.


pre-commit: remove trailing-whitespace from more file types

Description
This PR...

Types of changes

[ ] Breaking change (fix or feature that would cause existing functionality to change)
[ ] New feature (non-breaking change which adds functionality)
[ ] Bug fix (non-breaking change which fixes an issue)
[ ] Enhancement (improves an existing feature and functionality)
[x] Cleanup (Code refactoring and cleanup, that may add test cases)
[ ] build/CI
[ ] test (unit or integration test code)

Feature/Enhancement Scale or Bug Severity
Feature/Enhancement Scale

[ ] Major
[ ] Minor

Bug Severity

[ ] BLOCKER
[ ] Critical
[ ] Major
[ ] Minor
[ ] Trivial

Screenshots (if appropriate):
How Has This Been Tested?

How did you try to break this feature and the system with this change?

@blueorangutan package

@jbampton a [SL] Jenkins job has been kicked to build packages. It will be bundled with  KVM, XenServer and VMware SystemVM templates. I'll keep you posted as I make progress.

Packaging result [SF]: ✔ el8 ✔ el9 ✔ debian ✔ suse15. SL-JID 11901

I don't think this needs more than the GHA to prove itself.


Feat: fluid subgraph versioning

Created one param to able or disable the fluidProposal field in the subgraph, already some networks dont have it deployed.

I forgot to deploy the new changes to the polygon subgraph:

Yes, i took some time to realized that after alot sync errors, because that i made that hot fix to solve the problem until the correct fix. :D


Fullscreen is off by default

Fullscreen is off by default, but the README (and npm readme) says it's on by default.

Thx for the info.


bootstrap.js error

I followed the git clone method install using Docker Kong/Cassandra containers and was getting:

error: Bootstrap encountered an error: (see below)
error: Error: EACCES: permission denied, mkdir '/kongadata/'
at /Users/Me/Develop/Kong/konga/config/bootstrap.js:19:16

in the bootstrap.js I had to remove the leading / from kongadata in the  process.env.STORAGE_PATH
    // Create Konga data directories
    var dirs = [( process.env.STORAGE_PATH || 'kongadata/' ), ( process.env.STORAGE_PATH || 'kongadata/' )+ 'uploads']

Hi @rjpalermo1 .
Instead of removing the leading '/', you could instead define the env variable STORAGE_PATH as you can see in the code you posted.

The leading '/' is there because the /kongadata directory is used as a docker volume in docker builds which is also the recommended way to run Konga.
The caveat is that it throws the EACCES error when your building from source and Konga has no permissions to the specified directory, but again, all those things are configurable via env vars so no problem there.
This is something I need to document out in README as well so that it becomes more understandable.
Cheers, and thanks for the feedbak!

Got it!  Great stuff.  You have a day job or freelancer?
Closing...

Working as a software engineer in a software house and doing a bit of freelancing as well.


Algorithm

How to separate the algorithm part in its own library (module) file?

@reshnashrestha I am not clear what you actually mean. You mean to write up in your original code file?

I don't know. This is the necessity in our homework task, where i got confused so seeking help.

@reshnashrestha
To separate the algorithm part into its own library (module) file in Python, you can follow these steps (as in my case)
Create a new Python file for your algorithm, let's call it work_calculator.py. This file will contain the calculate_work_done function.
Move the calculate_work_done function to work_calculator.py.
In your main code file, import the calculate_work_done function from work_calculator.py and use it as needed.

Then, I guess we have been doing the right thing.


Upstreaming SWDE, FDA, and Squad-completion to Eval Harness

Hi!
Congrats on the really great work. I'll definitely be trying Based out and referencing your work here in future :)
Was really happy to see you found the Eval Harness useful! I wanted to see if you were interested in or needed any help upstreaming the custom evals you created to the main harness--it'd be great to have these more easily reproducible so future work can compare to the evaluations you report! I'd be happy to help on this front.

Hi thanks so much, it would be great to integrate the evaluations into the main harness. Please let us know how to proceed!

Assuming you didn't have to make any other internal changes to make the tasks work, if you've got the bandwidth then opening a PR with the folders lm_eval/tasks/fda , lm_eval/tasks/swde, lm_eval/tasks/squad_completion should do the trick!

Hi Hailey, We have added the PR here: https://github.com/EleutherAI/lm-evaluation-harness/pull/1728
Please let us know if there is anything else.


Note distance game on higher difficulties is impossible

In the note distance game, when the current level of the pyramid includes 21 trials, there are 10 different intervals to choose from.
Sometimes, however, an extreme compound interval is played between one of the lowest notes and highest notes in the playable range.
I'm not sure if this is the case every time, but I've noticed several times that not a single one of the 10 selectable intervals is accepted as an answer, so you are forced to keep getting it wrong until you slip back to the previous level of the pyramid (this could be 21 times in a row).
Also, when very low notes are played, it seems to be too low for the sample used, because it's very difficult to distinguish the correct interval and I have to click by trial and error. The result usually sounds wrong.

Thanks for the report. I'll try to take a look at these issues in the next few weeks.

Thanks Ryan, and :+1: on what you've made so far. My ear has definitely improved!


Fix typo in Istanbul loader example

It seems like the closing ) of the concat is miss-placed here.
In the previous example
const somethingTrue = true;

var module = {
    loaders: [].concat(
        somethingTrue ? {
	    y: 'y'
	} : [],
    ), // note parens placement
    {
	z: 'z'
    }
}

would result in => Uncaught SyntaxError: Unexpected token '{'
In this proposed change:
const x = true;

var module = {
    loaders: [].concat(
        somethingTrue ? {
	    y: 'y'
	} : [],
	{
	    x: 'x'
        }
    ) // note parens placement
}

would result in => Object {loaders: Array(2)}

Am I missing something in the previous version?

Thanks.


jax.random.randint cannot generate values equal to DTYPE_MAX

According to randint docstring: Sample uniform random values in [minval, maxval) with given shape/dtype.
However because of the conversion here https://github.com/google/jax/blob/5bbb449ae5849c508194c8eb5b10c101f1fa22ae/jax/_src/random.py#L439 passing maxval={dtype max value + 1} will generate an all-zero array.
The behavior in numpy is different (and correct):
jax.random.randint(jax.random.PRNGKey(0), shape=(10,), minval=0, maxval=256, dtype=jnp.uint8)
>> DeviceArray([0, 0, 0, 0, 0, 0, 0, 0, 0, 0], dtype=uint8)

np.random.randint(size=(10,), low=0, high=256, dtype=np.uint8)
>> array([ 87, 136, 195, 254,  95,  94, 113,   7,  66,  13], dtype=uint8)

A workaround is to not pass the dtype to randint (or use a dtype with a higher maximum value), and cast the output:
jax.random.randint(jax.random.PRNGKey(0), shape=(10,), minval=0, maxval=256).astype(jnp.uint8)
>> DeviceArray([178, 233,  99, 238,  39, 149,  46, 139,  68, 142], dtype=uint8)

Thinking about this a bit... this is really tricky for JAX to handle in a general way. Consider the case of max = 1 << 64, which is one greater than the maximum uint64. Numpy handles it as expected:
>>> np.random.randint(0, 1<<64, dtype='uint64')
17392714807819977315

But if you increase this bound by one, numpy returns an error:
>>> np.random.randint(0, 1<<64 + 1, dtype='uint64')
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-30-e02298560197> in <module>
----> 1 np.random.randint(0, 1<<64 + 1, dtype='uint64')

mtrand.pyx in numpy.random.mtrand.RandomState.randint()

_bounded_integers.pyx in numpy.random._bounded_integers._rand_uint64()

ValueError: high is out of bounds for uint64

Neither of these numbers (1 << 64 and 1 << 64 + 1) are representable as 64-bit integers or floats; numpy handles these by making use of Python's built-in arbitrary precision integers, as you can see here: https://github.com/numpy/numpy/blob/5cae51e794d69dd553104099305e9f92db237c53/numpy/random/_bounded_integers.pyx.in#L190-L192
JAX cannot do this, because it compiles to XLA which only has fixed-precision integers, and has no native way to represent larger numbers such as 1 << 64.
How might we work around this? Some possibilities:

Follow NumPy and do our arithmetic in Python. The downside of this is that it would only work for concrete values of minval and maxval; i.e. you could no longer jit-compile code that passes minval and maxval as JAX arrays. You might imagine getting around this by only using Python ints in non-traced code; the problem there is that this would cause randint to act differently depending on whether it is wrapped in JIT, which is something we like to avoid.

Use some sort of extended representation (i.e. a pair of int64s) to represent the minval and maxval in order to handle larger bounds. However, this would require deeper changes to JAX's JIT dispatch mechanism, because currently a Python integer passed to a jitted function is always converted to a dtyped integer, because it's the only way JAX knows how to handle numerical data. I'm not sure how I'd approach changing this for cases where larger integers are required.

Neither of these is really a viable solution, and I can't think of any other alternatives.

The above shouldn't stop us from fixing the issue for smaller types, though: for example things like random.randint(key, shape, minval=0, maxval=256, dtype='uint8') should be workable with a few tweaks. But we would not be able to error on maxval > 256 as numpy does, because JAX cannot branch on non-static values.

I started some work on this in #5868... it gets quite complicated to handle all the possible corner cases!

Could we fix this by adding an inclusive/exclusive option on the API?

Could we fix this by adding an inclusive/exclusive option on the API?

That's an option, although unless users know to think about it, things like randint(key, shape, 0, 256, 'uint8') will continue to silently return zeros.

We should report (everywhere) when we see integer overflow casting Python integers to typed integers. Someone even started on that in the past.

That would be useful - I think currently we only get that via numpy when we overflow int64.

Also, even if we go the inclusive / exclusive route, I've come across some other corner cases that we'll need to fix as well, for example:
from jax import random

random.randint(random.PRNGKey(0), (10,), 254, 254, dtype='uint8')
# Buffer([254, 254, 254, 254, 254, 254, 254, 254, 254, 254], dtype=uint8)

random.randint(random.PRNGKey(0), (10,), 255, 255, dtype='uint8')
# Buffer([111, 139,  85, 222,   6, 223, 108,  27,  20, 191], dtype=uint8)

Related: https://github.com/google/jax/issues/2006#issuecomment-575273556

It looks like the fix just made it into version 0.2.12. Thanks for reporting the error!


Google trans multilingual

Translations for xnli and paws-x dataset has been added.

Thanks a lot!
I will review the pull request. Also trying to find someone to review arabic.
Did you solve the Vietnamese translation issue?

Vietnamese translation did not have any issues. Probably you are mentioning the thai language issue. It has been fixed. Along with arabic, can you please ask someone to review the Urdu language as well? It has the same scenario of writing from right to left.

@TarifEzaz  Thanks a lot for clarifying. Did you use google translator for thai or some other translator?

@sbmaruf : We've used Google translator, but the option for Thai language is not in the dropdown list. We had to google it to get the translator form.

I can see the translation option here. https://translate.google.com/?sl=en&tl=th&text=Hello world&op=translate
Is there any geo block?

I see. Not sure about the geographic issue.

Hi @sbmaruf and @TarifEzaz, I have looked into both Arabic  and Urdu  and the 'right-to-left' alignment seems correct to me. Please let me know if I can help in anything else. Thanks

Thank you @KhalidAlt

I have added translations for xquad dataset as well. Please have a look @sbmaruf


Feature Request - Legendary Actions should reset at the start of a monster's turn

Any monster that has Legendary Actions, gets them back at the start of their turn.  It would be helpful if this was automated, so that as soon as a monster's turn starts, the number of available Legendary Actions is reset back to its maximum.

Is this feature still planned? I'm always forgetting about this!


offers: wait for offers invoice

This PR implements the next part of the offers flow, as described in #64.
After sending an invoice request to the offer creator, we wait for an invoice to be returned.
It depends on #81 and the changes in https://github.com/lndk-org/ldk-sample/pull/8

Closing this in favor of a new incoming PR with #85 as the base :)


Resolution is very LOW.

I used to your Demo code,but have a problem.
The Photo's Resolution is very LOW !!!
and picTotalLen Mostly in 7xxx to 12xxx
I also have to replace the camera lens.
How do I solve it.

The length seems to be in valid range. Problem maybe lies in focal depth.


refactor: nhost react providers

closes #1334

Codecov Report

Merging #1341 (7f25111) into main (1c94f56) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main    #1341   +/-   ##
=======================================
  Coverage   94.74%   94.74%
=======================================
  Files          48       48
  Lines        6931     6931
  Branches      450      450
=======================================
  Hits         6567     6567
  Misses        364      364

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.


Discussion: Please obey Debian's policy when adding repository

Debian had a policy for add third-party repositories,it can be found at Debian Wiki.
This repository has violated this policy in a number of ways,include:

use not recommended command to add key(See  apt-key(8))
sources.list entry not have signed-by option set
not use apt pinning.

I suggest that fix them to obey Debian's policies and provide better security for users.

Thanks for your information. I am not sure if this repository obeys the policies because the script for adding repository is provided by the hosting service (Cloudsmith), which is their recommended way. See https://cloudsmith.io/~debianopt/repos/debianopt/setup/#formats-deb
You may contact Cloudsmith to submit the issues :)

Thanks for your reply.I have contact Cloudsmith to submit this issue,I think it's a wrong of Cloudsmith.


[HxAccordion] [Possible Bug] Accordion Collapses When It Should Stay Open

Version: 4.3.4
Blazor 8 Interactive Server
Issue: When I have an autosuggest / search box in an accordion and a value is chosen, the accordion collapses for some reason .
In this example when you chose "bob" either via "enter key" or with mouse it will collapse on the first time of choosing a value. If you choose "Jim" for the first time it won't, though in my real code it seems to be all choice so not sure why the difference here.
Attached is a video.
What is interesting is you will see the container disappear but if you look at the carrot you will see it is in the "up/open" poistion and though I did not put it in the video when I did display "expandedItemId " on the page it never changes it always stays as "1".
@page "/"

<PageTitle>Home</PageTitle>

Hello, world!

Welcome to your new app.

<Component @rendermode="RenderMode.InteractiveServer" />

Component.razor
<HxAccordion @bind-ExpandedItemId="@expandedItemId" CssClass="mb-3">
	<HxAccordionItem Id="1">
		<HeaderTemplate>Accordition Item 1 (Id="1") with LazyLoaded content</HeaderTemplate>
		<BodyTemplate>
			<HxAutosuggest Label="Employee"
						   Placeholder="Start typing to search by name"
						   TItem="EmployeeDto"
						   TValue="int?"
						   @bind-Value="@selectedEmployeeId"
						   DataProvider="ProvideSuggestions"
						   ValueSelector="employee => employee.Id"
						   TextSelector="employee => employee.Name"
						   ItemFromValueResolver="ResolveAutosuggestItemFromValue">
				<EmptyTemplate>
					Couldn't find any matching employee
				</EmptyTemplate>
			</HxAutosuggest>
		</BodyTemplate>
	</HxAccordionItem>
</HxAccordion>

@code
{
	private string expandedItemId = "1"; // you can se the initial value here, if binding to ExpandedItemId

	private int? selectedEmployeeId = 1;

	private async Task<AutosuggestDataProviderResult<EmployeeDto>> ProvideSuggestions(AutosuggestDataProviderRequest request)
	{
		var matchingEmployees = new List<EmployeeDto>()
		{
			 new EmployeeDto { Id =1 , Name = "Jim"},
			 new EmployeeDto { Id =2, Name = "Bob"}
		};

		return new AutosuggestDataProviderResult<EmployeeDto> { Data = matchingEmployees };
	}

	private async Task<EmployeeDto> ResolveAutosuggestItemFromValue(int? value)
	{
		if (value is null)
		{
			return null;
		}

		return new EmployeeDto();
	}

	public class EmployeeDto
	{
		public string? Name { get; set; }
		public int Id { get; set; }
	}
}

https://github.com/havit/Havit.Blazor/assets/321584/5d15228d-8863-41d5-a498-47bc29d0fd4c

@hakenr
Hey, could you please let me know if this is a bug or not? I understand if it is a bug and there is no time to fix it at this time. I just don't want to go ahead and rewrite this control myself and find out I was doing something wrong.
Thanks

@chobo2 This seems to be a bug. We need some time to investigate deeper and confirm.

blazor

@chobo2 This seems to be a bug. We need some time to investigate deeper and confirm.

Okay great, thanks for getting back to me. I will hold off then trying roll mine own out.

@chobo2 This seems to be a bug. We need some time to investigate deeper and confirm.

Hey, let me know if you need more information or videos to reproduce the bug.
I am sure you're busy so if this something that is not high priority for you just let me know, so I can plan accordingly as probably by Mid-January I will have to roll out my own if no solution is finished.
Thanks

I tried the latest version and the fix seems to have solved the problems, thanks @alexax578 and @hakenr


Occasional crashes

Sometimes playback stucks and librespot restarts every time I try to play a track. The only way to stop it from restarting is to restart the iOS client.
Here are the logs:
Feb  7 23:30:23 Raspberry librespot[1017]: INFO:librespot::player: Track "Downtown Beat" loaded
Feb  7 23:30:32 Raspberry librespot[1017]: INFO:librespot::player: Loading track "Life Is Like - Original Mix"
Feb  7 23:30:32 Raspberry librespot[1017]: INFO:librespot::player: Track "Life Is Like - Original Mix" loaded
Feb  7 23:31:15 Raspberry librespot[1017]: thread 'main' panicked at 'assertion failed: `(left == right)`
Feb  7 23:31:15 Raspberry librespot[1017]: left: `0`,
Feb  7 23:31:15 Raspberry librespot[1017]: right: `16`', core/src/util/spotify_id.rs:46:8
Feb  7 23:31:15 Raspberry librespot[1017]: note: Run with `RUST_BACKTRACE=1` for a backtrace.
Feb  7 23:31:15 Raspberry systemd[1]: raspotify.service: main process exited, code=exited, status=101/n/a
Feb  7 23:31:15 Raspberry systemd[1]: Unit raspotify.service entered failed state.
Feb  7 23:31:25 Raspberry systemd[1]: raspotify.service holdoff time over, scheduling restart.
Feb  7 23:31:25 Raspberry systemd[1]: Stopping Raspotify...
Feb  7 23:31:25 Raspberry systemd[1]: Starting Raspotify...
Feb  7 23:31:25 Raspberry systemd[1]: Started Raspotify.
Feb  7 23:31:25 Raspberry librespot[4317]: INFO:librespot: librespot (raspotify) 932441d (2018-01-31). Built on 2018-02-03. Build ID: m5925LlY
Feb  7 23:31:25 Raspberry librespot[4317]: INFO:librespot_core::session: Connecting to AP "gew1-accesspoint-b-mp8m.ap.spotify.com:4070"
Feb  7 23:31:26 Raspberry librespot[4317]: INFO:librespot_core::session: Authenticated as "user" !
Feb  7 23:31:26 Raspberry librespot[4317]: INFO:librespot::audio_backend::alsa: Using alsa sink
Feb  7 23:31:26 Raspberry librespot[4317]: INFO:librespot_core::session: Country: "HU"
Feb  7 23:31:37 Raspberry librespot[4317]: thread 'main' panicked at 'assertion failed: `(left == right)`
Feb  7 23:31:37 Raspberry librespot[4317]: left: `0`,
Feb  7 23:31:37 Raspberry librespot[4317]: right: `16`', core/src/util/spotify_id.rs:46:8
Feb  7 23:31:37 Raspberry librespot[4317]: note: Run with `RUST_BACKTRACE=1` for a backtrace.
Feb  7 23:31:37 Raspberry systemd[1]: raspotify.service: main process exited, code=exited, status=101/n/a
Feb  7 23:31:37 Raspberry systemd[1]: Unit raspotify.service entered failed state.
Feb  7 23:31:47 Raspberry systemd[1]: raspotify.service holdoff time over, scheduling restart.
Feb  7 23:31:47 Raspberry systemd[1]: Stopping Raspotify...
Feb  7 23:31:47 Raspberry systemd[1]: Starting Raspotify...
Feb  7 23:31:47 Raspberry systemd[1]: Started Raspotify.
Feb  7 23:31:47 Raspberry librespot[4345]: INFO:librespot: librespot (raspotify) 932441d (2018-01-31). Built on 2018-02-03. Build ID: m5925LlY
Feb  7 23:31:47 Raspberry librespot[4345]: INFO:librespot_core::session: Connecting to AP "gew1-accesspoint-b-jwtf.ap.spotify.com:4070"
Feb  7 23:31:48 Raspberry librespot[4345]: INFO:librespot_core::session: Authenticated as "user" !
Feb  7 23:31:48 Raspberry librespot[4345]: INFO:librespot::audio_backend::alsa: Using alsa sink
Feb  7 23:31:48 Raspberry librespot[4345]: INFO:librespot_core::session: Country: "HU"
Feb  7 23:32:01 Raspberry systemd[1]: Starting user-1000.slice.
Feb  7 23:32:01 Raspberry systemd[1]: Created slice user-1000.slice.
Feb  7 23:32:01 Raspberry systemd[1]: Starting User Manager for UID 1000...
Feb  7 23:32:01 Raspberry systemd[1]: Starting Session c1 of user pi.
Feb  7 23:32:01 Raspberry systemd[1]: Started Session c1 of user pi.
Feb  7 23:32:01 Raspberry systemd[4398]: Starting Paths.
Feb  7 23:32:01 Raspberry systemd[4398]: Reached target Paths.
Feb  7 23:32:01 Raspberry systemd[4398]: Starting Timers.
Feb  7 23:32:01 Raspberry systemd[4398]: Reached target Timers.
Feb  7 23:32:01 Raspberry systemd[4398]: Starting Paths.
Feb  7 23:32:01 Raspberry systemd[4398]: Reached target Paths.
Feb  7 23:32:01 Raspberry systemd[4398]: Starting Timers.
Feb  7 23:32:01 Raspberry systemd[4398]: Reached target Timers.
Feb  7 23:32:01 Raspberry systemd[4398]: Starting Sockets.
Feb  7 23:32:01 Raspberry systemd[4398]: Reached target Sockets.
Feb  7 23:32:01 Raspberry systemd[4398]: Starting Basic System.
Feb  7 23:32:01 Raspberry systemd[4398]: Reached target Basic System.
Feb  7 23:32:01 Raspberry systemd[4398]: Starting Default.
Feb  7 23:32:01 Raspberry systemd[4398]: Reached target Default.
Feb  7 23:32:01 Raspberry systemd[4398]: Startup finished in 36ms.
Feb  7 23:32:01 Raspberry systemd[1]: Started User Manager for UID 1000.
Feb  7 23:33:16 Raspberry librespot[4345]: thread 'main' panicked at 'assertion failed: `(left == right)`
Feb  7 23:33:16 Raspberry librespot[4345]: left: `0`,
Feb  7 23:33:16 Raspberry librespot[4345]: right: `16`', core/src/util/spotify_id.rs:46:8
Feb  7 23:33:16 Raspberry librespot[4345]: note: Run with `RUST_BACKTRACE=1` for a backtrace.
Feb  7 23:33:16 Raspberry systemd[1]: raspotify.service: main process exited, code=exited, status=101/n/a
Feb  7 23:33:16 Raspberry systemd[1]: Unit raspotify.service entered failed state.
Feb  7 23:33:26 Raspberry systemd[1]: raspotify.service holdoff time over, scheduling restart.
Feb  7 23:33:26 Raspberry systemd[1]: Stopping Raspotify...
Feb  7 23:33:26 Raspberry systemd[1]: Starting Raspotify...
Feb  7 23:33:26 Raspberry systemd[1]: Started Raspotify.
Feb  7 23:33:26 Raspberry librespot[4519]: INFO:librespot: librespot (raspotify) 932441d (2018-01-31). Built on 2018-02-03. Build ID: m5925LlY
Feb  7 23:33:26 Raspberry librespot[4519]: INFO:librespot_core::session: Connecting to AP "gew1-accesspoint-b-cqf9.ap.spotify.com:4070"
Feb  7 23:33:28 Raspberry librespot[4519]: INFO:librespot_core::session: Authenticated as "user" !
Feb  7 23:33:28 Raspberry librespot[4519]: INFO:librespot::audio_backend::alsa: Using alsa sink
Feb  7 23:33:28 Raspberry librespot[4519]: INFO:librespot_core::session: Country: "HU"
Feb  7 23:36:02 Raspberry librespot[4519]: thread 'main' panicked at 'assertion failed: `(left == right)`
Feb  7 23:36:02 Raspberry librespot[4519]: left: `0`,
Feb  7 23:36:02 Raspberry librespot[4519]: right: `16`', core/src/util/spotify_id.rs:46:8
Feb  7 23:36:02 Raspberry librespot[4519]: note: Run with `RUST_BACKTRACE=1` for a backtrace.
Feb  7 23:36:02 Raspberry systemd[1]: raspotify.service: main process exited, code=exited, status=101/n/a
Feb  7 23:36:02 Raspberry systemd[1]: Unit raspotify.service entered failed state.
Feb  7 23:36:12 Raspberry systemd[1]: raspotify.service holdoff time over, scheduling restart.
Feb  7 23:36:12 Raspberry systemd[1]: Stopping Raspotify...
Feb  7 23:36:12 Raspberry systemd[1]: Starting Raspotify...
Feb  7 23:36:12 Raspberry systemd[1]: Started Raspotify.
Feb  7 23:36:12 Raspberry librespot[4684]: INFO:librespot: librespot (raspotify) 932441d (2018-01-31). Built on 2018-02-03. Build ID: m5925LlY
Feb  7 23:36:12 Raspberry librespot[4684]: INFO:librespot_core::session: Connecting to AP "gew1-accesspoint-b-jws4.ap.spotify.com:4070"

It haven't happened since.


Cannot open GitLab bar to view 2FA code

Bug - Pressing the icon or anywhere on the bar is unresponsive. The info icon, search and QR code icons work. I can’t get into GitLab, which is a must have for work

What is meant by 'GitLab bar' exactly? Could you provide a screenshot or video of the issue?

Thanks Justin,
I figured out the root cause (my 3rd party 2FA app). It’s fixed now. Apologies for not closing out this ticket earlier!
-Tim
Sent from my iPhone

On Aug 3, 2021, at 10:02 AM, Justin Stephenson @.***> wrote:

What is meant by 'GitLab bar' exactly? Could you provide a screenshot or video of the issue?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or unsubscribe.
Triage notifications on the go with GitHub Mobile for iOS or Android.


Unifying data transfer with numpy array

All data transfer are now in numpy array.
Description

For model weights, the transfer type is an OrderedDict{name: numpy.nparray}
For features, the transfer type is an list[(numpy.nparray, numpy.nparray)], first value is feature while second value is target.
How has this been tested?

Tested with the following config:
'configs/MNIST/fedavg_lenet5_noniid'
'configs/MNIST/fedavg_lenet5'
'configs/MNIST/fedprox_lenet5'
'configs/MNIST/mistnet_lenet5'
'configs/MNIST/mistnet_pretrain_lenet5'

Please help test for mindspore and Tensorflow. I don't have a proper machine for testing for now.
Types of changes

[ ] Bug fix (non-breaking change which fixes an issue) Fixes #
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)

Checklist:

[x] My code follows the code style of this project.
[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.

There is no reason why numpy arrays need to be used at all — except when it is absolutely necessary. See my comments from the closed issue.

Also, this "feature" of always converting to numpy made the code much less elegant and much harder to follow, which is in my opinion not a good design.

This is to prepare for #119 to avoid implementing the same local differential privacy method for different framework.

I don't think we should worry too much about having the same differential privacy across frameworks. Most of the code on differential privacy would most likely be framework-agnostic anyway — see servers/fedavg.py that uses the same code to do federated averaging for all the frameworks. At least, such worry should not lead to adding more computation overhead because of this idea of converting to numpy arrays -- it's just too high price to pay for something that's not necessarily an issue at all.

The overly complicated code is because currently the server/client and algorithm base classes seem to imply that framework-specific implementation should live within algorithm class and should not leak into server/client class. However some the inherited classes of client/server does have strong assumption on the framework used. Not sure about the design choice but I opted to keep them separated as much as possible.

Instead, we should work on differential privacy methods on PyTorch, make it work first, and then see what it takes to bring it over the TensorFlow and other frameworks. This avoids all the boilerplate code and overhead of converting to numpy.

Instead, we should work on differential privacy methods on PyTorch, make it work first, and then see what it takes to bring it over the TensorFlow and other frameworks. This avoids all the boilerplate code and overhead of converting to numpy.

Thats understandable.

MindSpore and TensorFlow tests are now part of our continuous integration (CI) tests. These tests will be run and results will be shown for all PRs.

The overly complicated code is because currently the server/client and algorithm base classes seem to imply that framework-specific implementation should live within algorithm class and should not leak into server/client class. However some of the inherited classes of client/server does have strong assumption on the framework used. Not sure about the design choice but I opted to keep them separated as much as possible.

They should indeed be separate — if some of the classes (excluding code in examples/) in clients or servers are framework-specific, these issues need to be eventually fixed. All framework-specific code should reside in Algorithms, Datasources, Samplers, and Trainers. Clients and servers should be framework-agnostic.

Perhaps a good starting point is to try to add differential privacy by using random response (in utils/). It was previously used only in MistNet, but not using the new DataProcessors.

The overly complicated code is because currently the server/client and algorithm base classes seem to imply that framework-specific implementation should live within algorithm class and should not leak into server/client class. However some of the inherited classes of client/server does have strong assumption on the framework used. Not sure about the design choice but I opted to keep them separated as much as possible.

They should indeed be separate — if some of the classes (excluding code in examples/) in clients or servers are framework-specific, these issues need to be eventually fixed. All framework-specific code should reside in Algorithms, Datasources, Samplers, and Trainers. Clients and servers should be framework-agnostic.

That clears things up.
Continuing on #119, DataProcessors are also framework-specific for now. Next step for the issue would be to implement the DataProcessor pipeline onto server/client, and a sample DataProcessor for LDP with random response.

There is also one customise_server_payload that shall be replaced with DataProcessor

One more comment about the new Serializers: I think they represent boilerplate code that's not useful enough, for the reason that pickle is the only way to do it anyway as far as I know. I am not aware of any other way.

There is also one customise_server_payload that shall be replaced with DataProcessor

This makes sense.

There is one thing for using numpy for data transfer: for ./run --config=configs/MNIST/mistnet_lenet5.yml, feature transfer size is 311.3 MB before, and 14.08 MB after. I have not verified the correctness or anything else for now, just this discovery.

That's great to hear.

https://github.com/pytorch/pytorch/issues/19408
Could be related, as the features transferred is a list of (torch.Tensor, torch.Tensor)

The PR failed the YOLOv5 PyTorch test (`./run --config=configs/YOLO/fedavg_yolov5.yml), showing the perils of changing too much codebase that has already been "field-tested."

Closing this PR and moving to the next step now


Refactor to use allocate_data_segment method

This change is

Codecov Report

Merging #988 (e4990c0) into mohammad/Update_txInfo_syscall (0b63451) will decrease coverage by 0.28%.
The diff coverage is 30.43%.

@@                        Coverage Diff                         @@
##           mohammad/Update_txInfo_syscall     #988      +/-   ##
==================================================================
- Coverage                           67.41%   67.14%   -0.28%
==================================================================
  Files                                  52       48       -4
  Lines                                6958     6172     -786
  Branches                             6958     6172     -786
==================================================================
- Hits                                 4691     4144     -547
+ Misses                               1847     1653     -194
+ Partials                              420      375      -45

Files
Coverage Δ

...lockifier/src/execution/syscalls/hint_processor.rs
75.39% <30.43%> (+1.01%)
:arrow_up:

... and 10 files with indirect coverage changes
:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


[Feature] Ability to add books via QR or Barcode

Some users may have already a lot of coding/programming books and to save time entering data may choose to use a reader, their phone or another device to save their books to the database instead of typing in the information.

I would recommend installing react-barcode-reader and using that library.

It appears we need to add:
react-barcode
react-qr-code
react-qr-reader
Libraries from npm for this function to work

Note: react-barcode-reader and react-qr-reader were added today.

@LOGESH-B Perhaps I will re write the issue so it is easier.
I added the react-barcode-reader npm package.
I think this is partly necessary in order for users to use a barcode scanner to scan the barcode on most programming books in order to put them in the database easily.

Hii @gbowne1
I scanned couple of books but it only gives the ISBN number not the things that we are needed(i.e name,author,year....)
These things user needs to enter in the form himself.Only for ISBN number it is not a mandetory thing having Barcode reader
In my point of view
I scanned books with Online Aspose barcode reader

We would have to connect to an external data source (or another external API) in order for it to query the ISBN for more details.  This is not something that needs to be implemented right away, but enough is working that it is indeed possible.
Barcodes on books are usually in the EAN format and yes, usually it is only the ISBN number.
I just saying for someone like me with over 300+ books on programming and coding it might be a bit difficult to enter in all the data for each book.
Before we can do all this we need the models, schemas, etc. for the books themselves so we don't have to rely on the json.

@LOGESH-B
this reminds me..
const mongoose = require('mongoose');

const bookSchema = new mongoose.Schema({
  title: { type: String, required: true },
  author: { type: String, required: true },
  description: { type: String },
  rating: { type: Number },
  reviews: [{ type: mongoose.Schema.Types.ObjectId, ref: 'Review' }],
});

const Book = mongoose.model('Book', bookSchema);

module.exports = Book;

or...
const express = require('express');
const router = express.Router();
const Book = require('../models/book');

router.get('/books', async (req, res) => {
  try {
    const books = await Book.find();
    res.json(books);
  } catch (err) {
    console.error(err);
    res.status(500).json({ message: 'Server Error' });
  }
});

router.post('/books', async (req, res) => {
  const { title, author, description, rating } = req.body;

  try {
    const book = new Book({ title, author, description, rating });
    await book.save();
    res.json(book);
  } catch (err) {
    console.error(err);
    res.status(500).json({ message: 'Server Error' });
  }
});

module.exports = router;

Assign to me i will work on that🙌

I mean I can totally make that a new [TODO] issue to make the models for books like above. @LOGESH-B give me a few moments.

@gbowne1  Ok

ok new issue added.  Comment so I can assign.

@BlackBond06 This is the issue for adding books via barcode


Adding prop outliers for the chart component

closes #863

@GuilhermePrandi, atualizei o seu branch porque o LJ arrumou as actions, tá?

Did you test the outlier behavior in all the affected charts?

Yes!


CSV/JSON to M3U

Is it possible to implement a reverse function where one can convert a table/file to m3u?

Yes but is there a standard format for the table/file to convert into m3u ???

Such a great package but I badly need this feature to make it complete. Following this issue for update

@marat2509 @nikhil96widhani Please check parse_json and parse_csv methods which are included in the latest version.


gvfs fetch slow with specific file list

If we do gvfs prefetch --files "*", it takes around 21s, downloads all 25k blobs.
If we run gvfs prefetch --files-list <list of files>, where the list of files contains only 4k blobs, it takes 42 minutes.
Looking at the logs, in the quick case, the batching works as expected, and we're downloading in batches around 3k (+-200) in size, so it all happens in 8 batches.
In the slow case, the batches are rarely larger than 1 and never over 10. Durations per batch are only up to 40ms, so even with no parallelization, and if no batch had more than 1 object in it, it would take only 160s, which seems to indicate, that the pipeline stages, that come before the download step are being slow.

Closing, as the PR was merged


Body scroll after modal is open

Describe the bug
A clear and concise description of what the bug is.
To Reproduce
Steps to reproduce the behavior:

In mobile
Click 3 dots menu
Click Shortcuts
Now body is scrollable after the modal is open

Expected behavior
Scroll should be locked
Screenshots
If applicable, add screenshots to help explain your problem.
Desktop (please complete the following information):

OS: [e.g. iOS]
Browser [e.g. chrome, safari]
Version [e.g. 22]

Smartphone (please complete the following information):

Device: [e.g. iPhone6]
OS: [e.g. iOS8.1]
Browser [e.g. stock browser, safari]
Version [e.g. 22]

Additional context
Add any other context about the problem here.

Scroll on "modal opened state" is a good thing.
Allows you to check data on body without closing modal.

Upgrading to vue 3 soon or after its stable release?

Hahaha. Only after stable release. And only if it's possible. All our codebase is spaghetti sauce 🤣

Off topic but are to using a ui framework, the design is ❤

No UI frameworks used. Each styles are written by ne ✌