Error when compiling: requires protobuf extension installed to run

When executing "php protoc-php.php test.proto", I got such output:
protoc-php.php requires protobuf extension installed to run

I get this too.
php -m doesn't show the module is loaded.
web@server:~/php-protobuf-master$ sudo make install
Installing shared extensions:     /usr/lib/php5/20121212/
web@server:~/php-protobuf-master$ sudo nano /etc/php5/apache2/php.ini
from php.ini:
extension_dir=/usr/lib/php5/20121212
extension=/usr/lib/php5/20121212/protobuf.so
nothing bad in /var/log/apache2/error.log upon apache restart.

Hi please help me i want to install php-protobuf in xamp on window.but i have no idea how it will be installed .when i run protoc-php.php its show "requires protobuf extension installed to run". how can i install this extension ??
Thanks

Hi please help me i want to install php-protobuf in xamp on window.but i have no idea how it will be installed .when i run protoc-php.php its show "requires protobuf extension installed to run". how can i install this extension ??
Thanks

For me (and I can't say it will be the same with XAMPP on Windows - I always use Linux) but I realized that I needed to make sure I had loaded the protobuf extension in the command line PHP interpreter as well as the CGI.
If, on the command line you do: "php -m" you should see an alphabetized list of the loaded extensions. If you do not see the protobuf extension you need to find the PHP.ini file the command line interpreter uses (which is not the same path as the regular INI file) and just add the same details for the protobuf extension to it.
Reload Apache and then once you check with "php -m" and see the loaded extension you should be all set.

For me (and I can't say it will be the same with XAMPP on Windows - I always use Linux) but I realized that I needed to make sure I had loaded the protobuf extension in the command line PHP interpreter as well as the CGI.
If, on the command line you do: "php -m" you should see an alphabetized list of the loaded extensions. If you do not see the protobuf extension you need to find the PHP.ini file the command line interpreter uses (which is not the same path as the regular INI file) and just add the same details for the protobuf extension to it.
Reload Apache and then once you check with "php -m" and see the loaded extension you should be all set.

Hi I have a problem when i use   php protoc-php.php foo.proto:
protoc-php.php requires protobuf extension installed to run

@spartan092 Did you see the comment above?

When i use php-protobuf $ sudo make install
make: *** No rule to make target `install'.  Stop.

I feel you must have missed at least one important step.  The complete procedure you've used so far hasn't been posted so I'm guessing at this stage.
I've attached an edited version of the step document I use in our environments.  ALl I removed was information specific to our development environment.
If you:

install the prerequisite packages and libraries (there's a few supporting systems you need)
install a LAMP stack (at least Apache with PHP support and command line support in BOTH php.ini files (totally essential) - there is one for CLI support and one for the CGI module for Apache.
have error free compiling after "phpize", "confugure",  "make" and "make install"
edit both PHP ini files and you see the protobuf extension when you call phpinfo() from a web page and also when you do php -m on the command line, then:

Things should work out ;)
I'm not sure what your physical environment is, but if you're working with a virtual machine, sometimes it's worth it to just start fresh.
Best of luck.
protobuf.md.pdf

@sbtdkj1017 did you do autoconf first to generate all the make files?

@spartan092 ^^
to be clearer
autoconf
./configure
make
sudo make install

add extension to php.ini file.

@tonyliu-minted , after "add extension to php.ini file", it works.
Thanks for reply


[Event Request] page 5900 "Service Order" trigger OnQueryClosePage()

Please can you add the following code/event to the above procedure...
trigger OnQueryClosePage(CloseAction: Action): Boolean
var
    IsHandled: Boolean;     //NEW CODE
begin
    IsHandled := false;     //NEW CODE
    OnBeforeOnQueryClosePage(Rec, DocumentIsPosted, IsHandled); //NEW CODE
    if IsHandled then       //NEW CODE
        exit;               //NEW CODE

    if not DocumentIsPosted then
        exit(Rec.ConfirmCloseUnposted());
end;

The event publisher should be as follows...
[IntegrationEvent(true, false)]     //SENDER = TRUE
local procedure OnBeforeOnQueryClosePage(var ServiceHeader: Record "Service Header"; var DocumentIsPosted: Boolean; var IsHandled: Boolean);
begin
end;

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. Please do not reply to this, as we do not monitor closed issues. If you have follow-up questions or requests, please create a new issue where you reference this one.
Build ID: 11115.


[stable/prometheus-operator]: additionalScrapeConfigs in docs must be [] not the {}

What this PR does / why we need it:
additionalScrapeConfigs in README must be [] and not {} as it is.
Checklist
[Place an '[x]' (no spaces) in all applicable fields. Please remove unrelated fields.]

[x] DCO signed
[x] Chart Version bumped
[x] Variables are documented in the README.md
[x] Title of the PR starts with chart name (e.g. [stable/mychartname])

/ok-to-test
/lgtm


converting vim-textobj-user to mini.ai

Contributing guidelines

[X] I have read CONTRIBUTING.md
[X] I have read CODE_OF_CONDUCT.md

Module(s)
mini.ai
Description
Currently trying to convert my setup to the mini ecosystem. I have several vim-textobj-user based plugins, such as this one or this.
These plugins straightforwardly define their text objet regexes in one file, but I just don't know how to convert the
call to textobj#user#plugin to mini.ai.
Any help would be appreciated.

Hi there!
All custom textobjects are defined inside config.custom_textobjects table. Here are some examples. So no need to call textobj#user#plugin, only define inside require('mini.ai').setup() call.
Here is a help section for full specification capabilities.
Here are some examples of user setups.
I once quickly wrote a version of textobject for whole buffer in this Reddit comment.
Hope this helps.
I've been planning to do a wiki page with various setups of custom textobjects for quite a while now. Maybe in the near future.

Ok, most of that was what I expected, thanks for the clarification. By the way the documentation actually has an implementation of the "global" text object shorter than the one in the reddit comment here.
So, my last question is let's say I want to transcribe this plugin to mini.ai. It looks like I should essentially copy all of the logic into a custom textobject and return the from and two properties. However the above example has differing logic for the "around" and "inside" verbs on the text object. How can I communicate these things to mini.ai in order to maintain their functionality?

Your two paragraphs are interestingly interconnected :)
Yes, there is a whole buffer textobject implementation in documentation, but it is less flexible than the one from Reddit post. The difference being that the former doesn't differ between a and i textobjects, while the latter does. The way it is done is by utilizing its input arguments: all callable custom textobject specification are called with arguments same as MiniAi.find_textobject(). There is a note about it in specs docs but I realized it is not reflected in examples.
So the shorter answer is: use first ai_type argument of callable specification to condition the returned region(s).

Sorry for the prod @echasnovski ? At this point I have constructed two regexes to simulate one vim-textobj plugin I use: one for "a," and one for "i." Is there an easy way to translate that into mini/ai?

Sorry for the prod @echasnovski ? At this point I have constructed two regexes to simulate one vim-textobj plugin I use: one for "a," and one for "i." Is there an easy way to translate that into mini/ai?

Depends on regexes, unfortunately.
What are those textobjects?

The regex here, whih correlate to:
a: \s\+\(\([a-zA-Z0-9\-_:@.]\+\)\(=\(\(".\{-}"\)\|\(\w\+\)\)\)\=\)
i: \(\([a-zA-Z0-9\-_:@.]\+\)\(=\(\(".\{-}"\)\|\(\w\+\)\)\)\=\)

The regexex here, which correlate to:
a: \s\+\(\([a-zA-Z0-9\-_:@.]\+\)\(=\(\(".\{-}"\)\|\(\w\+\)\)\)\=\) i: \(\([a-zA-Z0-9\-_:@.]\+\)\(=\(\(".\{-}"\)\|\(\w\+\)\)\)\=\)

That is a scary looking regex...
Do you actually want to implement xml attributes, i.e. match anything similar inside to these entries:

?
This can be implemented with composed Lua pattern (as described in textobject specification. Its complexity depends on how precise you want it to be.
I'd settle for simpler patterns with something like this:
require('mini.ai').setup({
  custom_textobjects = {
    x = { '%s+[^%s<>=]+=[^%s<>]+', '^%s+().*()$' },
  }
})

Little breakdown of what it does:

Match these: positive whitespace + group of allowed characters + = + group of allowed characters. Allowed characters here are anything other than whitespace, "<", or ">". This will match most of examples, but won't match "data-updatable" (I'd suggest using built-in aW and iW for these cases).
Treat whole match as a textobject, trim initial whitespace to have i textobject.

Thank you so much, my poor understanding of lua patterns is what is holding me back (although not an excuse!).
I'll look back at the documentation and try to make out a solution for this and variable-segment in the future. My two last pesky vim plugins!

Thank you so much, my poor understanding of lua patterns is what is holding me back (although not an excuse!).
I'll look back at the documentation and try to make out a solution for this and variable-segment in the future. My two last pesky vim plugins!

Lua pattern are initially design to be not as complicated as regular regexes. If you at least somewhat familiar with regexes, it shouldn't be much of a problem. I mostly learned them from here while experimenting using built-in string module. One important detail, though, is that LuaJit in Neovim also contains a so called "frontier pattern" - very useful to ensure that match is as wide as necessary.
Here is a MVP for 'variable-segment'. It doesn't really work in edge cases, so you can tweak it further. And speaking of frontier pattern, it also has is a slight update for xml attributes which includes maximum whitespace to the left of it:
require('mini.ai').setup({
  custom_textobjects = {
    x = { '%f[%s]%s+[^%s<>=]+=[^%s<>]+', '^%s+().*()$' },
    v = { { '%f[%w]()%w+()_', '%f[%u]()()%w*[%l%d]()()%u' } },
  }
})

Thanks so much!

Hi. Just wanted to ask if there is some kind of documentation/collection of mini.ai textobjects as a replacement for vim-textobj-user and nvim-various-textobjs? I would like to migrate to mini.ai from targets.vim and this two textobj-libraries but having first to reimplement every textobject seems kind of daunting.

Thanks for letting me know about the textobjects in mini.extra. I didn't find any reference in the mini.ai-readme or docs. Maybe it should be mentioned somewhere for new users. indent-textobject is one of the most important for me. Some other objects are:

word-column
variable-segment
key-value
url

Of course there can be many more as can be seen in nvim-various-textobjs and vim-textobj-user. Maybe except of word-column the objects aren't that difficult to implement by oneself but I think it would be nice to have the most common textobjects-implementatons either be mentioned in a wiki or imo even better be shipped with a separate module like mini.textobjects. Together mini.ai and mini.textobjects could replace both targets.vim and other textobject-plugins like nvim-various-textobjs and vim-textobj-user and help new users to make the shift to exclusively using mini.ai.
What I find so appealing about mini.ai is that it unifies targets.vim and other textobject-plugins in a coherent way and makes it possible to use in/an, il/al, g] and g[ on all the textobjects defined by mini.ai which is not possible with 3rd-party-textobject-plugins. Moving from targets.vim to mini.ai is easy. From textobject-plugins not that much depending on how many textobjects the user is depending on.
PS: Thanks for the great plugins you are delivering. Although they are supposed to be 'mini' many of them seem to be equal or better than the old established 'big' plugins.

I didn't find any reference in the mini.ai-readme or docs. Maybe it should be mentioned somewhere for new users.

Indeed, thanks for noticing. There is a mention now.

word-column

Yeah, might be tricky to implement in full. As it seems to have an extra logic for what to consider a "column".

variable-segment

Should be possible, but frankly I don't really like the idea. Being more explicit during editing tends to be more robust (at least for me).

key-value
url

Indeed, both seem to be possible.

... or imo even better be shipped with a separate module like mini.textobjects.

I don't think this will happen. If some textobject is a combination of being non-trivial, popular, and having concise but not trivial implementation, it might be a candidate for MiniExtra.gen_ai_spec entry. This is a case by case decision, which I went through based on my editing experience to land on its current entries.
I am open to suggestions. Yet, none of those four seem to fit in those criteria. I don't see concise implementation for first three and "url" seems to be rather trivial in terms of textobjects (as in "it usually can be replicated with other textobject like iW, i), etc.).

Yeah, might be tricky to implement in full. As it seems to have an extra logic for what to consider a "column".

Do you mean it wouldn't be possible to implement word-column even if one would try because of mini.ai limitations?

I don't see concise implementation for first three

Regarding variable-segment/subword why do you think it couldn't be concise if it would simply deal with camelCase. For underscores and other separators in most cases ci_ or da_ should be enough except for the outer subwords. Assuming we want to delete a subword with * being the cursor here are the cases:

cam*elCaseVar -> caseVar
Cam*elCaseVar -> CaseVar
camelCa*seVar -> camelVar
camelCaseV*ar -> camelCase

I think just covering the camelCase scenario should be concise, popular and not to trivial.

For the non-camelcase scenarios an outer-operator combined with ci_ and da_ would make more sense. Like do_ would be:

und*er_score_var -> score_var
under_sc*ore_var -> under_score (because do_ would search for the next outer _)
under_score_v*ar -> under_score
dol_ and under_score_v*ar -> score_var

What do you think about a last-paste-object? Mapped to g; by nvim-various-textobjs. My main-usecase is >g; to indent the last pasted code.

I found some weird behavior with mini.extra indent-object. In the following case vai and vii both only select from line 2 to 5. Shouldn't vai also include 1 and 6?
1 line
2    *line
3        line
4        line
5    line
6 line

In the next case vai and vii both also select lines 2 to 5. Shouldn't vii select 3 and 4?
1 line
2    line
3       *line
4        line
5    line
6 line

Yeah, might be tricky to implement in full. As it seems to have an extra logic for what to consider a "column".

Do you mean it wouldn't be possible to implement word-column even if one would try because of mini.ai limitations?

I mean that it would most certainly require a callable textobject specification with some ad hoc logic about what should be considered a "column". Definitely out of scope for 'mini.extra'.

Regarding variable-segment/subword why do you think it couldn't be concise if it would simply deal with camelCase.

There is already an example for camel case words. It looks scary, but it works for all four examples you listed.

For the non-camelcase scenarios an outer-operator combined with ci_ and da_ would make more sense. Like do_ would be:

The 'mini.ai' is about a (around) and i (inside) textobjects. Adding new one is out of scope. That said, tweaking _ textobject to also accept space as edge should be doable via nested patterns.

What do you think about a last-paste-object? Mapped to g; by nvim-various-textobjs. My main-usecase is >g; to indent the last pasted code.

Judging by its source code, it is straight up area between [ and ] marks. Making it work in most cases is fairly straightforward with  the following:
local select_last_change = function()
  local mode = vim.fn.mode()
  local is_visual = mode == 'v' or mode == 'V' or mode == '\22'

  vim.api.nvim_win_set_cursor(0, vim.api.nvim_buf_get_mark(0, '['))
  vim.cmd('normal! ' .. (is_visual and 'o' or 'v'))
  vim.api.nvim_win_set_cursor(0, vim.api.nvim_buf_get_mark(0, ']'))
end
vim.keymap.set({ 'x', 'o' }, 'g;', select_last_change)

I found some weird behavior with mini.extra indent-object. In the following case vai and vii both only select from line 2 to 5. Shouldn't vai also include 1 and 6?

At first glance, yes it should be from 1 to 6. I'll take a look later.

I have also recently migrated from vim-textobj-user. Can you provide any example that could tackle the following please?  @echasnovski
| The 'mini.ai' is about a (around) and i (inside) textobjects. Adding new one is out of scope. That said, tweaking _ textobject to also accept space as edge should be doable via nested patterns.
I'm struggling to achieve the following

da_ or a user-defined 'daX` pattern to

und*er_score_var -> *score_var
under_sc*ore_var -> under_*var
under_score_v*ar -> under_score*

di_ or a user-defined diX pattern to

und*er_score_var -> *_score_var
under_sc*ore_var -> under_*_var
under_score_v*ar -> under_score_*

Many thanks in advance!

FWIW, below is what I settled with
    v = {
      {
        -- a*aa_bbb
        { "[^%w]()()[%w]+()_()" },
        -- a*aa_bb
        { "^()()[%w]+()_()" },
        -- aaa_bbb*_ccc
        { "_()()[%w]+()_()" },
        -- bbb_cc*cc
        { "()_()[%w]+()()%f[%W]" },
        -- bbb_cc*c at the end of the line
        { "()_()[%w]+()()$" },
      },
    },

I can't get my head's around when setting up () separately :)

I can't get my head's around when setting up () separately :)

