290 blinking leds

This change is

Reviewed 55 of 55 files at r1.
Review status: all files reviewed at latest revision, 11 unresolved discussions.

lm/ch04/ex05.cpp, line 31 at r1 (raw file):

{
    std::string input{"12.0 ^ 14.1"};
    auto expression = lm::Expression(input);

what is the point of this change?

lz/290_blinking_leds/main.cpp, line 3 at r1 (raw file):

#include "BlinkingLeds.hpp"

int main()

it would be nice to be able to load input file as command line argument

lz/290_blinking_leds/Private/BlinkingLeds.cpp, line 13 at r1 (raw file):

{
int BlinkingLeds::run()
{

If the function contains only try-catch block, you can omit the outer braces. This is a purely aesthetic choice, just letting you know. ;-)

lz/290_blinking_leds/Private/EnumClassHash.hpp, line 5 at r1 (raw file):

namespace utils
{
struct EnumClassHash

is it really a hash?

lz/290_blinking_leds/Private/LedSimulation.cpp, line 24 at r1 (raw file):

    std::istream_iterator<char> it(input);
    std::string sentence(it, std::istream_iterator<char>{});
    std::istringstream iss(sentence);

Isn't this redundant? it seems like you could do std::copy straight from input instead of copying it to string, then to local stream. Or is some magic happening between the lines here? ;-)

lz/290_blinking_leds/Private/LedSimulation.cpp, line 25 at r1 (raw file):

    std::string sentence(it, std::istream_iterator<char>{});
    std::istringstream iss(sentence);
    std::copy(std::istream_iterator<std::string>{iss},

BTW does iteratorstd::string split the stream into lines by default? or do you get this behavior in some other way?

lz/290_blinking_leds/Private/LedToken.cpp, line 41 at r1 (raw file):

template <>
std::pair<std::string, std::string> LedToken::split(const Delimiter& del) const

FYI It seems like there should be a library function for this - this one seems right. But I'm not sure if it'd be possible to get a std::pair without an intermediate step, so not using it may be a legitimate design decision.

lz/290_blinking_leds/Private/LedToken.hpp, line 14 at r1 (raw file):

    LedToken(std::string);
    LedToken(const LedToken&);

This seems to violate the rule of 5. In this case it seems like the default generated operations would do just fine.

lz/290_blinking_leds/Private/Register.hpp, line 6 at r1 (raw file):

namespace lz
{
class Register

The name of this class seems to me somewhat misleading. Register is more of a memory location, then the value in that location, whereas here it seems represent the value.

lz/290_blinking_leds/Test/LedOutStateTest.cpp, line 14 at r1 (raw file):

using namespace ::testing;

static std::unordered_map<std::int8_t, std::string> test_out{

Does this test your code? Because - at first glance - it seems to be testing std::bitset more than your code... BTW, did you write the 256 entries by hand or did you generate them by some script? Because either one is impressive... in it's own way... :P

lz/290_blinking_leds/Test/LedSimulationFsmTest.cpp, line 22 at r1 (raw file):

    void expectCreateFactory()
    {
        EXPECT_CALL(factory, _createRecognizeState())

This seems to violate the Law of Demeter - mocks that return other mocks are usually a dead giveaway. The LedSimulationFsm does not need to know about memory at all, because all it does with it, is to pass it to states through the factory class. Also, factories for anything other then the top-level objects are almost always workarounds - unless you're working with legacy code or have some other overriding concerns, you should only have factories for the top-level objects, where all the dependencies are initialized with their dependencies and injected into the final object. In this case, you could consider injecting states through the LedSimulationFsm constructor, creating LedSimulationFsm factory where you inject shared_ptr to memory to each state, and not letting the LedSimulationFsm know that such class as Memory even exists.

Comments from Reviewable

I'm somewhat concerned with modeling the solution as a state machine. Fsm seems to have all the responsibility for the execution of the program, whereas there seem to be at least two distinct steps here - assembly and running the code. Obviously, I'm influenced here by my own design, so I'm aiming for a discussion here and not for making a definite statement. :-)

Review status: all files reviewed at latest revision, 7 unresolved discussions.

Comments from Reviewable

When I saw this exercise my first thought was "It looks like Turing machine". I had to try to create my own fsm :)
I treat it only as an experiment, I didn't think about creating the best solution.

Review status: all files reviewed at latest revision, 11 unresolved discussions, some commit checks failed.

lm/ch04/ex05.cpp, line 31 at r1 (raw file):
Previously, lukasz-m-maciejewski (Łukasz Maciejewski) wrote…
> what is the point of this change?

Because before the rvalue has been passed into constructor, what  it means that after construction the temporary value has been destroyed. However the lm::Expression saves reference of constructor's argument in own private member (dangling reference).
You had unpredictable behaviour here.

lz/290_blinking_leds/main.cpp, line 3 at r1 (raw file):
Previously, lukasz-m-maciejewski (Łukasz Maciejewski) wrote…
> it would be nice to be able to load input file as command line argument

Why ? Explicit redirect file into binary isn't sufficient? (i.e binary < input.txt)

lz/290_blinking_leds/Private/BlinkingLeds.cpp, line 13 at r1 (raw file):
Previously, lukasz-m-maciejewski (Łukasz Maciejewski) wrote…
> If the function contains only try-catch block, you can omit the outer braces. This is a purely aesthetic choice, just letting you know. ;-)

Good point. I have always forgetting about it. Done.

lz/290_blinking_leds/Private/EnumClassHash.hpp, line 5 at r1 (raw file):
Previously, lukasz-m-maciejewski (Łukasz Maciejewski) wrote…
> is it really a hash?

I haven't used it now, however it can be used as std::unorder_map hash algorithm but only if all enum value are different.

lz/290_blinking_leds/Private/LedSimulation.cpp, line 24 at r1 (raw file):
Previously, lukasz-m-maciejewski (Łukasz Maciejewski) wrote…
> Isn't this redundant? it seems like you could do std::copy straight from input instead of copying it to string, then to local stream. Or is some magic happening between the lines here? ;-)

Firstly I need to have all message from istream. Since std::istream is alias of basic_stream, I found only one way to do it. It is a copy char by char without skipping the whitespaces to string.
If you have any idea how to do it simpler I will appreciate it :)

lz/290_blinking_leds/Private/LedSimulation.cpp, line 25 at r1 (raw file):
Previously, lukasz-m-maciejewski (Łukasz Maciejewski) wrote…
> BTW does iterator split the stream into lines by default? or do you get this behavior in some other way?

Iterator of stringstream is jumping from one string to another omitting whitespaces by default. (I.e. having input "a b c d e f" I will get the list {a, b, c, d, f})

lz/290_blinking_leds/Private/LedToken.cpp, line 41 at r1 (raw file):
Previously, lukasz-m-maciejewski (Łukasz Maciejewski) wrote…
> FYI It seems like there should be a library function for this - [this one](http://www.boost.org/doc/libs/1_62_0/doc/html/boost/algorithm/split_idm46563496423904.html) seems right. But I'm not sure if it'd be possible to get a std::pair without an intermediate step, so not using it may be a legitimate design decision.

I must admit that I really forgot about boost::split.
I will consider it.

lz/290_blinking_leds/Private/LedToken.hpp, line 14 at r1 (raw file):
Previously, lukasz-m-maciejewski (Łukasz Maciejewski) wrote…
> This seems to violate the [rule of 5](http://en.cppreference.com/w/cpp/language/rule_of_three). In this case it seems like the default generated operations would do just fine.

Good point.

lz/290_blinking_leds/Test/LedOutStateTest.cpp, line 14 at r1 (raw file):
Previously, lukasz-m-maciejewski (Łukasz Maciejewski) wrote…
> Does this test your code? Because - at first glance - it seems to be testing std::bitset more than your code... BTW, did you write the 256 entries by hand or did you generate them by some script? Because either one is impressive... in it's own way... :P

Yes, it is testing my code :)
I want to validate that my code used std::bitset in proper way. It was easier for me to test it by this way than creating facade for std::bitset.
I am not so crazy to write it by hand xD. Of course that I have generated it.

lz/290_blinking_leds/Test/LedSimulationFsmTest.cpp, line 22 at r1 (raw file):
Previously, lukasz-m-maciejewski (Łukasz Maciejewski) wrote…
> This seems to violate the [Law of Demeter](https://en.wikipedia.org/wiki/Law_of_Demeter) - mocks that return other mocks are usually a dead giveaway. The LedSimulationFsm does not need to know about memory at all, because all it does with it, is to pass it to states through the factory class. Also, factories for anything other then the top-level objects are almost always workarounds - unless you're working with legacy code or have some other overriding concerns, you should only have factories for the top-level objects, where all the dependencies are initialized with their dependencies and injected into the final object. In this case, you could consider injecting states through the LedSimulationFsm constructor, creating LedSimulationFsm factory where you inject shared_ptr to memory to each state, and not letting the LedSimulationFsm know that such class as Memory even exists.

Good point.

Comments from Reviewable

lz/290_blinking_leds/Private/LedSimulation.cpp, line 24 at r1 (raw file):
Previously, Abergard (Lukass) wrote…
> Firstly I need to have all message from istream. Since std::istream is alias of basic_stream, I found only one way to do it. It is a copy char by char without skipping the whitespaces to string.
>
> If you have any idea how to do it simpler I will appreciate it :)

alias of basic_stream*

Comments from Reviewable

Review status: all files reviewed at latest revision, 9 unresolved discussions, some commit checks failed.

lz/290_blinking_leds/Public/BlinkingLeds.hpp, line 8 at r1 (raw file):

{
public:
    static int run();

Do you need to create class for one static function? Would just namespace be better?

lz/290_blinking_leds/Test/MemoryTest.cpp, line 6 at r1 (raw file):

namespace lz
{
TEST(MemoryTest, setAndGetRegister)

This test for me looks like not enough to test Memory, I can write below class, which also will pass your test, but you whole program will not work.
class Memory
{
public:
void set_register_a(const Register &) const
{
}
Register get_register_a() const
{
return {255};
}
};

Comments from Reviewable

Review status: all files reviewed at latest revision, 10 unresolved discussions, some commit checks failed.

lz/290_blinking_leds/Private/LedOutState.cpp, line 21 at r1 (raw file):

    const auto splitted = token.split<std::string, std::string>(',');

    Expects(splitted.first == "(0)");

I would consider to split validation from execution (at least no function level)

Comments from Reviewable

Reviewed 55 of 55 files at r1.
Review status: all files reviewed at latest revision, 10 unresolved discussions, some commit checks failed.

Comments from Reviewable

Review status: all files reviewed at latest revision, 6 unresolved discussions, some commit checks failed.

lz/290_blinking_leds/main.cpp, line 3 at r1 (raw file):
Previously, Abergard (Lukass) wrote…
> Why ? Explicit redirect file into binary isn't sufficient? (i.e binary < input.txt)

It's good to have both options... but it'd be weird to do
"java < program.jar", for example. ;-)

lz/290_blinking_leds/Private/LedSimulation.cpp, line 24 at r1 (raw file):
Previously, Abergard (Lukass) wrote…
> alias of basic_stream*

I've used the
``` C++
for(std::string line; std::getline(input, line);)
{
// stuff
}
```
construct in this context and then processed the input line by line. I'm still unsure how do you split your input into lines... or do you do it at all...

Comments from Reviewable

Review status: all files reviewed at latest revision, 5 unresolved discussions, some commit checks failed.

lz/290_blinking_leds/Test/MemoryTest.cpp, line 8 at r1 (raw file):

TEST(MemoryTest, setAndGetRegister)
{
    Memory memory{};

FYI testing reviewable features

Comments from Reviewable

Review status: all files reviewed at latest revision, 7 unresolved discussions, some commit checks failed.

lz/290_blinking_leds/Private/LedOutState.cpp, line 27 at r1 (raw file):

                                                                            '*')
              << "\n";

FYI test 2

lz/290_blinking_leds/Private/LedOutState.cpp, line 28 at r1 (raw file):

              << "\n";

    return LedTokenState::Recognize;

Test1

Comments from Reviewable

Review status: all files reviewed at latest revision, 7 unresolved discussions, some commit checks failed.

lz/290_blinking_leds/Private/LedOutState.cpp, line 28 at r1 (raw file):
Previously, kn65op (Tomasz Drzewiecki) wrote…
> Test1

Ok.

Comments from Reviewable

Review status: all files reviewed at latest revision, 7 unresolved discussions, some commit checks failed.

lz/290_blinking_leds/Private/LedOutState.cpp, line 21 at r1 (raw file):
Previously, kn65op (Tomasz Drzewiecki) wrote…
> I would consider to split validation from execution (at least no function level)

Did you mean to create public function to validate input first before parse? In my opinion it is not necessary here, but I can encapsulate it to private function.

lz/290_blinking_leds/Private/LedOutState.cpp, line 27 at r1 (raw file):
Previously, kn65op (Tomasz Drzewiecki) wrote…
> FYI test 2

Done.

lz/290_blinking_leds/Private/LedOutState.cpp, line 28 at r1 (raw file):
Previously, kn65op (Tomasz Drzewiecki) wrote…
> Ok.

Done.

lz/290_blinking_leds/Private/LedSimulation.cpp, line 24 at r1 (raw file):
Previously, lukasz-m-maciejewski (Łukasz Maciejewski) wrote…
> I've used the
> ``` C++
> for(std::string line; std::getline(input, line);)
> {
> // stuff
> }
> ```
> construct in this context and then processed the input line by line. I'm still unsure how do you split your input into lines... or do you do it at all...

I am not splitting it by line but by spaces. In my implementation I resigned with validating input. You can write all in one line and my implementation will work too.

lz/290_blinking_leds/Private/Register.hpp, line 6 at r1 (raw file):
Previously, lukasz-m-maciejewski (Łukasz Maciejewski) wrote…
> The name of this class seems to me somewhat misleading. Register is more of a memory location, then the value in that location, whereas here it seems represent the value.

From what I know the register is very fast but not large chunk of memory, not a location of memory. We can write and read to/from register. I don't understand why my implementation is inadequate in your opinion.

lz/290_blinking_leds/Public/BlinkingLeds.hpp, line 8 at r1 (raw file):
Previously, kn65op (Tomasz Drzewiecki) wrote…
> Do you need to create class for one static function? Would just namespace be better?

I don't need but I wanted to have it encapsulated.

lz/290_blinking_leds/Test/MemoryTest.cpp, line 6 at r1 (raw file):
Previously, kn65op (Tomasz Drzewiecki) wrote…
> This test for me looks like not enough to test Memory, I can write below class, which also will pass your test, but you whole program will not work.
> class Memory
> {
> public:
> void set_register_a(const Register &) const
> {
> }
> Register get_register_a() const
> {
> return {255};
> }
> };

Done.

lz/290_blinking_leds/Test/MemoryTest.cpp, line 8 at r1 (raw file):
Previously, lukasz-m-maciejewski (Łukasz Maciejewski) wrote…
> FYI testing reviewable features

Done.

Comments from Reviewable

Review status: all files reviewed at latest revision, 6 unresolved discussions, some commit checks failed.

lz/290_blinking_leds/Private/Register.hpp, line 6 at r1 (raw file):
Previously, Abergard (Lukass) wrote…
> From what I know the register is very fast but not large chunk of memory, not a location of memory. We can write and read to/from register. I don't understand why my implementation is inadequate in your opinion.

Not "location of memory", but a place.  And you seem use the name Register for a value stored in register.  Or am I reading this wrong?

Comments from Reviewable

Review status: all files reviewed at latest revision, 6 unresolved discussions, some commit checks failed.

lz/290_blinking_leds/Private/Register.hpp, line 6 at r1 (raw file):
Previously, lukasz-m-maciejewski (Łukasz Maciejewski) wrote…
> Not "location of memory", but a place.  And you seem use the name Register for a value stored in register.  Or am I reading this wrong?

OK I will rethink name of this class and yes I use Register like value.

Comments from Reviewable

Review status: all files reviewed at latest revision, 3 unresolved discussions, some commit checks failed.

lz/290_blinking_leds/Private/LedOutState.cpp, line 21 at r1 (raw file):
Previously, Abergard (Lukass) wrote…
> Did you mean to create public function to validate input first before parse? In my opinion it is not necessary here, but I can encapsulate it to private function.

Should be (at least on function level) and by this I meant private functions.

lz/290_blinking_leds/Public/BlinkingLeds.hpp, line 8 at r1 (raw file):
Previously, Abergard (Lukass) wrote…
> I don't need but I wanted to have it encapsulated.

OK

lz/290_blinking_leds/Test/MemoryTest.cpp, line 6 at r1 (raw file):
Previously, Abergard (Lukass) wrote…
> Done.

OK

Comments from Reviewable

Review status: all files reviewed at latest revision, 1 unresolved discussion, some commit checks failed.

Comments from Reviewable

Reviewed 25 of 28 files at r2.
Review status: all files reviewed at latest revision, all discussions resolved, some commit checks failed.

Comments from Reviewable

Reviewed 1 of 1 files at r3.
Review status: all files reviewed at latest revision, all discussions resolved.

Comments from Reviewable


Unable to paste any PAD scripts which contain a Function

I have tried all of your PAD flows and any of them which contain a FUNCTION I am not able to paste into PAD. The Subflows which do not contain a FUNCTION paste into PAD fine.
There is no feedback from PAD, so I don't know if it is an issue with PAD or the Flow text or what, but the only reference I found about this issue occurring is here - https://powerusers.microsoft.com/t5/Power-Automate-Desktop/Ability-to-paste-script-within-Power-Automate-Desktop/td-p/2158401
Maybe an issue with the current version of PAD (2.39.306.23341)?

Can you ping me on discord in the PMM server and we can troubleshoot it there.

From: Dragonsys @.>
Sent: Sunday, January 21, 2024 1:42:19 PM
To: bullmoose20/Plex-Stuff @.>
Cc: Subscribed @.***>
Subject: [bullmoose20/Plex-Stuff] Unable to paste any PAD scripts which contain a Function (Issue #21)
I have tried all of your PAD flows and any of them which contain a FUNCTION I am not able to paste into PAD. The Subflows which do not contain a FUNCTION paste into PAD fine.
There is no feedback from PAD, so I don't know if it is an issue with PAD or the Flow text or what, but the only reference I found about this issue occurring is here - https://powerusers.microsoft.com/t5/Power-Automate-Desktop/Ability-to-paste-script-within-Power-Automate-Desktop/td-p/2158401
Maybe an issue with the current version of PAD (2.39.306.23341)?
—
Reply to this email directly, view it on GitHubhttps://github.com/bullmoose20/Plex-Stuff/issues/21, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AC7XXKL4P7VYKJQP6LBBJMTYPVOQXAVCNFSM6AAAAABCEFSAA6VHI2DSMVQWIX3LMV43ASLTON2WKOZSGA4TENZRGQYTANA.
You are receiving this because you are subscribed to this thread.Message ID: @.***>

dixed


Confusing update notification?

Hi, in the hassio dashboard I just received a confusing notification, announcing 0.92.3 availability while having 0.93.1 installed.
Maybe it's only a typo and 0.92.3 should be 0.93.2, however I signal this as it may hide somewhere an error or a missing check.
Piero

This was a typo/incident.
Hass.io determines if an upgrade is available by checking if the current version doesn't match the latest version from the upstream server (even if it is a downgrade/rollback).


DrawerLayoutAndroid - TouchableOpacity still touchable on the scene when drawer open

This doesn't happen with TouchableNativeFeedback, but still seems to happen with TouchableOpacity.
The pressIn handler is being triggered in my scenes when the nav drawer is open. However it does also close the nav drawer. Here's an example.

I show the button performing a custom ripple like normal, and as expected.
I open the drawer, the button is still touchable in the background... and onPressIn is called, but not onPressOut.

Code for the button is:
            <TouchableOpacity
                ref='container'
                activeOpacity={1}
                onPress={onPress}
                onLongPress={onLongPress}
                onPressIn={this._highlight}
                onPressOut={this._unHighlight}
            >
                <View
                    style={style || {}}
                    elevation={elevation ? elevation : 0}
                >
                    <Animated.View  style={[
                        styles.background, {
                            backgroundColor: rippling ? rippleColor : 'transparent',
                            opacity: fadeValue,
                        }
                    ]}/>
                    <Animated.View style={[
                        styles.ripple,
                        location &&
                            {
                                backgroundColor: rippleColor,
                                width: size,
                                height: size,
                                top: pageY - location.pageY - size / 2,
                                left: pageX - location.pageX - size / 2,
                                borderRadius: size / 2
                            },
                        {
                            transform: [{ scale: scaleValue }]
                        }]}
                    />
                    {children}
                </View>
            </TouchableOpacity>

You could hook into the onDrawerOpen and onDrawerClose methods to set a flag which you could read in the handler for the touchable in the meantime

@Ehesp Any chance you tried the above suggestion or have any updates on the issue?

Well the above response isn't really a fix, it would work fine but it's not
very elegant.
Unfortunately not, it needs to be fixed at the core.
On 20 Mar 2016 21:41, "Christopher Dro"<EMAIL_ADDRESS>wrote:

@Ehesp https://github.com/Ehesp Any chance you tried the above
suggestion or have any updates on the issue?
—
You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub
https://github.com/facebook/react-native/issues/5249#issuecomment-199033334

@facebook-github-bot bug-fix

@facebook-github-bot bugfix

@facebook-github-bot label Help Wanted

It's not clear to me that this is a bug - it seems more like a case where the ideal solution is still inelegant. I'm going to close this issue, but I do think it sounds like something where we could improve. If someone has an idea for a PR to fix this then I encourage them to open a new "request for comment" type issue with their suggestions or just open a PR.


Show help pages on NAT configuration in case proxying fails

For the initial web store launch of uProxy, we will not support TURN relays between peers, and so some percentage of connections will fail due to NAT settings (usually estimated around 15% of pairs-of-users).  In the case of a peerconnection failing, we should include some information about NAT configuration.
TBD: how can we display this to the user?  Some options:

Include this in a FAQ page on uproxy.org, and reference the FAQ in the error notification.
Include this information somewhere within the uProxy app (possibly we will want the whole FAQ in the uProxy app as uproxy.org will not be an option for some users)

The UI should inform the user "proxying will not work because X.." and not just mysteriously fail.
For example in copy+paste, we get stuck on the redirect page: https://github.com/uProxy/uproxy/issues/996

Had a little brainstorm on this today...
There's a few ways things can fail...

No ice candidates at all (because there are no network interfaces) shouldn't be a problem in the short term as the user can't connect to a social network.
Ice does not get to the connected state. This indicates that the network configuration is not suitable for setting up a P2P connection.

Note: If no public IP addresses are returned, this indicates that the stun servers failed, or were blocked. This doesn't mean proxying will necessarily fail (e.g. a P2P connection can still be setup if the other side has an unrestricted full cone NAT, or no NAT). But in such situation we way want to tell the user to setup/change their STUN settings in the advanced section?

So, we think that the right time to raise a bad network setup is if ICE failed. This is something we should be giving back from socks-rtc and then the uproxy front-end can handle this and show the user an appropriate error.

Related action items:

Make Advanced Settings it's own page with a "Diagnose NAT" button: https://github.com/uProxy/uproxy/issues/1176
If proxying fails, allow the sharer to diagnose their NAT as well: https://github.com/uProxy/uproxy/issues/1203
Re: Lucas's comment, maybe we can rename this issue to "Instruct user to setup/change their STUN settings" if proxying fails.


Repeatedly disconnected from Chrome (mac)

Chrome recently updated on my mac, and I'm now running Chrome 44.0.2403 (Mac OS X 10.10.3) and have Karma v0.13.3. Sometimes all of my tests will run, but they start breaking when the test runner disconnects from Chrome:
Chrome 44.0.2403 (Mac OS X 10.10.3): Executed 14 of 218 SUCCESS (0 secs / 0.248 secs)
23 07 2015 09:49:14.059:WARN [Chrome 44.0.2403 (Mac OS X 10.10.3)]: Disconnected (1 times
Chrome 44.0.2403 (Mac OS X 10.10.3): Executed 14 of 218 DISCONNECTED (10.082 secs / 0.248
Chrome 44.0.2403 (Mac OS X 10.10.3): Executed 15 of 218 DISCONNECTED (10.082 secs / 1.015
Chrome 44.0.2403 (Mac OS X 10.10.3): Executed 16 of 218 DISCONNECTED (10.082 secs / 1.026
Chrome 44.0.2403 (Mac OS X 10.10.3): Executed 17 of 218 DISCONNECTED (10.082 secs / 1.063
Chrome 44.0.2403 (Mac OS X 10.10.3): Executed 18 of 218 DISCONNECTED (10.082 secs / 1.082

Is Chrome in the background or foreground when that happens?

In the background. This typically happens when I make changes to a code or test file in my IDE, causing the test run to fire.

To elaborate, I notice that the tests always seem to go through fine when I launch Karma, but every time a file change happens it starts running the tests and then hangs for a bit, and complains about a browser disconnect.
I'm also using some other components with Karma like code coverage. Here is my config file:
// Karma configuration
// Generated on Thu May 14 2015 15:11:29 GMT-0700 (PDT)

module.exports = function(config) {
  config.set({

    // base path that will be used to resolve all patterns (eg. files, exclude)
    basePath: '../..',

    // frameworks to use
    // available frameworks: https://npmjs.org/browse/keyword/karma-adapter
    frameworks: ['jasmine'],

    // list of files / patterns to load in the browser
    files: [

      ...
    (all of my code files here...)
      ...

      'assets/js/tests/*.js',

      // templates
      'templates/*.html'
    ],

    // list of files to exclude
    exclude: [
    ],

    // preprocess matching files before serving them to the browser
    // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
    preprocessors: {
        'templates/*.html': 'html2js',
        'assets/js/app/*.js': 'coverage'
    },

    coverageReporter: {
        type: 'html',
        dir: 'jscoverage/'
    },

    // test results reporter to use
    // possible values: 'dots', 'progress'
    // available reporters: https://npmjs.org/browse/keyword/karma-reporter
    reporters: ['progress', 'coverage'],

    // web server port
    port: 9876,

    // enable / disable colors in the output (reporters and logs)
    colors: true,

    // level of logging
    // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
    logLevel: config.LOG_INFO,

    // enable / disable watching file and executing tests whenever any file changes
    autoWatch: true,

    // start these browsers
    // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
    browsers: ['Chrome'],

    // Continuous Integration mode
    // if true, Karma captures browsers, runs the tests and exits
    singleRun: false
  });
};

I'm afraid that this is related to the great power savings on OS X + Chrome, can you try keeping the browser in the foreground (visibility is important) and see if it still happens?

Looks like that does the trick. It hasn't had any issues since I've kept it visible.

Also if I quickly bring the browser into the foreground while it hangs the tests complete successfully.

I can attest that I am also experiencing this issue. Focusing the Chrome window during the test run seems to be the only way to get it to complete. I've noticed this does not happen when only running a small number of tests (such as with ddescribe in Jasmine), but happens consistently when running my full unit test suite.
(OSX 10.10.4 + Chrome)

Same issue - but running chrome in the foreground does not help.
Versions:

OSX: 10.10.5
node: 4.2.4
karma: 0.13.22
karma-chrome-launcher: 0.2.3
karma-jasmine: 0.3.8
jasmine-core: 2.4.1

I've tried:

Heap profile during tests (results are normal)
xdescribeing tests - If I xdescribe any 30 (of our ~1500) tests, the suite passes

karma.conf.coffee:
module.exports = (config) ->
  config.set
    frameworks: [ "jasmine" ]
    files: [...]  # ~500 files
    exclude: [...]
    preprocessors: {
      '**/*.js': ['sourcemap']
    }
    reporters: ['mocha']
    mochaReporter:
      ignoreSkipped: yes
      autowatch: yes
    port: 9292
    colors: process.platform is 'darwin'
    logLevel: config.LOG_INFO
    autoWatch: true
    reportSlowerThan: 200
    browsers: ['Chrome']
    browserNoActivityTimeout: 100000
    captureTimeout: 60 * 1000
    singleRun: true
    captureConsole: true
    useIframe: false
    restartOnFileChange: true

We're using phantomjs now to run the tests anyway so that might also help as a workaround :)
https://github.com/karma-runner/karma-phantomjs-launcher

The solution posted by @bcherny seems to at least suppress the error, but the output is still quite funky:
PhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 11 of 11 SUCCESS (0.077 secs / 0.015 secs)
Safari 9.0.3 (Mac OS X 10.11.3): Executed 11 of 11 SUCCESS (0.074 secs / 0.012 secs)
Chrome 50.0.2661 (Mac OS X 10.11.3): Executed 11 of 11 SUCCESS (0.075 secs / 0.017 secs)
Firefox 42.0.0 (Mac OS X 10.11.0): Executed 11 of 11 SUCCESS (0.1 secs / 0.011 secs)
TOTAL: 44 SUCCESS
DEBUG [karma]: Run complete, exiting.
DEBUG [launcher]: Disconnecting all browsers
DEBUG [framework.browserify]: cleaning up
PhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 11 of 11 SUCCESS (0.077 secs / 0.015 secs)
Safari 9.0.3 (Mac OS X 10.11.3): Executed 11 of 11 DISCONNECTED (10.093 secs / 0.012 secs)
PhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 11 of 11 SUCCESS (0.077 secs / 0.015 secs)
Safari 9.0.3 (Mac OS X 10.11.3): Executed 11 of 11 DISCONNECTED (10.093 secs / 0.012 secs)
Chrome 50.0.2661 (Mac OS X 10.11.3): Executed 11 of 11 DISCONNECTED (10.094 secs / 0.017 secs)
Firefox 42.0.0 (Mac OS X 10.11.0): Executed 11 of 11 SUCCESS (0.1 secs / 0.011 secs)
INFO [karma]: Restarting Chrome 50.0.2661 (Mac OS X 10.11.3) (1 of 10 attempts)


Create the initial microservice skeleton

As a Developer
I need an initial microservice skeleton
So that we have something to start with and build upon
Details and Assumptions

[document what you know]

Acceptance Criteria
Given [some context]
When [certain action is taken]
Then [the outcome of action is observed]

Already set up when we forked this repo from nyu-devops/project-template.


Shopping cart persistence

Description of changes

Added Shopping Cart functionality
Shopping Cart is saved to user
Added Shopping Cart view page
All values update correctly when quantity is incremented or decremented.

Screenshots (If Applicable)

Checklist

[ ] I have unit tested my code.
[ ] I have integration tested my code.
[X] All new and existing tests passed.
[ ] I have updated the diagrams ModelsUMLClassDiagram and EntityRelationshipDiagram (if necessary).

I get the error above when accessing the shopping cart.
Steps to Reproduce:

create account
click on shopping cart (when it's empty)
error

@zaidoon1 trying pulling latest version. I can't reproduce.

@zaidoon1 trying pulling latest version. I can't reproduce.

I fixed the issue, added a null check in the html code


chore(package): update rollup to version 0.46.1

Coverage remained the same at 95.0% when pulling 1b210943a9ded6fa5333edc8a6c2fee76a034a55 on greenkeeper/rollup-0.46.1 into 61bb9dbbc6631c54c0c6c0ce9413f8f616e0ed70 on master.

Codecov Report

Merging #8 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master       #8   +/-   ##
=======================================
  Coverage   97.05%   97.05%
=======================================
  Files           9        9
  Lines          34       34
=======================================
  Hits           33       33
  Misses          1        1

Continue to review full report at Codecov.

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


Problem with loading model from string (vox format)

hello !
i started to writing game with raylib cs
but when i started loading model (vox format) , i watched just a white cube in the middle of scene and in the console i seen this:

code:
using Raylib_cs;
using System.Numerics;
namespace Other {
static class Programm {
public static void Main() {
Raylib.InitWindow(1000, 800, "hello world !");
        Model model = Raylib.LoadModel("assets\\sword.vox");
        Camera3D camera = new Camera3D(
            new Vector3(0f, 2f, 10f),
            new Vector3(0f, 2f, 0f),
            new Vector3(0f, 1f, 0f),
            60f,
            CameraProjection.CAMERA_PERSPECTIVE
        );

        while (!Raylib.WindowShouldClose()) {
            Raylib.BeginDrawing();
            Raylib.BeginMode3D(camera);
            Raylib.DrawModel(model, new Vector3(0f, 1f, 0f), 1f, Color.WHITE);
            Raylib.EndMode3D();
            Raylib.EndDrawing();
        }
    }
}

}
p.s. i downloaded a library with Nuget and i use vs code

Where is the assets folder in your project? Are you able to load other resources from it or is the issue only with vox models?

In your case it looks like the file loaded successfully but the VOX data did not.
That looks like a formatting issue.
I couldn’t reproduce this bug:
using Raylib_cs;
using System.Numerics;

Raylib.InitWindow(3000, 1800, "Hello World!");
Raylib.SetTargetFPS(60);

Model model = Raylib.LoadModel("Chicken.vox");
Camera3D camera = new(
    new Vector3(0f, 2f, 10f),
    new Vector3(5f, 0f, 0f),
    Vector3.UnitY,
    90f,
    CameraProjection.CAMERA_PERSPECTIVE);

while (!Raylib.WindowShouldClose())
{
    Raylib.BeginDrawing();
    Raylib.BeginMode3D(camera);
    Raylib.DrawModel(model, default, 1f, Color.WHITE);
    Raylib.EndMode3D();
    Raylib.EndDrawing();
}
Raylib.UnloadModel(model);

INFO: FILEIO: [Chicken.vox] File loaded successfully
INFO: MODEL: [Chicken.vox] VOX data loaded successfully : 5512 vertices/1 meshes
INFO: VAO: [ID 2] Mesh uploaded successfully to VRAM (GPU)

Chicken.zip

sory that i too late
The VOX data really doesn't load, although the model itself loads without problems
But i noticed that this is not only a problem of CS version, i tried it with C++ and doesn't work too
However with C (and mcvs) it's work succesful

C++ version:

C# work tree

@SerikTamerlan, if you open Bob.vox in notepad are the first 5 characters “VOX -” or “VOX È” or neither? If it’s “VOX È” I would suggest trying to export Bob differently, so it shows as “VOX -”. I have never used MagicaVoxel, however I’m certain the fifth character is the version number. Its 150 ‘-‘ or 200 ‘È’. If you could play around with the settings so it exports as “VOX -” it should work. As a last resort you can try to write a ‘-‘ where the ‘È’ was to force down the version.
@ChrisDill, If I’m correct with my assumptions this pr Addition of support for vox files in version 200. by Bigfoot71 · Pull Request #3097 · raysan5/raylib (github.com) back in June should “fix” this problem. It would explain why Sarik got his models to work in C, however I’m still confused as to why it wouldn’t work in C++.

Hi !
Well when i open file with notepad, i seen just "VOX" and other characters, not "VOX -" , perhaps it's problem with encoding, however it's doesn't work.
Also i made new vox model and export it with "VOX" format, but doen't work too
Now i'm thinking that i weired somthing wrong, so it doen't work

Your vox file in order to load properly needs to pass the two checks shown in the link:
https://github.com/raysan5/raylib/pull/3097/files#diff-875e5e2d236b1008fda9390194783194918d063c839e6b8a417a859a017e2f69L542-L561

To be clear it returns an invalid format error if the first four bytes aren't the string "VOX " <- including the space.
It will also return a file version error if the next 4 bytes are not (uint)150.
So if your file does not start with "VOX –   " including all the spaces (the last 3 are null characters '\0'). You will continue to run into this issue.
Hope this helps :/


Collision detection

There's still problems on the ball collision detection, I have to develop a more accurate one, because when the speed of the ball increases too a high speed, the collision detection bugs.

To solve that I should create a Vector class to represent the position of the ball in the game, that would make a lot of things easier.

To solve that I should create a Vector class to represent the position of the ball in the game, that would make a lot of things easier.

The vector class is done but it doesn't address the problem properly, I would have to add 3rd party libraries to solve the problem or write a lot of code to make the paddles and the ball actually be physical objects.


Fix build and tests

I removed a bunch of lifetimes (unnecessary?) and used std::thread::Builder instead of std::thread::Thread to get information about panics from the thread.

The lifetimes are absolutely necessary. They're what keeps you from converting a LuaState to an ExternState and having it outlive the original LuaState. This code just needs to be converted to use a PhantomData marker.
I already have the conversion done locally, but I'm waiting for rust-lang/rust#22749 (since I also converted the build script to use std::process and it's currently broken).

The lifetimes are absolutely necessary... This code just needs to be converted to use a PhantomData marker.

Ok, that makes sense. I wasn't 100% sure about removing the lifetimes because of all of the unsafe transmute blocks. Good to know you're already on it!

but I'm waiting for rust-lang/rust#22749

Awesome, that was quick!

I just pushed my changes. Turns out that if I don't set stdout/stderr at all, it will default to inherit, so I don't actually have to wait for rust-lang/rust#22749.


Debug Info: Distinguish between types of unknown size and types with …

…size=0.
DebugInfoTypes didn't properly distinguish between types with an unknown size
and used 0 as the default value. This can cause types to show up in DWARF with a
size of 0, which will prevent LLDB from looking at the type further. In
practice, this meant that many resilient types (for example, SwiftUI Views)
couldn't be displayed in the debugger and just showed up as empty.
This patch does three things:

Make size in DebugTypeInfo optional.
Introduce CompletedDebugTypeInfo, a subclass of DebugTypeInfo where
size is guaranteed to be non-empty.
Change some APIs that only make sense with a size to use
CompletedDebugTypeInfo. This caused some churn because I needed to refactor
the get*Elements() functions back into their callers to facilitate the new
early-exit path. These functions are only called when compiling with
-gdwarf-types.
Change createOpaqueStructWithSizedContainer() to create a size-less forward
declaration instead of a zero-sized type for the inner type.

rdar://76973844

Change createOpaqueStructWithSizedContainer() to create a size-less forward declaration instead of a zero-sized type for the inner type.

this function isn't referenced in the diff, assuming you mean createOpaqueStruct()?


Roaming vs. Local

LBRY is keeping wallet in
C:\Users[...]\AppData\Local\lbry\lbryum
instead of
C:\Users[...]\AppData\Roaming\lbry\lbryum
In fact it appears as it’s using Local and Roaming the opposite way it is used in Windows – placing some temp like files in Roaming while putting user vital info in Local.
Suggested Solutions
Keep 'user files' like settings and wallets in Roaming and other stuff in Local.
System Configuration
App | 0.33.2
Daemon (lbrynet) | 0.37.5
Platform | Windows (Windows-10-10.0.17134)

You must have an old install, we changed everything to use local. But if you had roaming before, it would use that. The app itself uses roaming for some local cache data, otherwise the SDK uses local.

I didn't have Roaming before as today was the first time I've installed lbry.
Again keeping user files like settings etc. in Local is bad these kind of files should be placed in Roaming.


Need help getting started when using domains vs plain IP addresses

Let's say I have the following

Eureka deployed at:

https://netflix-eureka-fabio.mybluemix.net/
Note I don't need to specify the port as networking takes care of it

Node.js App deployed at:

https://node-app-fabio.mybluemix.net/
Same port scenario as above

Bluemix (from IBM) is a platform as a service offering, much like Heroku.
Is this the correct way to set things up? If so, I am getting a 404 and can't figure out what do do.
const client = new Eureka({
	// application instance information
	instance: {
		app: 'some-microservice',
		hostName: 'node-app-fabio.mybluemix.net',
		ipAddr: 'node-app-fabio.mybluemix.net',
		port: true,
		vipAddress: 'some.app.com',
		dataCenterInfo: {
			name: 'MyOwn',
		},
	},
	eureka: {
		// eureka server host / port
		host: 'netflix-eureka-fabio.mybluemix.net',
		port: true
	},
});

It must be something simple I am missing on. Also, what is the vipAddress? Don't remember seeing this when using eureka java client

@fabiogomezdiaz I definitely would not set port to true as that will probably cause adverse effects. If your server is simply available without a port in your browser, that means it's on port 80 or 443 if its https so I would use that in your config. As for the 404 errors, those usually happen when it can't find the Eureka REST service. You may need to locate what path the service is located on per the information here: https://github.com/jquatier/eureka-js-client#404-not-found-errors-from-eureka-server


module 'vim.uri' not found

Describe the bug

I try to do a clean install and I fail on this error.

I tried 0.10, but am running into this issue.
it looks like the recommended version is 0.9.1?

To Reproduce

...

% rm -rf ~/.config/nvim
% git clone git@github.com:bc-geoffl/kickstart.nvim.git ~/.config/nvim && nvim ~/.config/nvim/init.lua
Error detected while processing /Users/geoffl/.config/nvim/init.lua:
E5113: Error while calling lua chunk: vim/_init_packages.lua:0: module 'vim.uri' not found:
        no field package.preload['vim.uri']
        no file './vim/uri.lua'
        no file '/Users/runner/work/neovim/neovim/.deps/usr/share/luajit-2.1/vim/uri.lua'
        no file '/usr/local/share/lua/5.1/vim/uri.lua'
        no file '/usr/local/share/lua/5.1/vim/uri/init.lua'
        no file '/Users/runner/work/neovim/neovim/.deps/usr/share/lua/5.1/vim/uri.lua'
        no file '/Users/runner/work/neovim/neovim/.deps/usr/share/lua/5.1/vim/uri/init.lua'
        no file './vim/uri.so'
        no file '/usr/local/lib/lua/5.1/vim/uri.so'
        no file '/Users/runner/work/neovim/neovim/.deps/usr/lib/lua/5.1/vim/uri.so'
        no file '/usr/local/lib/lua/5.1/loadall.so'
        no file './vim.so'
        no file '/usr/local/lib/lua/5.1/vim.so'
        no file '/Users/runner/work/neovim/neovim/.deps/usr/lib/lua/5.1/vim.so'
        no file '/usr/local/lib/lua/5.1/loadall.so'
stack traceback:
        [C]: in function 'require'
        vim/_init_packages.lua: in function '__index'
        vim/loader.lua: in function <vim/loader.lua:0>
        [C]: at 0x0104d5dd7c
        [C]: in function 'require'
        vim/_init_packages.lua: in function '__index'
        ...erfer/.local/share/nvim/lazy/lazy.nvim/lua/lazy/init.lua:37: in function 'setup'
        /Users/geoff.langerderfer/.config/nvim/init.lua:67: in main chunk
E484: Can't open file /usr/local/share/nvim/syntax/syntax.vim
Press ENTER or type command to continue

Desktop

OS: macOS Ventura 13.5
Terminal: default mac terminal applicationt

Neovim Version

% nvim --version
NVIM v0.10.0-dev-5f4f83b
Build type: RelWithDebInfo
LuaJIT 2.1.1695653777
Run "nvim -V1 -v" for more info
%

tldr: I copied the neovim runtime files to /usr/local/share/nvim and it fixed it
for whatever reason, my install didn't add the runtime files to the expected location. To fix it, I:

git cloned neovim
copied the runtime folder to /usr/local/share/nvim

$ git clone https://github.com/neovim/neovim.git
$ git checkout v0.9.1
$ sudo cp -r neovim/runtime /usr/local/share/nvim


Purchase price cannot be empty - bulk edit

Description:
If you want to adjust the price of several variants using the bulk edit, the purchase price of the main product is entered and this value cannot be empty.
Simply adjusting the price therefore only works if you adjust all purchase prices.
However, you do not want to do this if you have different purchase prices for all variants.
Environment:
Demo SW <IP_ADDRESS>
Steps to reproduce:

Go to a variant product
Go to variants
Select all variants
Click bulk edit and start bulk edit
Click on Change: Price inheritance and remove the inheritance

Expected result:
At least purchase price should be empty, price too in my opinion.
Actual result:
Prices are prefilled and cannot be emptied.

[public] Hello,
Within our company roadmap and work capacity, we try to address each bug or improvement request but admit that not each one will be resolved. To continue our culture of honesty and openness, we are closing this issue to focus on our roadmap on behalf of all Shopware users.
If you feel like this issue is still impacting you, please create a new issue and let us know. Thank you again for your valuable feedback.
[created from NEXT-34005, comment 501242]


ScrollableState should call _updatePosition when controller is different

from the follow code of ScrollableState, we can find that it will _updatePosition only then runTime is different; but if ScrollableState updated with different child with different scrollPosition; then the new scrollPosition will not be used;
so if controller is different, _updatePosition should be called;
bool _shouldUpdatePosition(Scrollable oldWidget) {
    ScrollPhysics newPhysics = widget.physics;
    ScrollPhysics oldPhysics = oldWidget.physics;
    do {
      if (newPhysics?.runtimeType != oldPhysics?.runtimeType)
        return true;
      newPhysics = newPhysics?.parent;
      oldPhysics = oldPhysics?.parent;
    } while (newPhysics != null || oldPhysics != null);

    return widget.controller?.runtimeType != oldWidget.controller?.runtimeType;
  }

  @override
  void didUpdateWidget(Scrollable oldWidget) {
    super.didUpdateWidget(oldWidget);

    if (widget.controller != oldWidget.controller) {
      oldWidget.controller?.detach(position);
      widget.controller?.attach(position);
    }

    if (_shouldUpdatePosition(oldWidget))
      _updatePosition();
  }

How can one observe this behavior? Do you have some sample code that shows an actual bug?

Without additional information, we are unfortunately not sure how to resolve this issue.
We are therefore reluctantly going to close this bug for now.
Please don't hesitate to comment on the bug if you have any more information for us; we will reopen it right away!
Thanks for your contribution.
Could everyone who still has this problem please file a new issue with the exact description of what happens, logs, and the output of flutter doctor -v.
All system setups can be slightly different, so it's always better to open new issues and reference related issues.


Tests fail with PGI

Building toml-f works with NVHPC 20.7 and 20.9, but the unit tests will fail with a segfault due to the destroy type bound procedure in the abstract structure type. Most prominently this is invoked in the manual deconstructor for the toml_table with:
https://github.com/toml-f/toml-f/blob/52869a75b52bdc36e005c5ac14b07ff51f4f4fa4/src/tomlf/type/table.f90#L213
For some reason the PGI compiler fails to resolve this call correctly and ends with a segfault. Since the manual deconstructor is not requires, as all types are allocatable rather than pointer, this call is usually not required in practise, but might still be used when reallocating inside the abstract structure type or deleting from a data structure.

end program mwe

What we did in the past as a workaround was to define a preprocessor directive and call the method directly with the class as arguement when compiling with PGI. Something like:
#ifdef pgiFortran
      call destroy(table)
#else
      call table%destroy
#endif

But I don't know if that is reasonable to do with the toml-f codebase since it creates a lot of cluttered code.

Maybe one way would be to create a destroy interface provided by TOML Fortran which implements the workaround for all TOML types and hides the preprocessor logic inside the TOML Fortran library.


chore: move global data to function local

Summary
Moved global const data to function local to reduce
global memory footprint on embedded platforms.

Checklist

[ ] Documentation (if necessary)
[x] Tests (if necessary)
[x] Ready to be merged

Thanks for submitting this pull request! A maintainer will review this in the next few days and explicitly select labels so you know what's going on.
If no reviewer appears after a week, a reminder will be sent out.

A member has approved this PR. A maintainer will merge this PR shortly. If it shouldn't be merged yet, please leave a comment saying so and we'll wait.
Thank you for your contribution!

Your pull request has been merged but was not assigned a bounty tier. A maintainer will assign a bounty tier to this pull request in the next few days.

Your pull request has been merged and marked as tier 4. It will earn you $20 USD.


[global] Enable SSL/HTTPS at gateway level

Enable SSL and HTTPS for the Embedded Jetty AM server.

see gravitee-io/issues#1232 to implement the same things.


FIX: protect against mutating subs list while iterating

If a subscription is added or removed while iterating over the list of
callbacks to run, odd things (like skipping running callbacks) may
happen.  To prevent this keep a local (shallow) copy of the callbacks to
iterate over.
attn @gjwillms

Current coverage is 84.27% (diff: 100%)

Merging #375 into master will not change coverage

@@             master       #375   diff @@
==========================================
  Files            30         30
  Lines          4578       4578
  Methods           0          0
  Messages          0          0
  Branches          0          0
==========================================
  Hits           3858       3858
  Misses          720        720
  Partials          0          0

Powered by Codecov. Last update 47fa8a6...9c1c145


Line2D doesn't draw full gradient if it doesn't have enough points

Godot version
3.3 / 6ef0b8f
System information
W10
Issue description

It would maybe make sense if the offsets were ignored and instead it used only the colors, but it's not the case.
Steps to reproduce

Add Line2D
Add 2 points to it
Add a gradient to gradient property, with 3 colors

Minimal reproduction project
No response

We could add a node configuration warning for this purpose.

Line2D doesn't draw full gradient if it doesn't have enough points

In fact, Gradient is being drawn accurately in Line2D only in some simple cases, even if there are more points in Line2D than color points in the Gradient. In most cases it's really just an approximation of the used Gradient. Iterpolation is not being done accurately because what's interpolated in the end are vertex colors and even though vertex colors are properly assigned according to the Gradient, everything in between vertices might be color-wise "desynchronized" with the Gradient.

There's kinda the same issue with the width curve of Line2D.

I get exactly the same problem in v3.4.4.stable.official [419e713a2].

Fixing this probably involves creating "subdivision" points and ensuring the line is made of at least as many points as the gradient has points.

Fixing this probably involves automatically creating "subdivision" points behind the scenes, and ensuring the line is made of at least as many points as the gradient.
It may not be worth the added complexity, so maybe we should just document that you have to create enough points for the gradient's color to be accurately represented.

I think the problem runs deeper. See the series of screen grabs below. In these examples, the line always has 3 points and it has the same gradient with 3 colors. Yet only the first (leftmost, black) and last (rightmost, white) color get properly rendered. The middle color (red) doesn't always get properly rendered in the line. Therefore, just adding the same amount of points in the line as there are colors in the gradient are not sufficient to fix this problem.

@timcode77 What I mean is that the subdivided points should also be created at the same offset as the gradient.

@timcode77 What I mean is that the subdivided points should also be created at the same offset as the gradient. This should make it possible to render any gradient correctly, no matter how many points your line is actually made of.

Ah ok. I misunderstood you. I was confusing "points": the things Line2D is comprised of in the editor and that are accessible to the user. Whereas you are talking about "subdivided points" which you are proposing get calculated behind the scenes and are not accessible to the user. Is that right?

Note that this would work for a linear gradient. In 3.5+/4.0 there are also constant and cubic interpolation modes (added in #60982/#53321). Constant interpolation could be easily handled by doubling the "gradient points" within the line. Cubic interpolation based only on the vertex colors would be possible in a dedicated shader, which I'd guess is unlikely to be done (so I'd assume it won't be supported for Line2D.gradient property).
But the thing is... there are gradient textures. Applying gradient with a texture is trivial and it works already (it of course has its own quirks):

3.4.4.stable, Gradient:

3.4.4.stable, GradientTexture using the same Gradient:

Example of visible uneven UVs interpolation (that's probably unavoidable because of uneven line borders' lengths? :thinking:):

I guess using the Gradient directly to assign vertex colors for the line mesh (that's what happens for Line2D.gradient property) is supposed to be cheaper than the texture gradient and that's the reason it exists in the first place? If so then I wonder if making gradients be correctly rendered by increasing the line mesh vertex count wouldn't neglect the benefits of this solution over using the gradient textures.
Also note that currently there's only one texture in the Line2D so by design you can't apply some Texture and a GradientTexture on top of it. Nonetheless it's not hard to work around that:

shader_type canvas_item;

uniform sampler2D gradient_texture: hint_albedo;
uniform vec2 default_texture_tiling_factor = vec2(1.0);

void fragment() {
	COLOR = texture(TEXTURE, UV * default_texture_tiling_factor) * texture(gradient_texture, UV);
}

BTW this example perfectly shows that texture UVs are kinda bugged and this for sure could be improved? :thinking:

To sum up: not really sure what should be done about this issue. :slightly_smiling_face:


Service Bus Messages Held in AMQP Buffer After Being Dequeued and processed

I am experiencing an issue with Azure Service Bus where messages are dequeued from the subscription and processed successfully by the backend application. However, for some messages, we are missing the status update. Ideally, if a message misses its status update, it should move to the Dead Letter Queue (DLQ). Instead, these messages are not moving to the DLQ and are remaining indefinitely in the AMQP buffer, causing a gradual memory increase in the application. Additionally, these messages persist beyond their Time-to-Live (TTL).
Why is this not a Bug or a feature Request?
We are not categorizing this as a bug at this point. Instead, we are seeking suggestions or guidance based on the current issue we are experiencing.
Setup (please complete the following information if applicable):

OS: Windows

IDE: .NET application targeting net462

Library/Libraries:
Azure.Core.Amqp = 1.3.1
Azure.Messaging.ServiceBus = 7.18.2
Project Type: Service Fabric Application
Azure Service Bus Namespace Type: Standard
Configuration:
Topic-Level Settings:
Default Message TTL: 1 hour
Subscription-Level Settings:
Subscription Name: gatewayworker
Default Message TTL: 5 minutes
Max Delivery Count: 10
Lock Duration: 2 minutes
Auto-Delete on Idle: Effectively disabled (106,751 days)
Dead-Lettering on TTL Expiration: Enabled
Dead-Lettering on Filter Evaluation Error: Enabled

Message Details AMQP library (from debug session):
Creation Time: 12/11/2024 5:57:33 PM
Absolute Expiry Time: 12/11/2024 6:57:33 PM (matches topic TTL of 1 hour)
Delivery Count: 0
Current Status:
Active Message Count: 0 (after being dequeue).
Dead-Letter Message Count: 0.
Some messages are not visible as active in the subscription after being dequeued but are remaining held in the AMQP buffer, causing memory usage to increase.
Dump screenshots: This was taken on 12/12/2024 12:10am PST, the message in the buffer was
dequed at: 12/11/2024 5:57:33 PM
expires at: 12/11/2024 6:57:33 PM
Header:

AbsoluteExpiryTime

Additional Observations:
Memory Increase: Application memory usage grows gradually.
Buffer Stream: From the dump, the Microsoft.Azure.Amqp.AmqpMessage and its buffer stream are holding the message data.
No Prefetch: Prefetch is explicitly disabled.
No Lock Renewal: Lock renewal is not enabled or performed for messages.
Message Behavior After Being Dequeued:
Messages are processed successfully by the backend application.
For some messages, the status update fails. These messages are not moving to the DLQ, even though they are missing status updates.
Instead, they remain in the AMQP buffer, and the TTL and DLQ behavior are not triggered as expected.
Questions:
1)Why are the messages that fail status updates not moving to the DLQ?
2)Why do these messages remain held in the AMQP buffer indefinitely instead of being redelivered or discarded?
3)Why are TTL and DLQ behavior not triggered for messages that are neither completed nor abandoned?
4)Could the AMQP library buffer stream retaining data be related to the memory increase? If so, how can it be resolved?
5) what is the best approach to clean the AMQP buffer for the message that are greater than 1hr?
am trying to attach dump but since it is 1.30GB it is failing to upload, please suggest where i can upload the dump of it is required for analysis.
Information Checklist
Kindly make sure that you have added all the following information above and checkoff the required fields otherwise we will treat the issuer as an incomplete report

[x] Query Added
[x] Setup information Added

Hi @RaviBell.   Thanks for reaching out and we regret that you're experiencing difficulties.   There's not enough context about how you're using the Service Bus clients to provide thoughts around what you may be seeing or how to mitigate.   Generally, unless you explicitly enable prefetch in a client or your application holds a long-lived reference to an instance, messages are not buffered internally and exist only until they are completed.
Since you've included a debugger screenshot, I'll also mention that it is important to note that debugger inspection will hold a reference to the objects, triggering lazy allocations that may otherwise not be executed and extending the lifetime.
For assistance, we'll need to understand the end-to-end scenario for how the application is using the Service Bus library.   Either a small, stand-alone app that reproduces what you're seeing or snippets from your application showing which Service Bus client types you're using, how you initialize them, and how you interact with them to read/process/complete messages would be helpful.   In addition, seeing a capture of verbose Azure SDK logs for a +/- 5-minute period around the behavior would allow us to understand the client's perspective.    Guidance for capturing logs can be found in the article Logging with the Azure SDK for .NET.

Hi @RaviBell. Thanks for reaching out and we regret that you're experiencing difficulties. There's not enough context about how you're using the Service Bus clients to provide thoughts around what you may be seeing or how to mitigate. Generally, unless you explicitly enable prefetch in a client or your application holds a long-lived reference to an instance, messages are not buffered internally and exist only until they are completed.
Since you've included a debugger screenshot, I'll also mention that it is important to note that debugger inspection will hold a reference to the objects, triggering lazy allocations that may otherwise not be executed and extending the lifetime.
For assistance, we'll need to understand the end-to-end scenario for how the application is using the Service Bus library. Either a small, stand-alone app that reproduces what you're seeing or snippets from your application showing which Service Bus client types you're using, how you initialize them, and how you interact with them to read/process/complete messages would be helpful. In addition, seeing a capture of verbose Azure SDK logs for a +/- 5-minute period around the behavior would allow us to understand the client's perspective. Guidance for capturing logs can be found in the article Logging with the Azure SDK for .NET.

Hello @jsquire,
Thanks lot for the quick response to the post. Please find the details below as suggested. If any requested details are still missing, kindly let me know. If incase need a memory dump for your analysis, do let me know.
Application Overview and Workflow

Service Fabric-Based Application:
o	The application is designed to run on-premises across a set of specific role-type nodes (e.g., 3 or 4 nodes).
o	The architecture leverages Service Fabric for scalability and reliability.
Service Bus Setup:
o	The Service Bus configuration includes a Topic with associated Subscriptions, organized into 9 distinct workflows.
Purpose:
o	This application’s sole purpose is to dequeue messages from respective workflows as triggered by API calls.
Transport Type:
o	The application uses AmqpWebSockets as the ServiceBusTransportType.

Service Bus Client Initialization
5.	Client Setup:
o	Client Initialization:

o		Service Bus clients are initialized using a shared service called ServiceBusManager.
o		ServiceBusClient is created using certificate-based authentication for secure access.

o	ServiceBusReceiver:

o		For each queue or subscription, a ServiceBusReceiver is instantiated using CreateReceiver.
o		The ReceiveMode is explicitly set to PeekLock to allow message processing with visibility control.

Message Processing Workflow
6.	How Messages Are Processed:
o	 Dequeue:

o		Messages are fetched from Service Bus using an API call that invokes the ReceiveMessagesAsync method.

o	 Processing:

o		Each message is processed according to its associated workflow type (e.g., signing, scanning, or other business logic).

o	 Completion/Abandonment:

o		After processing, messages are either:
o		Completed: Using CompleteMessageAsync.
o		Abandoned: Using AbandonMessageAsync.
o		Moved to Dead-Letter Queue: Using DeadLetterMessageAsync.

API-Based Interaction
7.	Interaction via APIs:
o	All interactions with Service Bus (dequeue, complete, abandon) are performed through API endpoints.
o	These APIs internally rely on ServiceBusManager to handle interactions with the Service Bus.
o	API Endpoints:

	Dequeue API:
o		Fetches messages using ReceiveMessagesAsync.

	Completion/Abandonment API:
o		Marks messages as completed or abandoned using their MessageId.

Memory Dump Analysis:
•	The observations were made on an offline memory dump captured during runtime, not through live debugging. This ensures that the debugger did not interfere with object lifetimes or trigger lazy allocations.
•	The Microsoft.Azure.Amqp.BufferListStream objects, along with their associated properties (e.g., CreationAt and ExpiresAt timestamps), were inspected to determine their lifecycle behavior.
•	Despite the expiration timestamps, these objects were still present in memory, indicating that they might not have been cleaned up as expected.
AMQP Buffer Behavior:
•	As mentioned above, My application uses the Azure Service Bus library with AmqpWebSockets transport and PeekLock mode for receiving messages.
•	The Service Bus operations (e.g., dequeue, complete, abandon) are handled through API calls, and prefetch is explicitly not enabled.
•	While analyzing the dump, it appears that some messages remained in the AMQP buffer despite their locks being expired and no status updates (e.g., complete or abandon) being issued for them. This is the primary concern.
•	Is it expected behavior for Microsoft.Azure.Amqp.BufferListStream objects (and associated AMQP message streams) to persist in memory after their locks have expired, especially if no further operations (e.g., CompleteMessageAsync, AbandonMessageAsync, etc.) are performed.
•	Should these objects automatically move to the dead-letter queue once their TTL or delivery count is exceeded, even if no status update is explicitly sent?
Below screenshot memory dump below was taken on 12/31/2024:
sorted based on the size "Microsoft.Azure.Amqp.BufferListStream"

I go through "Microsoft.Azure.Amqp.BufferListStream",

creation at: 12/25/2024 14:06:33 PM
expires at: 12/25/2024 14:11:33 PM

Hi @RaviBell.   Thanks for the additional context.   As mentioned previously, we'll need to see code and log details to assist.    For convenience, copied here:

For assistance, we'll need to understand the end-to-end scenario for how the application is using the Service Bus library. Either a small, stand-alone app that reproduces what you're seeing or snippets from your application showing which Service Bus client types you're using, how you initialize them, and how you interact with them to read/process/complete messages would be helpful. In addition, seeing a capture of verbose Azure SDK logs for a +/- 5-minute period around the behavior would allow us to understand the client's perspective. Guidance for capturing logs can be found in the article Logging with the Azure SDK for .NET.

it appears that some messages remained in the AMQP buffer despite their locks being expired and no status updates (e.g., complete or abandon) being issued for them. This is the primary concern.

This is expected.   Locking is a service concept that the client has no insight into nor direct influence over.   Unless you're using a processor type with auto renew set, when you receive a batch of messages, those messages exist on the client until you explicitly consume them and complete/abandon them.   Lock expiration does not expire the message client-side.
The service, however, will increase the delivery count and consider the message abandoned.   If your resource is configured such that the delivery count has a threshold, once that is reached, the message will be moved to the dead-letter queue.


How to vote with cosmosjs

const result = await signingClient.signAndBroadcast(

            address,

            [
                {
                    typeUrl: "/cosmos.gov.v1beta1.MsgVote",
                     value: {
                        proposalId:895,
                        voter: i,
                        option:1,
                        //amount: { denom: "uatom", amount: 0, },
                    },
                    },
            ],
            "auto"

            )

                // Output the result of the Tx
                console.log("Transfer result:", result)
```
/ how to fix it
```
With signing client, chain id: cosmoshub-4 , height: 19756249
Error: Broadcasting transaction failed with code 11 (codespace: sdk). Log: out of gas in location: WriteFlat; gasWanted: 43121, gasUsed: 43494: out of gas
    at SigningStargateClient.broadcastTx (d:\deskbokk\cosmjs-sandbox-master\node_modules\@cosmjs\stargate\src\stargateclient.ts:386:9)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async runAll (d:\deskbokk\cosmjs-sandbox-master\投票.ts:64:24)

https://atmoner.github.io/cosmjs-examples/broadcast/gov/MsgVote.html


New version: KeywordCalls v0.1.5

Registering package: KeywordCalls
Repository: https://github.com/cscherrer/KeywordCalls.jl
Created by: @cscherrer
Version: v0.1.5
Commit: 7ef86a495c44be08999c91f6f51a38266f9d2384
Reviewed by: @cscherrer
Reference: https://github.com/cscherrer/KeywordCalls.jl/commit/7ef86a495c44be08999c91f6f51a38266f9d2384#commitcomment-51046124

hang on


NotDefinedError: Failed in object mode pipeline (step: analyzing bytecode)

anyone helps?
Thank you very much.
the errors:
KeyError                                  Traceback (most recent call last)
~/anaconda3/lib/python3.7/site-packages/numba/ir.py in get(self, name)
161         try:
--> 162             return self._con[name]
163         except KeyError:
KeyError: '$34.2'
During handling of the above exception, another exception occurred:
NotDefinedError                           Traceback (most recent call last)
~/anaconda3/lib/python3.7/site-packages/numba/ir.py in get_exact(self, name)
801         try:
--> 802             return self.localvars.get(name)
803         except NotDefinedError:
~/anaconda3/lib/python3.7/site-packages/numba/ir.py in get(self, name)
163         except KeyError:
--> 164             raise NotDefinedError(name)
165
NotDefinedError: Variable '$34.2' is not defined.
During handling of the above exception, another exception occurred:
KeyError                                  Traceback (most recent call last)
~/anaconda3/lib/python3.7/site-packages/numba/ir.py in get(self, name)
161         try:
--> 162             return self._con[name]
163         except KeyError:
KeyError: '$34.2'
During handling of the above exception, another exception occurred:
NotDefinedError                           Traceback (most recent call last)
 in
45                 columns[39] = b[index_2,1]
46                 return [columns[15],columns[16],columns[38],columns[39]]
---> 47             data = main("S655kHCRHits.dat")
48             print(data)
49
~/anaconda3/lib/python3.7/site-packages/numba/dispatcher.py in _compile_for_args(self, *args, **kws)
354             # These errors are probably from an issue with either the code supplied
355             # being syntactically or otherwise invalid
--> 356             error_rewrite(e, 'interpreter')
357         except errors.ConstantInferenceError as e:
358             # this is from trying to infer something as constant when it isn't
~/anaconda3/lib/python3.7/site-packages/numba/dispatcher.py in error_rewrite(e, issue_type)
313                 raise e
314             else:
--> 315                 reraise(type(e), e, None)
316
317         argtypes = []
~/anaconda3/lib/python3.7/site-packages/numba/six.py in reraise(tp, value, tb)
656             value = tp()
657         if value.traceback is not tb:
--> 658             raise value.with_traceback(tb)
659         raise value
660
NotDefinedError: Failed in object mode pipeline (step: analyzing bytecode)
Variable '$34.2' is not defined.
Unsupported Python functionality was found in the code Numba was trying to
compile. This error could be due to invalid code, does the code work
without Numba? (To temporarily disable Numba JIT, set the NUMBA_DISABLE_JIT
environment variable to non-zero, and then rerun the code).
If the code is valid and the unsupported functionality is important to you
please file a feature request at: https://github.com/numba/numba/issues/new
To see Python/NumPy features supported by the latest release of Numba visit:
http://numba.pydata.org/numba-doc/dev/reference/pysupported.html
and
http://numba.pydata.org/numba-doc/dev/reference/numpysupported.html

Thanks for the report. I presume this is a duplicate of https://github.com/numba/numba/issues/3765? so am going to close it, if this is not the case, please reopen it and paste in the code that is causing the error to appear.


check-nwc-health: fix source URL

Motivation for this change
Upstream URL was wrong.
Fixes check-{mssql,nwc,ups}-health
Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nix-review --run "nix-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[x] Fits CONTRIBUTING.md.

Notify maintainers
cc @

@GrahamcOfBorg build check-mssql-health check-nwc-health check-ups-health


Sequence number increment should not fail

If we allow sequence number increment to fail, this could create two problems:

We could be violating the invariant where some mutable objects must be written in the temporary store after an order execution.
We could be prone to DDos attack (by keep using the MAX sequence number gas object)

We should assume it cannot overflow.
To enforce this, we could consider freeze the object when its sequence number reaches MAX.

Another thing we could consider is rejecting a tx with any object inputs whose sequence number is MAX. I think we can do this very early on, basically at the same time we check the balance of the gas object today.
Also agree with @sblackshear , that's the easiest fail-fast workaround.


Make linux_hostinfo platform optional

Motivation
After discussion in the following issue: https://github.com/falcosecurity/charts/issues/754 , what I could gather is that the new linux_hostinfo platform provides additional information to plugins should they need it.
However, Falco being a fairly general tool to process event streams and apply rules to them, plugins can be made to target event streams where the hostinfo of where Falco is running is irrelevant, or of very little concern.
I think it would be great if this could be optional, so that, when deployed to Kubernetes, hostPath is not required.
Feature
Make the new linux_hostinfo platform optional so that it can be turned off and hostPath isn't required.
Alternatives
Keep hostPath even though it is not required by plugin.

Hi! Thanks for opening this issue!
I'd move this to Falco since libs is already agnostic, the platform gets requested by Falco when opening plugins: https://github.com/falcosecurity/falco/blob/master/userspace/falco/app/actions/helpers_inspector.cpp#L64
Indeed, we could add a Falco config key to disable the default behavior of adding hostinfo to the plugin run, wdyt?


Cannot read property 'render' of undefined

Hello! I'm keep getting error rendering my Form:
The form is correctly create, i can see my template inside the template property of the form.
.render() is also a known function but when it come to run
this.profileForm.render();, it give the undefined error.
My init function:
this.testTmp = {
        performance:
        			'<form class="form-horizontal">\

Performance
\
                <fieldset data-fields="legPress,chestPress,pushUpsTest"></fieldset>\

\

\
                        Stage	\
                        Time	\
                        Speed	\
                        Speed	\
                        	\

\

\
                        1	\
                        0-3 mins	\
                        1.7 mph	\
                        10%	\

	\

\

\
                        5	\
                        12-15 mins	\
                        5.5 mph	\
                        15%	\

	\

\

\
                <fieldset data-fields="email,address"></fieldset>\
            </form>'
        };
    this.profileForm = new Backbone.Form({
      template: _.template(this.testTmp.performance),
      model: this.model,
      validate: true
    });

and then i render the form in the render function:
                this.profileForm.render();
		$('#testPlaceholder').append(this.profileForm.el);

i'm using dustjs template but as you see right now i just save my custom template in a variable.
I search everywhere and try thousend different possible solution but whenever i try to use the custom template, i got
Cannot read property 'render' of undefined
it might not be the best place to ask for help, but i'm kind of lost. If you know better place where i should write, please let me know (Already try in SO without luck)
Maybe someone can help me here?

Sorry, this isn't the best place for troubleshooting - doesn't look like there's any Backbone-Forms bug based on your report. It looks like somehow this.profileForm is getting cleared before you call render... but it's hard to say for sure what's really going on without seeing more of your code. I suggest posting a more complete version on stackoverflow with the appropriate tags.


Elias: Inside JS ; 4 Weeks

Learning Objectives

Priorities: 🥚, 🐣, 🐥, 🐔 (click to learn more)

There is a lot to learn in this repository. If you can't master all the material
at once, that's expected! Anything you don't master now will always be waiting
for you to review when you need it. These 4 emoji's will help you prioritize
your study time and to measure your progress:

🥚: Understanding this material is required, it covers the base skills you'll
need to move on. You do not need to finish all of them but should feel
comfortable that you could with enough time.
🐣: You have started all of these exercises and feel you could complete them
all if you just had more time. It may not be easy for you but with effort you
can make it through.
🐥: You have studied the examples and started some exercises if you had time.
You should have a big-picture understanding of these concepts/skills, but may
not be confident completing the exercises.
🐔: These concepts or skills are not necessary but are related to this module.
If you are finished with 🥚, 🐣 and 🐥 you can use the 🐔 exercises to push
yourself without getting distracted from the module's main objectives.

0. Asserting

Skills:

[ ] 🥚 Predicting Execution: You can use the browser's debugger to step
through your code. Before each step you can make a prediction about what
will happen, after each step you can check your prediction.
[ ] 🥚 Assertion Testing: You can write assertion tests to predict what
values will be in your program at a specific step of execution.

Language Features

[ ] 🥚 Comments: You can write clear, helpful comments and can explain
different ways comments can be used in a program.
[ ] 🥚 Strings: You can write and read string values in a program.
[ ] 🥚 let vs. const: You can explain the differences between let
and const including: uninitialized declarations and reassignment.
You can determine when a variable can be assigned with const in a
program.
[ ] 🥚 Strict Comparison: You can explain how the === and !==
operators compare strings, and can predict the result of any string
comparison.
[ ] 🥚 console.log: You can use console.log to create program traces
in the console, and to print other helpful info for developers.
[ ] 🥚 console.assert: You can use the console.assert for assertion
testing, and can write a helpful message assertion message.

1. Primitives and Operators

Skills:

[ ] 🥚 Predicting Truthiness: You can predict the truthiness of any
primitive value.
[ ] 🐣 Tracing Operators: You can use an operators trace table to
evaluate expressions with more than one operator, and you can check your
work with the [trace] button.

Language Features

[ ] 🥚 Primitive Types: You can explain the difference between the 5
main primitive types (string, number, boolean, null,
undefined) and what they are used for in a program.
[ ] 🥚 typeof: You can predict the typeof operator's output for
values from any of the 5 main primitive types.
[ ] 🥚 Explicit Coercion: You can predict & check the outputs when using
Boolean(), String() and Number() to convert between primitive
types.
[ ] 🥚 Truthiness Operators: You can explain how truthiness is used
when evaluating &&, ||, ! and ? :.
[ ] 🐣 Short-Circuiting: You can write an example that demonstrates how
short-circuiting works with && and ||.
Implicit Coercion:

[ ] 🐣 You can explain what implicit coercion is and how it can cause
problems in your programs.
[ ] 🐣 You can explain the rules for implicit coercion in common operators
such as +, ! and >.

[ ] 🐣 Comparisons: You can predict and check the result of any
primitive comparison.
[ ] 🐣 Template Literals: You can read and trace multi-line template
literal strings.
[ ] 🐥 Statements vs. Expressions: You can identify if a piece of code
is a statement or an expression.
[ ] 🐔 Arithmetic: You can use JavaScript to do math, and can explain or
debug your expressions when they evaluate to something unexpected.

2. Control Flow

Skills:

[ ] 🥚 Imperative Programming: You can define the imperative
programming paradigm and can explain how you know the programs in this
chapter are imperative.
Writing Interactive Programs: For programs that take a string from
users:

[ ] 🥚 Blanks: You can complete a program by filling in the blanks.
[ ] 🐣 Bugs: You can fix bugs in an otherwise complete program.
[ ] 🐣 Goals: You can write the missing portion of a program.
[ ] 🐔 Empty Page: You can develop a program with specific behavior
starting from an empty page.

[ ] 🐥 User Numbers: You can complete, debug and write programs that
cast user input from string to number.
🐥 Stateful Programs: You can step through, debug and complete
programs with an HTML/CSS interface that store user data in a variable
between interactions.
Refactoring Control Flow:

[ ] 🐥 Conditionals: You can refactor between truthiness operators and
if/else statements.
[ ] 🐥 Loops: You can either refactor between all loop types, or
explain when it is not possible (or a good idea).

Language Features: You are comfortable reading and tracing programs that
use ...

[ ] 🥚 Block Scope: You can show how block scope works using code
snippets and your browser's debugger.
[ ] 🥚 Conditionals: You can predict and trace a program's path through
conditional statements.
[ ] 🥚 While Loops: You can predict and trace simple programs that use
while loops.
[ ] 🥚 for-of Strings: You can predict and trace simple programs that
iterate through the characters of a string using for-of.
[ ] 🥚 For Loops: You can explain how a for loops works by refactoring
simple for loops into while loops.
[ ] 🐣 Break: You can predict and trace simple programs that use
break.
[ ] 🐣 Continue: You can predict and trace simple programs that use
continue.

3. Functions

Skills:

[x] 🥚 Tracing: You can use the debugger to predict and check the
execution of small programs that use functions. This includes:
[ ] 🥚 Test Cases: You can explain a simple function's behavior using
inputs & outputs.
[ ] 🐣 Documenting Functions: You can write a JS Doc comment to describe
a function's behavior, inputs and outputs.

Language Features:

[ ] 🥚 ES6 Arrow Functions:

Defining a Function: You can show where a function is defined in a
program.
Parameters: You can find a function's parameters in it's definition
Return Statement: You can find the return statements in a function's
definition.
Calling a Function: You can show where a function called in a
program
Arguments: You can show the arguments passed to a function call.
Return Value: You can show how a function's return value is used
after the function call.

[ ] 🥚 Default Parameters: You can explain how default parameters work,
and how they help a developer read/understand a function definition.
[ ] 🐣 The Callstack: You can explain and inspect the callstack using
the browser's debugger.
[ ] 🐥 Variables in Functions: You can explain three different ways a
variable in a function can be declared/assigned, and can show this in
the debugger:

Parameters: A parameter is assigned it's value when a function is
called with arguments.
Local Variables: A variable declared in the function's curly braces.
Parent Scope Variables: A variable that was declared outside of the
function but used inside the function (avoid this for now.)

5. Unit Testing

Skills:

[ ] 🥚 Testing Environments: You understand that the conventional
describe/it/expect.toEqual functions are defined by a testing
library and made available as global variables in a testing
environment. They are not part of JavaScript!
[ ] 🥚 File Sub-Extensions: You can identify how a file is used by it
sub-extension: file.__.js. Sub-extensions are a convention for
developers and development tools. They do not change how JavaScript
inside the file works.
[ ] 🥚 Reading Tests: You can read unit tests to understand what a
function is supposed to do.
[ ] 🥚 Stepping Through Tests: You can step through unit tests in the
debugger, stepping over the global testing functions and into the
function you are testing.
[ ] 🐣 Writing Tests: Given a working function, you can write passing
unit tests to describe it's behavior.
[ ] 🐣 Debugging Functions: Given working tests and a function with
small mistakes, you can use the tests as a guide while debugging the
function.
[ ] 🐥 Passing Tests: Given working unit tests and an empty function,
you can write code to pass the tests.

Language Features:

nothing new here!

6. ES Modules

Skills:

[ ] 🥚 Spec Files: You can work with functions and unit tests separated
into two files.
[ ] 🥚 Visualizing Dependencies: You can use the
VSCode Dependency Cruiser extension
and the ?deps lens to visualize the dependencies in a folder.
[ ] 🐣 Refactoring Tests: You can refactor a function and unit tests
from one file to two files: one with the function, one with the unit
tests.

Language Features:

[ ] 🥚 Module Files: Are always in strict mode by default, no more
'use strict'!
[ ] 🥚 Named Exports: You can export a variable and it's value using
export const _ = () => {};
[ ] 🥚 Named Imports: You can import a variable and it's value from
another file using import { _ } from './path/to/file.js';
[ ] 🐥 Module Life-Cycle: You understand that ES Modules are static,
and are evaluated at creation phase.

6. Using Functions

Skills:

[ ] 🥚 Procedural Programming: You can define the procedural
programming paradigm and can explain how you know the programs in this
chapter are procedural.
[ ] 🥚 Using Functions: You can use a pre-written functions in a
program.
[ ] 🐣 Writing Functions: You can write functions that are used in a
program.
[ ] 🐥 Refactoring Functions: You can refactor a function out of a
program and test the function separately.
[ ] 🐔 Reverse-Engineering: You can reverse-engineer an example program
and refactor parts of your program into separate functions.

Language Features:

Nothing new here!

7. Arrays

Skills:

[ ] 🥚 Reference vs. Value: You can explain how arrays are stored in
memory and can demonstrate using examples run in JS Tutor.
[ ] 🥚 Deep vs. Shallow Comparison: You can explain use the concept of
reference vs. value to explain how a deep comparison is different than a
shallow comparison.
Side-Effects: You can ...

[ ] 🥚 Explain what side-effects are with an example.
[ ] 🥚 Avoid side effects when writing your own functions.
[ ] 🐣 Write tests to check if a function has side-effects.
[ ] 🐣 Fix side-effects in buggy functions.

Integrating Arrays: You can work with programs that use arrays to store
user data:

[ ] 🥚 Call: You can call pre-written functions in a program:
[ ] 🐣 Write: You can write functions that are used in a pre-written
program.
[ ] 🐣 Refactor: You can refactor logic from a program into a separate
function. You can avoid side-effects and test your function.
[ ] 🐔 Reverse-Engineer: You can reverse-engineer a program,
refactoring logic to a separate function if necessary.

🐥 Stateful Programs: You can step through, debug and complete
programs with an HTML/CSS interface that store user data in an array between
interactions.

Language Features: You are comfortable reading and tracing programs that
use ...

[ ] 🥚 Array Literals: You can create a new array in your program with
initial values using the array literal syntax:
const arr = ['items'];
🥚 Adding and Removing Items: You can use these methods to add and
remove items in an array:

[ ] arr.push(): Adds a new item to the end of an array.
[ ] arr.pop(): Removes the last item in an array.
[ ] arr.shift(): Adds a new item to the front of an array.
[ ] arr.unshift(): Removes the first item in an array.

🥚 Reading Items: You can read items in an array using:

[ ] arr[i]: Access a specific item in an array using square brackets a
positive index.
[ ] arr.at(i): Access a specific item in an array using .at() and a
positive or negative index.

[ ] 🥚 Updating Items: You can update any item in an array using it's
index, square brackets and assignments: arr[4] = 'hello'.
🥚 Iterating Over Arrays:

[ ] for (const item of arr): You use for-of loops to iterate
forwards through an array.
[ ] for (let i = ...): You can use for loops to iterate forwards and
backwards through an array.

[ ] 🥚 Array.isArray(): You can use Array.isArray() to check if
something is an array: Array.isArray(something)
[ ] 🥚 Spread Syntax: you can use spread syntax to create a shallow
copy of an array: const shallowCopy = [...arr];

8. Functional Array Methods

Skills:

[ ] 🥚 Declarative Programming: You can define the declarative
programming paradigm and can explain how you know that code using
functional array methods is declarative.
🥚 Array Strategies: You can explain these array strategies using a
diagram or drawing:

[ ] Mapping: Modifying each item in an array and putting the results
in a new array.
[ ] Filtering: Creating a new array with only the items from the old
array that match some criteria.
[ ] Every Item: Checking if every item in an array matches some
criteria.
[ ] Some Items: Checking if at least one item in an array matches some
criteria.
[ ] Finding: Finding the first item in an array that matches some
criteria.
[ ] Reducing: Combining all the items in an array to create a single
result.

🐣 Using Callbacks: You can explain what a callback is, and can ...

[ ] Pass a callback into a higher-order function that consumes it.
[ ] Write a callback for a higher-order function to consume.
[ ] Consume callbacks in a higher-order function that you write.
[ ] Decide when to declare callbacks inline, and when to declare them
separately.

[ ] 🐣 Debugging Functional Array Methods: You can step through code
that uses functional array methods in your debugger, and can use the
scopes panel to explain what is happening behind the scenes.

Language Features:

Array Methods: You can read and trace code that uses these array
methods, you can also use them to solve simple coding challenges:

[ ] 🥚 [].every
[ ] 🥚 [].some
[ ] 🐣 [].map
[ ] 🐣 [].filter
[ ] 🐣 [].find
[ ] 🐥 [].reduce

[ ] 🐣 Higher-Order Functions: You can explain what a higher order
function is using a simple example.
[ ] 🐣 Implicit Returns: You understand when a function can be written
with an implicit return and can decide if it makes your code more or
less readable.

9. Objects

Skills:

[ ] 🥚 Avoiding Side Effects: You can read, debug and write functions
that use objects as arguments, without creating side-effects.
🐣 Stateful Programs: You can step through, debug and complete
programs with an HTML/CSS interface that store user data in an object
between interactions.

Language Features:

[ ] 🥚 Object Literals: You can declare a new object with initial
key/value pairs using object literal syntax:
const obj = { a: 1, b: 2 };.
[ ] 🐣 Dots vs. Brackets: You can explain the difference between dot
and bracket access in an object and can decide which one is best in
your code.
[ ] 🐣 For-In Loops:

Week 1
I Need Help With

Everything has been explained well so far, then there are  no doubts currently

What went well?

doing the exercises during the class, and by myself
Understanding how comments work, identifying functions and variables in them

What went less well?

At the beginning , i was so frustrating trying to understand how a function work and what does it do, and translating that into text, however using the tools already seen to trace the codification and using the breakouts i managed to understand and translate that into comments. Also i understood what functions are and how do they work

Lessons Learned.

What is a function
Variable return and in which cases is used
How to identify parameters ( that include the types/ Boolean, strings, number, etc.)

Sunday Prep Work

Currently i am doing the exercises of testing functions with study-lenses

i would like to thank your consideration for reviewing my comments and doing  the feedback. My apologies

Week 2
I Need Help With

I do not have any problems or doubts with what i have seen so far

What went well?

Understanding what an Array is, and which commands to use in order to push, delete and change values in specific spaces of a string
Comprehending what sides effects and how to avoid them

What went less well?

I have been experiencing some troubles to understand new concepts of Javascript, however this only happens at the beginning of the class, once i start the exercises and the coaches give some feedback everything starts to be less difficult. Everything is solved when i do it myself trying and failing is the key of success

Lessons Learned.

What is an Array
what are Unshift, shift, pop and push and what does each of it
What are side effects
How information of my functions are stored in different memories according to the references

Sunday Prep Work

Currently i am checking again the Arrays info to consolidate the knowledge seen in class

Everything is solved when i do it myself trying and failing is the key of success

indeed, this is very much true!!

Week 3
I Need Help With

I been experiencing a lot of trouble with the exercises i sort of knew how to do the "add number" and "remove number" function but i don't know why the first one doesn't work it display both 'your-output' 'expected output'

What went less well?

Nothing so far has gone well i felt lost with the explanation last Sunday at least with most of it, reason why i am struggling right know

Sunday Prep Work

I will try to do the exercises as i can, and correct them with my team perhaps with their feedback i will understand better

i am adding some photos of the problem i am having right now

i really want to thank you for your efforts and feedback beforehand, i really wish that nevertheless we arrive to finish the exercises a quick review of them would be appreciated.

Week 4
I Need Help With:
i would really like the refactoring process to be explained, i read the concepts and also search information by myself but i don't feel it enough.
What went well?

Functions
The syntax part
Also the explanation seen in class about the previous exercises went well gladly

What went less well?
What has me a bit confused  right now is the refactor logic, as the previous class i would appreciate that one of the coaches explain the exercises nevertheless i arrive to finish them or not
Lessons Learned

Finally i have a better understanding of Javascript, at least a general view of it, i feel more confident exploring the codes, debugging to know how variables change through the running process
How certain functions can also being used in others codifications, i think that what i really like about some exercises is that they use the same functions but written in different ways, but they still execute the same effect

Sunday Prep Work
A quick review of what we have seen so far, plus the prep work for sunday
Thanks for your time :) i know that checking everyone's rhythm can be difficult

i would appreciate that one of the coaches explain the exercises nevertheless i arrive to finish them or not

then please ask for it on Discord :)

What has me a bit confused right now is the refactor logic,

refactoring simply means rewriting the code in a way that it works exactly the same (same input gives same output), just hopefully in a better, more efficient way. in our case, the task is to use the reverse() function instead of the current solution in the exercise.

in the upcoming module we will look at examples where the same result is achieved in many different ways.


Add configurable error and crash reporting

By 'configurable' I mean that it should be easy to set where to send crash reports so that builds can easily set that location


nice example of similarity

http://www.ebi.ac.uk/Tools/omicsdi/#/dataset/pride/PXD002089
But something happen with the publication.

It's a bug from web-app, has fixed it.


Added possibility for overriding the flags of a recommender from JSON.

If provided an option with the key name 'name', it will override the variable '_name' with the given value, if the variable '_name' exists. This overriding possibility is optional.