Submachine terminate event should be actioned in outer state

In the UML standard, when an inner state terminates, the event that caused it is processed in the containing state.
This allows the containing state to transition correctly to different states depending on the exit event of the inner state.
This allows inner states to be used as "subroutines" that produce an outcome.
At the moment, in SML this does not happen. The makes it impractical to write a state machine that uses inner states that control their own lifetime.
This requires that exit events are propagated outward in the state machine and will require that the execution context for an inner state transition also includes all outer contexts as far as the state machine itself.
This has the added benefit that external systems (such as I/O) can process events on an inner state (for which they might have been defined) and have the result correctly affect the outer states if this causes an exit of the I/O state.

happy to help with the coding. I think this is a great project. MSM is outdated and difficult to integrate with asio etc.

Not that I doubt what you are saying but can you point me to the text in the UML 2.5 specification where this is defined?
I assume it must be somewhere around paragraph <IP_ADDRESS>.6 and/or <IP_ADDRESS> but I cannot find this stated (explicitly).
As a side-node, I think a terminate state (X) in Boost.SML actually relates to an exitPoint in the UML 2.5 specification (and not to a terminate state).

Thanks for replying. I want to say, I really like the way you have
structured the SML - stateless states and injectable dependencies are
certainly the way to go IMHO.
On 28 July 2017 at 12:59, Deniz Bahadir<EMAIL_ADDRESS>wrote:

Not that I doubt what you are saying but can you point me to the text in
the UML 2.5 specification http://www.omg.org/spec/UML/2.5/ where this
is defined?

Might be quicker and easier to refer you to the note about this in the MSM
docs:
Important note 3: UML states that for the exit point, the same event must
be used in both transitions. MSM relaxes this rule and only wants the event
on the inside transition to be convertible to the one of the outside
transition. In our case, event6 is convertible from event5.

I assume it must be somewhere around paragraph <IP_ADDRESS>.6 and/or
<IP_ADDRESS> but I cannot find this stated (explicitly).
As a side-node, I think a terminate state (X) in Boost.SML actually
relates to an exitPoint in the UML 2.5 specification (and not to a terminate
state).