Here is a description of what it does. It is basically a way to define how a and i textobjects will be extracted from the match.

I can't get my head's around when setting up () separately :)

Here is a description of what it does. It is basically a way to define how a and i textobjects will be extracted from the match.

yes I read it so I came up with  { "_()()[%w]+()_()" } etc...but I haven't figured out how to transform it into   { '_[^ _]+ ',    '^().().*()().$' }, format.
Separately, as to the next step, I'm currently struggling with combining https://github.com/echasnovski/mini.nvim/issues/151#issuecomment-2336970229 with CamelCases. I was using this before starting using mini.ai and it is neat to handle both CamelCase and under_score_case in one TextObj.
Any help / suggestion will be well appreciated!

... but I haven't figured out how to transform it into  { '_[^ _]+ ', '^().().*()().$' }, format.

If it works like that, then I suggest to use it like that. No need to follow a specific format. The nested pattern format was mostly a result of my previous attempts to combine several patterns at once, until it was apparent that handling them separately looked like the best choice.

Separately, as to the next step, I'm currently struggling with combining #151 (comment) with CamelCases. I was using this before starting using mini.ai and it is neat to handle both CamelCase and under_score_case in one TextObj.
Any help / suggestion will be well appreciated!

I'd start by adding new patterns to what you already got. If this doesn't work, textobject specification can be callable/function (either fully or instead of a single pattern) to provide vastly more flexibility (at the cost of more verbosity). In the end, it possible that 'mini.ai' nested pattern approach is not built for this kind of complex/flexible textobject specification.
Personally, it seems to be a better idea to have separate textobjects for snake and camel cases, though.


Improve SmoothListView.handleEnginePendingEvent by triggering conditionally

Could it be possible to wrap the Smoothlistview in a Listener and then listen for pointerUpEvents?

For pointer move events, already handle it well in PreemptRender mechanism
For pointer up/down/whatever-fancy events, the Brake mechanism works well

Both are demonstrated in SmoothListView
anyway, you may not know those terms before I write down an article explaining the internals...

bump


Add service for SzEntity -> to PDF

