How to get path to the variable inside template to pass it to event processor?

Dear colleagues,
I need to process remove_reminder action for one of multiple client.invitation instances (depending on button pressed) without ractive desynchronization. I don't want to use event.keypath, cause it is not a good solution for neighbour issues (for example I want to trigger remove_reminder on other (not self) element.
Template
{{# multiple instances...}}
    <btn on-click="remove_reminder:{{ client.invitation }}">Remove Reminder</btn>
{{/}}

JS
oninit: function(){
    var self = this;
    self.on({
      remove_reminder: function(event, invitation){
        invitation.reminder = null; // How should I use here self.set() ? No keypath available
      }
    })

I suppose there is (should be) something like that:
{{# multiple instances...}}
    <btn on-click="remove_reminder:{{ get_keypath(client.invitation) }}">Remove Reminder</btn>
{{/}}

JS
oninit: function(){
    var self = this;
    self.on({
      remove_reminder: function(event, invitation_path){
        self.set(invitation_path + ".reminder", null); // now it is Ok
      }
    })

Does such helper exist?
PS: more over, event.keypath has a strange value of:
${{client_person_role:USER-broker_account-enrollments_roles-0-enrollment-client_persons_roles-0}}

and is not applicable at all. Probably the strange value is because I use Mustache alias client_person_role. Is that value format correct?

You can use ractive.update() to resync the data model with ractive:
oninit: function(){
    var self = this;
    self.on({
        remove_reminder: function(event, invitation){
            invitation.reminder = null;
            this.update();
        }
    });
}

Yes, but it is not accurate, i.e. it invalidates the whole this template part.
The helper get_keypath could solve the issue, but have no idea how it could be implemented.

How about the @keypath special ref?
<button on-click="remove:{{@keypath}}">Remove</button>

If you're inside an iterative section, the first param will be the keypath up to the index of the current item.

...and you can also pull the keypath from the event object for proxy (non-method) events. I always forget about that.

Very near, but @keypath doesn't properly work inside alias blocks, it returns the value of:
${{client_person_role:USER-broker_account-enrollments_roles-0-enrollment-client_persons_roles-0}}

Ah... sorry, I missed the PS. If you're inside an expression context, as you would be with a {{#with {...} }} section, there's currently no really good way to keep the real context in scope that I'm aware of. You can get the base of it by manually passing it along e.g. {{#with { ..., keypath: @keypath } }}, but you'll have to  keep last bits built up manually if there are any.
{{#each foos}}{{#with { bar: ., keypath: @keypath } }}{{#each .bars:i}}...<button on-click="doseomthing:{{keypath + '..bars.' + i}}">Yep</button>...{{/each}}{{/with}}{{/each}} is very contrived, but hopefully useful.
Once #2022 gets merged in, I plan to revisit aliasing like #1722 as well as an aliasing directive that is more limited than with but keeps the links intact. It also may be possible to make with work in a bi-directional way after #2022, but I haven't looked at it too hard yet.

@evs-chris, thank you for detailed answer, hope we could see something for such cases further!
Will use the {{#with { ..., keypath: @keypath } }} approach

Solution implementation
For thous, who are looking the solution for complex @keypath being processed correctly.
My solution uses a small parser that converts strange "${{...}}" keypath value into ordinal one. The only requirement is to place ", kp=@keypath" to the end of alias (with) Mustache statement. Sorry for the complicated code (tried to make comments).
Parser function:
var parse_keypath = function(kp){
  var re = /\$\{\{([-"\w:,]*)}}/; // The most inner ${{...}} block reg-exp
  var m;
  var substitutions = {};
  while ((m = re.exec(kp)) !== null) {
    var m_key = getRandomStr(5);
    if (kp.indexOf(m_key)!=-1) continue;
    substitutions[m_key] = {};  // Each ${{...}} block is being substituted by temporary unique str key
    kp = kp.replace("${{" + m[1] + "}}", m_key);
    var re2 = /([\w]*):([-"\w]*)/g; // Key-value reg-exp
    var m2;
    function get_substituted_value(value){
      value = value.replace(/-/g, ".").replace(/"/g, "");
      var value_parts = value.split(".");
      if (substitutions.hasOwnProperty(value_parts[0])){
        var new_root="";
        if (value_parts.length>1 && substitutions[value_parts[0]].hasOwnProperty(value_parts[1])){
          new_root = substitutions[value_parts[0]][value_parts[1]];
          value_parts.shift(); // Removing substitution
          value_parts.shift(); // Removing substitution key
        }else{ // the case of empty value_parts tail
          if (!substitutions[value_parts[0]].hasOwnProperty("kp")){
            console.error("Please, add \', kp=@keypath\' to the end of alias (with) Mustache statement.")
          }
          new_root = substitutions[value_parts[0]]["kp"];
          value_parts.shift(); // Removing substitution
        }
        value_parts.unshift(new_root);
        value = value_parts.join(".");
      }
      return value;
    }
    while ((m2 = re2.exec(m[1])) !== null) {
      var value = m2[2];
      substitutions[m_key][m2[1]] = get_substituted_value(value);
    }
  }
  var ret = get_substituted_value(kp);

  return ret;
};

Then use it at some Ractive helper:
  onconstruct: function(options){
    var self = this;
    if (!options.data) options.data = {};
    options.data.ract_path = function(kp, additional_path){
      if (!kp){
        console.error("Please, pass @keypath to ract_path helper");
      }
      if (additional_path){
        kp += "." + additional_path;
      }
      return parse_keypath(kp);
    };
  },

Usage:
{{#USER.broker_account.enrollments_roles:i}}
  {{# { client_person_role: this.client_persons_roles.0, kp: @keypath} }}
    {{ ract_path(@keypath) }}
    {{ ract_path(@keypath, "client_person_role.invitation") }}
  {{/}}
{{/}}

Output:
USER.broker_account.enrollments_roles.0.enrollment
USER.broker_account.enrollments_roles.0.enrollment.client_persons_roles.0.invitation
USER.broker_account.enrollments_roles.1.enrollment
USER.broker_account.enrollments_roles.1.enrollment.client_persons_roles.0.invitation


Add F.A.Q.

The website project was slow to  be merged. So I wrote in README.md directly.

Coverage remained the same at 100.0% when pulling 586c0c9b913c8f2dc44b5a4f8c7331a0ad5dfe87 on chinesedfan:add-faq into 4aae3007ec22ee324dcfe876cd4029112d29eaee on styled-components:master.


bug: dropdown breaks in tables with overflow applied

What version of daisyUI are you using?
v4.12.10
Which browsers are you seeing the problem on?
All browsers
Reproduction URL
https://play.tailwindcss.com/zW20wMgehO
Describe your issue
I want to place a dropdown inside a table that has a horizontal scrollbar, but it does not seem to work properly. I expect the dropdown menu to be placed above the table, but it is rendered inside the table. In the provided playground example, you can see that the second table has a vertical scrollbar and the dropdown menu is not placed properly.
If I remove the overflow-x-auto class, everything seems to work fine, but I cannot do this in my table because I want to keep a horizontal scrollbar.

This is not possible by CSS until the new HTML popover API and the upcoming CSS anchor positioning API get supported by major browsers.
We're planning to add them to the next major version of daisyUI (5.x) but until then you can use JS solutions like Headless UI for the popover.
Let me know if you have a question.

If you use the react framework, you can use the following code snippet
It worked for me
import clsxm from "lib/clsxm";
import { useEffect, useRef, useState } from "react";

const Dropdown = () => {
  const [openUpwards, setOpenUpwards] = useState<boolean>(false);
  const dropdownRef = useRef<HTMLUListElement>(null);
  const buttonRef = useRef<HTMLDivElement>(null);
  useEffect(() => {
    if (buttonRef.current && dropdownRef.current) {
      const buttonRect = buttonRef.current.getBoundingClientRect();
      const dropdownHeight = dropdownRef.current.offsetHeight;
      const parentRect = buttonRef.current
        .closest("table") // or order of parent elements like 'div', 'span', ".content-box"
        ?.getBoundingClientRect();

      if (parentRect) {
        // Check if there's enough space to open the dropdown downwards
        const spaceBelow = parentRect.bottom - buttonRect.bottom;
        if (spaceBelow < dropdownHeight) {
          setOpenUpwards(true);
        } else {
          setOpenUpwards(false);
        }
      }
    }
  }, []);

  return (

          open

            item 1

            item 2

  );
};

export default Dropdown;

@moradi2128 thanks for the code snippet. Unfortunately, I use Phoenix LiveView, so no React


can't graph trigonometric function of secx, cscx, cotx, tanx,...

source  code:
class PlotFunctions(GraphScene):
CONFIG = {
"x_min" : -10,
"x_max" : 10.3,
"y_min" : -1.5,
"y_max" : 1.5,
"graph_origin" : ORIGIN ,
"function_color" : RED ,
"axes_color" : GREEN,
"x_labeled_nums" :range(-10,12,2),
}
def construct(self):
    self.setup_axes(animate=True)
    func_graph=self.get_graph(self.func_to_graph,self.function_color)
    func_graph2=self.get_graph(self.func_to_graph2)
    vert_line = self.get_vertical_line_to_graph(TAU,func_graph,color=YELLOW)
    graph_lab = self.get_graph_label(func_graph, label = "\\cos(x)")
    graph_lab2=self.get_graph_label(func_graph2,label = "\\sin(x)", x_val=-10, direction=UP/2)
    two_pi = TexMobject("x = 2 \\pi")
    label_coord = self.input_to_graph_point(TAU,func_graph)
    two_pi.next_to(label_coord,RIGHT+UP)

    self.play(ShowCreation(func_graph),ShowCreation(func_graph2))
    self.play(ShowCreation(vert_line), ShowCreation(graph_lab), ShowCreation(graph_lab2),ShowCreation(two_pi))

def func_to_graph(self,x):
    #return np.cos(x)
    return np.tan(x)

def func_to_graph2(self,x):
    return np.sin(x)

I replaced "return np.cos(x)" to "return np.tan(x)"...i got this:

and then I replaced "return np.cos(x)" to "return np.sec(x)/cot(x)/csc(x)"...i got this:
AttributeError: module 'numpy' has no attribute 'sec'...

Those functions are discontinuous, you must break them into pieces to make them work, like [https://github.com/3b1b/manim/issues/449]. Also you can import the math package of python instead numpy.

Those functions are discontinuous, you must break them into pieces to make them work, like this. Also you can import the math package of python instead numpy.

Thanks very much, but it didn't work...
i got this:

source code:

and how to import the math package of python instead numpy....
does it means i need uninstall numpy package and install the math package of python ...
or i just need to use the code:from math import ***??....
and

This is not a programming problem, the problem is that you do not know about trig functions. The tangent function is discontinuous in PI/2 + n*PI, so you should break it to pieces at those intervals.
No, you don't need to uninstall numpy, you just have to import math as a module.
If you want to use manim you need to have basic programming knowledge in python, so read the documentation if you don't know what you are doing.
This is one way to do it:
class TanGraph(GraphScene):
    CONFIG = {
        "y_max" : 10,
        "y_min" : -10,
        "x_max" : 5,
        "x_min" : -5,
        "graph_origin" : ORIGIN,
    }
    def construct(self):
        self.setup_axes()
        tan_function = lambda x: np.tan(x)
        tan_graph = VGroup()
        approx_factor = 0.934
        for n in range(-1,2):
            graph = self.get_graph(tan_function,
                                    color = RED,
                                    x_min = (-PI/2)*approx_factor+n*PI,
                                    x_max = (PI/2)*approx_factor+n*PI
                                    )
            tan_graph.add(graph)

        self.play(
            ShowCreation(tan_graph),
        )
        self.wait()

Result:

This is not a programming problem, the problem is that you do not know about trig functions. The tangent function is discontinuous in PI/2 + n*PI, so you should break it to pieces at those intervals.
No, you don't need to uninstall numpy, you just have to import math as a module.
If you want to use manim you need to have basic programming knowledge in python, so read the documentation if you don't know what you are doing.
This is one way to do it:
class TanGraph(GraphScene):
    CONFIG = {
        "y_max" : 10,
        "y_min" : -10,
        "x_max" : 5,
        "x_min" : -5,
        "graph_origin" : ORIGIN,
    }
    def construct(self):
        self.setup_axes()
        tan_function = lambda x: np.tan(x)
        tan_graph = VGroup()
        approx_factor = 0.934
        for n in range(-1,2):
            graph = self.get_graph(tan_function,
                                    color = RED,
                                    x_min = (-PI/2)*approx_factor+n*PI,
                                    x_max = (PI/2)*approx_factor+n*PI
                                    )
            tan_graph.add(graph)

        self.play(
            ShowCreation(tan_graph),
        )
        self.wait()

Result:

Thanks a loooooooot!!! now i can graph function of tanx , but i still can't graph the function of cotx...

this is the reminder:

and i replaced cotx to secx, it didn't work too...

cot(x) = 1/tan(x) ?

cot(x) = 1/tan(x)

thanks a looooooot.... i think i just made a really stupid question....😂

cot(x) = 1/tan(x)

btw, if i want to replace the axis number label from "1,2,3,···"to "pi/2, pi,...." what should i  do...
such as ,
from:

to:

See my 2D graph tutorial in GitHub

See my 2D graph tutorial in GitHub

thanks ....


Ways to reduce Bluetooth Mesh message loss

    I created two Bluetooth mesh nodes. I control one of the nodes to send a message to another node, and the other node will reply immediately after receiving the message. The next message will not be sent until I receive this reply or timeout.
    Found through my test. A and B communicate. The success rate of A to B is 99%. B response A success rate is 60%. I guarantee that B will successfully send the response message to air.
    My node uses nrf52_pca10040, I modified the broadcast interval and scan window to 20ms and 15ms in mesh/adv.c. Because the default parameters are worse. I based on the sample/mesh_demo example.

I opened the log information of MESH/NET and didn't receive the broadcast packet of the reply.

My message is less than 8 bytes and not segmented.

What kind of network transmit do you have configured? Have you tried increasing the number of retransmissions using it?

FWIW, it's a known issue that there's room for improvement with the reliability  message reception, even though with mesh it can never be 100%.
@cvinayak @bluetooth-mdw FYI

@jhedberg I didn't use retransmission, it is a unreliable message. My number of nodes is just two. Surprisingly, the success rate of A to B is 99%, but the success rate of B response A is only 60%.
    I used an ammeter to see the process of chip transfer. I find, the controller used a scan window time slot to send. However, after the TX is completed, the RX is not immediately turned on, but waits for the next scan window time slot to be turned on. Is this one of the reasons?

@jhedberg I didn't use retransmission, it is a unreliable message.

@xiaoliang314 usually unreliable messages are defined as those which don't solicit any response from the other side. It's unclear to me what this has to do with the Network Transmit state? It's usually a good idea to have at least a few transmissions, and that's also what the samples in the Zephyr tree do, i.e. they have something like the following in their bt_mesh_cfg_srv struct definition:
        /* 3 transmissions with 20ms interval */
        .net_transmit = BT_MESH_TRANSMIT(2, 20),

after the TX is completed, the RX is not immediately turned on, but waits for the next scan interval time slot to be turned on. Is this one of the reasons?

@xiaoliang314 yes, that could be one of the reasons.

My configuration is:
static struct bt_mesh_cfg_srv cfg_srv = {
	.relay = BT_MESH_RELAY_DISABLED,
	.beacon = BT_MESH_BEACON_ENABLED,
#if defined(CONFIG_BT_MESH_FRIEND)
	.frnd = BT_MESH_FRIEND_ENABLED,
#else
	.frnd = BT_MESH_FRIEND_NOT_SUPPORTED,
#endif
#if defined(CONFIG_BT_MESH_GATT_PROXY)
	.gatt_proxy = BT_MESH_GATT_PROXY_ENABLED,
#else
	.gatt_proxy = BT_MESH_GATT_PROXY_NOT_SUPPORTED,
#endif
	.default_ttl = 7,

	/* 3 transmissions with 20ms interval */
	.net_transmit = BT_MESH_TRANSMIT(2, 20),
	.relay_retransmit = BT_MESH_TRANSMIT(2, 20),
};

menuconfig opens these functions:
[*] Relay support
[ ] Support for Low Power features
[ ] Support for acting as a Friend Node
[*] Support for Configuration Client Model
[ ] Support for Health Client Model

mesh/adv.c modified these parameters:
/* Window and Interval are equal for continuous scanning */
#define MESH_SCAN_INTERVAL_MS 15
#define MESH_SCAN_WINDOW_MS   15
#define MESH_SCAN_INTERVAL    ADV_SCAN_UNIT(MESH_SCAN_INTERVAL_MS)
#define MESH_SCAN_WINDOW      ADV_SCAN_UNIT(MESH_SCAN_WINDOW_MS)

/* Pre-5.0 controllers enforce a minimum interval of 100ms
 * whereas 5.0+ controllers can go down to 20ms.
 */
#define ADV_INT_DEFAULT_MS 20
#define ADV_INT_FAST_MS    20

@jhedberg FYI

This on the surface looks like a buffers configuration issues. With the nods being relays they will be processing multiple messages that have been repeated and will consume precious resources.
Start by removing the Relay option and see what effect that has on reliability? I would then suggest looking at the mesh buffers.
Billy..

@xiaoliang314 a critical part of the configuration that can influence packet loss is the number of RX buffers. You didn't mention that. It'd defined through CONFIG_BT_RX_BUF_COUNT.

I've reclassified this as a question/feature request, since we haven't identified any obvious thing that's broken with the current implementation. Bluetooth Mesh has an inherent property of being an unreliable transport, so there will always be some message loss. What needs to be focused on is how to minimize it. A lot can already be done with the current implementation by carefully fine-tuning the various configuration parameters. What will further improve matters are the HCI extensions for Mesh, however those will appear earliest in Zephyr 1.15.

@jhedberg I don't think so. I put the two nodes in a closed environment and get the same result. The advertising message between them is only 3-6 per second. But there is also a phenomenon in which the probability of loss is relatively large. This phenomenon exists only when another node receives a message and immediately replies.

I manually perform a round-trip communication per second, and the probability of loss is the same.

The advertising message between them is only 3-6 per second.

@xiaoliang314 in mesh terms that's quite a lot. The maximum allowed by the spec is 10 per second (actually 100 per 10 seconds, so you can have some bursts), however depending on your Network Transmit state and controller support the practical maximum may be as low as 3 per second. With the Zephyr controller and the default Network Transmit state that's present in most sample applications, one packet will take about 120ms to transmit.
If you have a logic analyzer, it'd be very helpful if you could enable CONFIG_BT_CTLR_DEBUG_PINS for both devices and compare how their radio state timings compare with each other. Btw, the 30ms value for scanning should yield a better probability of reception than your modified 15ms value.
Adding @cvinayak as a second assignee since part of the improvement solution will be the vendor HCI extensions for mesh.

I used an ammeter to see the process of chip transfer. I find, the controller used a scan interval time slot to send. However, after the TX is completed, the RX is not immediately turned on, but waits for the next scan interval time slot to be turned on. Is this one of the reasons?

@xiaoliang314 that's something that @cvinayak will need to answer (I only know the controller internals on a fairly high-level).

@jhedberg Thanks for your answer, I know that the Bluetooth Mesh specification allows 100 messages to be transmitted per 10 seconds. But as a chip or module manufacturer, we should find the reason why this problem contradicts the theory, and improve our products. In an environment without RF interference we believe that their communication success rate should be 100%. But it is actually lower than this. If we solve this problem, it will improve the overall communication quality.

@xiaoliang314 even in a interference-free environment you cannot have 100% reception probability unless you have 4 independent radios on the receiver: 3 for each advertising channel, each doing continuous scanning on their own channel, and 1 for advertising (so that the advertising doesn't interrupt scanning). With a single radio you cannot be listening on every channel all the time, and since you cannot know on which channel and when a packet will be transmitted there will always be the chance to miss that packet.
Here's another Kconfig change you could try:
CONFIG_BT_CTLR_ADVANCED_FEATURES=y
CONFIG_BT_CTLR_JOB_PRIO=1

With that I was able to reduce the time from the host requesting the controller to advertise, to the controller actually starting advertising. It basically eliminated one scan window from the latency.

@jhedberg The configuration you provided is very useful. I found that the communication quality has been greatly improved in the test. But the receiving node often has a BUS FAULT error.  I changed the scan interval to 15ms because the 30ms effect is not very good.
***** BUS FAULT *****
  Precise data bus error
  BFAR Address: 0xc9f7ffc2
***** Hardware exception *****
Current thread ID = 0x20000a80
Faulting instruction address = 0x185a8
Fatal fault in thread 0x20000a80! Aborting.

@xiaoliang314 does 0x185a8 resolve to some meaningful location in the code? (addr2line -e zephyr.elf 0x185a8)
First thing to check is if all threads are staying within bounds, i.e. that what you're seeing is not a stack overflow.

@jhedberg I am using gdb to reproduce this problem, it is <tx_thread_data>.

I found the configuration of the TX thread, it is CONFIG_BT_HCI_TX_STACK_SIZE, I try to increase this size and try again.

I configured CONFIG_BT_HCI_TX_STACK_SIZE to 2048. This problem still exists. I use gdb to view and the configuration is effective.
stack_info = {start = 536897184, size = 2048}

@xiaoliang314, Hope you have fixed your problem by now.....from my own experiments, I've seen that the Network layer keeps relaying the packet until its TTL has reached zero (even with the replay protection and message cache), probably causing increased traffic. (you have to enable the Network Layer log to see this). So maybe you could try lowering the .default_ttl = 7  and disabling the [*] Relay support if you're not using it.
I am having a similar problem with packet reception ratio when multi-hop is required to deliver a packet and I've tried some of the recommendations @jhedberg made in this thread. So far, I've seen the best results by increasing the BT_MESH_ADV_BUF_COUNT as in my case, I get <err> bt_mesh_net: Out of relay buffers whenever I increase the traffic that needs to be relayed. So you can try this out!
Regards,
Ed

@EddLeon No solution, I have replaced the chip. One of the most probable reasons I found was that both the sending and receiving of the controller worked through time slots. When the controller sends it, it grabs a scan interval (30ms) but only uses about 3ms, and the next 27ms is not doing anything. This should be an important cause of message loss.

@xiaoliang314 can you please retry your benchmarks using the new split controller? Make sure that CONFIG_BT_LL_SW_SPLIT=y is set in your build/zephyr/.config file.

@carlescufi Sorry, with the update of the version, this test code can no longer work in the new version, and my time does not allow me to continue debugging it.

So here conclusion is for better performance (to solve the mentioned issue) we have to set
CONFIG_BT_CTLR_ADVANCED_FEATURES=y
CONFIG_BT_CTLR_JOB_PRIO=1
CONFIG_BT_LL_SW_SPLIT=y

& if necessary. increase values of
BT_MESH_ADV_BUF_COUNT
CONFIG_BT_HCI_TX_STACK_SIZE

I found values of (as per build/zephyr/.config),
CONFIG_BT_RX_BUF_COUNT=3
CONFIG_BT_HCI_TX_STACK_SIZE=640
after building samples/boards/nrf52/mesh/onoff_level_lighting_vnd_app.

Closing, as there is no planned work related to this issue.


[BUG] Testing out github action for jira.

What version of crane are you running, and what are your clutsters+platform
@main
What did you expect to happen?
It to work.
What actually happened?
It didn't.
Please include any relevant logs or errors
Nah...

This is very sad


Action 'add_uri_to_queue' unlisted in docs

Dear maintainers,
Thank you so much for this tool, it's really helpful and saves me time with my custom scripts :)
Before switching to this app,
A feature that I often used in my custom script is add_uri_to_queue, found in SoCo Github repo, docs here:
https://soco.readthedocs.io/en/latest/api/soco.core.html?highlight=_uri#soco.core.SoCo.add_uri_to_queue
I was unable to find this in the README.md however it does work and is in the action_processor.py
Could you document this feature as it really helps me with creating a daily URI playlist for Sonos and might help others as well.
Thank you!

Hi -- thanks for the feedback. Glad you're finding it useful.
I'd actually forgotten I'd implemented a wrapper for add_uri_to_queue. In v0.1.52, I've updated the action so that it can optionally be followed with a queue position (an integer, or 'next' to play as the next track), and it now returns the queue position at which the URI has been inserted. I've added it to the documentation.

Hi -- thanks for the feedback. Glad you're finding it useful.
I'd actually forgotten I'd implemented a wrapper for add_uri_to_queue. In v0.1.52, I've updated the action so that it can optionally be followed with a queue position (an integer, or 'next' to play as the next track), and it now returns the queue position at which the URI has been inserted. I've added it to the documentation.


Page not found error.

Under https://github.com/hoppscotch/docs/blob/main/README.md  when we click on @nuxt/content theme docs. getting below error.

I would love to fix this issue, if someone will help me with the correct url.

I think we need to update the below link
https://content.nuxtjs.org/v1/examples/docs-theme
this link is having the correct part.

PR has been merged, hence closing the issue.


Added property companyPhone to DocumentConfiguration which can be set by the Admin UI

1. Why is this change necessary?
The document configuration value companyPhone can be set by the Admin UI, but is not accessible by code.
2. What does this change do, exactly?
Adding variable $companyPhone to class DocumentConfiguration so you can access it.
3. Describe each step to reproduce the issue or behaviour.
Accessing companyPhone on an instance of DocumentConfiguration
4. Please link to the relevant issues (if any).
Issue https://github.com/shopware/platform/issues/2672
MR https://github.com/shopware/platform/pull/2715 Thanks to @heydavee for solving this issue last year. @mstegmeyer None of the company properties is having a getter/setter. Thats why they are left out.
5. Checklist

[X] I have rebased my changes to remove merge conflicts
[ ] I have written tests and verified that they fail without my change
[X] I have created a changelog file with all necessary information about my changes
[X] I have written or adjusted the documentation according to my changes
[X] This change has comments for package types, values, functions, and non-obvious lines of code
[X] I have read the contribution requirements and fulfil them.

@shopware/st-customer-order can you take look here as well?

@keulinho How can I push this MR? It is already a refresh of a closed one (due to inactivity).

Hello,
thank you for creating this pull request.
I have opened an issue on our Issue Tracker for you. See the issue link: https://issues.shopware.com/issues/NEXT-25636
Please use this issue to track the state of your pull request.

@shopware/st-customer-order can you take look here as well?

Scheduled 🚀

Thank you for your contribution! 👍 💙
We've merged your PR into the trunk branch, meaning that the improvement will be released in version <IP_ADDRESS>

Merged with f31316fddd49eddd4830d2cde9528ddb1940e034


Introduce fast path for LongRational.compare

When comparing small to medium rational numbers that comfortably fit into a LongRational, it is often not necessary to compute gcd and convert n and d into SafeLong to compare them.
Doing a simple long comparison will be faster in the very common case where both the product a.n * b.d and b.n * a.d fit into a Long, and will allocate no temporary objects.
So the idea would be to make use of Checked.tryOrElse to introduce a "fast path" for the common case described above. If I get the "Checked" macros correctly, they should replace all long operations like + and * by a version that checks for overflows and leaves other code alone. So the following should not produce wrong values in case of overflows, because the "orElse" path is taken, right?
def fastCompare(a:Rational, b:Rational) = (a, b) match {
  case (LongRational(an,ad), LongRational(bn, bd)) ⇒
    Checked.tryOrElse {
      (an * bd - bn * ad).signum
    } { a compare b }
  case _ ⇒ a compare b
}

Maybe you could hope that in some future JDK version, the SafeLong allocations would be removed by an optimization like scalar replacement. But at least in my benchmarks with JDK7 and 8, this is not the case. In any case, there is still the unnecessary gcd calculation.
Here is a benchmark and some results with some hopefully representative numbers. As you can see, the "fast path" makes the very common case of small to medium numbers significantly faster (0.44492 in case of small non-integer rationals), makes the Long/Long overflow case a little bit slower (1.03389 on JDK8), and has no impact in case at least one of the operands is already a BigRational.
package spire.math

import ichi.bench.Thyme
import spire.macros.Checked
import spire.math.LongRationals.LongRational

object RationalCompareBench extends App {
  def fastCompare(a:Rational, b:Rational) = (a, b) match {
    case (LongRational(an,ad), LongRational(bn, bd)) ⇒
      Checked.tryOrElse {
        (an * bd - bn * ad).signum
      } { a compare b }
    case _ ⇒ a compare b
  }
  val th = Thyme.warmed(warmth = Thyme.HowWarm.BenchOff)
  def bench(title:String, a:Rational, b:Rational) : Unit = {
    println(s"Rational comparison benchmark $title ${a.getClass.getSimpleName}($a) ${b.getClass.getSimpleName}($b)")
    th.pbenchOffWarm("compare vs fastCompare")(th.Warm(a compare b))(th.Warm(fastCompare(a,b)))
  }
  bench("Integer", Rational(12345), Rational(67890))
  bench("Small", Rational(12345,67891), Rational(67890,12347))
  bench("Medium", Rational(Long.MaxValue,Int.MaxValue - 1), Rational(Long.MaxValue,Int.MaxValue - 3))
  bench("Large", Rational(Long.MaxValue) + Rational(1,3), Rational(Long.MaxValue) + Rational(1,5))
}

JDK7:
Rational comparison benchmark Integer LongRational(12345) LongRational(67890)
Benchmark comparison (in 5.370 s): compare vs fastCompare
Significantly different (p ~= 0)
  Time ratio:    0.59578   95% CI 0.59077 - 0.60079   (n=20)
    First     42.02 ns   95% CI 41.84 ns - 42.20 ns
    Second    25.03 ns   95% CI 24.85 ns - 25.21 ns
Rational comparison benchmark Small LongRational(12345/67891) LongRational(67890/12347)
Benchmark comparison (in 3.238 s): compare vs fastCompare
Significantly different (p ~= 0)
  Time ratio:    0.47562   95% CI 0.47171 - 0.47952   (n=20)
    First     52.40 ns   95% CI 52.10 ns - 52.70 ns
    Second    24.92 ns   95% CI 24.77 ns - 25.07 ns
Rational comparison benchmark Medium LongRational(1317624576693539401/306783378) LongRational(9223372036854775807/2147483644)
Benchmark comparison (in 4.055 s): compare vs fastCompare
Significantly different (p ~= 8.410e-13)
  Time ratio:    1.06257   95% CI 1.05021 - 1.07492   (n=20)
    First     248.1 ns   95% CI 246.0 ns - 250.2 ns
    Second    263.6 ns   95% CI 261.5 ns - 265.7 ns
Rational comparison benchmark Large BigRational(27670116110564327422/3) BigRational(46116860184273879036/5)
Benchmark comparison (in 4.252 s): compare vs fastCompare
Significantly different (p ~= 1.057e-04)
  Time ratio:    1.01971   95% CI 1.01046 - 1.02896   (n=20)
    First     266.2 ns   95% CI 264.4 ns - 267.9 ns
    Second    271.4 ns   95% CI 269.7 ns - 273.1 ns

JDK8:
Running spire.math.RationalCompareBench
Rational comparison benchmark Integer LongRational(12345) LongRational(67890)
Benchmark comparison (in 5.229 s): compare vs fastCompare
Significantly different (p ~= 0)
  Time ratio:    0.58039   95% CI 0.57313 - 0.58765   (n=20)
    First     42.98 ns   95% CI 42.71 ns - 43.25 ns
    Second    24.95 ns   95% CI 24.68 ns - 25.22 ns
Rational comparison benchmark Small LongRational(12345/67891) LongRational(67890/12347)
Benchmark comparison (in 3.301 s): compare vs fastCompare
Significantly different (p ~= 0)
  Time ratio:    0.44492   95% CI 0.44034 - 0.44950   (n=20)
    First     55.50 ns   95% CI 55.12 ns - 55.88 ns
    Second    24.69 ns   95% CI 24.50 ns - 24.88 ns
Rational comparison benchmark Medium LongRational(1317624576693539401/306783378) LongRational(9223372036854775807/2147483644)
Benchmark comparison (in 3.615 s): compare vs fastCompare
Significantly different (p ~= 0.0386)
  Time ratio:    1.03389   95% CI 1.00153 - 1.06624   (n=20)
    First     224.6 ns   95% CI 219.5 ns - 229.6 ns
    Second    232.2 ns   95% CI 227.1 ns - 237.2 ns
Rational comparison benchmark Large BigRational(27670116110564327422/3) BigRational(46116860184273879036/5)
Benchmark comparison (in 4.045 s): compare vs fastCompare
Not significantly different (p ~= 0.7716)
  Time ratio:    0.99760   95% CI 0.98114 - 1.01406   (n=20)
    First     251.9 ns   95% CI 249.0 ns - 254.9 ns
    Second    251.3 ns   95% CI 248.4 ns - 254.3 ns

I think this would be even better:
def fastCompare2(a:Rational, b:Rational) = (a, b) match {
  case (LongRational(an,ad), LongRational(bn, bd)) ⇒
    Checked.tryOrElse {
      java.lang.Long.compare(an * bd, bn * ad)
    } {
      a compare b
    }
  case _ ⇒ a compare b
}

Instead of calculating the sign of the difference, use java.lang.Long.compare. That allows a few more cases to be handled in the fast path without overflow. E.g.
(Long.MaxValue - Long.MinValue).signum // => overflow
java.lang.Long.compare(Long.MaxValue, Long.MinValue) // => no overflow

One thing to consider is that Spire still supports Java 6, so we'd probably prefer to avoid java.lang.Long.compare for now.
We can consider dropping this requirement but I think that should be a larger conversation.

I'd say let's do your initial version for now, with a note that if we drop Java 6 support we can update to java.lang.Long.compare (there are already lots of other places in the code where we'd benefit from that method).

Why not use spire.std.long.LongAlgebra.compare? That seems to be just as fast as java.lang.Long.compare. The only advantage of java.lang.Long.compare is that it might turn in an intrinisic at some point. But currently it does not seem to make a difference.

Sure, let's do that.

There is a tiny, almost unmeasureable performance drawback when using LongAlgebra.compare. So this should be switched to java.lang.Long.compare as soon as java 6 compatibility is dropped. Should I add a comment or todo?


License URL Ignored, Redirects to SPDX Instead of Custom URL

Description:
When using the Stoplight Elements API to render an OpenAPI specification, the license.url field is ignored, and instead, the system defaults to an SPDX URL format. Clicking on the license link redirects to https://spdx.org/licenses/undefined.html when no identifier is given, even though the url is provided. According to the OpenAPI spec, url and identifier are mutually exclusive, and I expect the url to be used when it is provided, instead of defaulting to an SPDX identifier.
Steps to Reproduce:

Create an OpenAPI specification that uses a License object with a url field:
{
  "openapi": "3.0.0",
  "info": {
    "title": "Sample API",
    "version": "1.0.0",
    "license": {
      "name": "NIST Software",
      "url": "https://www.nist.gov/open/copyright-fair-use-and-licensing-statements-srd-data-software-and-technical-series-publications"
    }
  }
}

Use Stoplight Elements API as described in Stoplight Elements Documentation to render the OpenAPI spec.

Click on the license link.

Expected Behavior:
The license link should direct to the provided url (https://www.nist.gov/open/copyright-fair-use-and-licensing-statements-srd-data-software-and-technical-series-publications), even when no identifier is provided.
Actual Behavior:
The license link incorrectly redirects to https://spdx.org/licenses/undefined.html, indicating that the url field is being ignored and the system is defaulting to an SPDX identifier even when no identifier is provided.
Additional Notes:

According to the OpenAPI specification, the identifier and url fields are mutually exclusive, so only one of them should be used. In this case, if the url is provided, it should be respected and used for the license link.
Currently, Stoplight Elements defaults to SPDX behavior even when no identifier is provided, leading to incorrect redirection to https://spdx.org/licenses/undefined.html.

Screenshot:

Environment:

HTML setup: Following Stoplight Elements Documentation
<script<EMAIL_ADDRESS><link rel="stylesheet"<EMAIL_ADDRESS>

Browser: Chrome - Version 128.0.6613.85 (Official Build) (arm64)

OS: macOS Sonoma 14.6.1

Please let me know if you need additional information.

@mnaumanali94 I've created PR #2724.


Integrate new-developed pruning API with old one.

Signed-off-by: YIYANGCAI<EMAIL_ADDRESS>Type of Change
Merge two pruning APIs to one.
API changed
Description
will be linked to PR#144

this title is not suitable as a commit message. you don't need mention merge things. you can mentioned new pruning algo or something else

Do we need this PR: https://github.com/intel/neural-compressor/pull/144

@wenhuach21 there is conflict to be solved. and I saw the neural_compressor/conf/config.py is modified? this will impact backward compatibility. you should only modify neural_compressor/config.py which is newly introduce for inc 2.0.


[Codelab Issue] Testing Codelab 5.3.9, Step 2 - Syntax error in AppNavigationTest.kt code snippet: "activityScenario.close()."

Describe the problem
The AppNavigationTest.kt code snippet users are asked to copy and paste contains syntax errors. Specifically, two of the calls to activityScenario.close() contain an extraneous period ("activityScenario.close().") The code is in taskDetailScreen_doubleUpButton() and taskDetailScreen_doubleBackButton()
In which lesson and step of the codelab can this issue be found?
5.3.9, Step 2
How to reproduce?
Copy and paste the code from the AppNavigationTest.kt snippet. Compilation will fail with "Expecting an element"
codelab: advanced-android-kotlin

Thanks, fixed in next release.


Adds print styles for major site features that aren't print applicable

Additions

Adds print styles for major site features that aren't print applicable.
Moves the logo on print so it is aligned correctly.
Adds missing topdoc EOF comments.

Testing

gulp build visit the homepage and go to File > Print and look at the preview. Should not include the mega menu, search, hero, social media icons, banner and footer buttons, or gaps for images that are background images.
Check /about-us/careers/application-process/ for the hidden breadcrumbs and secondary nav too.

Review

@jimmynotjim
@sebworks
@schaferjh

Screenshots

Todos

Heros in CF need print styles added to hide areas where background images appear.

Any idea why it might look like it's also getting small screen style?

Any idea why it might look like it's also getting small screen style?

Because of the width of a piece of paper (minus margin) and printing resolution I assume. 8" x 72dpi = 576px

Because of the width of a piece of paper (minus margin) and printing resolution I assume. 8" x 72dpi = 576px

Is that an assumption all printers will make? We're going to confuse people who go to print a page from their spacious desktop browser window and see everything reformatted on the printed page.
I'm fine going with this for now because in the current situation the mobile menu flyout makes printing almost un-usuable, but I don't think this can be the long term fix if it reformats all pages like this.

@anselmbradford how'd you get it to show correctly for you?

To be honest I haven't printed a page in a long time, so this would require some research, but the page size can be set with the @page rule, like:
@page {
  size: 17in 22in;
}

Which at 72dpi fit to 8.5 x 11 would print the page at 144dpi at 8.5 x 11 and look like:

However, I'm pretty sure setting that is not a best practice unless the printing environment is known and controlled. The resolution can be set on the printer or even on the display (72dpi or 96dpi), so a set value for the page size would not be guaranteed to come out as expected. Visit another responsive site like cnn.com and you'll see that the print preview is the mobile view as well. Do any of you have a printer where you can experiment with setting the resolution higher and seeing that you're getting a desktop version of the site?

Hmm, wonder if we can control the ppi vs the dpi. Pixels do not have to match dots when printing. I'll try playing with this tomorrow.

Mine looks similar to Ans's first screenshot and isn't too bad on the blog pages where the content is less graphics-based than the homepage.

Must be some odd setting on this machine. 👍 based on Kim's comment

Okay, I'll merge and we can investigate further if @schaferjh's stakeholder contacts aren't happy with the way it's printing on their printers.

👍


Does not count watch time and views

Hello,
It hasn't been counting watch time and views for a while now and it seems to be dropping. I think this might be due to your last update. There were no drops in the previous version 12.0.0. Can you do research on this subject?

Hi, view counts and watch time are controlled by the IFrame player, not my library. So no, the update is not causing the problem you're seeing.


Syntax highlighting

Need to add support for some sort of syntax highlighting or some such. Nothing fancy, basic stuff. Maybe even just a pre tag with monospace font will do.

Hmpf. Can be done via ckeditor by using the "Formatted" format - that wraps stuff in pre tags. Will probably move away at one time from ckeditor, so it's good for now.


[Bug] setting dubbo.application.metadata-type at config center does not take effect

Pre-check

[X] I am sure that all the content I provide is in English.

Search before asking

[X] I had searched in the issues and found no similar issues.

Apache Dubbo Component
Java SDK (apache/dubbo)
Dubbo Version
3.2.12
Steps to reproduce this issue
we want to change metdata store type of all our appliations to remote by setting dubbo.application.metadata-type(kebab-case) or dubbo.application.metadata_type(snake_case) at dubbo.properties on the config center (for mitigating the problems trigged by #14200).
but ConfigurationUtils#parseProperties will drop it because this property name just contains the string value type which is on the securityKey list.
What you expected to happen
setting metadataType by snake_case or kebab-case format on config center should not be prohibited.
or
checking property name is secure or not should not using contains judgement.
Anything else
No response
Are you willing to submit a pull request to fix on your own?

[X] Yes I am willing to submit a pull request on my own!

Code of Conduct

[X] I agree to follow this project's Code of Conduct

AbstractConfiguratorListener#genConfiguratorsFromRawRule might have same issue as URLParam#removeParameters using the same contains algorithm to remove security parameters:
if (EXTRA_PARAMS.containsKey(key)) {
   ...
   newExtraParams.remove(key);

ConfigurationUtils#parseProperties might judge whether property name is safe based on kebab-case comparison.


Update home.html

Changed contributors section to maintainers. But Diptanshu's name is not there. Please take a look at it :)

Kindly rebase and I will merge this. I'll add Diptanshu later I guess.

I'm sorry. Can you just elaborate what's rebase?

So between the time when you made your personal fork till the time when you submitted your PR some changes were made to the file home.html. Your branch still uses old code. More information about this can be found here under the contributors section.

Kindly refer the PR #220


[h2v] Add repush ttl config and filter to the H2V.

Description
This commit introduces two new config REPUSH_TTL_IN_HOURS_OVERRIDE and REPUSH_TTL_POLICY. They are used in conjunction to apply corresponding TTL logic to records. Note that as for now, we only support one REPUSH_TTL_POLICY so its value is hardcoded.
The TTL filter uses the chain of responsibility pattern so we can introduce more filters to the Mapper stage. TTL filter also comes with 3 policies w.r.t batch writes. The core implementation will be added in a separate commit.
How was this PR tested?
unit tests and integration tests
Does this PR introduce any user-facing changes?

[ ] No. You can skip the rest of this section.
[x] Yes. Make sure to explain your proposed changes and call out the behavior change.
Users now can specify the ttl time in hours in the repush job. When the config is specified, the filter will be present during H2V mapper stage. Currently, this filter doesn't do anything but allowing everything flow thru. Its implementation will be introduce in a different PR.

Thanks, @adamxchen. I've replied to your comments, please take a look.


[History][build][Emergency] App would be down when user selected the day has data

I tried on my phone. This can be fixed after deleting all records previously. Still don't figure it out why.


Postgres replication discrepancy after filesystem failure, choose correct dump to restore

Background
btrfs raid1 filesystem (with db replication on third ssd) is failing, node has been shutdown after disabling forwards and  making sure of no pending htlcs; waiting for SSD replacements to arrive; dump of main postgres instance and of replica are slightly different, which one to restore on new node?
This is the output of diff:
diff -u /replica/sqldump/replica.dump /replica/sqldump/main.dump
--- /replica/sqldump/replica.dump
+++ /replica/sqldump/main.dump
@@ -982092,7 +982092,7 @@
 -- Name: channeldb_kv_id_seq; Type: SEQUENCE SET; Schema: public; Owner: bitcoin
 --

-SELECT pg_catalog.setval('public.channeldb_kv_id_seq', 15758297, true);
+SELECT pg_catalog.setval('public.channeldb_kv_id_seq', 15758280, true);

 --
@@ -982106,7 +982106,7 @@
 -- Name: macaroondb_kv_id_seq; Type: SEQUENCE SET; Schema: public; Owner: bitcoin
 --

-SELECT pg_catalog.setval('public.macaroondb_kv_id_seq', 33, true);
+SELECT pg_catalog.setval('public.macaroondb_kv_id_seq', 3, true);

 --
@@ -982127,7 +982127,7 @@
 -- Name: walletdb_kv_id_seq; Type: SEQUENCE SET; Schema: public; Owner: bitcoin
 --

-SELECT pg_catalog.setval('public.walletdb_kv_id_seq', 20948, true);
+SELECT pg_catalog.setval('public.walletdb_kv_id_seq', 20919, true);

In the above, the DB replica seems to be ahead of main instance in regards of counters; to be noted, the main instance resided on the failing btrfs raid1 filesystem, while replicating instance mounted on /replica resides on a third ext4 ssd which shows no filesystem failures.
When restoring node on new btrfs raid, should I import dump from main instance, or replica instance (whith higher counters, hence apparently "more updated")?
Your environment

version of lnd 14.2
which operating system (uname -a on *Nix) raspios 64bit
version of btcd, bitcoind, or other backend - 22
any other relevant environment details //

Steps to reproduce
I wish you not to reproduce this, will give you bad headaches.
Expected behaviour
Both dumps are identical
Actual behaviour
Slight differences in dump.

Disabling forwards and making sure there aren't any HTLCs isn't enough to make sure there are no channel updates. Simple fee negotiations can cause a channel to be updated and the channel being breached on restore. You should always shut down lnd completely (or disable all channels manually) before taking a snapshot.
If the only diff between the two dumps is indeed only sequences, you might be okay in this specific case. Though extreme caution is advised here.

Out of curiosity, did you use synchronous replication with Postgres? If not, it still wouldn't explain why the replica is ahead though.
Needless to say, sync replication is critical for Lightning data.

Disabling forwards and making sure there aren't any HTLCs isn't enough to make sure there are no channel updates. Simple fee negotiations can cause a channel to be updated and the channel being breached on restore. You should always shut down lnd completely (or disable all channels manually) before taking a snapshot.
If the only diff between the two dumps is indeed only sequences, you might be okay in this specific case. Though extreme caution is advised here.

Does this mean that, even if no forwards happened, in case of a "fee mismatch" I would still trigger a force close on coming back online with an "old fee state"? In any case, yes, not especially knowledgeable about lnd DB logical structure, but I also would say that with only sequences being different, I shouldn't be at risk whatever version I restore, and especially not if I restore the newest

Out of curiosity, did you use synchronous replication with Postgres? If not, it still wouldn't explain why the replica is ahead though.
Needless to say, sync replication is critical for Lightning data.

it was streaming replication actually, so I should instead look into synchronous you suggest?

Does this mean that, even if no forwards happened, in case of a "fee mismatch" I would still trigger a force close on coming back online with an "old fee state"?

Yes and potential loss of funds because your node would publish an old state.

so I should instead look into synchronous you suggest?

Yes!

Also, pardon my flooding: no matter what is stored in the replica, I should prefer restoring the master in case streaming replication was used... now that I think about it though, the failure happened on the raid1 btrfs system where master resided, while the ext4 ssd where replica was stored didn't go corrupted.

My understanding is that, worst case scenario, in case old state is published while I go back online on LN, but not closing the channel, I would lose funds because of the swiping fees, not 100% of funds because of a justice transaction... am I wrong?

No, if your node force-closes with an old state, your counterparty has the revocation key for the time locked funds and can take your balance as well. lnd will do its best to not force close if it detects (is informed by the remove node) that there is a mismatch of the channel state. But you shouldn't rely on that alone, things can still go wrong.

it was streaming replication actually, so I should instead look into synchronous you suggest?

We definitely need to add this to the postgres doc in lnd. It is super important.

What's curious, is that in streaming mode, the replica should NOT be "newer" than the master, rather the opposite. Unless there is something about how sequences are stored that is not apparent to the eye, making them not really sequential.

I would indeed also expect that if things are out of sync, that the replica is behind. But if hardware is failing, I guess anything can happen?

ok, I just decided that I'll go with going online with the replica state after blockchain is synced, unless someone of you wants to convince me of the opposite

I just wonder if there is a more direct indicator of the version of the data available in postgres.

I just wonder if there is a more direct indicator of the version of the data available in postgres.

wouldn't think so, since the dumps only differ for those sequences... old disks are gone, so not able to verify with file timestamps

A colleague of mine came up with an explanation why the replica is ahead. Apparently sequence numbers are allocated ahead of time on the replica.
https://github.com/postgres/postgres/blob/00cb86e75d6dd13a8bc07f79c2cdbe20d96c2d92/src/backend/commands/sequence.c#L57

You should always shut down lnd completely (or disable all channels manually) before taking a snapshot.

Forgot to mention this: the very last "session" of the node, before I shut it down for good to restore the hardware, was:

boot node, have lnd start completely
run bos limit-forwarding --disable-forwards
wait for a while (at least 10 minutes) while checking with lncli listchannels | jq '.[][] | .pending_htlcs[] ' to confirm no pending htlc's were running
sudo poweroff while watching the connected monitor to verify nothing was up and everything could terminate gracefully

Considering this, would you say I am in the clear?

A colleague of mine came up with an explanation why the replica is ahead. Apparently sequence numbers are allocated ahead of time on the replica.
https://github.com/postgres/postgres/blob/00cb86e75d6dd13a8bc07f79c2cdbe20d96c2d92/src/backend/commands/sequence.c#L57

this means I should actually restore the dump of the main database, instead of the replica, you reckon?

this means I should actually restore the dump of the main database, instead of the replica, you reckon?

I saw that the difference in your sequence numbers is indeed < 32. If that is because of pre-allocation, the difference should be inconsequential and it shouldn't matter which copy your restore. But I am no expert on postgres internals.

To complete this thread, which I will be closing at the same time: my node was restored today from the main postgresql instance's dump, and no force closures happened; I have now synchronous replication in place.


support Laravel 5.5

Hey,
since the Service provider check for the laravel version, and till today it does not support v5.5, do you have any plan to do so?
thanks

Same problem now but with Laravel 5.6

It is not dead...


Add Loot Materials

Loot Materials
Etherscan link: https://etherscan.io/address/0xb71a6289b10236702b0514693a811f741f29955a
Website: https://loot-craft.com/
Twitter: https://twitter.com/craft_loot
Discord: https://discord.gg/jmNhdt6Zsb

Could you please resolve the conflict?

Could you please resolve the conflict?

@zhew2013 Done :)

LGTM!


core/apps: add iomap to _metadata to unify checking of file extension…

…s to filetype and fileset, reenable in sc-show and sc, and add infer to input/output core functions
Fixes cmdline apps to place -inputs into filesets and types
Adds a single place for all default filetypes and sets in _metadata.py (We can move it somewhere else if that works better).

@aolofsson I moved the code into utils and reset _metadata as per our discussion


Fixed misleading comment

It's the second time I try to update this file on my project thinking that it's outdated, but turns out it's was typo.
Replaced "Bootstrap 3" for "Bootstrap 4" in comments

Nevermind, noticed another PR with the same fix was closed.
Please do update it once and for all though.
Thanks,
TwinProduction

This is just a legacy distribution repo now - the source is available here which carries the fix.
I'll get 1.10.17 out soon which will carry the fix as well.


hibernate5.2-compatibility

Attempt to fix https://github.com/querydsl/querydsl/issues/1917 and
https://github.com/querydsl/querydsl/issues/2264

It was an attempt to see what it gives on CI. I'm not avare of all the implications for other projects than jpa...

Well, there's hibernate search, but also we'll need to clean up the poms.

Hi @Shredder121, any update on your PR? This one is green... without hibernate-search, which would require a complete rewrite I guess... How can we move forward with this? I'm still currently stuck upgrading to Spring boot 2 in my projects using querydsl. If nothing moves, I'll have to find something else than querydsl. Thanks for your update.

Need to update master with version updates, remove deprecated code (since new major bump), clean up poms, fix new deprecation warnings.
So far I've done 1, 3, and 4 a bit, but also need to clean up my stashes regarding checkstyle.
I went through the new checkstyle violations yesterday evening, I can stash it again and work on Querydsl 5 tonight.

Nice! Keep me posted, I'll leave this one open if you need some inspiration (?). Feel free to close it when you are done :)

Hi @Shredder121, where are you on the way to 5.0?

Ok, thanks for the update! :)

And you thanks for the poke! 👍

Hi @Shredder121 , sorry to put the pressure but do you have any ETA? :) :)

ETA no, but I should have a bit more time the coming week(s).
You are free to poke me more than once a week(since pre-weekend stuff), although the comments might get cluttered a bit :/

hi @Schredder121, any news ?

Working on a few branches at the same time, sorry.

I personally use Spring boot which gives me the hibernate dependency. (There is a ticket to upgrade to 5.3 bit this won't happen any time soon... https://github.com/spring-projects/spring-boot/issues/11725) Regarding your question, maybe @vladmihalcea has a clue?

Hello,
I built a modified 5.3.1.final version of hibernate-core in order to include last development on 5.1 compatibility  (https://hibernate.atlassian.net/browse/HHH-12651) (5.3.2 not yet released) .
Session::createQuery compatibility is restored but, now, I'm facing an exception on queries using parameters.
java.lang.IllegalArgumentException: Could not locate named parameter [1], expecting one of [] 	at org.hibernate.query.internal.ParameterMetadataImpl.getNamedParameterDescriptor(ParameterMetadataImpl.java:218) 	at org.hibernate.query.internal.ParameterMetadataImpl.getQueryParameter(ParameterMetadataImpl.java:187) 	at org.hibernate.query.internal.QueryParameterBindingsImpl.getBinding(QueryParameterBindingsImpl.java:188) 	at org.hibernate.query.internal.AbstractProducedQuery.setParameter(AbstractProducedQuery.java:494) 	at org.hibernate.query.internal.AbstractProducedQuery.setParameter(AbstractProducedQuery.java:107) 	at com.querydsl.jpa.hibernate.HibernateUtil.setValue(HibernateUtil.java:91) 	at com.querydsl.jpa.hibernate.HibernateUtil.setConstants(HibernateUtil.java:79) 	at com.querydsl.jpa.hibernate.AbstractHibernateQuery.createQuery(AbstractHibernateQuery.java:105) 	at com.querydsl.jpa.hibernate.AbstractHibernateQuery.createQuery(AbstractHibernateQuery.java:97) 	at com.querydsl.jpa.hibernate.AbstractHibernateQuery.fetch(AbstractHibernateQuery.java:174)
We make important use of query-dsl in our project, we appreciate this library and we highly appreciate a new compatible version :-) Thanks

@jpimag since nothing is moving, we are unfortunately planning to not use querydsl any more in our projects.

@jpimag I experienced the same problem. I have created a separate issue for it: https://github.com/querydsl/querydsl/issues/2326

@Shredder121
Maybe instead of Hibernate 5.2, we should focus on 5.3 compatibility.
This sounds as an easier task.
Hibernate 5.3 restored some compatibility.
On the other hand, it changed positional parameters support, which caused https://github.com/querydsl/querydsl/issues/2326
Could we please have querydsl 5 with Hibernate 5.3 support anytime soon?
Maybe the scope of querydsl 5 can be limited to make the release in the near future.
Currently querydsl prevents from using Spring 5, Spring Boot 2, Hibernate 5.2 and 5.3.

That indeed would be a good idea, I'll see when I can dedicate some time on an evening again.

Hi @Shredder121 any progress here

Querydsl is now compatible with hibernate 5.


Doc: Site Improvements

Change Summary

Related Issue(s)
Fixes #
Component(s) name
arista.avd.<role-name>
Proposed changes

How to test

Checklist
User Checklist

N/A

Repository Checklist

[x] My code has been rebased from devel before I start
[x] I have read the CONTRIBUTING document.
[x] My change requires a change to the documentation and documentation have been updated accordingly.
[x] I have updated molecule CI testing accordingly. (check the box if not applicable)

@JulioPDX can you please explain the purpose of the change in the PR description here?
is there other things to come?


Change IsNoteWorthy to boolean

isNoteWorthy field is being sent as a string change is to be sent as boolean

I want to work on this issue. please assign this to me


Add test case for station name of length 100

As that's the maximum length defined in the rules.

Let's add a test which has

three measurements for a station with 1 byte long name A
three measurements for a station with 1 byte long name B
three measurements for a station with 100 byte long name A
three measurements for a station with 100 byte long name B

This is to make sure the full range of name lengths is covered properly.


Update German translations

I also found one typo in an already existing message.

coverage: 59.664%. remained the same when pulling a9e6255274aff0275558f75f7baca1104af9b965 on der-lyse:german-translations into 2596ea1c52b2ebde3dffc9e871063c5a0718d4f0 on newsboat:master.

Thank you!


How would I use the framework for the $httpBackend?

This framework is great and all but it makes things a little darker.
I want to do similar thing like here:
myAppDev = angular.module('myAppDev', ['myApp', 'ngMockE2E']);
myAppDev.run(function($httpBackend) {
  phones = [{name: 'phone1'}, {name: 'phone2'}];

  // returns the current list of phones
  $httpBackend.whenGET('/phones').respond(phones);

  // adds a new phone to the phones array
  $httpBackend.whenPOST('/phones').respond(function(method, url, data) {
    var phone = angular.fromJson(data);
    phones.push(phone);
    return [200, phone, {}];
  });
  $httpBackend.whenGET(/^\/templates\//).passThrough();
  //...
});

How would I write the same thing, but using the framework (e2e tests protractor). Could someone give me the exact 1:1 matching so I could understand it better? This could be added to documentation.

https://www.npmjs.com/package/ng-mock-e2e

sorry this may sound super rule but I'm closing long standing issues and refactoring the codebase. If you run into this problem again feel free to open another issue


switch to cached root in variant binding

-added test to verify that refs like resolve.mypkg.root are correct in commands
-changed ResolvedContext.execute_rex_code() to be post-actions callback
Fixes #1065
This is an alternative fix to https://github.com/nerdvegas/rez/pull/1067 please see comment there.

Thanks for the fix !


migration from "trivy" to "trivy image" command

trivy command behaves the same as trivy image for backward compatibility. But it was deprecated in v0.8.0. It's been more than a year and this option will be removed in v0.23.0 which is supposed to be released at the end of January 2022. Please migrate to trivy image.
https://github.com/aquasecurity/trivy/discussions/1515

Any chance of getting this PR merged in?
In its current state this Github action is not usable at all.

When can we expect to get this PR merged.
This action is unusable as of now.


removing pyenv from builder

https://hub.docker.com/r/ilianaw/crowbar-builder/builds/bkezneuujgma9j4iwtyhyme/


Implement Noise Detection apis

We're not currently actively supporting noise detection, although we will re-open on request.


add testing with pytest

convert testing to use pytest, add tests to reach code coverage of 80%+

pytests added, 98% coverage


Make the tokenizer able to be run separately

Do this while minimally involving parser for state transitions between tokenizing modes.

I am very much interested in this as well. I am using the tree builder with a custom (MediaWiki) tokenizer in a prototype I am working on currently. For now I modified the parser to take a tokenizer as an argument in parse(), but this is just a quick hack that ignores tokenizer modes completely.
Right now I am mostly working on the tokenizer, but might be able to put some effort into the interface later.

Oh, sweet. I'm integrating the latest draft's tokenizer changes, which flattens the modes out into separate states. That should help move this along.


Camera Height/Y-Pos sometimes not updating correctly on Situation Change

Hi,
Foreword - I love the work you've done with this Addon. It's an instant must-have, once tried : )
As the title suggests. The camera position seems to get stuck / fail to update on Situation change, often.
A prime example, I suppose, would be Druid shifting, into Cat/flight form. The camera Y pos can end up being too high in Cat, and too low in base form, etc. (getting stuck in prev coords)
Is there a particular reason you are not calling RefreshCamera() within the DynamicCam:ChangeSituation() func?. You would have to inherit a PlayerModel frame from UIParent, I think. I'm not sure what the implications are, performance-wise.
Thanks again for the work.
#edit: I suspect this might be a Blizzard camera issue, btw. So this might be down as enhancement, rather than addon-specific bug.

Hi, and thanks for your kind words!
First, let me make sure I understand what you mean by "Y position". Is it the camera zoom or the pitch?
In your edit you already wrote that this might be due to how the game automatically changes the camera based on player model. What you could try is to compensate this somehow with a DynamicCam situation. If you can tell me how to reproduce that a DynamicCam situation change does not apply a cvar change as expected, please let me know.
The RefreshCamera() function, by the way, is only for PlayerModel frames (as you correctly wrote). So it will only affect the camera within this model frame, but not the game world camera.
PS: If you like DynamicCam now, just wait until I have finished version 2.0. It's so much better!! :-)

Hi, thanks for the response.
You can probably close this. There is nothing specially wrong with the situations. From my testing (1 person, at that) they change as expected from the specified event/trigger. The issue is a blizzard one. It also will probably go unnoticed by most. It is only really prevalent to Druids shifting. (it will also be the same for anyone, using Toys or what-not that change the player model)
As you'll already know, the camera height is not directly accessible to us, externally; via cvar or script api but it generally updates with their predefined params on a model change / mount, etc.
What is not immediately apparent is they don't use the same method for druid shifting, they simply change the cam trigger for a character /sit (I suppose they thought shifting happens so frequently it would be easier on response time - dunno)
This is what can fail to update correctly when shifting for example - from Cat directly to Flight form, while in 'ground mode'.
Anyways. I was looking for a way to incorporate a proper refresh of the camera of the custom situation for Druid shifts, to correctly set the target cam height. It seems to work by enabling a faux head tracking on the Shift situation (with the head tracker strength at 1, but everything else turned to min - so that it is effectively off, but 'enabled'. It appears to force the retest on the cam height.
ended up being a long one, sorry.
Thanks again for the addon.

Hey, glad you found a work around for this issue (that is not caused by DynamicCam). Thanks for your descriptions anyway!


Add tests for dummy requests (follow-up on #946)

#946 requires tests.
Possibly using @override_settings()

closing as the code this relates to was for the old style (pre Django 1.10 MIDDLEWARE_CLASSES setting).
This has since been deprecated https://docs.djangoproject.com/en/dev/releases/1.10/#new-style-middleware and Wagtail code no longer has this code anywhere.


fix: Enhance release workflow and setup script reliability

Purpose
This PR improves two critical components of our project:

The release.yml workflow that handles our automated release process
The setup.sh script that manages our development environment

Understanding Key Components
setup.sh
The setup.sh script is our primary setup and development tool. It handles:

Environment Setup

Creates and configures Python virtual environment
Installs required dependencies
Sets up development tools

Framework Configuration

Configures CrewAI and AutoGen frameworks
Sets up API keys and endpoints

Testing Environment
# Run full setup with tests
./setup.sh --all --cicd

# Run specific framework setup
./setup.sh --framework crewai
./setup.sh --framework autogen

Key Options

--all: Install all dependencies
--cicd: Run in CI/CD mode (non-interactive)
--framework: Specify framework (crewai/autogen)
--help: Show all available options

release.yml
The release.yml workflow handles our release process and ensures synchronization between forks and the upstream repository.

Purpose

Automates release creation
Ensures test coverage
Synchronizes tags between repositories
Maintains version consistency

Key Features

Multi-OS testing (Ubuntu 22.04 and 24.04)
Framework-specific testing
API rate limiting protection
Secure token handling

Workflow Steps
# Trigger workflow
gh workflow run release.yml -f tag=v2.0.10 -f fork_owner=yourusername

Testing Process

Basic functionality tests
Framework-specific features
Core functionality
Agent generation
Custom tools integration

I did have issues on determining how to test praison code in the end too end testing


[Venue Detail] Should have venue and hotel(s) data

Name & Address of Venue should be on the map & as text
Ensure the info can be easily cut/copy pasted

I am closing this issue, as it appears that the careful work of the PyCon 2014 staff did lead to attendees being able to successfully find the venue!


Configure CI

Github Actions
Issue Templates

I had problems with getting shiftshader to work correctly. It took me some research on ruinning Vulkan applications without a display and multiple reattempts (27 to be precise) but I have managed to resolve it. It was caused by shiftshader shared objects being incorrectly copied via SCP. Afterwards I have managed to fully configure Python & CMake C++ builds with Vulkan API, pybind11, GoogleTest and other tools. Now they are successfully running on GitHub-provided machines.


BTree Index Partial Loading with Fiber Cache

What changes were proposed in this pull request?
BTree Index Partial Loading with Fiber Cache
How was this patch tested?
Unit Test

Thanks @chenghao-intel

Unit test is WIP, I was thinking about uploading another PR for test. and I'll add back the removed tests
Memory do need some changes. But I prefer a bit more discussion.

Yes, let's leave the memory things for the further PR(s), most likely we need to use(integrated into) the Spark existing memory management mechanism.


"permanents" wrongly used in prereq

Describe the Problem
The prereq of a combo display "other permanents" without checking if the previously named cards are actual permanents.
Steps to Reproduce
https://commanderspellbook.com/combo/28895/

@ldeluigi I don't understand what is needed here.  Could there please be more specifics on what is needing to be shown?

Hit the Mother Lode is not a permanent so "All other permanents" should instead say "all other cards" I think

So should this be a static change to just "All permanents" or should there be some check of the cards?

Ideally, if any aforementioned card is a permanent it should say "all other" otherwise "all permanents" but this means to refactor the whole requirements generator to take into account card type lines taken from the card dto


[squid:S1149] Synchronized classes Vector, Hashtable, Stack and StringBuffer should not be used

This pull request is focused on resolving occurrences of Sonar rule
squid:S1149 - “Synchronized classes Vector, Hashtable, Stack and StringBuffer should not be used ”.
You can find more information about the issue here:
https://dev.eclipse.org/sonar/rules/show/squid:S1149
Please let me know if you have any questions.
Ayman Abdelghany.

I should not have merged this one because it changes source files used for testing the parser. You should configure your tool to consider only src/main/java and src/test/java


Tests

Right now, there are only tests for the Step enumerations. Tests need to be added for all of the structures and impls in the buildbot module.

I added very basic tests with PR #91 but more work needs to be done.

I think these tests are good enough, now. Unit tests are in place for all the structs that can be tested.


Can i change the length of the lines? there are too short so the graph is not clear

I don't think you can change the length, but you can change the distance at wich the child nodes are placed with depthFactor

Apologies for the delay in response here. I wasn't able to work on open source for most of 2020 for both professional and personal reasons, but I'm currently working through the open issue backlog for this library now that v2 has been released.
Thank you for helping out here already @lluistfc 🙏
You can adjust the distance between:

different levels/depths of the tree by using the depthFactor prop.
sibling and/or non-sibling nodes at the same depth by using the separation prop.


BrokenPipeError when using more than one job

When trying to run dfs on a fairly large entityset, whenever n_jobs is more than 1, I receive the following error:
"BrokenPipeError: [Errno 32] Broken pipe"
I'm running Red Hat Enterprise Linux Server release 7.3. My machine has 20 cores and 64 total GB of memory. I'm not sure if the issue is with my hardware or with featuretools.
The complete traceback is below:
tornado.application - ERROR - Multiple exceptions in yield list
Traceback (most recent call last):
  File "/home/wjk68/.local/lib/python3.5/site-packages/tornado/gen.py", line 849, in callback
    result_list.append(f.result())
  File "/usr/local/intel-17/openmpi-2_0_1/python/3.5.1/lib/python3.5/asyncio/futures.py", line 274, in result
    raise self._exception
  File "/home/wjk68/.local/lib/python3.5/site-packages/tornado/gen.py", line 1107, in run
    yielded = self.gen.throw(*exc_info)
  File "/home/wjk68/.local/lib/python3.5/site-packages/distributed/deploy/local.py", line 203, in _start_worker
    yield w._start()
  File "/home/wjk68/.local/lib/python3.5/site-packages/tornado/gen.py", line 1099, in run
    value = future.result()
  File "/usr/local/intel-17/openmpi-2_0_1/python/3.5.1/lib/python3.5/asyncio/futures.py", line 274, in result
    raise self._exception
  File "/home/wjk68/.local/lib/python3.5/site-packages/tornado/gen.py", line 1107, in run
    yielded = self.gen.throw(*exc_info)
  File "/home/wjk68/.local/lib/python3.5/site-packages/distributed/nanny.py", line 156, in _start
    response = yield self.instantiate()
  File "/home/wjk68/.local/lib/python3.5/site-packages/tornado/gen.py", line 1099, in run
    value = future.result()
  File "/usr/local/intel-17/openmpi-2_0_1/python/3.5.1/lib/python3.5/asyncio/futures.py", line 274, in result
    raise self._exception
  File "/home/wjk68/.local/lib/python3.5/site-packages/tornado/gen.py", line 1107, in run
    yielded = self.gen.throw(*exc_info)
  File "/home/wjk68/.local/lib/python3.5/site-packages/distributed/nanny.py", line 224, in instantiate
    self.process.start()
  File "/home/wjk68/.local/lib/python3.5/site-packages/tornado/gen.py", line 1099, in run
    value = future.result()
  File "/usr/local/intel-17/openmpi-2_0_1/python/3.5.1/lib/python3.5/asyncio/futures.py", line 274, in result
    raise self._exception
  File "/home/wjk68/.local/lib/python3.5/site-packages/tornado/gen.py", line 315, in wrapper
    yielded = next(result)
  File "/home/wjk68/.local/lib/python3.5/site-packages/distributed/nanny.py", line 347, in start
    self.init_result_q = init_q = mp_context.Queue()
  File "/usr/local/intel-17/openmpi-2_0_1/python/3.5.1/lib/python3.5/multiprocessing/context.py", line 101, in Queue
    return Queue(maxsize, ctx=self.get_context())
  File "/usr/local/intel-17/openmpi-2_0_1/python/3.5.1/lib/python3.5/multiprocessing/queues.py", line 42, in __init__
    self._rlock = ctx.Lock()
  File "/usr/local/intel-17/openmpi-2_0_1/python/3.5.1/lib/python3.5/multiprocessing/context.py", line 66, in Lock
    return Lock(ctx=self.get_context())
  File "/usr/local/intel-17/openmpi-2_0_1/python/3.5.1/lib/python3.5/multiprocessing/synchronize.py", line 163, in __init__
    SemLock.__init__(self, SEMAPHORE, 1, 1, ctx=ctx)
  File "/usr/local/intel-17/openmpi-2_0_1/python/3.5.1/lib/python3.5/multiprocessing/synchronize.py", line 81, in __init__
    register(self._semlock.name)
  File "/usr/local/intel-17/openmpi-2_0_1/python/3.5.1/lib/python3.5/multiprocessing/semaphore_tracker.py", line 69, in register
    self._send('REGISTER', name)
  File "/usr/local/intel-17/openmpi-2_0_1/python/3.5.1/lib/python3.5/multiprocessing/semaphore_tracker.py", line 82, in _send
    nbytes = os.write(self._fd, msg)
BrokenPipeError: [Errno 32] Broken pipe
Traceback (most recent call last):
  File "/usr/local/intel-17/openmpi-2_0_1/python/3.5.1/lib/python3.5/multiprocessing/forkserver.py", line 184, in main
    _serve_one(s, listener, alive_r, handler)
  File "/usr/local/intel-17/openmpi-2_0_1/python/3.5.1/lib/python3.5/multiprocessing/forkserver.py", line 218, in _serve_one
    code = spawn._main(child_r)
  File "/usr/local/intel-17/openmpi-2_0_1/python/3.5.1/lib/python3.5/multiprocessing/spawn.py", line 115, in _main
    prepare(preparation_data)
  File "/usr/local/intel-17/openmpi-2_0_1/python/3.5.1/lib/python3.5/multiprocessing/spawn.py", line 226, in prepare
    _fixup_main_from_path(data['init_main_from_path'])
  File "/usr/local/intel-17/openmpi-2_0_1/python/3.5.1/lib/python3.5/multiprocessing/spawn.py", line 278, in _fixup_main_from_path
    run_name="__mp_main__")
  File "/usr/local/intel-17/openmpi-2_0_1/python/3.5.1/lib/python3.5/runpy.py", line 240, in run_path
    pkg_name=pkg_name, script_name=fname)
  File "/usr/local/intel-17/openmpi-2_0_1/python/3.5.1/lib/python3.5/runpy.py", line 96, in _run_module_code
    mod_name, mod_spec, pkg_name, script_name)
  File "/usr/local/intel-17/openmpi-2_0_1/python/3.5.1/lib/python3.5/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/mnt/projects/CSE_MSE_RXF131/hpc-members/wjk68/git/modeling/scripts/featuretools_home_credit_advanced.py", line 237, in <module>
    chunk_size = 1000)
  File "/home/wjk68/.local/lib/python3.5/site-packages/featuretools/synthesis/dfs.py", line 213, in dfs
    verbose=verbose)
  File "/home/wjk68/.local/lib/python3.5/site-packages/featuretools/computational_backends/calculate_feature_matrix.py", line 239, in calculate_feature_matrix
    dask_kwargs=dask_kwargs or {})
  File "/home/wjk68/.local/lib/python3.5/site-packages/featuretools/computational_backends/calculate_feature_matrix.py", line 536, in parallel_calculate_chunks
    dask_kwargs=dask_kwargs)
  File "/home/wjk68/.local/lib/python3.5/site-packages/featuretools/computational_backends/utils.py", line 215, in create_client_and_cluster
    **dask_kwargs)
  File "/home/wjk68/.local/lib/python3.5/site-packages/distributed/deploy/local.py", line 136, in __init__
    self.start(ip=ip, n_workers=n_workers)
  File "/home/wjk68/.local/lib/python3.5/site-packages/distributed/deploy/local.py", line 166, in start
    self.sync(self._start, **kwargs)
  File "/home/wjk68/.local/lib/python3.5/site-packages/distributed/deploy/local.py", line 159, in sync
    return sync(self.loop, func, *args, **kwargs)
  File "/home/wjk68/.local/lib/python3.5/site-packages/distributed/utils.py", line 275, in sync
    six.reraise(*error[0])
  File "/home/wjk68/.local/lib/python3.5/site-packages/six.py", line 693, in reraise
    raise value
  File "/home/wjk68/.local/lib/python3.5/site-packages/distributed/utils.py", line 260, in f
    result[0] = yield make_coro()
  File "/home/wjk68/.local/lib/python3.5/site-packages/tornado/gen.py", line 1099, in run
    value = future.result()
  File "/usr/local/intel-17/openmpi-2_0_1/python/3.5.1/lib/python3.5/asyncio/futures.py", line 274, in result
    raise self._exception
  File "/home/wjk68/.local/lib/python3.5/site-packages/tornado/gen.py", line 1107, in run
    yielded = self.gen.throw(*exc_info)
  File "/home/wjk68/.local/lib/python3.5/site-packages/distributed/deploy/local.py", line 186, in _start
    yield [self._start_worker(**self.worker_kwargs) for i in range(n_workers)]
  File "/home/wjk68/.local/lib/python3.5/site-packages/tornado/gen.py", line 1099, in run
    value = future.result()
  File "/usr/local/intel-17/openmpi-2_0_1/python/3.5.1/lib/python3.5/asyncio/futures.py", line 274, in result
    raise self._exception
  File "/home/wjk68/.local/lib/python3.5/site-packages/tornado/gen.py", line 849, in callback
    result_list.append(f.result())
  File "/usr/local/intel-17/openmpi-2_0_1/python/3.5.1/lib/python3.5/asyncio/futures.py", line 274, in result
    raise self._exception
  File "/home/wjk68/.local/lib/python3.5/site-packages/tornado/gen.py", line 1107, in run
    yielded = self.gen.throw(*exc_info)
  File "/home/wjk68/.local/lib/python3.5/site-packages/distributed/deploy/local.py", line 203, in _start_worker
    yield w._start()
  File "/home/wjk68/.local/lib/python3.5/site-packages/tornado/gen.py", line 1099, in run
    value = future.result()
  File "/usr/local/intel-17/openmpi-2_0_1/python/3.5.1/lib/python3.5/asyncio/futures.py", line 274, in result
    raise self._exception
  File "/home/wjk68/.local/lib/python3.5/site-packages/tornado/gen.py", line 1107, in run
    yielded = self.gen.throw(*exc_info)
  File "/home/wjk68/.local/lib/python3.5/site-packages/distributed/nanny.py", line 156, in _start
    response = yield self.instantiate()
  File "/home/wjk68/.local/lib/python3.5/site-packages/tornado/gen.py", line 1099, in run
    value = future.result()
  File "/usr/local/intel-17/openmpi-2_0_1/python/3.5.1/lib/python3.5/asyncio/futures.py", line 274, in result
    raise self._exception
  File "/home/wjk68/.local/lib/python3.5/site-packages/tornado/gen.py", line 1107, in run
    yielded = self.gen.throw(*exc_info)
  File "/home/wjk68/.local/lib/python3.5/site-packages/distributed/nanny.py", line 224, in instantiate
    self.process.start()
  File "/home/wjk68/.local/lib/python3.5/site-packages/tornado/gen.py", line 1099, in run
    value = future.result()
  File "/usr/local/intel-17/openmpi-2_0_1/python/3.5.1/lib/python3.5/asyncio/futures.py", line 274, in result
    raise self._exception
  File "/home/wjk68/.local/lib/python3.5/site-packages/tornado/gen.py", line 315, in wrapper
    yielded = next(result)
  File "/home/wjk68/.local/lib/python3.5/site-packages/distributed/nanny.py", line 347, in start
    self.init_result_q = init_q = mp_context.Queue()
  File "/usr/local/intel-17/openmpi-2_0_1/python/3.5.1/lib/python3.5/multiprocessing/context.py", line 101, in Queue
    return Queue(maxsize, ctx=self.get_context())
  File "/usr/local/intel-17/openmpi-2_0_1/python/3.5.1/lib/python3.5/multiprocessing/queues.py", line 42, in __init__
    self._rlock = ctx.Lock()
  File "/usr/local/intel-17/openmpi-2_0_1/python/3.5.1/lib/python3.5/multiprocessing/context.py", line 66, in Lock
    return Lock(ctx=self.get_context())
  File "/usr/local/intel-17/openmpi-2_0_1/python/3.5.1/lib/python3.5/multiprocessing/synchronize.py", line 163, in __init__
    SemLock.__init__(self, SEMAPHORE, 1, 1, ctx=ctx)
  File "/usr/local/intel-17/openmpi-2_0_1/python/3.5.1/lib/python3.5/multiprocessing/synchronize.py", line 81, in __init__
    register(self._semlock.name)
  File "/usr/local/intel-17/openmpi-2_0_1/python/3.5.1/lib/python3.5/multiprocessing/semaphore_tracker.py", line 69, in register
    self._send('REGISTER', name)
  File "/usr/local/intel-17/openmpi-2_0_1/python/3.5.1/lib/python3.5/multiprocessing/semaphore_tracker.py", line 82, in _send
    nbytes = os.write(self._fd, msg)
BrokenPipeError: [Errno 32] Broken pipe

Sorry to leave you with such a mess! I can provide more system info if needed.

Thanks, we'll look into this and report back.

Hi Will,
Could you provide a list of installed python packages in the environment you are using (pip freeze)?  I'm also curious when during the computation this error occurs.  Could you provide output up until the error occurs as well?

Before the error occurs, the only output is Built 3595 features (or however many features I'm trying to create). The progress bar never shows up.
I did notice that when saving the EntitySet as a pickle file, it is over 5 GB. Each core on the machine I'm using has ~ 3 GB of RAM, so could this be the issue? If I understand correctly, for parallelization, the entire entityset is copied to each core? The problem might be that the individual cores do not have enough memory to hold all the data. This is just speculation but I can try with a smaller dataset and see if the problem persists.

Yes, not having enough memory per core could be causing this issue.  You could try lowering the number of cores used and increasing the memory available to each worker.  The web interface would probably help you figure how much memory each worker needs.  You would need to install bokeh and add 'diagnostics_port' as an entry in the dask_kwargs dictionary.  To set custom memory limits for the workers, add a memory_limit entry to dask_kwargs.  You could try something like this:
ft.calculate_feature_matrix(
    ...,
    n_jobs=6,
    dask_kwargs={'diagnostics_port': 8787, 'memory_limit': 10e9}
)

Changing the number of jobs from 16 to 2 worked. I'm willing to say this was completely a system issue and not a featuretools bug. It might be helpful though to have some indication if a dfs call will consume too much memory. Is it possible to check the size of the entityset (using sys.getsizeof), the available memory resources, and then provide a warning if the resources will be exceeded?


Make split unbatched

Remove BatchSplitRequest and BatchSplitResponse and add SplitResponse. https://github.com/pingcap-incubator/tinykv/blob/master/proto/proto/raft_cmdpb.proto#L86.
Then make OnReadySplitRegion and ExecBatchSplit into an unbatched manner(only one split key).

Actually, I didn't get your point. what is OnReadyBatchSplit and ExecBatchSplit? Could you explain it ?

@Connor1996

@fengzixu Sorry, didn't explain well. Please search them in the code

@Connor1996 I see. Let met handle it.


Scratch ui takes a long time to load on scratches with very large contexts

Reported by @EpochFlame on Firefox, but I've noticed it too on Chrome as well.
I don't think this is purely a limitation of network speed, because this didn't used to manifest like this
example scratch: https://decomp.me/scratch/xSD1k

The request it's waiting on is the scratch api call, but there's only 640 kb of data to send and it takes a long time to recieve it.

During the waiting period, I have a window that looks like this (no loading bar, no indication of loading, a very long delay before anything appears on screen)

worth noting it also does the above on iphone safari

Looks like this issue is in the ServiceWorker; I thought I removed it but I guess I failed
Likely cause of #595 too


Add Sentry for Error tracking

This adds sentry and wires it up to Resque
so that errors get tracked.
I also reopened the Raven::Client to add
logging when we aren't sending the errors
so we can see them happening in development.

Looks good.
So if I had a bunch of stuff in my development log, I'd maybe grep the log for "Event" to find the Raven output? Wonder if a different word like "Error" would be better?

@croaky Yeah, honestly the logs are super quiet though so finding the error isn't likely to be a problem. There is content output by raven that you could grep for as well. See:

That being said, I expanded on it to be a bit more clear in https://github.com/thoughtbot/hound-swift/commit/beb214ba8629a8db89b3e525b521b129e63f76b5


Update expressroute-vpn-support.md

Updated to include portal option

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

@halkazwini,
Can you review the proposed changes?
IMPORTANT: When the changes are ready for publication, add a #sign-off comment to signal that the PR is ready for the review team to merge.
#label:"aq-pr-triaged"
@MicrosoftDocs/public-repo-pr-review-team

Hi @MGodfrey50,
Thank you for the suggestion. I rephrased the paragraph to include links to portal, CLI and PS (I believe it'll be published in the morning). In the next few weeks, I will work on updating Route Server docs, so I will most probably move the instructions on branch-to-branch from the Quickstarts to ExpressRoute and VPN article.

#please-close


Contributors

@all-contributors please add @tconley  for code

@all-contributors please add @developingidea for code

@all-contributors please add @mrkrause for content

@all-contributors please add @sahuguet for code

@all-contributors please add @tconley for code

@all-contributors please add @anakratis for code

@all-contributors please add @verata-veritatis for code

@all-contributors please add @spencermasaki for code

@all-contributors please add @sage-t for code

@all-contributors please add @kant  for doc

@all-contributors please add @kant for doc

@all-contributors please add @skullface for doc


/Catalog and /Pages in the content of generated PDF

Hi!
First of all, thank you for this lib, really helped me!
I have a question though...
I've noticed that the content of generated PDF does not have /Catalog and /Pages objects in the beginning of the file, like in many PDFs we see.
Is there an option to generate these objects?
Thank you in advance!

Found the answer already!
I realize that using useObjectStreams: false /Catalog, /Pages and xref are generated.
pdfDoc.save({
    useObjectStreams: false
})


Swift long time to compile json in code

Declare a json dictionary in code, Swift takes very long time to compile

https://spin.atomicobject.com/2016/04/26/swift-long-compile-time/


Issue#44-Add at least 1 additional feature

Here are some feature suggestions:

Add Sort or Search Functionality, e.g., search for all songs from a particular artist or with an
average rating above a certain threshold.
Add Playlists. Add functionality for users to create custom lists, e.g., similar to playlists on Spotify.
Add Statistics. Add lists with top rated songs, average song ratings, number of songs per artist,
etc.
Add Tooltips or React notifications (https://www.npmjs.com/package/react-notifications), e.g.,
in case of duplicates.
Add Functionality for Actually Playing Songs. Please only use royalty-free music, e.g., from
https://cchound.com/. Big Feature for those that get going when the going gets tough :)
Add Functionality for Commenting. For example, it may be possible to allow users to add
comment on the songs and other users would be able to react (vote/disagree) with existing
comments. Note, it would not be sufficient to just add a comment field to a song.

THE ACTUAL IMPLEMENTED NEW FEATURE
Displays various statistics:
Username.
Top-rated song and artist.
Total number of songs.
Top-rated genre.
Total number of user ratings.
Render Method:


Nemo launcher dockerfile

Issue #, if available: N/A
Description of changes: nemo-launcher: updated the way to build container image for AWS.
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

Is the PR still current?

yes, it's based on the GA version of nemo container.

@perifaws, @sean-smith: ready for review. All changes tested to work.

Let's squash the commits, it's only a few changes and 11 commits. Good to go otherwise.


help() function won't work

Prerequisites
The issue tracker is used to report bugs and request new features, NOT to ask questions.
Questions should be posted to the users mailing list which can be accessed at
https://ironpython.groups.io/g/users.

[x] Are you running the latest version? yes, it's .net core 3.1 runing netcoreapp3.1_ipy
[x] Are you reporting to the correct repository? yes
[x] Did you perform a cursory search? yes

Description
[Description of the bug or feature]
help(built-in type) and it raised an exception ( IOError)
Steps to Reproduce

System.Collections.ArrayList
<type 'ArrayList'>
help(System.Collections.ArrayList)
Traceback (most recent call last):
File "", line 1, in
File "/home/chengs/IronPython.2.7.10/Lib/site.py", line 450, in call
File "/home/chengs/IronPython.2.7.10/Lib/pydoc.py", line 1796, in call
File "/home/chengs/IronPython.2.7.10/Lib/pydoc.py", line 1834, in help
File "/home/chengs/IronPython.2.7.10/Lib/pydoc.py", line 1579, in doc
File "/home/chengs/IronPython.2.7.10/Lib/pydoc.py", line 1375, in pager
File "/home/chengs/IronPython.2.7.10/Lib/pydoc.py", line 1384, in getpager
IOError: [Errno 2] Could not load file or assembly 'Mono.Posix.NETStandard, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. The system cannot find the file specified.

System.Collections.ArrayList.doc
'ArrayList()\nArrayList(capacity: int)\nArrayList(c: ICollection)\n'

Expected behavior: [What you expected to happen]
Actual behavior: [What actually happened]
Versions
You can get this information from executing ipy -V.
IronPython 2.7.10 (<IP_ADDRESS>0)
[.NETCoreApp,Version=v3.1 on .NET Core 3.1.3 (64-bit)]

It looks like the Mono.Posix.NETStandard DLLs are not included in the zip file. Related to https://github.com/IronLanguages/ironpython2/pull/465
As a workaround you can download the nuget package linked above, unzip and place the Mono.Posix.NETStandard.dll for your runtime in the ipy folder.

it worked after i place a .netstandard 2.0 version of this dll, but it idle a lot when use q to quit help() description doc.

exception. System.PlatformNotSupportedException: Thread abort is not supported on this platform.
at System.Threading.Thread.Abort(Object stateInfo)
at Microsoft.Scripting.Hosting.Shell.BasicConsole.<.ctor>b__24_0(Object sender, ConsoleCancelEventArgs e)
at Microsoft.Scripting.Hosting.Shell.BasicConsole.<.ctor>b__24_1(Object sender, ConsoleCancelEventArgs e)
at System.Console.HandleBreakEvent(ConsoleSpecialKey controlKey)
at System.ConsolePal.ControlCHandlerRegistrar.HandleBreakEvent(Object state)
at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location where exception was thrown ---
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart(Object obj)
^C^CAborted (core dumped)

Seems to be some sort of deadlock when calling Console.CursorTop. Might be the same issue described in https://github.com/dotnet/runtime/issues/34239