That makes sense. You want the X of a substate to be an exitPoint. You
also want the event that cause the transition to the exitPoint to happen in
the outer state, so that the outer state can transition as a result (and
know the reason why it's transitioning!)
Further,
I use state machines with ASIO. Often I want a transition action to start
an asynchronous process in asio and then at some later date I want the
completion handler from the async operation to cause the processing of an
event. The current interface for this in SML is difficult and I had to hack
it (see my post on the chat in the SML website). I'll repeat the github
project that demonstrates it here:
https://github.com/madmongo1/sml-goblinz
My position on this is:
A transition action should have access to the back end of the state that
caused it, as well as the dependencies, so that it can schedule async
events into the state at a later date, and...
... therefore reaching the exitPoint of that state must push the exit event
to the outer state so that the state machine can react as a result of this
event exiting the current state. (see above).
Again, I love this project. If you need more QI, I'm happy to help. I'm
glad you started this project - you saved me having to figure it out for
myself, since MSM is an unmaintainable nightmare for any real application.

—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/boost-experimental/sml/issues/121#issuecomment-318624009,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AE7syXSnOJv25-dVnEEZvmdA-s5DsHldks5sSb8kgaJpZM4OmTH5
.

for completeness, here was my hack:
/** Get our your sword and kill stinking humans!
*
*/
auto start_killin = [](auto &&event, auto &&sm, auto &&deps, auto &&subs) {
auto &io = sml::aux::get<goblin_io &>(deps);
io.kill_timer.expires_from_now(boost::posix_time::milliseconds(200));
io.kill_timer.async_wait(io.strand.wrap([&](auto err) {
if (not err) {
sm.process_event(kill_a_pleb(), deps, subs);
sm.process_event(try_to_kill_again(), deps, subs);
}
}));
};
On 28 July 2017 at 14:51, Richard Hodges<EMAIL_ADDRESS>wrote:

Thanks for replying. I want to say, I really like the way you have
structured the SML - stateless states and injectable dependencies are
certainly the way to go IMHO.
On 28 July 2017 at 12:59, Deniz Bahadir<EMAIL_ADDRESS>wrote:

Not that I doubt what you are saying but can you point me to the text in
the UML 2.5 specification http://www.omg.org/spec/UML/2.5/ where this
is defined?

Might be quicker and easier to refer you to the note about this in the MSM
docs:
Important note 3: UML states that for the exit point, the same event must
be used in both transitions. MSM relaxes this rule and only wants the event
on the inside transition to be convertible to the one of the outside
transition. In our case, event6 is convertible from event5.

I assume it must be somewhere around paragraph <IP_ADDRESS>.6 and/or
<IP_ADDRESS> but I cannot find this stated (explicitly).
As a side-node, I think a terminate state (X) in Boost.SML actually
relates to an exitPoint in the UML 2.5 specification (and not to a terminate
state).

That makes sense. You want the X of a substate to be an exitPoint. You
also want the event that cause the transition to the exitPoint to happen in
the outer state, so that the outer state can transition as a result (and
know the reason why it's transitioning!)
Further,
I use state machines with ASIO. Often I want a transition action to start
an asynchronous process in asio and then at some later date I want the
completion handler from the async operation to cause the processing of an
event. The current interface for this in SML is difficult and I had to hack
it (see my post on the chat in the SML website). I'll repeat the github
project that demonstrates it here:
https://github.com/madmongo1/sml-goblinz
My position on this is:
A transition action should have access to the back end of the state that
caused it, as well as the dependencies, so that it can schedule async
events into the state at a later date, and...
... therefore reaching the exitPoint of that state must push the exit
event to the outer state so that the state machine can react as a result of
this event exiting the current state. (see above).
Again, I love this project. If you need more QI, I'm happy to help. I'm
glad you started this project - you saved me having to figure it out for
myself, since MSM is an unmaintainable nightmare for any real application.

—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/boost-experimental/sml/issues/121#issuecomment-318624009,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AE7syXSnOJv25-dVnEEZvmdA-s5DsHldks5sSb8kgaJpZM4OmTH5
.

Thanks for replying. I want to say, I really like the way you have
structured the SML - stateless states and injectable dependencies are
certainly the way to go IMHO.
...
Again, I love this project. If you need more QI, I'm happy to help. I'm
glad you started this project - you saved me having to figure it out for
myself, since MSM is an unmaintainable nightmare for any real application.

I am glad you like the project, I do, too. But I am not the one to thank.
@krzysztof-jusiak is the author and the kudos belong to him.
I am just a user of Boost.SML as you are, who is trying to use it in his own code.

The current interface for this in SML is difficult and I had to hack
it (see my post on the chat in the SML website). I'll repeat the github
project that demonstrates it here:
https://github.com/madmongo1/sml-goblinz

I am not sure if the chat is of much help. I have not seen Kris react there lately.  Kris wrote something about it in ticket #94.

On 28 July 2017 at 12:59, Deniz Bahadir @.***> wrote:
Not that I doubt what you are saying but can you point me to the text in
the UML 2.5 specification http://www.omg.org/spec/UML/2.5/ where this
is defined?

Might be quicker and easier to refer you to the note about this in the MSM
docs:
Important note 3: UML states that for the exit point, the same event must
be used in both transitions. MSM relaxes this rule and only wants the event
on the inside transition to be convertible to the one of the outside
transition. In our case, event6 is convertible from event5.

Now the question is, to what version of the UML specification does Christophe Henry (the author of Boost.MSM) refer here?
But by reading that section I think I understand what Christophe means and it probably refers to section <IP_ADDRESS> in the UML 2.5. specification.
And that makes me think that Kris seems not to have properly implemented pseudo-states (and thereby no exitPoints). (See #29.)
At least for substate-machines the X is more a terminate-state than an exitPoint. Although, if I recall correctly from the UML specification, a transition to a terminate-state should not have any exit/entry-actions called and should terminate (the entire?) state-machine.

This state machine system seems very compact and efficient compared to many other implementations I've seen.  However, being able to have a substate control its lifetime is quite important.
@madmongo1, have you been able to add exit states?  As you stated, composite states aren't very useful if there isn't an entry state/exit state possible in the composite state.  I feel an implementation of the entry/exit pseudo state would be awesome.  https://www.uml-diagrams.org/state-machine-diagrams.html#entry-point-pseudostate

HI Jeremy,
It's been a while since I looked at SML and it fell off my radar. But
thanks to your mention I'll have another look.
On Tue, 2 Oct 2018 at 14:46, Jeremy Overesch<EMAIL_ADDRESS>wrote:

This state machine system seems very compact and efficient compared to
many other implementations I've seen. However, being able to have a
substate control its lifetime is quite important.
@madmongo1 https://github.com/madmongo1, have you been able to add exit
states? As you stated, composite states aren't very useful if there isn't
an entry state/exit state possible in the composite state. I feel an
implementation of the entry/exit pseudo state would be awesome.
https://www.uml-diagrams.org/state-machine-diagrams.html#entry-point-pseudostate
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/boost-experimental/sml/issues/121#issuecomment-426259838,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AE7sybvp8YLlr4W6GtbFr62HcFUiy2FOks5ug2AogaJpZM4OmTH5
.

any news on this?
or any workaround? it's the single issue draws me back to statechart/msm :(

for anyone who is interested:

obtain reference to sm outlined in #94 no longer working
sml::back::process in #184 can only handle event defined in local level.

Hi @wangii,
I saw your post and I feel your pain with being forced to work with MSM.
It's true that not being to address outer state machine from sub state machine is a huge limitation  of the framework but it can be quite easily bypassed by adding the outer state machine inside the dependencies of the state machine. See the example below.
`
#include
#include
#include
#include
#include
#include <boost/sml.hpp>
namespace sml = boost::sml;
namespace {
struct main_state;
struct Dependencies {
std::shared_ptr<sml::sm<main_state, sml::defer_queuestd::queue, sml::process_queuestd::queue>> sm;
std::string msg;
template<typename E>
void process_event(E e) {
    ([] (auto& sm, const auto& e) {
        sm->process_event(e);
    })(this->sm, e);
}

};
typedef void (*action)(void);
//
struct ge1 {};
struct ge2 {};
struct ge3 {};
struct o1e1{};
struct o1e2{};
struct o2e1{};
struct o2e2{};
struct o1;
struct o2;
struct o1 {
struct s1{};

auto operator()() const noexcept {
using namespace sml;
return make_transition_table(
(*state) + event / [] (const auto& e, Dependencies& deps) { deps.msg+="o1e2s2|";} = "s2"s
, state  + on_entry<>  / [this](Dependencies& deps){ deps.msg+="o1i|"; }
, state  + event / [] (const auto& e, Dependencies& deps) { deps.msg+="o1s1ge1|";}
, state  + event / [] (const auto& e, Dependencies& deps) { deps.msg+="o1s1ge2|";}
, "s2"_s  + event / [] (const auto& e, Dependencies& deps) { deps.msg+="o1s2e2|";} = X
);
}
};
struct o2 {
auto operator()() const noexcept {
using namespace sml;
return make_transition_table(
(*"s1"_s) + event  / [] (const auto& e, Dependencies& deps) { deps.msg+="o2e2s2|";} = "s2"_s
, "s1"s  + on_entry<>  / [this](Dependencies& deps){ deps.msg+="o2i|"; }
, "s1"_s  + event / [] (const auto& e, Dependencies& deps) { deps.msg+="o2s1ge1|";}
, "s1"_s  + event / [] (const auto& e, Dependencies& deps) { deps.msg+="o2s1ge2|";}
, "s2"_s  + event / [] (const auto& e, Dependencies& deps) {
deps.msg+="o2s2e2|";
deps.process_event(o1e2{});
} = X
);
}
};
struct main_state {
auto operator()() const noexcept {
    using namespace sml;
    return make_transition_table(
        (*state<o1>) + on_entry<sml::initial> / [this](Dependencies& deps){ deps.msg+="mo1i|"; }
        , state<o1> + event<ge3> / [this](Dependencies& deps){ deps.msg+="mo1_ge3|"; }
        ,(*state<o2>) + on_entry<sml::initial> / [this](Dependencies& deps){ deps.msg+="mo2i|"; }
    );
}

};
}
int main(int argv, char** argc) {
Dependencies deps;
auto sm = std::make_shared<sml::sm<main_state, sml::defer_queue<std::queue>, sml::process_queue<std::queue>>>(deps);
deps.sm = sm;
using namespace sml;
sm->process_event(ge1{});
sm->process_event(ge2{});
sm->process_event(ge3{});
sm->process_event(o2e2{});
sm->process_event(o1e2{});
sm->process_event(o2e2{});

std::cout << deps.msg << "\n";

}
`
This example is a bit big but you can see all the interesting part inside struct Dependencies and the transition o2::s2 on event o2e2.
The small trick inside processEvent is needed to force lazy type evaluation of sm (since it is only fully specified once main_state is described).
This example show that this method allow orthogonal state machines to interact with each other via event process on whole sm.
For your specific need of event propagation on state machine termination, you can just trigger an event on entry of X state that can be caught by upper level state machine.
It may be useful to start SM in an idle state and trigger a "start" that go to working state once the sm pointer is set inside dependencies to avoid segfault if anonymous transitions lead to an early call to processEvent.
Hopefully the small workaround I use to propagate event from sub state to outer state can help you.

hi @GuiCodron
thank you very much for the hint! It's almost what I was experimenting except I used std::function to capture the outermost SM. I was digging into the codes to check if any unintended side effects and your hint is a great relief!
the down side of the approach, after preliminary test, is the binary size, about 20% more without O, or 25% more with O3, using clang.
I also tried throwing exceptions, didn't work.

Is it because of the  dependency?  Maybe with plain pointer the cost is smaller.
Some test with a real state machine (with real objects and function execution) might have more signification.
It's really interesting, if you have any more result on this I would be interested.
On this subject it could be interesting to add an helper class or at least some documentation on this workaround since it is a real requirement of any real world state machine.

@GuiCodron I found a little mistake in your example code. The defer policy should be: defer_queue<std::deque>

@GuiCodron Are you certain that approach is safe? I had thought of doing something similar but hesitated because by calling process_event on the outer state machine while in the event handler for an inner state machine the program doesn't get to unwind the stack from the initial process_event call. I haven't examined sml to see if it's doing anything important during that stack unwinding that needs to happen before the next call to process_event but if it does then that's a problem.
A safer approach that lets us stay ignorant of sml would be to wrap sml with another type that couples the sm object with a process queue, then empties the process queue before proceeding and stick THAT in the dependency object. Maybe I'll take a crack at it.

On Tue, 9 Apr 2019 at 09:25, robwiss<EMAIL_ADDRESS>wrote:

@GuiCodron https://github.com/GuiCodron Are you certain that approach
is safe? I had thought of doing something similar but hesitated because by
calling process_event on the outer state machine while in the event handler
for an inner state machine the program doesn't get to unwind the stack from
the initial process_event call. I haven't examined sml to see if it's doing
anything important during that stack unwinding that needs to happen before
the next call to process_event but if it does then that's a problem.
A safer approach that lets us stay ignorant of sml would be to wrap sml
with another type that couples the sm object with a process queue, then
empties the process queue before proceeding and stick THAT in the
dependency object. Maybe I'll take a crack at it.

A good model here (IMHO) is boost msm. If inner state exit points can be
observed as transitions in an outer state, there is no need to call
process_event in an event handler. The exit event should only be propagated
up once the inner state's transition is complete.
In general, if a state machine needs to call process_event in an event
handler, it's either poorly written or written on an incomplete framework.
https://www.boost.org/doc/libs/1_69_0/libs/msm/doc/HTML/ch02s02.html#d0e151
See diagram after text: "An exit point pseudo state exits a composite state
or a submachine and forces termination of execution in all contained
regions."
Notice how the outer state transitions automatically as the inner state
exits. In strict UML, the event that caused the inner termination is
propagated to the outer state. In MSM, the designer is allowed (as an
extension) to modify the event type as it is propagated (via overloaded
constructor). This extra feature is un-necessary.

—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/boost-experimental/sml/issues/121#issuecomment-481076554,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AE7syT9hM0M2tRw42IThLLtWWQ6Hp0lnks5ve_n_gaJpZM4OmTH5
.

--
Richard Hodges
<EMAIL_ADDRESS>office: +442032898513
home: +376841522
mobile: +376380212

I poked around some more and it looks like a test was added for sending events directly to the outer sm when passed in as a dependency as part of #76, so this behavior is explicitly supported and even has a test.

Hi robwiss
Have you managed to forward sub state events to the parent state?
The reason I ask is that the test/ft/actions_process.cpp has been changed. The process_event_from_substate test does not support forward of sub state events to the parent state. The test only performs sub state to sub state process event.

Fixed by https://github.com/boost-experimental/sml/pull/302


[linux-arm64] set "mkl_aarch64" bazel config for linux-arm64 platform

This is to enable TensorFlow core library bazel build with mkldnn (oneDNN) backend for linux-arm64 platforms.

We're currently working on removing the bazel build and replacing it with the binaries built by TF for Linux & macOS platforms, so while we can merge this, it'll likely be replaced before the next release.

Hi @Craigacp , thanks for the review! When you say replacing the bazel build with binaries, does it mean we can build TF core outside the java repo and able to import the binaries? in that case it will automatically cover linux-arm64 platform as well, right? because it is fully supported in the TF repo.

We'll repackage the TF binaries from the TF python wheels on several platforms. The Java binding itself still needs to be compiled so we're likely still limited to things we can easily build on GitHub actions as we don't have other build resources.
We're currently deciding if it will still be possible to build TF-Java entirely from scratch without downloading the binaries as we might still need to do a full build for Windows as that is packaged differently.

There is no problem cross compiling JNI bindings generated with JavaCPP, so given binaries for the C++ API of TF Core itself, it should already pretty much work.

Thanks, @saudet and  @Craigacp. What is the tentative timeline to get the new build system support? if it is only few weeks away I'm fine with directly trying linux-aarch64 in the new system, otherwise I see value in having this PR on the mainline to enable source builds at least.

We don't have a timeline on the new build support, nor are we planning on setting up cross compiling for Linux arm64 at the moment.

Thanks for approving the PR, @Craigacp . Please let me know what my next step is to get this merged.

The CI is blocked as we're still using ubuntu-18.04 which doesn't work anymore. Once we've merged the other PR to bump the ci I'll run it on this and then we can merge it.

I've just merged both #503 and this one

Thanks, @karllessard !


Add support for HitachiAirToWaterMainComponent / HitachiHeatingSystem (modbus:YutakiMainComponent) (Yutaki S)

[x] I have read the README, including the advanced section regarding debugging.

Device information
There are 4 functions wHICH you can add to the device with the Somfy Tahoma app.
The Holiday function is a function we do not use with the thermostat, because this is a heatpump which is always on.
See the attached screenshots for the Tahoma app features
1.  auto mode

Monday till Sunday (weekdays)
From & Untill time
Possible to set time+temperate value
OFF function
2.  manual mode
SET manual temperature
3. off

Device details

Hub: [Somfy TaHoma]
WITH the latest version of firmware

2021-02-12 06:35:36 DEBUG (MainThread) [custom_components.tahoma] Unsupported device detected (modbus:YutakiMainComponent - HitachiHeatingSystem - HitachiAirToWaterMainComponent - modbus://1233-4770-7251/4002825/1#1)
2021-02-12 06:35:36 DEBUG (MainThread) [custom_components.tahoma] Unsupported device detected (modbus:YutakiV2Zone1Component - HitachiHeatingSystem - HitachiAirToWaterHeatingZone - modbus://1233-4770-7251/4002825/1#2)
2021-02-12 06:35:36 DEBUG (MainThread) [custom_components.tahoma] Unsupported device detected (modbus:YutakiRoomThermostatZone1Component - HeatingSystem - HitachiThermostat - modbus://1233-4770-7251/4002825/1#6)
2021-02-12 06:35:36 DEBUG (MainThread) [custom_components.tahoma] Unsupported device detected (modbus:YutakiRoomThermostatZone2Component - HeatingSystem - HitachiThermostat - modbus://1233-4770-7251/4002825/1#7)

Device commands

HITACHI HEAT.zip
Auto

Manual

Off

Settings

Somfy function

Tahoma heat

Hitachi products

Thanks for reporting, @xorassistant! Currently there are 11 open device requests thus it can take a while before we have time to implement this.
It would help if you are able to call the tahoma.get_execution_history in Home Assistant. This will print your history to your log, thus you are able to understand how different commands are executed. A great example of an issue where they used this is https://github.com/iMicknl/ha-tahoma/issues/376.

The log should look like:
2021-02-12 11:56:00 INFO (MainThread) [custom_components.tahoma] 2021-02-05 17:39:47: setIntensity executed via Home Assistant on io://xxxx/xxxx, with [70].

@xorassistant apparently, this has the same characteristics as #370.
Could you give https://github.com/iMicknl/ha-tahoma/archive/feature/support_hitachi_PumpAirToWaterMainComponent.zip a try? Extract this file and place custom_components/tahoma in your custom_components folder.

@iMicknl
This version works for reading the temperature of the Hitachi device.
So looks likes this is a good way forward I have put two screenshots in the Hitachi.zip file.
And also some debug logging
HITACHI.zip

Thanks @xorassistant. Via the original app, are you able to set values like 23.5? Looking at your logs, it requires a full number (int) instead of a comma number (float).
setRoomAmbientTemperatureControlZone1() : Invalid value for command parameter p1 : expected integer value but got 21.0
Cannot connect to host tahomalink.com:443 ssl:default [Connect call failed ('<IP_ADDRESS>', 443)]
setRoomAmbientTemperatureControlZone1() : Invalid value for command parameter p1 : expected integer value but got 23.0
setRoomAmbientTemperatureControlZone1() : Invalid value for command parameter p1 : expected integer value but got 24.0
setRoomAmbientTemperatureControlZone1() : Invalid value for command parameter p1 : expected integer value but got 23.5

Do the presets / other functions work?

@iMicknl
The newest version you send works, only if I set is to value 23.5, Then it shows as "value 23"

@xorassistant should be fixed in latest version! https://github.com/iMicknl/ha-tahoma/archive/feature/support_hitachi_PumpAirToWaterMainComponent.zip
Do auto vs heat (manu) work as well? And same for the presets.

@iMicknl
The heat function is not working, and also the presets (Auto, Comfort) are not working.
When choose "Comfort", then it's jumping back to "Auto".
heat-function-error.txt

@xorassistant oops, the mapping was reversed... Could you try the latest version? (https://github.com/iMicknl/ha-tahoma/archive/feature/support_hitachi_PumpAirToWaterMainComponent.zip).
It should fix the preset / operation mode, but also use a 1 degree stepping for the temperature.

@xorassistant oops, the mapping was reversed... Could you try the latest version? (https://github.com/iMicknl/ha-tahoma/archive/feature/support_hitachi_PumpAirToWaterMainComponent.zip).
It should fix the preset / operation mode, but also use a 1 degree stepping for the temperature.

@iMicknl yes with this version the Heat functions properly as the "manual" mode.
Also the temperature is now using a 1 degree stepping!
Looks like the Eco/Comfort is not an option for the heatpump type we have, this keeps jumping back to comfort mode.
But it's now possible to adapt the temperature and it's syncing with the Tahoma! awesome!

Cool! Anything you miss, or can we consider this device implemented correctly? 🥳

@xorassistant I just pushed a new version, apparently there were some mistakes in the temperature control. Could you give it a try?


[OuiDataTable] Add auto rowHeight support to the datatable layout props

Is your feature request related to a problem? Please describe.
The Data table component today supports an integer number of lines per row which defaults to 1 if nothing is specified.
Describe the solution you'd like
The ability to specify something like the example below to allow the rows to dynamically resize and not truncate any data.
defaultHeight: {
    lineCount: 'auto'
},

Describe alternatives you've considered
if nothing is specified, default to no truncation
Additional context
Add any other context or screenshots about the feature request here.

Hey @ashwin-pc, do you guys have an approximate fixing date? Hope this will fix the issue with log row truncate, as we're working with long data and it is very convenient to compare several logs at once

There is currently no ETA for this, but an alternate solution should be coming in the 2.12 release of OSD where you can specify the number of lines you want to see. See https://github.com/opensearch-project/OpenSearch-Dashboards/issues/4859 for more details.
That being said if the is a feature someone wishes to contribute it can come in sooner :)


Healthy Ride data

We have data on all the healthy ride stations (https://data.wprdc.org/dataset/healthyride-stations), including a live display of availability: https://data.wprdc.org/dataset/current-bike-availability-by-station. Might be interesting to include. Let's consider this low priority, though

I'm interested in doing this.

Sure thing. This one is a bit weird because that second source is actually live data. We haven't handled that yet. We also don't have a standard way to display that kind of data--the pin description might not be update-able, for example. As you get into it, we can run through some ideas as to how to handle it on here. For now, we can just plot the healthyride stations in the Oakland area.

Maybe @saylorsd has a suggestion on how to work with this data

After taking a bit of a look at the data, I think the best bet would be just to work with current availabilty data, since it will always be up to date, and it will always be at the same location.  The HealthyRide stations dataset will go stale each quarter when they publish a new one.
In general, you could make a request here to get an xml representation of Pittsburgh's stations and then iterate over the places.  You can map it using the lat and lng fields and maybe display the current number of bikes and free racks available in the popup.  As long as the call is made when the user accesses the map , it should be pretty accurate.
I'd be more than happy to help on any of the specifics, just mention me in a comment if you have a question for me.

@saylorsd could you check out my main.js in my fork of project?  Seems dataset loads alright, but points aren't plotting and I can't figure out why exactly.

@jfw20 It looks like you're using the data dictionary's resource ID for the healthy rides stuff.  Now that I see how everything else is set up, I see that my previous solution is a bit more tricky.  The actually data for that dataset is a XML feed which is completely different from all of the other datasets you guys are using so far. It won't work by adding it in like the ones that are currently there.  If I have time tomorrow, I'll make a script job that harvests that XML feed and hosts it like the rest of our datasets.  Otherwise, I'll do it Monday when I get back to the office.
In the meantime, you can get the points up using the data here: https://data.wprdc.org/dataset/healthyride-stations/resource/6934a5a3-0ba8-4e8e-a6a9-fcca801c2d48 .  You'll be able to follow the same procedure for this one that's been done for the others.  Then, when I get the new dataset up, you'll just have to make a few small changes and you'll have the live bike counts up too.
Once again, just @ me if you have any other questions or comments.

We don't want you to have to make a new dataset aggregations. Plus, we have another live XML dataset we'd like to do. So @jfw20, I think you should write a function similar to the fetchWPRDCdata function we have for the other kind of calls. Like fetchWPRDCXML. Would something like this work, do you think:http://stackoverflow.com/questions/8237923/parsing-xml-rss-from-url-using-java-script?

We'll also want to add a visual unique to this dataset that shows the bike availability. After you get the data, we can merge that PR before we add the HTML/CSS popup

Alright, I'll take a look at writing a fetchWPRDCXML function as soon as  I can.

@jfw20 How is this coming along?

Hey, sorry for slow response.  Haven't really worked on it.  If anyone else wants to take a whack at it you can re-assign it, otherwise I'll try to get to it as soon as I can.

You're good!


git .patch and .rej file support like 3 way merge

It would be great to have a visual way, like a 3way merge, when applying git patch files.  Analyze the patch file and present available changes with checkbox options in the "theirs" window.
After applying a patch with --reject option there may be some .rej files generated where the patch fails to apply.  e.g.
index.js
index.js.rej

These files are also diff format and should be supported the same way .patch files are.

This feature request is now a candidate for our backlog. The community has 60 days to upvote the issue. If it receives 20 upvotes we will move it to our backlog. If not, we will close it. To learn more about how we handle feature requests, please see our documentation.
Happy Coding!

This feature request has not yet received the 20 community upvotes it takes to make to our backlog. 10 days to go. To learn more about how we handle feature requests, please see our documentation.
Happy Coding!

:slightly_frowning_face: In the last 60 days, this feature request has received less than 20 community upvotes and we closed it. Still a big Thank You to you for taking the time to create this issue! To learn more about how we handle feature requests, please see our documentation.
Happy Coding!


Update dependency @ng-bootstrap/ng-bootstrap to v8.0.4

This PR contains the following updates:

Package
Type
Update
Change

@ng-bootstrap/ng-bootstrap
dependencies
patch
8.0.0 -> 8.0.4

Release Notes

ng-bootstrap/ng-bootstrap
v8.0.4
Compare Source
Bug Fixes

accordion: fixes animation glitch when opening several panels (06dcf09)

v8.0.3
Compare Source
Bug Fixes

animations: don't reflow in 'ngbRunTransition' (#3962) (f699999), closes #3954 #3952
animations: make sure 'ngbRunTransition' runs inside the zone (#3957) (a006a62), closes #3950
carousel: respect [animation]="false" (#3964) (9afae34), closes #3961

v8.0.2
Compare Source
Bug Fixes

animations: delegate 'animation' flag to 'NgbConfig' (#3939) (c90c1c4), closes #3893
carousel: update active class when the content changes (15ad374)
datepicker: improve right arrow css selector (#3931) (6790a3e), closes #3872
nav: avoid doing double reflow for fade in transition (#3936) (76e38ee), closes #3900
nav: work corretly inside components with OnPush (#3934) (038e89a), closes #3930

v8.0.1
Compare Source
Bug Fixes

nav: correctly work with conditional nav items (#3894) (1f466ed), closes #3892
popover,tooltip: run transition inside angular zone (#3909) (a2d3a44), closes #3896

Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.

[ ] If you want to rebase/retry this PR, check this box

This PR has been generated by Renovate Bot.

⚠ Artifact update problem
Renovate failed to update an artifact related to this branch. You probably do not want to merge this PR as-is.
♻ Renovate will retry this branch, including artifacts, only when one of the following happens:

any of the package files in this branch needs updating, or
the branch becomes conflicted, or
you click the rebase/retry checkbox if found above, or
you rename this PR's title to start with "rebase!" to trigger it manually

The artifact failure details are included below:
File name: ui/package-lock.json
npm ERR! cb() never called!

npm ERR! This is an error with npm itself. Please report this error at:
npm ERR!     <https://npm.community>

npm ERR!


[feature] new resource: view

#36
I'm still having trouble with acceptance tests but I thought I'd open this because there are some other changes that may require discussion.
Fundamentally, I don't see any reason why we should be interpolating SQL statements in this provider. The approach taken in this resource allows us to pass arguments through to the SQL driver. I believe this is safer and cleaner, although please correct me if there's a reason for not doing this with the Snowflake driver.
resources.DBExec
I moved this function to resources.go since it's a generic function and didn't seem to belong in warehouse.go. I also modified it so that SQL arguments are passed through to the SQL driver instead of being interpolated by fmt.Sprintf.
view
The view resource didn't fit the pattern of the generic Builder, so I created a new standalone ViewBuilder. Instead of using fmt.Sprintf to interpolate SQL queries, this builder spits out statements and arguments that are consumed by the SQL driver.
random stuff
There are probably some minor cosmetic changes from my previous PRs, sorry about that

Upon further investigation, it seems that the go snowflake driver doesn't support binding parameters. I'll rewrite as per the current implementation and raise a ticket with Snowflake


TFTP bug: response source IP is not client request

Hi,
My machine has two IPs, one on loopback interface and another on an ethernet interface.
I hope client can use loopback address as tftp server address.
My IP is:
lo: <IP_ADDRESS>/32
xgbe0: <IP_ADDRESS>/31

tftpd is listened on <IP_ADDRESS>  using s.ListenAndServe(":69")
If client request <IP_ADDRESS>,  server will got following err
"client-ip:port": sending data packet 1: read udp <IP_ADDRESS>:port->client-ip:port: read: connection refused

Please notes source of response packet use xgbe0's IP as source.
If client request <IP_ADDRESS>, it's ok.

If listened on loopback, using s.ListenAndServe("<IP_ADDRESS>:69"), and client request <IP_ADDRESS>. It still use xgbe0's ip to response.

This can be fixed by update Linux kernel routing table, using following command
ip route add [client-subnet] via [gateway] dev xgbe0 src <IP_ADDRESS>

But I think this is still a bug, and xinetd tftp can handle it correctly.


Feat/api v3

Let's push all of this to production. We worked on it for the USDC release and then abandoned it. But there are some valuable changes in here which are worth releasing.

It’s too early for this unfortunately.

Docs are not updated
This version is not back-compatible
There are no visible improvements for developers

There should be a substantial improvement to justify the breaking changes.

Yes, docs should be updated some day.
And yes, this would be our first 1.0.0 version. But it's not necessary now, so we can also publish it later.


Revert "21 bug fix fermion qubit mapping"

Reverts wmizukami/chemqulacs#22

I still found a bug about this commit:
UserWarning: The function generate_initial_states for SSVQE only performs correctly for fermion_qubit_mapping=jordan_wigner.
  warnings.warn(
Traceback (most recent call last):
  File "/home/test/vqe.py", line 21, in <module>
    vqe_casci.kernel()
  File "/usr/local/lib/python3.9/site-packages/pyscf/mcscf/casci.py", line 1143, in kernel
    kernel(self, mo_coeff, ci0=ci0, verbose=log)
  File "/usr/local/lib/python3.9/site-packages/pyscf/mcscf/casci.py", line 610, in kernel
    e_tot, fcivec = casci.fcisolver.kernel(h1eff, eri_cas, ncas, nelecas,
  File "/usr/local/lib/python3.9/site-packages/chemqulacs/vqe/vqeci.py", line 495, in kernel
    self.initial_states = generate_initial_states(
  File "/usr/local/lib/python3.9/site-packages/chemqulacs/vqe/vqeci.py", line 366, in generate_initial_states
    state_mapper = fermion_qubit_mapping.get_state_mapper(
  File "/usr/local/lib/python3.9/site-packages/quri_parts/openfermion/transforms/__init__.py", line 305, in get_state_mapper
    return self(n_spin_orbitals, n_fermions, sz).state_mapper
  File "/usr/local/lib/python3.9/site-packages/quri_parts/openfermion/transforms/__init__.py", line 254, in __call__
    return self._mapping_method(n_spin_orbitals, n_fermions, sz)
  File "/usr/local/lib/python3.9/site-packages/quri_parts/openfermion/transforms/__init__.py", line 136, in __init__
    self.of_operator_mapper,
  File "/usr/local/lib/python3.9/site-packages/quri_parts/openfermion/transforms/__init__.py", line 528, in of_operator_mapper
    raise ValueError("sz is required.")
ValueError: sz is required.

I believe this bug should be originally removed in the previous PR. It seems that the PR was passed by my mistake.


Proposal: Do not show animations when switching menus in the MenuBar

Proposal: Do not show animations when switching menus in the MenuBar

Summary

Do not show animations when switching menus in the MenuBar.
Rationale

Feels faster
Consistency with whatever notepad uses

Scope

Capability
Priority

This proposal will allow developers to accomplish W
Must

This proposal will allow end users to accomplish X
Should

This proposal will allow developers to accomplish Y
Could

This proposal will allow end users to accomplish Z
Won't

Important Notes

Open Questions

The animations on MenuBar are generally slow for what I would consider to be a rather legacy control (in terms of design) where a user might expect an instant response instead of a sliding animation. The animation also looks a little comical for very long menus.

@shaheedmalik @electronic-dk
https://gofile.io/d/3ohawG

@BreeceW yeah many of the animations are superfluous. I'm pretty sure I've suggested toning them down for longer flyouts and menus somewhere 'round here.

I wouldn't say I dislike these animations. Perhaps they may be sped up a bit, but I'm not sure about it. There's already an OS-wide setting for showing animations, does it not cover this?

@electronic-dk I'm only talking about the animations when you're switching menus, not the first slide in animation. win32 apps don't have animations when you're switching menus either.

There's already an OS-wide setting for showing animations, does it not cover this?

In case you're actually asking, yes it does but since we both understand each other, defaults freaking matter. Repeating a slide in animation feels unnecessary and slow and as we both know, win32 apps still have a fade in animation (which you can disable) for menus.
tbh this whole discussion is kinda pointless as idk if any of my suggestions have done anything. windows for example hasn't fixed the reveal hover bug in an entire year, let alone done any of the bigger things.

Animated UI is a modern thing, and will become more expected from users coming from their Android or Apple phones.

@mdtauk I think you misunderstood what I'm saying. I'm not against animated UI and this isn't a modern control as Breece said.

@mdtauk I think you misunderstood what I'm saying. I'm not against animated UI and this isn't a modern control as Breece said.

It is a modern version of a classic UI 😀

I definitely agree that the experience and efficiency of browsing menus by "scrubbing" across them is made significantly worse by having it repetitively slide up and down as you're doing it.
This isn't about whether UI animations in general are generically good or bad (and it doesn't really depend on whether it's a "legacy" control or not, though it's worthwhile considering the target audience and scenarios) Animations can make UI more pleasant and useful (by letting user viscerally feel the application's structure), but they can be tricky to get right, and inappropriate use of animations is worse than no animations. If you were designing an animation for scrubbing along menus it wouldn't look like the menu sliding up and down repeatedly. It might look more like how thumbnails on the Windows taskbar scoot along and crossfade/morph into each other as you scrub along it, though that one's still slower than I'd like here.

IMHO, the biggest issue here is not the animation or no animation per se, but the fact the menus in win32 and UWP apps look (and behave) differently. With that being said I'd prefer if all the menus/context menus were modernized and gained a common look and behavior (e.g. animation/no animation).

IMHO, the biggest issue here is not the animation or no animation per se, but the fact the menus in win32 and UWP apps look (and behave) differently. With that being said I'd prefer if all the menus/context menus were modernized and gained a common look and behavior (e.g. animation/no animation).

yeah. windows 10 is an inconsistent mess and microsoft doesn't want to even fix it :( there are options in control panel that don't affect WinUI stuff like shadows for example

IMHO, the biggest issue here is not the animation or no animation per se, but the fact the menus in win32 and UWP apps look (and behave) differently. With that being said I'd prefer if all the menus/context menus were modernized and gained a common look and behavior (e.g. animation/no animation).

yeah. windows 10 is an inconsistent mess and microsoft doesn't want to even fix it :( there are options in control panel that don't affect WinUI stuff like shadows for example

Control Panel is due to be removed, once the settings are moved to the Windows Settings app.

Win32 apps should in time move over to WinUI Desktop, so those old controls will phase out.

Hopefully the Windows Shell and inbox apps will move over to WinUI controls, or old apps moved to the store.

Control Panel is due to be removed, once the settings are moved to the Windows Settings app.

One day™

Win32 apps should in time move over to WinUI Desktop, so those old controls will phase out.

One day™

Hopefully the Windows Shell and inbox apps will move over to WinUI controls, or old apps moved to the store.

Hopefully®
Microsoft has had so many chances. They've only recently been updating their inbox apps to use WinUI. I don't have any hopes for them moving controls over to Settings from Control Panel. I even made this  issue and the WinUI peeps said that it's out of their hands. It's what I was expecting from Microsoft but part of me hoped® that they could contact the people who develop Windows 10. And phasing out those controls is not such a good idea. Microsoft knows that win32 apps will always be around. They're even using them themselves. They should just update the styling to be inline with WinUI. I wonder why the people who work on Windows 10 don't work on any of the things we really ask for. Are there not enough people, teams or resources?

On the other hand, instead of removing animations altogether, use a different, shorter animation. The current animation of expanding from the top to bottom direction looks somewhat dated and is slow (in my opinion.)
Can a short popup-like animation be used? For example the menu popup menu animation that gtk uses is quick and clean.

Microsoft has had so many chances. They've only recently been updating their inbox apps to use WinUI. I don't have any hopes for them moving controls over to Settings from Control Panel.

It's like Tablet Mode being terrible the last 5 years. It's all on the Shell team.  I understand if stuff  takes long to to do, but something like Settings has made no real progress since Windows 8.

@shaheekmalik yeah they stopped moving settings since 2018. I think it has to do with resources. Microsoft really doesn't care about Windows anymore. The rewritten touch keyboard took so long to get to where it is now and the split keyboard still isn't decent. The rewritten task view is finally performant but still has various issues (including not being able to rearrange). the list goes on and on

On the other hand, instead of removing animations altogether, use a different, shorter animation. The current animation of expanding from the top to bottom direction looks somewhat dated and is slow (in my opinion.)
Can a short popup-like animation be used? For example the menu popup menu animation that gtk uses is quick and clean.

@AzAgarampur
I thought GNOME got rid of menu bars. :/ IIRC there's no animation when switching menus. If you're referring to just menus, I totally agree.

@Poopooracoocoo Yeah that's what I meant, my bad. I should have said that.

@chigy @StephenLPeters no progress?

@Poopooracoocoo , we have no immediate plan to alter behavior here. This animation is tied to MenuFlyout and while we wish to look at the animation holistically, it is not our current immediate priority.


BPD abnormally high

Hi,
I am taking the code from the repo as-is and running it. The only difference is I am running it a different PyTorch version (1.6.0).
For some test_runs (for e.g. 10, 20 epochs), the BPD score is abnormally high,
50000/50000 [16:59<00:00, 49.03it/s, bpd=9.49e+11, lr=0.0003, nll=2.02e+15]
For 2/3 runs even after a 50 epochs I am getting such scores.
Is there something wrong that I am doing during the training or the pytorch version is affecting the results so much?

It's probably caused by changing the PyTorch version. This is why the environment.yml file includes version numbers.
Just run conda env create -f environment.yml to set up your environment with the right package versions.

Hi @royd1990,
I had the same issue, and apparently there are some changes in the PyTorch scheduler in newer versions. So, changing "scheduler.step(global_step)-->scheduler.step()" in train.py solved the problem in my case, as suggested by the warning that pops up when running train.py.

Hi @royd1990,
I had the same issue, and apparently there are some changes in the PyTorch scheduler in newer versions. So, changing "scheduler.step(global_step)-->scheduler.step()" in train.py solved the problem in my case, as suggested by the warning that pops up when running train.py.

Dear @DiegoOrtego
I had a similar problem of exploding BTD, and your solution does fix the problem.
Thank you very much!

Dear @DiegoOrtego, @swyoon
I also have the same issue of abnormally high BPD and was resolved by changing changing "scheduler.step(global_step)-->scheduler.step()'. However, the BPD is now decreasing at a very minimal rate. In the original implementation, for around 10 epochs, the BPD should be  3.61, but for me, after the change in the scheduler, even after 25 epochs, my BPD is 3.92. Any suggestion for reducing BPD faster?
Thank you very much!


logseq: 0.8.12 -> 0.8.15

Description of changes

https://github.com/logseq/logseq/releases/tag/0.8.13
https://github.com/logseq/logseq/releases/tag/0.8.14
https://github.com/logseq/logseq/releases/tag/0.8.15

Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[x] Tested basic functionality of all binary files (usually in ./result/bin/)
23.05 Release Notes (or backporting 22.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[x] Fits CONTRIBUTING.md.

Ah looks like #208271 is merged first so this commits nothing on the target branch with a rebase and merge :eyes:


use the new Environment variable names

@rgardler,
Thanks for your contribution as a Microsoft full-time employee or intern. You do not need to sign a CLA.
Thanks,
Microsoft Pull Request Bot


When migrating from nodeprovisioner to nodepools nodes are still being created with the provisioner

Description
Observed Behavior:
Deleting the nodes slowly by provisioner, some of the nodes are launched using the provisioner instead of Nodepools
Seeing TLS Handshake errors in the logs:
{"level":"ERROR","time":"2023-11-19T07:56:10.792Z","logger":"webhook","message":"http: TLS handshake error from <IP_ADDRESS>:58566: EOF\n","commit":"1072d3b"}

Can't delete provisioner because all of its nodes will be deleted at once
Expected Behavior:
All new nodes should be launched by nodepool
Reproduction Steps (Please include YAML):
Upgrade Karpenter from v0.31.2 to v0.32.1 according to the upgrade documentation:

Apply the new crds
Upgrade Karpenter to v0.32.1
Create the nodepools and nodeclasses to replace the awsnodetemplates and provisioners
Slowly recycle the nodes created by provisioner: for NODE in $(kubectl get nodes -l karpenter.sh/provisioner-name=<provisioner-name>; do kubectl delete node $NODE && sleep 60; done

Versions:

Chart Version: v0.32.1
Kubernetes Version (kubectl version): Client Version: version.Info{Major:"1", Minor:"25", GitVersion:"v1.25.10", GitCommit:"e770bdbb87cccdc2daa790ecd69f40cf4df3cc9d", GitTreeState:"clean", BuildDate:"2023-05-17T14:12:20Z", GoVersion:"go1.19.9", Compiler:"gc", Platform:"linux/amd64"} Kustomize Version: v4.5.7 Server Version: version.Info{Major:"1", Minor:"25+", GitVersion:"v1.25.15-eks-4f4795d", GitCommit:"9587e521d190ecb7ce201993ceea41955ed4a556", GitTreeState:"clean", BuildDate:"2023-10-20T23:22:38Z", GoVersion:"go1.20.10", Compiler:"gc", Platform:"linux/amd64"}

Please vote on this issue by adding a 👍 reaction to the original issue to help the community and maintainers prioritize this request
Please do not leave "+1" or "me too" comments, they generate extra noise for issue followers and do not help prioritize the request
If you are interested in working on this issue or have submitted a pull request, please leave a comment

Worth mentioning i DID NOT have these issues following the same path on a smaller cluster on version 1.26
I was much more aggressive on the nodes recycling but all new nodes were launched by nodepools

Did you add a taint to the Provisioner before attempting to roll over to the Nodepool? As noted in https://karpenter.sh/docs/upgrading/v1beta1-migration/

Did you add a taint to the Provisioner before attempting to roll over to the Nodepool? As noted in step 12 of https://karpenter.sh/docs/upgrading/v1beta1-migration/#upgrade-procedure

I did not (FacePalm) - Thanks!


Unable to save changes

Hello,
After updating the settings the Save button stays disabled. I am not able to click it to save the changes.

Thank you for the issue, will analyze it

same issue

Same issue what to do?

@vinikatyal You have to just use the version before the latest one for now. I dont know react enough to create a PR for this. So until @kucherenko gets a chance to make the changes... we are just doomed

@vinikatyal You have to just use the version before the latest one for now. I dont know react enough to create a PR for this. So until @kucherenko gets a chance to make the changes... we are just doomed

Let me look at his code. I know react. Am new to strapi

@BayBreezy have you managed to get it working with 4.0.13?

@AnalyteSoftware Yes, it works in that version. It stopped working when I update to the latest which is 4.0.14

Any plans in place to fix this? 👀 @kucherenko

Hi!
The issue has been fixed!
strapi-plugin-passwordless 4.0.15 published 🎉

Thank you @kucherenko


What is PETALS one-pager / blog

Create a one-pager / slide deck / video for introducing PETALS to new teams.
Why it exists? What it can do? How to do it?
WHY?
Improves psychological safety
Why does that even matter?

openness
collaboration
more diverse ideas
fearless organisation

WHAT?
PETALS focuses on five key factors:

Productivity 🚀 - how much have you got done?
Enjoyment 🤩 - how much have you enjoyed everything?
Teamwork 🤝 - how much have you collaborated with team mates and peers?
Learning 🧠 - how much have you learned?
Serenity 🧘 - how serene or stressed have you got?

Score each factor out of 5, create your AVERAGE then share with your team to compare.
Review, discuss and identify actions.
HOW?
Phases of Delivery

One-pager content to get feedback on the outline and language.
Supporting slide deck with additional visuals (still and animated) to explain.
Video to talk through it all.

Useful References
Blog templates to structure great content

“How-To” Blog Post Template
Beginner’s Guide Blog Post Template
Step-By-Step Blog Post Template
Things To Do Before, During, Or After “X” Blog Post Template
Case Study Blog Post Template
Product Comparison Blog Post Template
Myth-Buster Blog Post Template

I've used previous presentation content to create a simpler version to distribute from the website
https://static.petals.team/docs/what-is-petals.pdf
This is linked to from a basic Get Started page on the public website
https://petals.team/get-started/
Feedback welcome. Content is basic but, once I've got he Powerpoint deck in a good shape, I can add some extra images and context to the Get Started page.


[coinutils] Add feature glpk

Fix https://github.com/microsoft/vcpkg/issues/31588

Note: Change dependency glpk to feature, because glpk is optional upstream.
https://github.com/coin-or/CoinUtils/blob/master/.coin-or/config.yml#LL36C1-L39C23
The feature glpk are tested successfully in the following triplet:

x86-windows
x64-windows
x64-windows-stataic

[x] Changes comply with the maintainer guide
[ ] SHA512s are updated for each updated download
[ ] The "supports" clause reflects platforms that may be fixed by this new version
[ ] Any fixed CI baseline entries are removed from that file.
[ ] Any patches that are no longer applied are deleted from the port's directory.
[x] The version database is fixed by rerunning ./vcpkg x-add-version --all and committing the result.
[x] Only one version is added to each modified port's versions file.

This is awesome, thank you @FrankXie05!

Now you need to add a test port which builds coinutils with glpk.

/azp run

/azp run

Hi! Is there anything left to do that I could help with?


PHP Fatal error: Maximum function nesting level of '100' reached, aborting!

Increase xdebug.max_nesting_level.

Done @ c3cc326b02b70cdb5f71f05f286a721a09146d09.


accept query parameters from both relative redirectTo URLs and the client URL

URLs where malformed When the client URL was defining query parameters and a relative redirectTo URL was passed on as an option.
It is now possible to define query parameters in both the base client URL and the relative redirectTo

Thanks for the quick turnaround folks!


nodesource deprecated script

When starting the node install script, it prompts you with a warning :

Not sure how bad it is, I guess the guide could use a little update :) Thanks !

Thanks for the heads-up, I'll take a look at rewriting that part. Been meaning to update the guide for Debian 12 anyway.

Another small mistake (I believe) : at one point you ask to do this :
$ sudo chown -R photoprism:photoprism /opt/photoprism
But you create that user only a few paragraphs later. Easy to fix even for a complete noob like me, but just to be safe....

Ah, I copied that bit from the upgrade section, but forgot that with a clean install the user isn't created yet. Will fix, thanks!


add hardware accelerated limitation

Thanks for contributing to the Harness Developer Hub! Our code owners will review your submission.
Description

Please describe your changes:add hardware accelerated limitation
Jira/GitHub Issue numbers (if any): ______________________________
Preview links/images (Internal contributors only): __________________

PR lifecycle
We aim to merge PRs within one week or less, but delays happen sometimes.
If your PR is open longer than two weeks without any human activity, please tag a code owner in a comment.
PRs must meet these requirements to be merged:

[ ] Successful preview build.
[ ] Code owner review.
[ ] No merge conflicts.
[ ] Release notes/new features docs: Feature/version released to at least one prod environment.

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

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

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


Chrome can't download the extension?

It's just stuck on "checking". It still downloads, but it stops at 400mb~ and then crashes, then tells me to restart Chrome. Any fix?

Long story short not really..
Explanation : Chrome hates long downloads and that's the main problem of the extension having every file localized makes it huge.
You could manually install it, though Chrome wouldn't be able to validate it to the store and you'd be stuck with a workaround far from a permanent solution.
Monday, 21 August 2017, 00:28AM +02:00 from Naturally-Delicious notifications<EMAIL_ADDRESS>It's just stuck on "checking". It still downloads, but it stops at 400mb~ and then crashes, then tells me to restart Chrome. Any fix?
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHubhttps://github.com/JdotCarver/Animal-Crossing-Music-Extension/issues/24, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AGw15O51qJN7Ml5mTYHtfgfbSoDq8Klbks5saLMDgaJpZM4O8v8W.

Yeah I figured it didn't download because of the huge file size. I kept trying to download it after a few fails and it magically downloaded fully and now I have the extension!

Ah ! I'm so glad to hear that, there really wasn't much I could do so good thing it sorted itself out !
Monday, 21 August 2017, 11:12PM +02:00 from Naturally-Delicious notifications<EMAIL_ADDRESS>Yeah I figured it didn't download because of the huge file size. I kept trying to download it after a few fails and it magically downloaded fully and now I have the extension!
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHubhttps://github.com/JdotCarver/Animal-Crossing-Music-Extension/issues/24#issuecomment-323854360, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AGw15N0gog6Eo8FYCrmo-qB5cdSB5bvoks5safKjgaJpZM4O8v8W.

This issue has been resolved. Closing! ✨


Fix typos in readme

Summary & motivation
Just some simple typo fixes to satisfy my OCD.

Thanks!


closing websockets

I've added support for websocket close messages in line with the new keep-alive thing.

done. toby, we've had a patch for ping and keep alives on ff for websockets yesterday. have you rebased before that ? thanks

oh, forget about it, I misread that you did it over the keep alive. thanks.

yup, i kept his stuff in there :)

Please add yourself in the credits section of README.rst !

hehe ok :)


Randomizing your character can have their age be randomized outside the limits

Description

Screenshots

Additional context

Rimworld moment. Biological Vs chronological. Might not play well with species either if we set a limit unless it's in lore / law somewhere.

Rimworld moment. Biological Vs chronological. Might not play well with species either if we set a limit unless it's in lore / law somewhere.

I set a limit, it's just broken on clientside now. It shows you can enter whatever age but on server-side it'll change it from 18-120 (Within the limits)


add Capital One and ING case studies

@kbarnard10 and @KimMcMahon I have added ING and Capital One case studies for your review!

@alexcontini Add 2 comments. Could you also update the case studies on the homepage to reflect the most recent 4?

/approve

@kbarnard10 all updates have been made, I think @zacharysarah is needed to merge because of the images?

/lgtm
/approve
/assign @zacharysarah

/approve


Canceling delete enables edit row

Hi guys ,
I have changed the rowRenderer and included the following lines :
        var grid = this;
        var $editButton = $("").append($("")).append($("Edit"));
        var $deleteButton = $("").append($("")).append($("Delete"));

        $editButton.on("click", function () {
            grid.editItem(item);
        });

        $deleteButton.on("click", function () {
            grid.deleteItem(item);
        });

Editing works but if I cancel the delete operation from the javascript popup , the row changes to editing mode . Where should I make a change to fix this ?

Ok , I don't know why this happened , but I added the following in the jsgrid list of options ( I had a requirement to disable editing on clicking the row ) --
rowClick: function (args) { return; },
and now on clicking cancel , it doesnot enable edit mode .

Default row click behavior is start editing. When delete button is clicked click event bubbles and fires row click. To avoid this call stopPropagation on the event or just return false:
$deleteButton.on("click", function (e) {
grid.deleteItem(item);
e.stopPropagation();
});


Image resizing improvements

What kind of change does this PR introduce?
Fix & Improvements
What is the new behavior?

fix: S3 signed URL needs to be encoded before passing it to imgproxy
reduce signed URL time to 5mins
add X-Transformation header with transformation options

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

27 of 28 (96.43%)  changed or added relevant lines in 4 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.06%) to 84.581%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

src/backend/s3.ts
0
1
0.0%

Totals

Change from base Build<PHONE_NUMBER>:
0.06%

Covered Lines:
3264

Relevant Lines:
3810

💛  - Coveralls


Align the way the DriverFramework is pulled into the build with other components.

Currently there exists DF_TARGET and df_driver_framework is assumed to be need by all target with the special configuration for nuttx.
See https://github.com/PX4/DriverFramework/blob/2eccd3dfb376375e98fcf2c2061c560b37e05af7/framework/src/CMakeLists.txt#L36
the src/lib/DriverFramework should just be added to the cmake/configs/<>.cmake that need it,
This becomes very evident in nuttx_next_cmake and the kludges needed to build bootloaders
See:
https://github.com/PX4/DriverFramework/blob/2eccd3d_disable_df_for_bootloaders/framework/src/CMakeLists.txt
https://github.com/PX4/Firmware/blob/nuttx_next_cmake_master/cmake/nuttx/px4_impl_nuttx.cmake#L509-L511
and
https://github.com/PX4/Firmware/blob/nuttx_next_cmake_master/cmake/nuttx/px4_impl_nuttx.cmake#L509-L511
and

Fixed in https://github.com/PX4/Firmware/pull/4415

Works as advertised!


Port for Visual Studio

Any plans for developing a theme for Visual Studio?
PS:  Looking forward to the Sublime Text version as well.

Interested in both !

Someone send me an email yesterday with a request for this port project including a notice that there is a new theme editor available now for VS 2017. I'll read their documentation as soon as I've got some free time to underdtand their theming API. (and installed a VM with Windows to actually test- and develop it :smile: )

Check out https://github.com/alexanderte/dainty-vs
It's a theme generator for VS and Nord is one of available presets

Any update on this? This is one of the only major editor left. Nord all the things, this theme is so good!

@ArturMroz Thanks a lot, this looks indeed like a great starting point.
@Tom1206 All open issues in this repository are still planned, but the time for the data transition of all port projects to the shiny new website and documentations.

Decided to start tackling it at least for Visual Studio 2019. Thoughts so far? https://github.com/jwendl/nord-vs-theme

@jwendl Sorry, unfortunately your comment got lost in my large amount of notifications. I've checked both the official 2017 and 2019 theme editors, but they were too limited and the massive amount of keys, in combination with almost no documentations for them, made me shy away from continuing to work on an official theme.
Anyway, see my next comment for the good news :wink:

Totally understandable. While not an expert in the area, there is a lot of undocumented options when customizing Visual Studio that involves reverse engineering.
Yeah the theme editors definitely don't expose all of that functionality for the Visual Studio theme options.

This issue is really old and kind of a shopkeeper in this repository. Time to change that.
I and other authors of popular Visual Studio Code themes were invited to collaborate and test a new tool during the development/beta phase: an official theme converter for Visual Studio which allows to convert Visual Studio Code themes to Visual Studio, e.g. the Nord Visual Studio Code theme.
The tool is now publicly available as OSS CLI tool and I'm happy to announce the result from this private phase: Nord Visual Studio.

This all is possible due to the new Visual Studio custom theme feature which is available as of Visual Studio 2022 Preview 3 or higher. At the same time this VS version is also the minimal requirement to use the theme. The theme itself is available from the marketplace and can be installed from within Visual Studio.
Note that the theme is currently an extension preview which means it is work in progress, not completed yet and can change at any time while the project is still in development major version zero 0.y.z. There is also currently no repository but only the compiled VSIX (extension format) itself from the marketplace, but this will change in the next weeks so that the theme is fully open source and everyone can work it. The reason is simply that my free time is limited and I don't want to publish a repository with a mess of testing and debugging traces :wink:
I'll post updates here as soon as the repository is available, but also look out for new theme versions from the marketplace which will be published from time to time when the theme converter gets updated continuously.
Make sure to read the official Visual Studio custom theme announcement blog post

@jwendl Oh, and you probably already knew all of that even before me because you're working right at the origin of this tool 😆

The first iteration looks amazing! Will definitely check that out.

Not sure if I'm the only one but on VS 2022 Preview 5.0, I cannot select Nord as a Theme, even though I have it installed (I installed it from the Marketplace)

+1

Same problem here.

Same problem with the full release of VS2022 that dropped today.

As a temporary stopgap, I've run the theme converter on the vscode theme to get the raw pkgdef file.
To use this theme, unzip and place the .pkgdef file in C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Platform, then restart visual studio.
.pkgdef files are plain text if you want to validate the contents.
nord-color-theme.zip

The uploaded extension worked fine during the preview versions of VS 2022 and it is just sad to see that it breaks when trying to install it in a stable software version.
Unfortunately it is the pure pain to build anything for a wild pile of code junk like Windows. Sorry for the rough choice of words, but I've been a proud non-Windows user (except one throwaway Windows 7 gaming system) and trying to support a project for Windows eats more time than trying to solve dark matter theory problems. I've only access to Windows through VMs and the one I used to build the extension is broken because one of the 54156195 Windows updates simply killed itself. After setting up a fresh one the dotnet CLI throws cryptic errors when trying to build the converter while trying to build it from within VS itself throws hundreds of errors regarding missing NuGet packages. This is UX 101, it should work out-of-the-box and every minute of my precious and little spare time I spend on this non-sense problems makes me mad. I installed another pile of meaningless runtime packages and now I've run out of disk space in the VM which eats ~45GB just for a SINGLE APPLICATION. Resizing is not possible because Windows is too dumb to extend a partition where the unallocated disk space is not located right next to the target partition and moving is no possible because it will break the boot partition (even third-party tools like GParted fail). All I can do is to create a new VM for the third time, but my host system also runs low on disk space so it is not possible to provide that much space to the VM.
I'm posting this here because no one sees the pain that comes with the development of such port projects. All I'd like to do is to compile the converter and extension from a "real" OS with a standard tool chain, otherwise I don't see any way to support this port project.
And yes, I know that there are ways to use a managed VM like e.g. one from Azure, but as long as this is not sponsored the last thing I'd do is to spend my personal money to pay for it. My patience for the support of commercial platform ports is as good as exhausted and without the help from others I no longer see myself in the position of further destroying my nerves with such topics.

@arcticicestudio, I just wanted to say that I appreciate the hard work you do, and I understand that maintaining the ports is an enormous amount of work. Thank you for creating this awesome theme.  You created a great project that is loved & used by many. Not only the theme but everything around it. The effort you put into the documentation shines through.
Please take care of yourself and take a break when you need it.
Merry Christmas & happy holidays :)

After a long break I would like to give an update regarding the development. With my new M1 MacBook I was finally able to unblock the VM showstopper. The CPU and system at all is pure engineering perfection and if I#d like to I can run multiple VMs at the same time. I haven't heard the fan once in the last few months of use (so not sure if there's even one installed 😁) while running almost 15+ more or less heavy apps. This is what a OS and hardware harmony should look like. Thanks to the new MacBook I was able to run a Windows 11 (ARM64) VM without any problems using the fantastic open-source and macOS specific UTM application that uses Apple's native APIs (e.g. “Metal“ for rendering) and makes VMs run almost faster than if installed bare metal.
But enough of the engineering enthusiasm. Even though the theme was working for Visual Studio version later than Preview 3 (including stable releases) by patching the theme with the VS theme converter, this was not the way to go for many non-technical users and I was spammed with annoying "pls fix theme" reports through multiple communication channel like email and rating comments on the marketplace. To mitigate this and make the theme available for the ready quantity for testing and feedback I've uploaded extension version 0.2.1 which is enabled for the global theme selector. Please note that the theme is still in the early development phase and things might change at any time. The repository with the code will be made public when I have a good feeling that the project is ready to be released for further development by the community without me having to worry about spending hours answering questions about known problems that should be clear for beta versions.
Of course, that doesn't mean that I don't expect any feedback here, but rather that I always welcome technical and constructive criticism and hope that this long-awaited theme will live up to your expectations and whishes.


BeamNG.research Connection problem

I just downloaded (via SVN) the BeamNG.research repository.
https://projects.beamng.com/projects/research/files is empty. In a conda enviroment I installed BeamNGpy via pip install beamngpy.
When I try the example code with west_coast_usa, BeamNG starts but after a short time it threws the following error:
055.319|D|GELua.scenario_scenarios.scenarios|should run: false; state: running                                          055.322|E|GELua.core_levels.levels|info.json missing: /levels/garage/info.json                                          055.325|E|GELua.core_levels.levels|No entry point for level found: /levels/garage. Ignoring level.                      055.442|E|GELua.ResearchCom|Error reading from socket: closed                                                           055.472|E|GELua.core_levels.levels|info.json missing: /levels/garage/info.json                                          055.473|E|GELua.core_levels.levels|No entry point for level found: /levels/garage. Ignoring level.                      055.613|E|libbeamng.lua.V.ResearchCom|Error reading from socket: closed                                                 057.143|I|libbeamng.lua.V.ResearchVE|Trying to connect to: localhost:64257                                              059.355|I|libbeamng.lua.V.ResearchVE|Could not connect...                                                               060.001|I|GELua.util_researchGE.ResearchGE|Trying to connect to: localhost:64256                                        062.317|I|GELua.util_researchGE.ResearchGE|Could not connect...                                                         063.386|I|libbeamng.lua.V.ResearchVE|Trying to connect to: localhost:64257                                              065.533|I|libbeamng.lua.V.ResearchVE|Could not connect...                                                               065.735|I|GELua.util_researchGE.ResearchGE|Trying to connect to: localhost:64256                                        067.760|I|GELua.util_researchGE.ResearchGE|Could not connect...                                                         074.911|I|GELua.util_researchGE.ResearchGE|Trying to connect to: localhost:64256
What could be the problem?

Hi,
"https://projects.beamng.com/projects/research/files is empty." this is always been the case. The correct files are under: https://projects.beamng.com/projects/research/repository/show/trunk
Regarding "055.442|E|GELua.ResearchCom|Error reading from socket: closed", it's a wild guess but did you check if you have firewall rules which prevent opening sockets from python?

Hey, thanks for the answer
At the bottom of the beamng research homepage under DOWNLOAD it has a link to https://projects.beamng.com/projects/research/files  ...so that should maybe be changed
I will check my firewall

Hi, I am facing the same problem. Can you please help me solve it?

In my case it connects for the first time and then cannot connect
029.612|I|libbeamng.lua.V.ResearchVE|Trying to connect to: localhost:64257
031.627|I|libbeamng.lua.V.ResearchVE|Connected!
031.630|I|GELua.util_researchGE.ResearchGE|Setting engine flags!
031.662|D|GELua.scenario_scenarios.scenarios|changeState: running
031.663|D|GELua.core_camera.|Camera switched to "orbit"
031.712|E|GELua.core_levels.levels|info.json missing: /levels/garage/info.json
031.713|E|GELua.core_levels.levels|No entry point for level found: /levels/garage. Ignoring level.
031.714|E|GELua.core_levels.levels|info.json missing: /levels/GridMap/info.json
031.715|E|GELua.core_levels.levels|No entry point for level found: /levels/GridMap. Ignoring level.
031.819|E|GELua.ResearchCom|Error reading from socket: closed
031.874|E|libbeamng.lua.V.ResearchCom|Error reading from socket: closed

yeah,my problem is exactly the same as yours.
043.818|I|libbeamng.lua.V.ResearchVE|Trying to connect to: localhost:64257
045.843|I|libbeamng.lua.V.ResearchVE|Connected!
045.847|I|GELua.util_researchGE.ResearchGE|Setting engine flags!
045.879|D|GELua.scenario_scenarios.scenarios|changeState: running
045.880|D|GELua.core_camera.|Camera switched to "orbit"
045.940|E|GELua.core_levels.levels|info.json missing: /levels/garage/info.json
045.942|E|GELua.core_levels.levels|No entry point for level found: /levels/garage. Ignoring level.
045.944|E|GELua.core_levels.levels|info.json missing: /levels/smallgrid/info.json
045.947|E|GELua.core_levels.levels|No entry point for level found: /levels/smallgrid. Ignoring level.
045.974|E|GELua.ResearchCom|Error reading from socket: closed
045.981|E|libbeamng.lua.V.ResearchCom|Error reading from socket: closed
048.730|I|libbeamng.lua.V.ResearchVE|Trying to connect to: localhost:64257
052.758|I|libbeamng.lua.V.ResearchVE|Could not connect...
------------------ 原始邮件 ------------------
发件人<EMAIL_ADDRESS>发送时间: 2019年10月22日(星期二) 晚上7:15
收件人<EMAIL_ADDRESS>抄送<EMAIL_ADDRESS><EMAIL_ADDRESS>主题: Re: [BeamNG/BeamNGpy] BeamNG.research Connection problem (#28)
In my case it connects for the first time and then cannot connect
029.612|I|libbeamng.lua.V.ResearchVE|Trying to connect to: localhost:64257
031.627|I|libbeamng.lua.V.ResearchVE|Connected!
031.630|I|GELua.util_researchGE.ResearchGE|Setting engine flags!
031.662|D|GELua.scenario_scenarios.scenarios|changeState: running
031.663|D|GELua.core_camera.|Camera switched to "orbit"
031.712|E|GELua.core_levels.levels|info.json missing: /levels/garage/info.json
031.713|E|GELua.core_levels.levels|No entry point for level found: /levels/garage. Ignoring level.
031.714|E|GELua.core_levels.levels|info.json missing: /levels/GridMap/info.json
031.715|E|GELua.core_levels.levels|No entry point for level found: /levels/GridMap. Ignoring level.
031.819|E|GELua.ResearchCom|Error reading from socket: closed
031.874|E|libbeamng.lua.V.ResearchCom|Error reading from socket: closed
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or unsubscribe.

I tried
1- turning off firewalls
2- running it as administrator
3- freeing all ports
None of above worked

Hi @oooooverflow and @autonomobil, I solved the problem using the windows powershell. it does not work if you run it from cmd.
If you write the commands on powershell it works perfectly fine!

The game is running perfectly when python script is executing.
So simplest solution that worked for me is add  time.sleep(99999) to the end of the main python script.

@vladimirwest Can you please describe where exactly did you add time.sleep() ?
I tried adding it inside def main() function, but still it is not working.


Suggestion to make type in @param and similar tags optional

Curently the type in @param and @return decalaration is required. But the type is often specified in function signature, and it causes unnecessary duplication. Duplication is bad because it increases code size, declarations can become inconsistent, and it becomes more difficult to edit the code:
/**
* @param int $persons Number of people booking a room
* @return int A room price per night in euros
*/
function calculateRoomPrice(int $persons): int

I suggest to make type specification optional if the description is present, so that @param can be used only to add a description: @param $persons Number of people booking a room. Type declaration should be optional even if there is no type hint because it is not required in PHP:
/** @param $age User's age */
function canSeeContent($age)

For consistency, I suggest to allow omitting type in @var, @property, @throws and @return declaration if it has a description:
/** @var * Price before any discounts and taxes are applied */
private $price;

/** @return * Final price after discounts are applied */
public function calculateFinalPrice(): int

The star is used instead of type declaration so that the word "Price" is not interpreted as a type. As an alternative, we could use other character, like - or a dot . which is easier to type because one doesn't have to press Shift key:
@var * Price before discounts are applied
@var - Price before discounts are applied
@var . Price before discounts are applied

If this proposal is accepted, I could later try to find time and make necessary changes in the code and documentation.

@codedokode you'll need to make this suggestion on the php-fig ML in order to get it into discussion -- https://groups.google.com/forum/#!forum/php-fig
If it is adopted by the PSRs, then phpDocumentor will most certainly cater to it.


Encrypting Text using SHA256

Aim
Encrypting Text using SHA256
Details
In this code module, I will be building a GUI based application that will be encoding the text using an SHA-256 algorithm, and also be generating the hash which will be used for the decryption of the text.

We already have this script: https://github.com/avinashkranjan/Amazing-Python-Scripts/tree/master/Cryptography


Event exists in W1, but not in DE nor AT.

Talking about event "OnBeforeInsertInvLineFromShptLineBeforeInsertTextLine" in TAB111.
The problem is in NAV2018 CU8
in BC, it seems to exist - so I don't know if this can be backported to all localizations of NAV2018, so they are in line with its W1.

No, we are not backporting events to NAV 2018.

This is not backporting.  You already have the event in W1 in NAV2018.  Just not in the localizations.

This has been implemented and will be available in master images soon.


Better Channel Name Handling

Requested Feature (Write the feature you want under this):
Channel name handling should be upgraded in the backend. Channel names vary further than the five given, so keywords should be handled properly.
Reason for Feature (Write the reason for your new feature here):
There are more channel names which servers use for bot commands further than the ones which have been assigned.
Additional Notes (Any additional notes about your request):
Channel names include emojis or extra characters, so keywords like 'bot-commands' should be handled better (for loops most probably).

Worked through this, testing will come on release day as the fix is minor. Reverting the changes and pushing this feature back is possible.


Skip gcp and azure e2e tests to add CI jobs

Add the possibility to skip e2e test for some cloud providers. This can be used later in case of known issues with some providers but most of the time it has to be left unused.
For now, we need it to be able to add CI jobs for GCP and Azure.
GCP e2e is already added but it's still failing so we need to disable it and add the CI job (what we should have done form the very beginning).

/lgtm


Updated dependabot alert dependencies

Resolves #852
The elliptic package used by @ethersproject/signing-key and its dependencies (e.g., ethers, near-social-vm) has no fix available yet. We will have to wait for an upstream fix for now.

@race-of-sloths score 1

@Tguntenaar Thank you for your contribution! Your pull request is now a part of the Race of Sloths!
Great job! Usain Bolt jealous of your results!

Current status: waiting for scoring
We're waiting for maintainer to score this pull request with @race-of-sloths score [0,1,2,3,5,8,13] command. Alternatively, autoscoring [1,2] will be applied for this pull request
What is the Race of Sloths

Race of Sloths is a friendly competition where you can participate in challenges and compete with other open-source contributors within your normal workflow
For contributors:

Tag @race-of-sloths inside your pull requests
Wait for the maintainer to review and score your pull request
Check out your position in the Leaderboard
Keep weekly and monthly streaks to reach higher positions
Boast your contributions with a dynamic picture of your Profile

For maintainers:

Score pull requests that participate in the Race of Sloths
Engage contributors with fair scoring and fast responses so they keep their streaks
Promote the Race to the point where the Race starts promoting you
Grow the community of your contributors

Feel free to check our website for additional details!

Bot commands

For contributors

Include a PR: @race-of-sloths include to enter the Race with your PR

For maintainers:

Invite contributor @race-of-sloths invite to invite the contributor to participate in a race or include it, if it's already a runner.
Assign points: @race-of-sloths score [1/2/3/5/8/13] to award points based on your assessment.
Reject this PR: @race-of-sloths exclude to send this PR back to the drawing board.
Exclude repo: @race-of-sloths pause to stop bot activity in this repo until @race-of-sloths unpause command is called


[WIP] Adding pg_cron

Current questions:

What to do if commit/rollback is called while another commit/rollback is running? I'm thinking to throw an error saying a transaction is already happening.
What should be the cron time? It will be a param to be tuned but I think 2 mins are good enough but is true that if a lot of changes are stacked commit could take longer, but it is also true that if we block if another commit is in progress it does not matter that much.

Current questions:
* What to do if commit/rollback is called while another commit/rollback is running? I'm thinking to throw an error saying a transaction is already happening.

I think that's a good solution, but I do wonder if we could somehow have rollback override commit, so someone can cancel a bad change. However to accomplish that we can't have rollback just be a sync under the hood, because some of the changes they may be trying to roll back might already be in the cloud, so definitely not something to tackle for now (we'd need to log the transaction start time and undo all DB and cloud changes in the mean time).

* What should be the cron time? It will be a param to be tuned but I think 2 mins are good enough but is true that if a lot of changes are stacked commit could take longer, but it is also true that if we block if another commit is in progress it does not matter that much.

Definitely should be tunable. How easily can we update the cron time? Perhaps we can have the cron job potentially set its own interval at the end of its run.
For now a decent not-too-slow wait time makes sense, so the 2 minute default sounds good to me. I assumed the implementation was going to be a set of postgres functions defined in the sql/after_install.sql section of the iasql_functions module, and was going to suggest that the cron job itself does the check that no cron is currently running before running the iasql_commit function. But if it sees one running, just before exiting it doubles the cron interval. And similarly when it finishes it uses the total execution time and the current interval to come up with a new interval between the two (except if it was a no-op commit run with no changes found, in which case it also doubles the interval up to some maximum interval time to reduce useless load).
I figured that the engine itself should have no direct control over this (especially since in the near future the engine will be a pool of node processes getting directives via pg_http rather than a singleton worker process like it is now).

For now a decent not-too-slow wait time makes sense, so the 2 minute default sounds good to me. I assumed the implementation was going to be a set of postgres functions defined in the sql/after_install.sql section of the iasql_functions module, and was going to suggest that the cron job itself does the check that no cron is currently running before running the iasql_commit function. But if it sees one running, just before exiting it doubles the cron interval. And similarly when it finishes it uses the total execution time and the current interval to come up with a new interval between the two (except if it was a no-op commit run with no changes found, in which case it also doubles the interval up to some maximum interval time to reduce useless load).

That was my thought first, to make the cron fns part of the iasql_functions after install script, but as far as i understood there's a limitation with pg_cron not being able to be configured over multiple databases at the same time (it is a postgres.conf parameter), but need to be defined in one db and then you are able to schedule jobs over other databases. Look at this issue. So thats why I decided making it part of the main database.

For now a decent not-too-slow wait time makes sense, so the 2 minute default sounds good to me. I assumed the implementation was going to be a set of postgres functions defined in the sql/after_install.sql section of the iasql_functions module, and was going to suggest that the cron job itself does the check that no cron is currently running before running the iasql_commit function. But if it sees one running, just before exiting it doubles the cron interval. And similarly when it finishes it uses the total execution time and the current interval to come up with a new interval between the two (except if it was a no-op commit run with no changes found, in which case it also doubles the interval up to some maximum interval time to reduce useless load).

That was my thought first, to make the cron fns part of the iasql_functions after install script, but as far as i understood there's a limitation with pg_cron not being able to be configured over multiple databases at the same time (it is a postgres.conf parameter), but need to be defined in one db and then you are able to schedule jobs over other databases. Look at this issue. So thats why I decided making it part of the main database.

I see. However I think we can still get all of the way there with some slight changes.

pg_cron is set up to run in the metadata database, perhaps via a migration on that central database.
We create the functions in iasql_functions with a special dblink to the metadata database to make the changes, but make sure they can only add/edit/delete a singular row (similar to the logic you currently have where the job name includes the database name).

I think that's a good solution, but I do wonder if we could somehow have rollback override commit, so someone can cancel a bad change. However to accomplish that we can't have rollback just be a sync under the hood, because some of the changes they may be trying to roll back might already be in the cloud, so definitely not something to tackle for now (we'd need to log the transaction start time and undo all DB and cloud changes in the mean time).

That would be awesome but yes, I think that's a future improvement we can do.

Definitely should be tunable. How easily can we update the cron time? Perhaps we can have the cron job potentially set its own interval at the end of its run.

Should not be that difficult, we could either unschedule and schedule again the job or we could use the cron.alter_job. I guess the last one should work for this scenario. And we can imporve doing what you suggested, updating the cron automatically based on usage to reduce useless loads.


As a developer, I want to carefully define the ADDR_IValidator interface before making it global

We should build some services, test it for some time, and make adjustments until we are comfortable that we can make it global.
Once it's global the community can create additional services.

**lurch: attach W-007310

Tracking W-007310

This should include testing framework for it as well so a user implementation can properly return the correct mocks, etc.

This has been marked as "Never" internally.