There is currently no pretty-printing functionality, or result to PDF functionality. We could either add it in multiple projects(which isn't very DRY), or we could implement a more generic way of getting a printable format of an entity result.
I'm opting for the more generic method that will just require a light amount of wiring between the SDK service and the app implementing the feature.

Pull Requests:

https://github.com/Senzing/sdk-components-ng/pull/57


[Tiered caching] Framework changes

Description

This change adds tiered caching framework changes. Also integrates with existing IndicesRequestCache only with existing in-memory cache.
Everything should as expected with RequestCache like it works currently with this change.
Disk tier support and cluster setting to turn this feature on/off would be added later.

Related Issues
Resolves https://github.com/opensearch-project/OpenSearch/issues/10759

Check List

[x] New functionality includes testing.

[x] All tests pass

[x] New functionality has been documented.

[x] New functionality has javadoc added

[x] Commits are signed per the DCO using --signoff
[x] Commit changes are listed out in CHANGELOG.md file (See: Changelog)
[ ] Public documentation issue/PR created

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

@jainankitk @sohami

@sohami Can you check this again?

@Bukhtawar - Thanks for reviewing and providing your feedback.

Have we considered using Memory mapped IO for caches, for instance check this out
https://www.usenix.org/system/files/hotstorage20_paper_kolokasis.pdf
TerraCache offsets the overhead of ser/de in case of off-heap caches, while also minimises on GC overhead

If I understand correctly, it is similar to extending heap size by enabling swap but ensuring only cache objects are stored in the swap space? This is an interesting way of avoiding the cost of ser/des. Although, I still believe that disk based cache is the right choice for phase 1:

The primary benefit (more than 90%) comes from avoiding the re-computation which disk based solution does achieve as well.
The solution is experimental and more complex, which can cause regressions without any significant benefit (<10% in overall scheme of things)
The workload for demonstrating the performance benefits is kind of different. For ML workloads, cache is used for storing the intermediate results in eventual convergence of the ML model, but opensearch results are final (unless there is data refresh when it is completely discarded)

Later phases of Tiered Caching does have scope for evaluating different caches to improve the cache performance itself. This will be really good addition there for helping further reduce that 10% overhead.

@jainankitk @Bukhtawar Let me know if you guys are fine with merging this PR. There are these 2 unresolved conversations on this PR.

@jainankitk @Bukhtawar Let me know if you guys are fine with merging this PR. There are these 2 unresolved conversations on this PR.

Thanks @sohami I have left few comments will have @sgup432 take a look

@Bukhtawar - Thanks for reviewing and providing your feedback.

Have we considered using Memory mapped IO for caches, for instance check this out
https://www.usenix.org/system/files/hotstorage20_paper_kolokasis.pdf
TerraCache offsets the overhead of ser/de in case of off-heap caches, while also minimises on GC overhead

If I understand correctly, it is similar to extending heap size by enabling swap but ensuring only cache objects are stored in the swap space? This is an interesting way of avoiding the cost of ser/des. Although, I still believe that disk based cache is the right choice for phase 1:

The primary benefit (more than 90%) comes from avoiding the re-computation which disk based solution does achieve as well.
The solution is experimental and more complex, which can cause regressions without any significant benefit (<10% in overall scheme of things)
The workload for demonstrating the performance benefits is kind of different. For ML workloads, cache is used for storing the intermediate results in eventual convergence of the ML model, but opensearch results are final (unless there is data refresh when it is completely discarded)

Later phases of Tiered Caching does have scope for evaluating different caches to improve the cache performance itself. This will be really good addition there for helping further reduce that 10% overhead.

Thanks @jainankitk what are your thoughts on doing mmap I/O for caches on disk, that should still be a good interim solution. I am fine picking this up incrementally but definitely something we should explore

Thanks @sgup432 I am still catching up, left some comments to simplify class design.

Thanks. Replied to your comments @Bukhtawar. Let me know what you think.

Thanks @jainankitk what are your thoughts on doing mmap I/O for caches on disk, that should still be a good interim solution. I am fine picking this up incrementally but definitely something we should explore

As confirmed by @sgup432 in https://github.com/opensearch-project/OpenSearch/pull/10753#issuecomment-1875772521, ehcache uses MappedByteBuffer for reading cache files from disk. So, that should help us keep the frequently used sections of cache in memory. While we avoid disk read latency, we still pay the ser/des penalty. @sgup432 / @peteralfonsi - Let us keep an eye on the ser/des cost during longevity and stress testing.


Create SUPPORT.md

Description

Motivation and Context

How Has This Been Tested?

Screenshots (if appropriate)

Types of changes

Bug fix (non-breaking change which fixes an issue)
New feature (non-breaking change which adds functionality)
Breaking change (fix or feature that would cause existing functionality to change)

Checklist

[ ] I have updated the documentation accordingly.
[ ] I have read the CONTRIBUTING document.
[ ] I have added tests to cover my changes if appropriate.
[ ] All new and existing tests passed.

@PaloAltoNetworks/prisma-cloud is anyone able to review this?


Chromdriver args are not working

Hello I am trying to apply different args in the service array but they are not working, I am trying a simple one to maximize the window. Chrome gets launched but is not maximized.
Another argument I want to try --unlimited-storage
Chrome Version: 89.0.4389.90
OS: MacOS 10.14.6
Node: v12.20.0
NPM: 6.14.8
"devDependencies": {
"@wdio/cli": "^7.2.3",
"@wdio/firefox-profile-service": "^7.2.1",
"@wdio/local-runner": "^7.2.3",
"@wdio/mocha-framework": "^7.2.1",
"@wdio/spec-reporter": "^7.2.1",
"@wdio/sync": "^7.2.3",
"chromedriver": "^89.0.0",
"wdio-chromedriver-service": "^7.0.0"
}
services: [
        ['chromedriver', {
            logFileName: 'wdio-chromedriver.log', // default
            outputDir: 'driver-logs', // overwrites the config.outputDir
            args: ['--start-maximized']
        }]
      ],

I found my issue, those are chrome options.
Posting the solution maybe it helps someone, you can send them in the capabilities
capabilities: [{
browserName: 'chrome',
'goog:chromeOptions': {
args: ['unlimited-storage']
}
}]


Add runtime tests

[ ] Define test cases

Docker

[x] Build image with Docker
[x] Start image
[x] Test availability of Docker daemon
[x] Start container

[ ] Run appropriate test cases in workflow

Migrated to https://github.com/uniget-org/tools/issues/74


[STORM-3739] Scheduling should sort numa zones by host groups

What is the purpose of the change
When using numa zones, nodes should be sorted by host groups for scheduling
How was the change tested
Added new tests for confirm successful host grouping in storm-server

And travis build failed
java.lang.AssertionError: topology status TopologyName00047 is not successful Not enough resources to schedule after evicting lower priority topologies. Additional Memory Required: 23040.0 MB (Available: 1401050.0 MB). Additional CPU Required: 175.0% CPU (Available: 25069.0 % CPU).Cannot schedule by GenericResourceAwareStrategy (10001 states traversed in 2083 ms, backtracked 9630 times, 371 of 376 executors scheduled)
	at org.apache.storm.scheduler.resource.TestUtilsForResourceAwareScheduler.assertStatusSuccess(TestUtilsForResourceAwareScheduler.java:516)
	at org.apache.storm.scheduler.resource.TestUtilsForResourceAwareScheduler.assertTopologiesFullyScheduled(TestUtilsForResourceAwareScheduler.java:484)
	at org.apache.storm.scheduler.resource.strategies.scheduling.TestLargeCluster.testLargeCluster(TestLargeCluster.java:422)


fix(Search): type definition for layout renderer

Fixes #4308

Corrected Types.
SearchCategoryLayoutProps is defined and should be used.

@layershifter
Hi, could you review this?
Thank you for nice library.

Codecov Report

Merging #4309 (afb4a6e) into master (a8b5daf) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master    #4309   +/-   ##
=======================================
  Coverage   99.75%   99.75%
=======================================
  Files         180      180
  Lines        3241     3241
=======================================
  Hits         3233     3233
  Misses          8        8

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 a8b5daf...afb4a6e. Read the comment docs.


Cart Template for Checkout process initiation

Don't merge this PR, I have already taken the template from here


convert.lua not present in release 4

Is there any particular reason for not having nn to cudnn conversion function in R4?

fixed now in R4 branch.


merge from arlac77/reader-line-iterator

.travis.yml

chore(travis): add 14.9.0 remove 14.8.0 (jobs.include.node_js)
chore(travis): remove /^greenkeeper/.*$/ (branches.only)

.gitignore

chore: add  ()

:tada: This PR is included in version 1.0.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Duplicated operations being fired from multiple clicks on Save/Delete

It happens mostly for users with slow internet. After clicking once on buttons that would fire create, update or delete operations, before the process gets finished, if user click again, duplicated create, update, or delete would be fired again. For create,  duplicated Shelves/Books/Chapters/Pages get created; for update and delete, not found errors would show up.
Other than users with slow internet, for some users, it's natural to double, triple, sometimes even multiple click on a button trying to do a single save/delete operation. They would likely see the issue a lot due to this habit.
It is nothing big. Duplicated created items can be removed and the not found error is not actually affecting the intended operation. Just that it would be really nice if this can be handled gracefully for better user experience.
Repro steps for the not found error:

Navigate to any page.
Click on Delete.
For delete page confirmation, rapidly click on CONFIRM in a very short amount of time (like 5-9 clicks per second). (Because it is hard to have slow internet for testing purpose, we need to click rapidly in order to get the same results.)
The page not found error would show up due to multiple clicking.

There are similar issues for saving page while editing.
Repro steps for duplicate/multiple creation:

Navigate to any shelve.
Click on New Book.
For creating new book, rapidly click on SAVE BOOK in a very short amount of time (like 5-9 clicks per second). (Because it is hard to have slow internet for testing purpose, we need to click rapidly in order to get the same results.)
Duplicate/Multiple books would be created.

Test Environment:

OS: Win 10
Browser: Google Chrome, Version 89.0.4389.90 (Official Build) (64-bit)

Thanks for the request here, but I'm going to go ahead and close this off. While we could add some handling to prevent duplicate submissions, I don't believe it'd be worth the added complexity at this time since I've had no other report/indication of this being an active issue for users.


Generate internal class

Hello,
do you have any plans on adding the possibility to select if the generated code should have public or internal visibility? Most of my use-cases do not require public visible access to the resources and so I would really like to be able to change the visibility to avoid cluttering the public API.
Either a global property or a metadata entry for each file would be most suited to handle this I think.

I've added an option ResXFileCodeGenerator_PublicClass to select if the generated code should have public or internal visibility. I haven't pushed the changes yet, but I'll publish a NuGet package tomorrow if possible.

Now VocaDb.ResXFileCodeGenerator generates internal classes by default. You can change this behavior by setting
PublicClass (per file) or ResXFileCodeGenerator_PublicClass (globally) to true. For more information, see README.md.

That works perfectly. Thank you for the support.


Delete doesn't work?

Seems that the item remains there after clicking delete

This was indeed broken, due to coconut.data's inability to reset fields to null (but the empty list is null also). I fixed it a few days ago though. Is your checkout of this project up to date?

Is your checkout of this project up to date?

Oh well, obvious no :smile:


ISmsSender not defined anywhere - Doesn't explain how to register it with the UserManager for sending

The above code works by magic as far as I can tell because ISmsSender, unlike IEmailSender, is not defined anywhere I can find, and you're not defining it above. As a result, even looking at the GitHub sample, I don't know how the 2fa process is actually knowing how to send an sms message for you.
You need to define exactly where ISmsSender comes from OR if it isn't a stock interface, how to get the UserManager to know about it and work. Otherwise this sample is useless.

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

ID: 7af94e25-52f5-9f7e-33e2-67f223c7472c
Version Independent ID: 344f2974-548c-9449-c892-5622063892fe
Content: Two-factor authentication with SMS in ASP.NET Core
Content Source: aspnetcore/security/authentication/2fa.md
Product: aspnet-core
GitHub Login: @Rick-Anderson
Microsoft Alias: riande

I'll address this in the next sprint.

Keep in mind we recommend you not use 2FA but rather QR code
ISmsSender is an interface the 2.0 templates generate. It's not in any MS library.
public interface ISmsSender
{
    Task SendSmsAsync(string number, string message);
}

OK, well my question still isn't answered given that I don't want to be using QR codes.  How does one register ISmsSender with the SignInManager so it knows how to send the message?

@JohnGalt1717 Step through the template generated code to see how it works (and the sample).

Thanks for contacting us.
We don’t have the resources to invest in this area, so we are closing the issue. Should your request generate enough  👍 responses, we’ll reconsider.

At the very least fix the documentation so that it's obvious that this isn't an interface that's included and define the interface so people know what the heck is going on.

Hey, any progress on that ISmsSender? How to inject this to UserManager?

@Bassist067 There isn't any such thing. The documentation needs to be fixed to note this and give an example of what ISmsSender should look like and then note that you need to use a 3rd party implementation.

Surely SMS should have some priority

SMS is not secure, that's why we recommend QR code

cheers Rick, so it's not secure if the attacker can get hold of the other persons device OR is the vulnerability not dependent on that?

SMS is susceptible to SIM Swap attacks

Hi Rick, I'm looking to use 2FA for our customers because we receive their email and phone number from a reliable source (their Mortgage Lender) and although that doesn't mitigate the SIM swap attack vector it does provide us with a convenient way to ensure 2FA is turned on by default. If we can have additional security by default then this raises the bar on security without compromising usability. I would prefer to use time based one time passwords however getting our users to download an additional application to do this does not align with a friction free onboarding path for our users and would require that we don't have 2FA enabled by default.
I guess all I'm really hoping is that you let us know if this is something that is likely to ever see the light of day or is it something that you think will fall out of favour completely and ever be developed/completed as we will have to make alternate plans.

@gavinkilbride  you're still free to use SMS/2FA and like you say it's pretty simple.

@Rick-Anderson so you're saying I can implement a custom 2fa provider in order to achieve SMS 2FA in Microsoft.AspNetCore.Identity 3?

@blowdart what's our guidance for SMS 2FA for ASP.NET Core 3.0. @gavinkilbride makes what seems to me a reasonable argument for it (Friction free 2FA).

Out guidance is the same as NIST, no-one should be doing this any more. The previous approach in 2.0 should work, but we're not going to document it.

Hello, I have been all over the internet trying to implement this SMS 2FA thing, similar to the other requests, I do not want to introduce extra complication on the user part, so QR code is not an option, PLEASE, any information that would guide me on how to implement this would be greatly appreciated. Thanks

https://docs.microsoft.com/en-us/aspnet/core/security/authentication/2fa?view=aspnetcore-1.1 shows how to do it. Generate a 1.1 project and copy the code to a 3.1 project.

"This tutorial shows how to set up two-factor authentication (2FA) using SMS." Please remove this sentence. After creating a ASPSMS Account, asking for a test credits at  ASPSMS , installing ASPSMS Package, modifing my code, I'm google for "ISmsSender", to read this issue...
Please supersede "This tutorial shows how to set up two-factor authentication (2FA) using SMS." with " Two-factor authentication (2FA) using SMS is not supported in Core 3.1". Many thanks!

@KarliHuber you're free to use the 1.x and 2.x generated code for SMS..

Hi guys. I really believe this needs to be addressed. Spent so long puzzling why I could not find this declaration anywhere. At the very least amend the documentation or provide the interface in Microsoft.AspNetCore.Identity.UI.Services. Should be super easy to do with such a lightweight interface?

Please don't use the interface in the docs if there is no interface to use...

As you're clearly not every going to complete the documentation on this, you should have a note at the top that says the documentation is incomplete and you're on your own trying to implement it.
And that you recommend against SMS - and why.

We've had thousands of customers successfully use this approach using this document.


Host docs pages on github and convert HTML to markdown

Also, update README to point to new docs locations.

Same can be done here, just change the name of the folder from "doc" to "docs".
Won't do the markdown part though

I've started working on converting some of these files to markdown, take a look at my PR and let me know of any suggestions!


Add new command to find next N occurrences

It can be:
next N where N is nor required parameter. Default value for example = 5

@pryabov I think it might make sense to default the parameter to 1

@akravch we can take it from configuration file :)

Done.


What's next

After I found the location of the container image, what should I do to deploy it to iot edge and keep it run?

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

ID: 76478d8c-f709-0773-14f5-4281789c9948
Version Independent ID: 589a3ef4-2057-612a-d1d9-f724635433ed
Content: Deploy an Azure Machine Learning model to an Azure IoT Edge device
Content Source: articles/machine-learning/desktop-workbench/deploy-to-iot-edge-device.md
Service: machine-learning
GitHub Login: @tedway
Microsoft Alias: tedway

@davidyan0429 Thanks for the feedback! I have assigned the issue to the content author to investigate further and update the document as appropriate.
@tedway Hi, this is a doc-enhancement issue, could you please add more details as necessary? Thanks a lot!

The article is not updated for IoTEdge-GA, please have it updated!

@tedway Hi Ted, just want to see if there any update here?
@ilyas-it83 Thanks for your follow-up.

@kgremban Thanks a lot!
@davidyan0429 @ilyas-it83 Looking forward to your feedback! Thanks.

@YutongTie-MSFT - this article was deprecated in September and is no longer maintained. #please-close.

@davidyan0429 We will now proceed to close this thread. If there are further questions regarding this matter, please tag me in your reply. We will gladly continue the discussion and we will reopen the issue.


Saveload example that features serializing/deserializing a whole World

Now that #460 has been merged, do you think we can get a more updated saveload example? I havent had much of a look at the existing docs, but it seems a little confusing. How would I go about e.g. serializing a whole World?

Actually, the docs for the specs::saveload::ConvertSaveload for the git version are pretty decent, what I'm really after is an easy example for serializing everything contained in a World.

You cannot just serialize the whole world, you would have to specify the components individually.

Oh ok, would there be a way to implement that? It would be incredibly helpful.

This is basically blocked by Rust, we need specialization for implementing that feature.

There is AnyStorage which we have a collection of, but not every component is serializable. If there was specialization, it could provide a method that serializes the components if possible.
By specifying all the types we can statically retrieve the implementation for Serialize / Deserialize.

Got it, thanks. I'll try my hand at serializing the individual components, I just have quite a few of them haha

@torkleyy
I want to saveload World either
specialization feature is not stable yet but it's possible to apply to Serialize and Deserialize
I make crate for that https://crates.io/crates/maybe-serde
it can be help for solve this issue?

Interesting! I think it could be used for this, yes.


Option for using vanilla biome height map

Would it be possible have an option to use the vanilla heightmap so we only have to provide a biomemap image and have a world generate from that?

added in 1.2


Clickable graphics

It is a pity that the graphics on the About page are not clickable, It is tempting to click within the picture. Without that capability, there are no apparent links on that page.

Alan as of now this image is not finalised. Carole may decide to scrap it completely so no point making it all fancy right now. Once the approves it then we can think of making it clickable.


Make JOYMOUSE a core option.

JOYMOUSE as a core option so it can be memorized on next launch.
Made Retropad_A the selection button as it is the "OK" button in Retroarch menu.
(Also put "Seek Sound" default to OFF as it is bugged at the moment and just makes a never ending noise.)

Nice implementation.
I want to change 2 items.

JoyMouse's button is assigned 'left click'=B button and 'right click'=A button.
I think 'left click' does not mean 'OK'.
I want to unify the vocabulary. 'Gamepad' -> 'Joypad'.
(When I wrote Linux kernel's joypad driver, They said so strongry.)

Thanks your idea.
I applied.


beets: fix build with mutagen 1.45

Motivation for this change
Build was broken:
FAIL: test_read_audio_properties (test.test_mediafile.WavpackTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/build/source/test/test_mediafile.py", line 440, in test_read_audio_properties
    self.assertEqual(getattr(mediafile, key), value)
AssertionError: 16 != 0

See also https://github.com/beetbox/mediafile/issues/34
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 nixpkgs-review --run "nixpkgs-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.

Somebody was faster than me: #96886


"React does not recognize the autoHide prop on a DOM element."

I'm using the latest version of simplebar-react but I'm experiencing the same issue outlined in this closed issue https://github.com/Grsmto/simplebar/issues/436.
The issue doesn't seem to be fixed, so perhaps re-open the previous issue, or continue using this issue.
Also, I tried to use just data attributes, but then then auto hide was still enabled
data-simplebar
data-simplebar-auto-hide="false"

I was switching between branches, and it turns out our setup was going from an old version to the current version between branches. The current version is good - ignore this issue.


Update Posts “license”

Automatically generated by Netlify CMS

👷 Deploy Preview for e-commerce-nest processing.

Name
Link

🔨 Latest commit
f67951a86b02c47e3c837f620bbaa279e240f968

🔍 Latest deploy log
https://app.netlify.com/sites/e-commerce-nest/deploys/63c6492b7bb6d90008741817


Consolidating the two most popular JavaScript type systems

It might not be easy, but I believe it would be beneficial for everyone in JS community to have a path of consolidating the two type systems. Please see https://github.com/tc39/ecma262/issues/45

TypeScript and Flow (I'm assuming this is the other one you're referring to, although there are other JS-based typed languages) have reasonably different aims, design goals, and approaches. Clearly TS isn't perfect or FB wouldn't have funded Flow, and clearly Flow isn't perfect or everyone would use TS, and it's a good thing that people are able choose from a variety of type systems depending on their preferences and applications.
We've worked with Flow on some things in the past and will continue to collaborate where it makes sense. "Consolidation" would just be the production of a third language.


Can't select a python interpreter

Type: Bug
Command 'Python: Select Interpreter' resulted in an error
command 'python.setInterpreter' not found
ok
VS Code version: Code 1.83.1 (f1b07bd25dfad64b0167beb15359ae573aecd2cc, 2023-10-10T23:48:05.904Z)
OS version: Windows_NT x64 10.0.22621
Modes: Restricted

![image](https://github.com/microsoft/vscode/assets/120477422/2c3dd923-2e0d-448c-b19d-1bd7f5799035)
System Info

Item
Value

CPUs
Intel(R) Core(TM) i5-10500T CPU @ 2.30GHz (12 x 2304)

GPU Status
2d_canvas: enabledcanvas_oop_rasterization: enabled_ondirect_rendering_display_compositor: disabled_off_okgpu_compositing: enabledmultiple_raster_threads: enabled_onopengl: enabled_onrasterization: enabledraw_draw: disabled_off_okvideo_decode: enabledvideo_encode: enabledvulkan: disabled_offwebgl: enabledwebgl2: enabledwebgpu: enabled

Load (avg)
undefined

Memory (System)
15.78GB (5.83GB free)

Process Argv
--crash-reporter-id db892388-310a-41b9-a988-08f223cf8a5b

Screen Reader
no

VM
0%

Extensions (2)

Extension
Author (truncated)
Version

python
ms-
2023.18.0

vscode-pylance
ms-
2023.10.20

A/B Experiments
vsliv368:30146709
vsreu685:30147344
python383cf:30185419
vspor879:30202332
vspor708:30202333
vspor363:30204092
vstes627:30244334
vslsvsres303:30308271
vserr242:30382549
pythontb:30283811
vsjup518:30340749
pythonptprofiler:30281270
vshan820:30294714
vstes263:30335439
vscod805:30301674
binariesv615:30325510
bridge0708:30335490
bridge0723:30353136
vsaa593:30376534
pythonvs932:30410667
py29gd2263:30856252
vsclangdf:30486550
c4g48928:30535728
dsvsc012:30540252
pynewext54:30695312
azure-dev_surveyone:30548225
3biah626:30602489
f6dab269:30613381
a9j8j154:30646983
showlangstatbar:30737416
962ge761:30841074
03d35959:30757346
pythonfmttext:30731395
fixshowwlkth:30771522
showindicator:30805244
pythongtdpath:30769146
i26e3531:30792625
pythonnosmt12:30797651
pythonidxptcf:30805731
pythonnoceb:30805159
copilotsettingt:30839829
dsvsc013:30795093
dsvsc014:30804076
diffeditorv1:30821571
dsvsc015:30845448

@cyrpl This usually means that the python extension did not activate. Please looks at the Output > python logs for more information.

Please check both of these tabs to see if it contains any information why Python extension did not activate.

Output from Console under the Developer Tools panel (toggle Developer Tools on under Help; turn on source maps to make any tracebacks be useful by running Enable source map support for extension debugging)

XXXX

Output for Python in the Output panel (View→Output, change the drop-down the upper-right of the Output panel to Python)

XXX

You can close this ticket I can’t reproduce the GUI error after manually specifying the python.defaultInterpreterPath setting shown below:
@.***
BTW In your instructions is this setting what you were looking for?
@.***
Paul Cyr > GIS Specialist
180 Kent Street, Charlottetown, PE C1A 7N2
mobile<PHONE_NUMBER>
maritimeelectric.com
[cid:ME-logo(color)_31dfd02e-5a6f-4e12-ba71-0cf199ee686e.png]   [cid:cea_d1bb73fa-8e98-43ff-8d30-1428a421960b(002).png]
The contents and/or documents accompanying this transmission contain confidential information intended for a specific individual and purpose. The information is private and legally protected by law. If you are not the intended recipient, you are hereby notified that any disclosure, copying, distribution or taking of any action in reliance on the comments of this information is strictly prohibited. If you have received the communication in error, please notify the sender immediately and return to Maritime Electric. Thank you.
We are a Sustainable Electricity Leader™. Please consider the environment before printing.
From: Kartik Raj @.>
Sent: Friday, October 13, 2023 4:08 PM
To: microsoft/vscode-python @.>
Cc: Cyr, Paul @.>; Mention @.>
Subject: Re: [microsoft/vscode-python] Can't select a python interpreter (Issue #22216)
You don't often get email from<EMAIL_ADDRESS>Learn why this is importanthttps://aka.ms/LearnAboutSenderIdentification
** THIS IS AN EXTERNAL EMAIL ** Use caution before opening links / attachments. Never supply user ID/password information.
Please check both of these tabs to see if it contains any information why Python extension did not activate.
Output from Console under the Developer Tools panel (toggle Developer Tools on under Help; turn on source maps to make any tracebacks be useful by running Enable source map support for extension debugging)
XXXX
Output for Python in the Output panel (View→Output, change the drop-down the upper-right of the Output panel to Python)
XXX
—
Reply to this email directly, view it on GitHubhttps://github.com/microsoft/vscode-python/issues/22216#issuecomment-1762054078, or unsubscribehttps://github.com/notifications/unsubscribe-auth/A4XFN3XDQI4F76P74QSEHN3X7GGQPANCNFSM6AAAAAA56UYNWA.
You are receiving this because you were mentioned.Message ID<EMAIL_ADDRESS>


Remote webdriver doesn't work

Running tests with the remote webdriver doesn't work in the current release of pytest-splinter.

I have checked command pytest --splinter-webdriver on my codebase and for Selenium tests it looks like webdriver_patches.py is being run without any exceptions. Closing. @squiddy thank you for this problem report and if the problem still exists please comment and I will reopen. Thanks.


Fixing the master branch.

We need to clone a specific commit to avoid making our CI depend on a moving target. Even when using a hack like in this case.
Hopefully one day we can get rid of this hack. I wish there was a bazel command like bazel download-jdk

Let's do both to make sure. I wish there was a easier way to downloas the jdk to avoid this hack.


Allow to ignore SSL cert errors

name: 'FetchError',
  message: 'request to https://localhost/xxx/xxx/xx failed, reason: self signed certificate',
  type: 'system',
  errno: 'DEPTH_ZERO_SELF_SIGNED_CERT',
  code: 'DEPTH_ZERO_SELF_SIGNED_CERT' }

there should be flags through which we can ignore SSL errors fro development.

const https = require("https");

const options = {
  agent: new https.Agent({
    rejectUnauthorized: false
  })
};

fetch(url, options)

Nice workaround. Closing this one.

const https = require("https");

const options = {
  agent: new https.Agent({
    rejectUnauthorized: false
  })
};

fetch(url, options)

Hello, Your solution does not run for me in react (create-react-app) application. Is it an alternative for frontend developers?

@GALLLASMILAN you can add exception to your browser. Open domain which has wrong certificate and confirm that you want to proceed.

Seems like unsafely-treat-insecure-origin-as-secure in chrome://flags/.
see also https://w3c.github.io/webappsec-secure-contexts/.


Training On IMBD

Hi,shamangary:
I use imdb data to train the model, use the parameter in your  paper,but the training and val loss is very high,about 9.2,is that correct?

No. If you use the provided code, it should get the same results as Figure 2 in our paper.

Thanks，I will try to figure out why。


Patch 1

Now the files are in one PR. Sorry about the spam!

If you would update the VERSION in spec helper, that should get the build to pass.

The tests are complaining about a Boolean that isn’t being set. The stack
trace isn’t very helpful either.
On Tue, Oct 24, 2017 at 2:51 PM Dennis Hoer<EMAIL_ADDRESS>wrote:

If you get a 404 error with test kitchen, pin the gem to 1.16.0 e.g., 'test-kitchen',
'~> 1.16.0'
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/dhoer/chef-windows_logrotate/pull/4#issuecomment-339144071,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AH8swJf5T1qxSEJtysI-9yO30nop-0aOks5svlvOgaJpZM4QFEU-
.

I have a fix for that.  Let me get back to you in a bit.

You will need to add the following line to appveyor.yml: https://github.com/dhoer/chef-nssm/blob/master/appveyor.yml#L25-L26

I think that should fix it

Thanks for the PR and your interest in adopting the cookbook.  Once the build turns green, I will grant you collaborator access on this repo and on the Chef account in supermarket.  BTW, what is your account name on Chef supermarket?

Ok adding that line.
This is what I get now
`Failure/Error:
ChefSpec::SoloRunner.new(
file_cache_path: CACHE, platform: 'windows', version: '2008R2', step_into: 'windows_logrotate'
) do |node|
node.override['windows_logrotate_test']['username'] = 'vagrant'
node.override['windows_logrotate_test']['password'] = 'vagrant'
ENV['SYSTEMDRIVE'] = 'C:'
end.converge(described_recipe)
 Chef::Exceptions::ValidationFailed:
   windows_logrotate[logrotate test] (windows_logrotate_test::default line 6) had an error: Chef::Exceptions::ValidationFailed: Property sensitive must be one of: TrueClass, FalseClass!  You passed nil.
 # /var/folders/dj/nnc5vjmn4415tvdkrhpx57gnp6pnhq/T/d20171025-7361-1qfkgpb/cookbooks/windows_logrotate/providers/default.rb:44:in `block (2 levels) in class_from_file'
 # /var/folders/dj/nnc5vjmn4415tvdkrhpx57gnp6pnhq/T/d20171025-7361-1qfkgpb/cookbooks/windows_logrotate/providers/default.rb:43:in `block in class_from_file'
 # ./spec/unit/resources/default_spec.rb:11:in `block (2 levels) in <top (required)>'
 # ./spec/unit/resources/default_spec.rb:15:in `block (2 levels) in <top (required)>'
 # ------------------
 # --- Caused by: ---
 # Chef::Exceptions::ValidationFailed:
 #   Property sensitive must be one of: TrueClass, FalseClass!  You passed nil.
 #   /var/folders/dj/nnc5vjmn4415tvdkrhpx57gnp6pnhq/T/d20171025-7361-1qfkgpb/cookbooks/windows_logrotate/providers/default.rb:44:in `block (2 levels) in class_from_file'`

I didn't realize the tls2 entry was there already.  So the issue was the url cert expired.  I would go with a new download url.  You can get that by going to download page and download the app and see what the url is.  I don't know if the cert expired means the pilot url will deleted in the near future or not. I wish I knew a better url to use that would be permanent from sourceforce.

Yeah I looked into that. We could write in the logic to follow redirects from their 'latest' link but that would be a little annoying. I am just dropping the ssl portion and relying on the sha256 checksum

Ok, I just don't know if that means they plan to delete the url as well.

No they leave the old versions there with the same link. I think the cert was just getting caught by my proxy and disabled

I thought about trying to get the author to release from github, but I think he makes money from all of the spam on sourceforge.

I would think that's the case. We can extend the library to pull 'latest' at some point when time is plentiful

I invited you to be a collaborator. What is your account on chef, so I can make you the primary?  You can either keep the fork or make new repo, just be sure to update the view source and view issues on Chef when you do that.

Thanks! Its admlt
Will do!


Example snippet returns error 412 Precondition Failed

Hi,
I am really curious to try out your library, but the example in the README gives to following error:
>>> from wozpy.woz import woz
>>> woz.get_woz_value({"postcode": "3645AE", "house_number": "141", "house_number_extension": "d"})
[{'timestamp': '2024-03-26T14:32:13.218+00:00', 'status': 412, 'error': 'Precondition Failed', 'path': '/v1/wozwaarde/nummeraanduiding/0736200000104061'}]

Do you have any idea on how to solve this?

Typo in the headers, solved.


Improve type hinting and consistency for auth.py + renaming ios_...

Attributes from classes in auth.py missing type hints. Instead of defining attributes in functions it might be better to define them in the init and type hinting them as optional.
ios_refresh_expires_at and refresh_expires_at are not converted into date time objects. Not sure if it's intended.
everything named ios_... should be renamed as using the iOS client is just one option. client_... might be a better prefix.
Auth._authenticate got a wrong return type hinted

Thanks for reporting. I will be going over most of the type hinting before 4.0 is released. Since the minimum python version has been bumped to 3.8, I will also add type hints to attributes.
As for the prefix ios_, I agree. I will rename it to something else so it's easier to understand.
Actually on the topic of ios. I might even change the default token used to the android one instead of the ios one. This would mean that everyone that has used ios up until now would have to either generate new device auths or change the token back to ios manually. I didn't originally want to do this for obvious reasons, but since 4.0 will be a big release with potentially lots of breaking stuff, this would be the time to do it. It seems like the best idea since ios isn't and hasn't really been supported for some time now. I'm still not 100% sure though.


View [components.themes.default.modal] not found

View file: resources/views/posts/modals/delete.blade.php
When the route index of resource is open, I get this error.
Some suggestion to fix it?

Since the delete.blade.php uses the optional Blade components, you can either install the components or modify the stubs.
Once you install the package, updated your stub to use the correct paths of the components


[Request] Union Eloquent Models

HI,
This is not a bug per say. If I try to do a union of two eloquent models it gives:
Argument 1 passed to Illuminate\Database\Query\Builder::mergeBindings() must be an instance of Illuminate\Database\Query\Builder, instance of Illuminate\Database\Eloquent\Builder given, called in /var/www/loca/api/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php on line 1105 and defined
This happens because the union is expecting the "normal" builder instead of a eloquent builder.
I know I can change from the models to DB::table('tablename') but I will lose the eager loading that I need.
Is it possible to develop the union so it accepts eloquent and the subsequent eager  loadings.

Thanks for the examples, My Union Query now works. Thanks :+1:


multi-catch not supported outside of action

For what it's worth...
JavaCC supports multi-catch inside of actions.  For example this works:
"A"
{     try (Foo a = new Foo(); Bar b = new Bar()) {
       System.out.println("hello");
     } catch(FirstException | SecondException ex) {
       System.out.println("world");
     }
}

JavaCC supports try-catch outside of actions.  For example this works:
{
 Token t;
}
try {
   t = <ALPHANUM>
} catch (ParseException pe)  {
  throw new ParseException("Did not get what I wanted");
}

However, JavaCC does not support multi-catch outside of actions.  This fails during JavaCC translation
{
 Token t;
}
try {
   t = <ALPHANUM>
} catch (ParseException | TokenMgrError th) {
  throw new ParseException("Did not get what I wanted");
}

The error message is:
   [javacc] org.javacc.parser.ParseException: Encountered " "|" "| "" at line 430, column 28.
   [javacc] Was expecting:
   [javacc]     <IDENTIFIER> ...

It looks like the relevant part of the code where try's of this type are handled is here https://github.com/javacc/javacc/blob/e8bf2428b9bb40b17064f437298e0e10e4dcb5f5/src/main/javacc/JavaCC.jj#L1237-L1274
It would be nice if this worked. Can anyone give me some help on this?

Hi.
I'll look at the corresponding changes : at first glance :

JavaCC.jj 1238-1254 : handle (| Type)*
ParseEngine.java : 963-970 : handle corresponding (| Type)*

By the time, you have a workaround... the old way to code multi catches.

Which version of JavaCC are you using?

Which version of JavaCC are you using?

the head off of github from a few days ago.

However, JavaCC does not support multi-catch outside of actions. This fails during JavaCC translation
{
 Token t;
}
try {
   t = <ALPHANUM>
} catch (ParseException | TokenMgrError th) {
  throw new ParseException("Did not get what I wanted");
}

Well, this does work in CongoCC. See:  https://github.com/congo-cc/congo-parser-generator/blob/main/src/grammars/CongoCC.ccc#L1581-L1603
As you can see there, you can have multiple catch blocks. Only one finally block, of course.  That said, I never found this kind of try-catch in a grammar to be very useful, even though it is still supported. There is now (in Congo, of course!) an attempt/recover construct with somewhat different semantics, that is more generally useful. There you can write:
 ATTEMPT
 (
         ....
 )
RECOVER
(
       ....
)

The difference is that when an exception occurs in the ATTEMPT block, and you go into RECOVER, the parser machinery rewinds to the state of the world from right before the ATTEMPT block. So you are in a known state that you might have a chance of recovering from. With try catch, you are attempting to recover from God-knows-where, like Timbuktu, say. You could be in some very deeply nested sub-expansion and you don't really have any machinery to know where you are. But anyway...

Hi Jonathan.
Could you limit your comments to the issue and our product, and avoid your product's propaganda? We ask for peaceful coexistence.
By the way, this issue is not about multiple catch blocks, but catch block with multiple exception types (what anybody is able to check in your product).

Could you limit your comments to the issue and our product, and avoid your product's propaganda?

Well, the short answer is: NO. I'll say whatever I think is appropriate and it certainly is appropriate to tell people that there is a more advanced version of this very tool available. (By the way, I'm just answering this now because I only now saw the note I'm replying to.)
But, you see, the problem here is that you (and the rest of this "community") apparently believe that people should be saddled with obsolete, inferior tools (that are also not supported or maintained in any meaningful way) simply because they don't know that there is a more advanced of the very same tool that is actively developed and maintained. Why don't they know that? Well, various reasons, but among them, that you certainly won't tell them that the more advanced tool exists!
Is that really a very nice thing to do to people? Is that ethical?
In any case, what is the purpose of sitting on some long abandoned codebase and pretending that it is being actively developed? Or even maintained/supported? Is that in the general interest?
The whole situation is beyond parody really. This JavaCC thing was open-sourced by Sun MIcrosystems back in 2003 (!) and in all that time, this "community" has not implemented a single new feature. It's really strange. I have frequently wondered why anybody would want to be involved in such a travesty -- a project in which the ostensible lead developer has specifically said that the core code is some kind of no-go zone. As best I can guess, people perceive this as some sort of platform for self-projection, like it's a feather in their cap to be involved in something like this, have their name on this thing, but the whole thing is just crazy...  Really, in a sane world (which I guess this isn't) having your name on something like this would tend more to discredit a person . And certainly, asking people not to mention that the more advanced tool exists, so that people can waste their time with something this inferior and obsolete -- that definitely should discredit somebody.

By the way, this issue is not about multiple catch blocks, but catch block with multiple exception types (what anybody is able to check in your product).

Actually, you're right about this. I was a bit wooly-headed when I wrote that and I was confusing the issue.  In fact, both CongoCC allow multiple catch blocks in a try-catch in the grammar, so that's not the issue.
And, actually, the current version of JavaCC allows multi-catch. That was something added in JDK 7 and somebody (actually his name is Ivan Ponomarev) contributed a patch to bring JavaCC up to JDK 7 compliance. (That was in 2019.)
But the problem is that he patched JavaCC.jj but did not patch the corresponding points in JJTree.jjt .
So the end result is that you can use multi-catch in a plain JavaCC grammar, but it doesn't work  in a JJTree grammar. In fact, that is generally the case with that patch for supporting the JDK 7 features. You can do try-with-resources in a .jj file but not in a .jjt file. I guess Ponomarev does not use JJTree, and whoever applied his patch didn't know (or it slipped his mind) that any patch to the Java grammar has to be applied to both JavaCC.jj and JTree.jjt.
Kind of a disastrous mess, really. One of many reasons that it is so awkward to work with the JavaCC code. (Though it is apparently now a no-go zone anyway, just in case anybody is masochistic enough to want to go there!)


jooq.SfmRecordMapperProvider creates empty inner objects

Hi,
sorry if issue was already raised, but i was not able to find anything similar.
I'm using sfm-jooq 6.6.1 and jooq 3.11.9
let's say we have a dto:
class ExaminationDto {
  private String id;
  private ReferenceDto department;
}

class ReferenceDto {
  private String id;
  private String name;
}

and i'm doing a query
create
  .select(EXAMINATIONS.ID, DEPARTMENTS.ID.as("department_id"), DEPARTMENT.NAME.as("department_name")
  .from(EXAMINATIONS.leftJoin(DEPARTMENTS).on(EXAMINATION.DEPARTMENT_ID.eq(DEPARTMENTS.ID))
  .where(EXAMINATIONS.ID.eq(id))
  .fetchOneInto(ExaminationDto.class);

everything works as expected when examination has department set, but when department is not i would expect to get ExaminationDto object with null department field.
Instead department field is instantiated with null values.
So generally inner object is created even when all columns that map to it have null values.
is it an expected behavior? can it be somehow changed with configuration?

could you try adding a @Key annotation org.simpleflatmapper.map.annotation.Key on the id properties?
then it will consider the object null if its id is null.
if can also be done programatically
SfmRecordMapperProviderFactory.newInstance().addColumnProperty("department_id", KeyProperty.DEFAULT).newProvider();

so that would probably work, but I also have inner objects that don't have ids (they are embeds grouping related field) and after adding @Key annotation or adding KeyProperty.DEAFULT, smf starts using BreakDetectorMappingContext instead of MappingContext and it throws IllegalStateException("Invalid state currentKey is null") when mapping that inner object without id

humm yes I see let me come to that one in a bit

there error relate to #624

concerning those grouping related field could you give me an example?

so about these related fields, extending example from before:
  private String id;
  private ReferenceDto department;
  private PatientDto patient;
}

class PatientDto {
  private String name;
  private String species;
  private String owner;
}

class ReferenceDto {
  private String id;
  private String name;
}

and now patient data comes directly from examinations table:
create
  .select(EXAMINATIONS.ID,
    DEPARTMENTS.ID.as("department_id"),
    DEPARTMENT.NAME.as("department_name"),
    EXAMINTIONS.PATIENT_NAME,
    EXAMINATIONS.PATIENT_SPECIES,
    EXAMINTIONS.PATIENT_OWNER)

 .from(EXAMINATIONS.leftJoin(DEPARTMENTS).on(EXAMINATION.DEPARTMENT_ID.eq(DEPARTMENTS.ID))
  .where(EXAMINATIONS.ID.eq(id))
  .fetchOneInto(ExaminationDto.class);

and to be hones here it's good that mapper creates empty object even when all fields are null, but in case where there is real relation with id it would be nice to have option to make it null when key is null.
So i'm assuming that fixes in #624 should solve this problem of currentKey is null ?
btw. would it be possible to create similar functionality like

addColumnProperty("column_name", KeyProperty.DEFAULT)

for field names on object, so instead of having to mark all id fields with @Key annotation, i would just add sth like

addFieldProperty("id", KeyProperty.DEFAULT)
and all fields with name id would be treated as key fields ?

so yes 624 should fix the IllegalStateException, and yes deals ith the department.
so concerning point 2
it's possible to a property based on a predicate
.addColumnProperty( k -> k.getName().endsWith("_id"), KeyProperty.DEFAULT)

would be the way to solve that right now.
there is no object based property adding at the minute, as the predicate based one I think is as good. but if you really think it should be added I'll consider it.

on the null object when all property is null, I think the behavior is ok now, from a Object mapping perspective it would be weird to have a null object on patient when there is an actual row in the db for it.
If one would want to null those kind of object I would suggest use a factory method for on the object that would return null if all the field are null.
but then if the use case it's strong I can have a look at it - though it might not be trivial to implement.

@kjaklik closing the ticket if there still something that needs addressing please reopen


Logging and Metrics Templates Gone Missing (Prometheus/Grafana/ES/Kibana)

The documentation in the guide talks about setting up logging using elasticsearch/kibana and metrics using prometheus/grafana.
http://fabric8.io/guide/logging.html
http://fabric8.io/guide/metrics.html
These templates used to be included in the distro, but it looks like they've been taken out starting in 2.3.53.
https://repo1.maven.org/maven2/io/fabric8/forge/distro/distro/2.3.53/
We were wondering where these templates have gone. Is there a new recommendation for logging/metrics that needs to be documented? In the meantime, we are manually pulling in the templates from 2.3.52.
Thanks!

Please log this against fabric8
https://github.com/fabric8io/fabric8
And I think there may be some tickets about this


wrong difference

Hi there!
I found a bug
const start0 = moment("2016-12-08T00:00:00.000Z");
const end0 = moment("2016-12-08T22:59:58.999Z");
console.log(moment.preciseDiff(start0, end0)); // 22 hours 59 minutes a few seconds

const start1 = moment("2016-12-08T00:00:00.000Z");
const end1 = moment("2016-12-08T23:59:59.999Z");
console.log(moment.preciseDiff(start1, end1)); // a day 59 minutes a few seconds

const start2 = moment("2016-12-08T00:00:00.000Z");
const end2 = moment("2016-12-09T00:00:00.000Z");
console.log(moment.preciseDiff(start2, end2)); // a day

sorry i had outdated version


@oacore/design & mobX

@viktor-yakubiv Last commit may be particularly interesting for you. Maybe you even will know a solution for it. :)

@viktor-yakubiv It's based on several boilerplates including mentioned.
I don't really know how mobX works under the hood. I mean I know there are some getters/setters listeners but that's all. I don't know how would I do it. I just think it's necessary to have it. As I wrote it commit message. It can bring bugs into the code.
By the way, when I create a store with Object.preventExtensions does the mobX create a deep copy of that object instead of using it? It seems like that. Otherwise, it should work.

One way to develop own MobX is just to use Proxies. Another way is to deeply clone objects and return something like a proxy. They went second path.
So yes, from the documentation you may found that it's a deep copy:

observable is by default applied recursively, so if one of the encountered values is an object or array, that value will be passed through observable as well.

observable is applied recursively to a whole object graph automatically. Both on instantiation and to any new values that will be assigned to observable properties in the future. Observable will not recurse into non-plain objects.


Unexpected fee recipient

Hello,
Please help with the following error:

Failed to get rewards - Unexpected fee recipient A for slot X (expected: one of ['B'])

Note, beaconcha.in shows the correct address as the MEV recipient for this slot.
Thank you.

Hey there!
I'm not 100% sure if I managed to fix your slot but I did reindex data for about 9000 incorrectly indexed slots today. Can you check if your input data still shows errors?
If you still see errors, please send me the approximate timestamp at which you tried it so I can find your request in the logs.

I'm still seeing the error. Approximate time Thu Nov 14 17:29:39 UTC 2024.
Thank you!

Perfect, that slot is fixed now too 👍

(FYI, the ethstaker.tax API will be down for about an hour or two, but once it's back up you should be able to retrieve the data)

It's working now, thank you!


Alexbharley/GitHub actions deployment 2

Description
A few sentences describing the overall effects and goals of the pull request's commits.
What is the current behavior, and what is the updated/expected behavior with this PR?
Other changes
Describe any minor or "drive-by" changes here.
Tested
An explanation of how the changes were tested or an explanation as to why they don't need to be.
Related issues

Fixes #[issue number here]

Backwards compatibility
Brief explanation of why these changes are/are not backwards compatible.
Documentation
The set of community facing docs that have been added/modified because of this change

closing as this is 10 months old, alex is gone and its not clear what this is


Default non-wear detection configuration

I designed the heuristic non-wear detection algorithm that is part of GGIR to detect when a person does not wear the accelerometer for at least a couple of consecutive hours. The idea is that these are the most problematic types of non-wear from a research perspective. So, we take possible short episodes of non-wear for granted. For example, when people take the accelerometer off for a short period of time to prevent it from getting wet or dirty.
Sometimes we see that non-wear is missed by the algorithm when the accelerometer is not worn during the night, e.g. #333, which is not what we expect.
Possible explanation:

The threshold for detecting low standard deviation in raw signal is too low. This makes that non-wear is missed that involves a bit more than usual noise, vibrations (sensor not worn, but lying in bed), or temperature variations.
The large window used by the algorithm, more specifically the 3rd value of input argument windowsizes, is too large. Maybe we  should change this value back to 30 minutes (1800 seconds) as in the 2011 publication as opposed to the 3600 seconds used since 2013.

To do:

Identify test files where the issue occurs.
Try out shorter window size and see whether it helps.
Experiment with shorter window size in large datasets and check whether this causes a big shift in detected non-wear time. If it does then a study will be needed to motivate why the shorter window size is better. Also it would be good to communicate with GGIR google group about this as GGIR users may be able to help investigate the impact of changing the argument value.

This sounds like a great idea. If we want to go ahead with it, I think the first step would be set up a data-set with manual annotations indicating where non-wear periods occurred. This way we could try different thresholds and see the performance metrics on a wide range of tests, instead of just tuning the thresholds to specific tests. From my point of view, it would be OK for a researcher to annotate non-wear periods after the data has been recorded. I wonder if that researcher at the conference in Spain has data that would be possible for this?
Another factor to consider is the type of non-wear period. The most simple type would be when the sensor is taken off and does not move. In other use cases, non-wear might happen while the patient places the sensor in a bag, or leaves the sensor in their car (ie - instances where some movement can occur). Can we differentiate movement from wearing the sensor at the wrist (or hip) between other common non-wear scenarios? This might be a tough problem to solve considering the wide array of types of movements that patients perform in their daily lives during multi day recordings, especially sleep. In an ideal scenario, we would have a large enough test data-set with annotations on the 'type' of non-wear as well as when the non-wear periods occurred. This way, we could try to optimize thresholds to detect well on difficult to find non-wear periods without sacrificing performance on actual wear data.

I'm currently developing a data-set of files that we can use as training and testing to optimize the non-wear algorithm parameters. One issue I am running into is that there is a small bit of motion during non-wear that causes the algorithm to miss the data around it. I'm not too sure if the best way forward is to change the annotations to account for these bits of sensor movement, or else to leave it as is. If I annotate around these movements, it feels like I am tuning the data-set to work better on the current algorithm. If I leave these movements, it will likely be performance around these locations which will dictate how well certain threshold combinations work. @vincentvanhees @jhmigueles what is your opinion? Do you think I should annotate the full section as non-wear, or make the short movement periods into wear time?

Here is a visualization of the performance with GGIR:

I think it is good to label the entire period as non-wear, because this is also what we may see in real life data. A person may not wear the accelerometer, but still touches it from time to time.
The GGIR non-wear detection algorithm labels short lasting movements as nonwear if they are surrounded by large non-wear blocks. In the supporting information of the 2013 paper I documented this in more detail.  I suspect that the non-wear in the above example are not long enough to trigger this part of the algorithm. However, that also makes it a good test case to understand how we can minimize the incorrect classification in such cases. For example, would a 30 minute instead of 60 minute rolling window help.

I've created a training data-set that we can test the 30 minute window on. There are 30 x 24hr worth of wrist data in this set and all the non-wear has been manually annotated after the recording was complete. Most 24hr periods contain a full night worth of sleep, as this seems to be an important area where we do not want false positives creeping in.
The GGIR non-wear algorithm was set up to run with different combinations of thresholds. A grid expand approach was used to test each combination, these were the thresholds tested in this initial run:

Long period window: 1800, 3600
Short period window: 600, 900
SD criteria: 0.010, 0.013, 0.025
Range criteria:  0.10, 0.15, 0.20

Since wear and non-wear periods were not balanced classes in this data, F1 score is the best metric to consider:

Long period window of 1800 and short period window of 600 resulted in the highest F1 score:

SD thres of 0.2 and Range Thres of 0.01 had the highest F1 score:

At the highest F1 score, false positives were at a local max and false negatives were at a local min:

Overall comments on the effect that different thresholds had on results:

Decreasing the long window size always increased the F1 score. This is because the edges of non-wear periods are more classified as non-wear, however, there were also more false positives with the shorter long window size.
Upon preliminary inspection, the Range Threshold had a large effect on F1 score, with each increase in Range Thres resulting in a higher F1 score
Increasing SD Thres seemed to slightly decrease the F1 score upon preliminary inspection

Two questions for @vincentvanhees  that I have from this analysis are:

Are there other threshold levels that you want to test out?
Should we try to reduce false positives or false negatives? Or, just use the F1 score as is? I know F1 is suppose to balance FP and FN, but in this case the false negatives are low and the false positives are high at the peak F1 score. If we decide false positives are worse, then we could pick another threshold combination that had less false positives (higher precision)

Thanks Matt, this is very helpful.
Regarding results:

Decreasing the long window size always increased the F1 score. This is because the edges of non-wear periods are more classified as non-wear, however, there were also more false positives with the shorter long window size.

Sounds logical. On the other hand there is an increased risk that short episodes of rest are misclassified as non-wear, so I think it is important to let false positives weight heavily in the final score.

Upon preliminary inspection, the Range Threshold had a large effect on F1 score, with each increase in Range Thres resulting in a higher F1 score

If I understand it correctly then this means that occasional spikes in the signal in combination with a low standard deviation over most likely to reflect non-wear. Does this then also mean that we can leave out the range criteria and fully rely on the standard deviation check on its own? In other words: Does F1 decrease if you set the range criteria very high, e.g. 2.0 g?

Increasing SD Thres seemed to slightly decrease the F1 score upon preliminary inspection.

SD threshold optimization probably relates to dynamic range and resolution of the sensor, and maybe even sensor brand. So, it is probably better not to change this radically without testing how it affects data from other sensor brands.
Regarding questions:

Are there other threshold levels that you want to test out?

Following my comment above, could you check whether a very high range threshold (2.0) negatively affects the performance? If not, then we could decide to remove this range check.

Should we try to reduce false positives or false negatives? Or, just use the F1 score as is? I know F1 is suppose to balance FP and FN, but in this case the false negatives are low and the false positives are high at the peak F1 score. If we decide false positives are worse, then we could pick another threshold combination that had less false positives (higher precision)

False positive (mislabeling rest/sleep as non-wear) would be more concerning, because false negatives (mislabeling non-wear as wear) are likely to only occur if the non-wear is shorter than the detection window and by that unlikely to take up a large part of the recording. So, I think it is best to make the performance metric most sensitive to false positives.
Other reflections:
I did a few recordings where I left an Axivity sensor in my bed underneath my pillow for over a week. It would be interesting to see how this is treated by non-wear detection. My breathing and turning causes vibrations in the signals that may or may not trigger the wear detection.... I haven't checked this yet. It is understandable if performance is not always optimal, but on average I would hope that more than 80% of those nights are correctly classified as non-wear. Should we use this as additional test data? It may not be a common scenario, but it is not entirely unrealistic given that people may take off the sensor during sleep.  I can send you a copy of the file if you are interested.

Thanks for the feedback @vincentvanhees, here are results with a larger range threshold and some other threshold adjustments:
Long window size: 1800, 3600, 4500 [4500 from Syed paper suggestion]
Short window size: 600, 900, 1200
SD-thres: 0.013
Range-thres: 0.1, 0.15, 0.2, 0.4, 2.0
Recall, precision and F1:

ws1 and ws2 thresholds at each testing iteration:

sd and range threshold at each testing iteration:

False negatives and false positives at each testing iteration:

Comments

Increasing the long window size improves precision, but decreases recall and F1 (we care about precision the most in this application)
Increasing the range threshold hurts precision (more false positives), but improves F1 via a large increase in recall score (less false negatives)

There are many combination of thresholds that have precision > 0.99:

Out of that list, the combinations with the top 3 F1 score are:

Short window size doesn't seem to have too much affect on the results. @vincentvanhees, do you think it would be worth while trying to make short window size the same as the large window size?

Just for interests sake, I performed testing with the ideal thresholds, but made ws2 == ws1, here are the results:

False positive are still very low and precision is high, slightly more false negatives, as there would be a bigger chunk of any false detection that is labelled as wear with the larger small window size. If the testing is occurring on the large window size, do you think there is an argument to label the large window size instead of the small window size?

Thanks for the work, really interesting and helpful.
I think it is always difficult to find the perfect thresholds (either time windows or SD th) because they would change in different contexts (sensor brands, participants habits, etc). I agree the most relevant task in this classification problem is to discern between rest/sleep and non-wear. The SD and range thresholds are the most relevant for this, and it is difficult to test how they will behave in every sensor brand. Would it be possible to use the non-movement windows identified for auto-calibration to set device-specific SD and range thresholds?

Thanks Matt. May I summarize from your overview that most performance improvement can be gained by increasing the range threshold from 0.15 to 0.2, and that sticking with ws1 = 3600 is advisable?

Matt: "If the testing is occurring on the large window size, do you think there is an argument to label the large window size instead of the small window size"

I agree, but it would be good to keep the rolling window effect as that improves the resolution of the detection. For example, if an hour of non-wear starts at 5 minutes past the clock hour then we do not want to miss it because we only look at full clock hours. So, I envisage an update to the code where we keep a rolling ws1 window with steps of ws2, but where ws1 needs to align with the ws2 windows it covers. In other words: A 60 minute window that rolls over 10 minute windows is fine, but a 60 and 15 minute is not possible, because this would mean that the labelling becomes ambiguous.

Jairo: "Would it be possible to use the non-movement windows identified for auto-calibration to set device-specific SD and range thresholds?"

In theory I agree, but it potentially results varying thresholds even within the same sensor brand. This may hard to interpret and could cause concern about the reliability of the non-wear detection. So, I think this would have to be carefully evaluated and compared with controlled experiments of the noise in various sensor brands to reassure user that this always works flawlessly. I think you need large cohort data for this to make a convincing case that even in thousands of measurements errors never occur.

The optimal thresholds that I discovered from the work were, large window = 3600, medium window = 1200, range-thres = 0.2 and SD-thres = 0.013. It should be noted that this was only done with Verisense data, so may not be applicable to other hardware.

Thanks Matt. May I summarize from your overview that most performance improvement can be gained by increasing the range threshold from 0.15 to 0.2, and that sticking with ws1 = 3600 is advisable?

Yes, the large window size of 3600 was the most appropriate. Precision was already very high with the default range threshold of 0.15, but with the increase to 0.2, the precision remained high and the recall (false negative rate) increased as well, increasing the F1-score. Since this analysis was done with Verisense data only, I'll look at implementing an option to use 0.2 range-thres for Verisense data.

I agree, but it would be good to keep the rolling window effect as that improves the resolution of the detection.

Agreed, the smaller window size to move forward is important, as 1-hour non-overlapping windows would definitely miss non-wear. However, by only labelling the medium window size as non-wear, we know that we are going to mis-classify the start and the end of each non-wear segment as wear, like this:

A 60 minute window that rolls over 10 minute windows is fine, but a 60 and 15 minute is not possible, because this would mean that the labelling becomes ambiguous.

Isn't 15 minute the default window size in GGIR (900 seconds)? I don't think I understand what the issue is with overlap in the labelling?  Would it not be possible to label the full 3600 sec (full hour) as non-wear, but still move the large window forward by 10 or 15min increments? Yes, some sections will be labelled over several times, but could the logic state that if at least one iteration of non-wear detection states non-wear, then that time period is non-wear (further iterations at the time point can say wear or non-wear, it won't matter once a time period is labelled once). This is just a thought, as from my point of view the medium window size is important so we don't move the large window along too much, but I do not see the point of only labelling a small portion in the middle of the large window as non-wear after all the data in the large window passed the checks for non-wear. This way, non-wear labelling would bump right up against wear time.

I don't think I understand what the issue is with overlap in the labelling?

Currently the large window is centered at the center of the short window. For a 15 and 60 minute window combination, this would mean that there are 22.5 minutes on the left of the 15 minute window an 22.5 minutes on the right of the window, which makes it unclear how to label the underlying 15 minute windows.
If we do not want to restructure the existing code and milestone data structure too much then I see as possible solutions:

Change how the large and short window are aligned. For example, the large window simply starts when short window starts. So, if large window detects non-wear than the underlying short windows will be tagged as non-wear.
Require that large window is an odd multitude of the short window length, because only then we can keep the large window centered in the short window.

In terms of non-wear detection quality it should make no difference, it is mainly a matter of how to modify the code efficiently.

I am now closing this issue, feel free to re-open if you think this should remain on the agenda.


Redis PING command is sometimes slow.

Hi There,
We have a setup of Twemproxy and 3 Redis masters with 3 Redis Slaves  and i have found an issue with the PING command that we were using.
First of, We use the PING command to check if a Redis server is correctly connected. We found some issues with this in the past where we would connect to Twemproxy, ask for a key and that the server did not respond. We fixed that and is totally not related to this ticket.
In our codebase (PHP) there was however still a line where we would issue a PING command after each connect.
We were sometimes experiencing slowness on our pages. Somehow our connection wrapper managed to wait 200ms before continuing.
I created a couple of test scripts to try and resolve this issue.
<?php

$start = (microtime(true) * 1000);
$redis = new Redis();
$redis->connect('<twemproxyIP>', 6379, 1);
$redis->ping();
$end = (microtime(true) * 1000);

echo $end-$start.PHP_EOL;

This resulted in the following times.

for i in {1..20}; do php redis-ping.php; sleep 1; done
202.45825195312
0.625
1.968994140625
0.60693359375
1.89501953125
202.28198242188
0.452880859375
1.438720703125
201.91772460938
2.072021484375
201.50170898438
202.705078125
0.783935546875
2.90966796875
1.487060546875
0.831787109375
0.52587890625
0.593017578125
0.634033203125
1.114990234375

I made some adjustments to the script.
<?php

$start = (microtime(true) * 1000);
$redis = new Redis();
$redis->connect('<twemproxyIP>', 6379, 1);
$redis->get('FooBar');
$end = (microtime(true) * 1000);

echo $end-$start.PHP_EOL;

This resulted in the following times.

for i in {1..20}; do php redis.php; sleep 1; done
1.2978515625
1.47607421875
2.22216796875
2.47509765625
2.26708984375
1.2548828125
1.25
0.85986328125
4.005859375
3.97802734375
0.876953125
1.739990234375
0.784912109375
0.760986328125
1.220947265625
3.2080078125
2.267822265625
0.810791015625
2.806884765625
0.744140625

So it seems that the PING command is sometimes slow.
I assume this could be an issue?

A notable difference between PING and GET is that PING is not forwarded to a redis backend - twemproxy replies immediately (it just checks that the client can reach twemproxy)

AUTH has similar handling to PING

I'm unable to reproduce this with the ping() calling script when using the epoll backend, I haven't tested other backends. Which are you using? (strings /path/to/nutcracker might help you figure that out on unix)

twemproxy has 3 backends (epoll, evport, kqueue) for performant async code in src/event - which are you using?
It seems like it's calling event_add_out to trigger writing for msg->noforward ever since the patch was reproduced. (note to self: msg->reply would be redis_reply, and msg->noforward is only set by redis)

It might be some sort of strange race condition when adding an outgoing event for something that's already processing an incoming event, but I can't imagine what that could be
Is the nutcracker pool /memcache client timeout 200 milliseconds?
+    if (msg->noforward) {
+        status = req_make_reply(ctx, conn, msg);
+        if (status != NC_OK) {
+            conn->err = errno;
+            return;
+        }
+
+        status = msg->reply(msg);
+        if (status != NC_OK) {
+            conn->err = errno;
+            return;
+        }
+
+        status = event_add_out(ctx->evb, conn);
+        if (status != NC_OK) {
+            conn->err = errno;
+        }
+
+        return;
+    }


Change to paths of logrotate config files in Clojure ELB instance

On page https://github.com/snowplow/snowplow/wiki/Troubleshooting-Clojure-Collector-instances-to-prevent-data-loss
The paths of the config files have changed, so:
sudo logrotate -f /etc/logrotate.conf.elasticbeanstalk
sudo logrotate -f /etc/logrotate.conf.elasticbeanstalk.httpd

Should be
sudo logrotate -f /etc/logrotate.elasticbeanstalk.hourly/logrotate.elasticbeanstalk.tomcat8.conf
sudo logrotate -f /etc/logrotate.elasticbeanstalk.hourly/logrotate.elasticbeanstalk.httpd.conf

Thanks @iaingray !

@ihortom can you please update?


Editing Art

As a user,
I want to be able to edit the details of my uploaded artwork, So that I can update the information or correct any mistakes.
Acceptance Criteria:

[ ] Users can access an "Edit" option for any artwork they have uploaded.
[ ] Users can change the title, description, and tags associated with their artwork.
[ ] Users can replace the existing image with a new one if needed.
[ ] Changes are saved and reflected in the gallery immediately after submission.

completed