Copy-DbaSsisCatalog - Updating the DLL for SSIS

Type of Change

[x] Bug fix (non-breaking change, fixes #6136 🤞  )
[ ] New feature (non-breaking change, adds functionality, fixes # )
[ ] Breaking change (effects multiple commands or functionality, fixes # )
[ ] Ran manual Pester test and has passed (`.\tests\manual.pester.ps1)
[ ] Adding code coverage to existing functionality
[ ] Pester test is included
[ ] If new file reference added for test, has is been added to github.com/sqlcollaborative/appveyor-lab ?
[ ] Nunit test is included
[ ] Documentation
[ ] Build system

Updating them from an SSMS 18.4 installation as noted work around in the issue.

merci! hopeflly this works


vscode-errors when using bluetooth (esp32)

Hello
I am using the vscode-arduino extension now for more than one year. Except with a few issues at beginning, i usually don't have any problem to work with my ESP32 and some other libraries.
Now, i started to work with bluetooth.
My code compiles and i could successfully test it. But: I get a lot of errors in vscode.
See: Screenshot
This is my code:
https://github.com/espressif/arduino-esp32/blob/master/libraries/BLE/examples/BLE_write/BLE_write.ino
Can somebody please help me? I really want to ged rid of this errors.
Thank you,
Lukas
PS: I also asked in the vscode-arduino repo for some help.
This is my c_cpp_properties.json
{
    "configurations": [
        {
            "name": "Mac",
            "includePath": [
                "${workspaceFolder}/**",
                "/Users/vonnielu/Library/Arduino15/packages/esp32/tools/**",
                "/Users/vonnielu/Library/Arduino15/packages/esp32/hardware/esp32/1.0.4/**"
            ],
            "forcedInclude": [
                "/Users/vonnielu/Library/Arduino15/packages/esp32/hardware/esp32/1.0.4/cores/esp32/Arduino.h"
            ],
            "macFrameworkPath": [
                "/System/Library/Frameworks",
                "/Library/Frameworks"
            ],
            "intelliSenseMode": "clang-x64",
            "compilerPath": "/usr/bin/clang",
            "cStandard": "c11",
            "cppStandard": "c++17",
            "defines": [
                "USBCON"
            ]
        }
    ],
    "version": 4
}

My ardunio.json
{
    "board": "esp32:esp32:esp32",
    "configuration": "PSRAM=disabled,PartitionScheme=default,CPUFreq=240,FlashMode=qio,FlashFreq=80,FlashSize=4M,UploadSpeed=115200,DebugLevel=none",
    "sketch": "test.ino",
    "port": "/dev/tty.usbserial-0001",
    "programmer": "AVR ISP"
}

My settings.json
{
    "files.associations": {
        "__functional_base": "cpp",
        "istream": "cpp",
        "locale": "cpp",
        "memory": "cpp",
        "tuple": "cpp",
        "utility": "cpp",
        "functional": "cpp",
        "__bit_reference": "cpp",
        "array": "cpp",
        "bitset": "cpp",
        "chrono": "cpp",
        "deque": "cpp",
        "iterator": "cpp",
        "map": "cpp",
        "string": "cpp",
        "string_view": "cpp",
        "unordered_map": "cpp",
        "vector": "cpp",
        "*.tcc": "cpp"
    }
}

Just ignore those errors, its only intellisense error. You can also try to add #include header for std::string, i think it will be:
#include <string>

Just ignore those errors, its only intellisense error. You can also try to add #include header for std::string, i think it will be:
#include <string>

Thanks for the response. I understand that this is not a problem on your side. But it does not feel good to have this errors. :-)
I tried #include , #include <string.h>, #include <String.h> but without success.
I wait for some feedback from the guys at vscode-arduino. If you have additional info, why it is not working, i would be happy to know and forward it to them. But they are so far, not very responsive.
Have a good day!

Thanks for the response. I understand that this is not a problem on your side. But it does not feel good to have this errors. :-)
I tried #include , #include <string.h>, #include <String.h> but without success.
I wait for some feedback from the guys at vscode-arduino. If you have additional info, why it is not working, i would be happy to know and forward it to them. But they are so far, not very responsive.
Have a good day!

#include <string> without h extension.
It is for sure matter of proper configuration in vs code.
One more thing you can try is to add:
#include "Arduino.h"

#include <string> without h extension.
It is for sure matter of proper configuration in vs code.
One more thing you can try is to add:
#include "Arduino.h"

Ok it is working now with #include
It only works when you have #include  in the code and the load the project into vscode. It does not work when you put #include  directly in your already opened sketch.

Ok it is working now with #include
It only works when you have #include  in the code and the load the project into vscode. It does not work when you put #include  directly in your already opened sketch.

And thank you very much.

And thank you very much.


Update to Jupyterlab 4.3 and fix prompt accept bug

This updates to Jupyterlab 4.3 and includes the fix for the postModelPromptAccept edge case.
Fixes #1

This draft PR is based on rc0 for early testing, it will be updated and taken out of draft once 4.3 is released

Jupyterlab 4.3 was release, so I've updated this and moved it out of draft


"You have one or more invalid gemspecs that need to be fixed."

Hey Dave!
Thanks for such an awesome book, the rich formatting is such a joy to read :)
I'm trying to use methadone but am having some issues. Please see the output below:
repos ❯ methadone --readme --license=apache fullstop
repos ❯ cd fullstop
fullstop git:master ❯ bundle install
You have one or more invalid gemspecs that need to be fixed.
The gemspec at /Users/max/repos/fullstop/fullstop.gemspec is not valid. Please fix this gemspec.
The validation error was '"FIXME" or "TODO" is not a description'
fullstop git:master ❯ bundle -v
Bundler version 1.12.5
fullstop git:master ❯ rbenv -v
rbenv 1.0.0
fullstop git:master ❯ ruby -v
ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-darwin15]
fullstop git:master ❯ cat Gemfile
source 'https://rubygems.org'

# Specify your gem's dependencies in fullstop.gemspec
gemspec

I know in the your book you reccommend rvm and ruby 1.9.3 is it this why I'm having problems?
Thanks :)

Thanks!
The output of bundle install is telling you the problem amidst its other messages:

The validation error was '"FIXME" or "TODO" is not a description'

It seems some newer versions of bundler don't like a gemspec where you haven't filled in a proper description.  I guess methadone could not do this, but maybe try changing it before the bundle install?
ON a side note, the latest ruby (2.3.x) should work fine, and I think 1.9.x is no longer supported (that book is now kinda old! :)

Yeah, this is the key part:
duplicate dependency on rake (>= 0, development), (~> 10.0)

which is not super clear, but means you have a development dependency on rake as well as a runtime dependency and it wants only one of those two.  What's weird is that you don't have that in your gemspec.  My guess is maybe methadone is pulling it in for runtime?
I'd make sure it's not in your Gemfile and then remove the development dependency from the gemspec…

See the diff for how to get up and running:

# coding: utf-8
lib = File.expand_path('../lib', __FILE__)
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
require 'fullstop/version'

Gem::Specification.new do |spec|
  spec.name          = "fullstop"
  spec.license="apache"
  spec.version       = Fullstop::VERSION
  spec.authors       = ["mbigras"]
  spec.email         =<EMAIL_ADDRESS>
  spec.summary       = "cats and dogs"
  spec.description   = "cats and dogs"
  spec.homepage      = "TODO: Put your gem's website or public repo URL here."

  # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
  # to allow pushing to a single host or delete this section to allow pushing to any host.
  if spec.respond_to?(:metadata)
    spec.metadata['allowed_push_host'] = "TODO: Set to 'http://mygemserver.com'"
  else
    raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
  end

  spec.files         = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
  spec.bindir        = "exe"
  spec.executables   = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
  spec.require_paths = ["lib"]

  spec.add_development_dependency "bundler", "~> 1.12"
  spec.add_development_dependency "rake", "~> 10.0"
  spec.add_development_dependency('rdoc')
  spec.add_development_dependency('aruba')
  spec.add_development_dependency('cucumber')
  # spec.add_development_dependency('rake')
  spec.add_dependency('methadone', '~> 1.9.2')
  spec.add_development_dependency('test-unit')
end

thanks for the help, looking forward to working through your book 😄

one more question, which tool did you use to make this book? It's really awesome being able to have animated notations of the code

I used iBooks Author.  Which, ironcially, makes it hard for me to update it with the stuff you've discovered because I'd likely have to re-record some of the screencasts :(

Hi Dave,
Just wanted to follow up on this. There are three substitutions I need to make before methadone "just works".
I've attached them below with the associated errors. They are:

For some reason bundle isn't happy about TODO, it needs to be todo
The spec.homepage need to either be empty or some site-like pattern like https://rubygems.org
rake can't exist as a dependency twice

I've been digging around but I only found comments about the TODO situation, I can't find any occurrences of the string homepage anywhere, and I don't know how the spec.add_development_dependency "rake", "~> 10.0" gets generated.
Not sure if this is an easy fix for you, but I think it would be great to be able to get off and running with just one command and not have to make substitutions.
If you give me some hints as to where in the templates or in methadone the above three are being generated I'd be happy to help. Otherwise, I'll just write a script to make the substitutions that I showed.
➜  hello-methadone master ✗ bundle
You have one or more invalid gemspecs that need to be fixed.
The gemspec at /Users/max/Dropbox/work/tmp/hello-methadone/hello-methadone.gemspec is not valid. Please fix this gemspec.
The validation error was '"FIXME" or "TODO" is not a description'
➜  hello-methadone master ✗ sed 's/TODO: //g' hello-methadone.gemspec > tmp
➜  hello-methadone master ✗ mv tmp hello-methadone.gemspec
➜  hello-methadone master ✗ bundle
You have one or more invalid gemspecs that need to be fixed.
The gemspec at /Users/max/Dropbox/work/tmp/hello-methadone/hello-methadone.gemspec is not
valid. Please fix this gemspec.
The validation error was '"Put your gem's website or public repo URL here." is not a URI'
➜  hello-methadone master ✗ sed "s/Put your gem's website or public repo URL here./https:\/\/github.com\/mbigras/" hello-methadone.gemspec > tmp
➜  hello-methadone master ✗ mv tmp hello-methadone.gemspec
➜  hello-methadone master ✗ bundle
You have one or more invalid gemspecs that need to be fixed.
The gemspec at /Users/max/Dropbox/work/tmp/hello-methadone/hello-methadone.gemspec is not valid. Please fix this gemspec.
The validation error was 'duplicate dependency on rake (>= 0, development), (~> 10.0) use:
    add_development_dependency 'rake', '>= 0', '~> 10.0'
'
➜  hello-methadone master ✗ sed 's/spec.add_development_dependency "rake", "~> 10.0"//' hello-methadone.gemspec > tmp
➜  hello-methadone master ✗ mv tmp hello-methadone.gemspec
➜  hello-methadone master ✗ bundle
Fetching gem metadata from https://rubygems.org/.........
Fetching version metadata from https://rubygems.org/.
Resolving dependencies...
Using rake 11.3.0
Using ffi 1.9.14
Using contracts 0.14.0
Using builder 3.2.2
Using gherkin 4.0.0
Using cucumber-wire 0.0.1
Using diff-lcs 1.2.5
Using multi_json 1.12.1
Using multi_test 0.1.2
Using rspec-support 3.5.0
Using thor 0.19.1
Using bundler 1.13.6
Using power_assert 0.3.1
Using rdoc 4.3.0
Using childprocess 0.5.9
Using cucumber-core 1.5.0
Using rspec-expectations 3.5.0
Using methadone 1.9.3
Using test-unit 3.2.2
Using cucumber 2.4.0
Using hello-methadone 0.1.0 from source at `.`
Using aruba 0.14.2
Bundle complete! 6 Gemfile dependencies, 22 gems now installed.
Use `bundle show [gemname]` to see where a bundled gem is installed.
➜  hello-methadone master ✗ bundle exec bin/hello-methadone -h
Usage: hello-methadone [options]

v0.1.0

Options:
    -h, --help                       Show command line help
        --version                    Show help/version info
        --log-level LEVEL            Set the logging level
                                     (debug|info|warn|error|fatal)
                                     (Default: info)

All the templates are in https://github.com/davetron5000/methadone/tree/master/templates but the gemspec is created by bundler here: https://github.com/davetron5000/methadone/blob/master/bin/methadone#L26
So, to do what you are wanting you'd have to edit the generated gemspec.  Bundler is generating it this way because it wants you to change those things before proceeding, so the behavior is somewhat intentional.
The duplicate rake dependency might be due to bundle gem now adding it when it didn't, or it could be the result of changes in Ruby over the years.  Either way, if you just omit it entirely, you will break anyone on older bundlers/rubies.
I wonder if removing bundler from the gemspec creation is a better solution, since it means this app can totally control the gemspec…

I made a small script to do the substitutions to get everything to work right away 😄
https://gist.github.com/d3ccc2d6b93b79ef21a8cf8cc73976aa


Check aura slot numbers are strictly increasing

[ ] tests

@NikVolf why is it in-progress?

well happy path test seem to enough there if @andresilva ok with that


(rfc) --collect-perf-data enhancements

allow --collect-perf-data modes:
  'aggressive' (poll every minute)
  'normal' (poll every 10 minutes)
  'none' (do not collect perf data)

If a mode is unspecified, --collect-perf-data will default to 'normal', which mimics past behavior.

allow metric exporting to Graphite:
Set via the HOSTS file, eg:
graphite_server: graphite.example.com
graphite_perf_data: beaker.perf

I modified the Beaker::Logger::perf_output function to include return characters, which broke spec.  Fix incoming.

Refer to this link for build results (access rights to CI server needed):
http://jenkins-beaker.delivery.puppetlabs.net//job/qe_beaker_btc-intn/1583/
Test FAILed.

@puppetlabs-jenkins retest this please

Refer to this link for build results (access rights to CI server needed):
http://jenkins-beaker.delivery.puppetlabs.net//job/qe_beaker_btc-intn/1589/
Test FAILed.

@puppetlabs-jenkins retest this please

Refer to this link for build results (access rights to CI server needed):
http://jenkins-beaker.delivery.puppetlabs.net//job/qe_beaker_btc-intn/1590/
Test FAILed.

This is all unrelated solaris errors:
#<Beaker::Host::CommandFailure: Host 'sp52mre9bg1b33s.delivery.puppetlabs.net' exited with 1 running:
 cd /tmp/2015-09-30_13.07.45.bZaWXd/puppet-enterprise-3.7.2-solaris-11-i386 && ./puppet-enterprise-installer -a /tmp/2015-09-30_13.07.45.bZaWXd/answers
Last 10 lines of output were:
	========================================================================

	!! ERROR: Could not install required packages--this may be due to a
	   network failure or incorrect repository settings. You must
	   install the following packages before you can install Puppet
	   Enterprise: pe-augeas pe-deep-merge pe-facter pe-hiera pe-libyaml
	   pe-mcollective pe-puppet pe-puppet-enterprise-release pe-ruby
	   pe-ruby-augeas pe-ruby-rgen pe-ruby-shadow pe-stomp

Refer to this link for build results (access rights to CI server needed):
http://jenkins-beaker.delivery.puppetlabs.net//job/qe_beaker_btc-intn/1594/
Test PASSed.

:+1: The commit messages need ticket refs in them.

Alost :+1:  once the commit message is updated.

@sschneid last comments current

Updated commit to include BKR-580 reference.

Refer to this link for build results (access rights to CI server needed):
http://jenkins-beaker.delivery.puppetlabs.net//job/qe_beaker_btc-intn/1651/
Test PASSed.


Add v8js

Describe the feature
Is it possible to add v8js extension?
Additional context
https://github.com/phpv8/v8js

Added


Error handling with alerts

Added error handling for exercise view
Refactored failed authentication (the previous implementation of the invalid credentials error wasn't working for me consistently)

https://user-images.githubusercontent.com/24537483/215289335-16d7286a-3b05-4e8f-bce3-baa36676f53c.mp4
It is now possible to extend any view to show an error alert, for this however an error property needs to be kept by the corresponding view models.

Generally a good addition especially for all views except the authentication view. I think it would be nicer to have a red error text below the textfields, as its also common practice amongst other applications,

Generally a good addition especially for all views except the authentication view. I think it would be nicer to have a red error text below the textfields, as its also common practice amongst other applications,

As requested, I added a red border and some animation to indicate that the input might have been false.
https://user-images.githubusercontent.com/24537483/215339084-fb3d3ce9-a921-42b4-971c-8f2f32d546bc.mp4

Latest commit includes:

Dismissing the view on error (for now only in Exercise View, as shown in the video)
Removed print(errors (only 5 left now, not sure how to best handle the remaining ones)

https://user-images.githubusercontent.com/24537483/215627259-1433159b-1ea3-4f65-b8ba-b62f0a8a049e.mp4
I commented out the error handling in the CourseView for now as I always get "forbidden" for some reason, as shown below:

Apparently fetchAllCourses in the CourseViewModel always returns a forbidden for some reason.

Idea: For the "empty response" errors when starting a new assessment, we could instead explain that there are probably no submissions left to assess.
Like so?


CSV Injection through CsvReporterFactory.java

CSV Reporter should be validating for CSV injection (as well as macros) before producing a .csv file?

Hello, wrong project. Please see: https://github.com/dropwizard/metrics
Also, a tip. Make sure you when create an issue to more deeply explain the problem. The issue is vague and deprived of an example.
I'm assuming you are worried about creating a metric name which contains a column delimiter (eg: ,) and/or security implications of opening a CSV which contained metric names that can be interpreted. IMO this would be pretty low priority as no current metric names are susceptible to these issues. User created metrics should follow this lead.

Thanks Nick, I was not worried about metrics. I was actually worried about CSV injection via CSVReporterFactory.java.
Applications or framework when create a csv from untrusted data, that can be used in exploiting csv injection. I agree above comment was little vague and I should've given some more details. If you're already taking care of this or there is no untrusted data getting exported through this class or validated before the export, please ignore this issue.
Also, please find below few references to CSV Injection
http://georgemauer.net/2017/10/07/csv-injection.html
https://www.owasp.org/index.php/CSV_Injection

Got it! Thanks.


Play on lock screen

Is there any way to continue playing while screen in locked?

@Mik-chan can you create a Stack Overflow question and elaborate on your problem there.  I do not believe this is an issue with the library itself.  If you update this issue with a link to the Stack Overflow question, I'll make sure we take a look at it.

Nedded to clean rebuild project, meh


Waveform does not get displayed

Issue description
Waveform does not get displayed when the song is loaded from the cache in firefox.
Environment

What's My Browser Support link: https://whatsmybrowser.org/b/YEQSA4J
Amplitude.js Version: 5.0.3

Steps to reproduce the issue

Load the markup for AmplitudeJs via Ajax
Run init on that markup
Everything works as expected

Reload the page with caching activated
Everything works exept the waveform

Additional details / screenshots
From the network tab in firefox:
A request with the status of 200 loads the waveform

A request with the status of 206 does not load the waveform

When I put a little "cachebusting" into the init function it always loads the waveform. Of course this is not desired since I want to use the browser cache.
AmplitudeJs.init({
    songs: [
        {
            url: url+'?V='+Math.random()
        }
    ],
    waveforms: {
        sample_rate: 3000
    }
});

Every other browser that supports the Web Audio API works fine.

The waveform process is being updated dramatically. Follow #462 for more details. This caching is because of a double call to the server to load the song which is extremely in-efficient. I'm modifying the process to render once and apply as an SVG element.


connection: Do not reset delayed closed timer if doWrite consumes 0 bytes from the output buffer.

Commit Message: connection: Do not reset delayed closed timer if doWrite consumes 0 bytes from the output buffer.
Additional Description: Only reset the delayed close timer if the write attempt made progress. This works around spurious fd Write events which are delivered to a connection even after it manages to fully drain the output buffer and should be waiting for client FIN or the delay close timer to expire. This is known to happen when  listening for level events instead of edge-trigger fd events.
Risk Level: low
Testing: unit
Docs Changes: n/a
Release Notes: n/a
Fixes #11829

/cc @davinci26
Hey Sotiris,
Can you double check that this change addresses your problem?

/assign @davinci26

LGTM it address the issue. I have verified it locally in my devbox

LGTM, though I'd bump the risk to medium because event loop changes. I'll merge after we cut the release :-)

Bumped up to medium.


Fix MLIRSparseTensor with int64 value dtype

Fixes #178.  Copy/paste fail!

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
5 unchanged lines in 2 files lost coverage.
Overall coverage remained the same at 83.02%

Files with Coverage Reduction
New Missed Lines
%

mlir_graphblas/engine.py
1
75.1%

mlir_graphblas/tests/test_profile.py
4
51.95%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
2606

Relevant Lines:
3139

💛  - Coveralls

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Warning: This coverage report may be inaccurate.
This pull request's base commit is no longer the HEAD commit of its target branch. This means it includes changes from outside the original pull request, including, potentially, unrelated coverage changes.

For more information on this, see Tracking coverage changes with pull request builds.
To avoid this issue with future PRs, see these Recommended CI Configurations.
For a quick fix, rebase this PR at GitHub. Your next report should be accurate.

Details

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.2%) to 83.179%

Totals

Change from base Build<PHONE_NUMBER>:
0.2%

Covered Lines:
2611

Relevant Lines:
3139

💛  - Coveralls

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Warning: This coverage report may be inaccurate.
This pull request's base commit is no longer the HEAD commit of its target branch. This means it includes changes from outside the original pull request, including, potentially, unrelated coverage changes.

For more information on this, see Tracking coverage changes with pull request builds.
To avoid this issue with future PRs, see these Recommended CI Configurations.
For a quick fix, rebase this PR at GitHub. Your next report should be accurate.

Details

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.2%) to 83.179%

Totals

Change from base Build<PHONE_NUMBER>:
0.2%

Covered Lines:
2611

Relevant Lines:
3139

💛  - Coveralls


Use requests Session and expose it to SDK users

Please use requests.Session() to make http calls instead of requests.get and make it accessible to users of nexmo.Client.
We need this to configure which HTTP proxy is used by Nexmo. Currently this can be done only by setting env variable but this affects the rest of the application. Exposing the session object would allow us to configure it (and set the proxy) in the same way as e.g. jsonrpcclient (https://jsonrpcclient.readthedocs.io/en/latest/api.html#configuring-the-requests-library)

I'm sorry but how am I supposed to set let's say a proxy? In the env?' In the Client()' ? Because there is no argument in the constructor that let me affect the sdk Session() and the first message the goal of this push was to remove the need of env variables. Am I wrong?'


Import feature?

First of all, what a great package!
Are there plans to expand the package with an import option, for example csv? Many of our customers deliver the redirects that way. Would be great if there was a possibility to import a lot of redirects at once.

Hi @erikjanwestendorp
This was never the intention of this package. The first version I built was because a client wanted to see the redirects for a node without searching on the dashboard. And quickly they requested add and delete functionality.
I also don't think the built in umbraco redirect table is suited for importing redirects. Personally I would go with redirects at IIS level or use another redirect tool.
If you want a import for the umbraco table you can look at the code in this PR  that I did not merge. It can be a starting point.
Dave

Hi @erikjanwestendorp
This was never the intention of this package. The first version I built was because a client wanted to see the redirects for a node without searching on the dashboard. And quickly they requested add and delete functionality.
I also don't think the built in umbraco redirect table is suited for importing redirects. Personally I would go with redirects at IIS level or use another redirect tool.
If you want a import for the umbraco table you can look at the code in this PR  that I did not merge. It can be a starting point.
Dave

@dawoe I think you are right that importing redirects is not the best idea and it is better to do this at the IIS level. Is it an idea to display the IIS redirects on a node?
Thanks for the reference to PR 😄

@dawoe I think you are right that importing redirects is not the best idea and it is better to do this at the IIS level. Is it an idea to display the IIS redirects on a node?
Thanks for the reference to PR 😄

Need to think about how to do that.  Perhaps provide a extension point so you could do it your self.  Like an event where you can you can add your own urls to the table. Or implement a interface.
The reason is that IIS can have many redirects that match every url... eg http to https, non www to www.... etc. So that can get messy.
Dave

@dawoe Yes an interface (or event) would be great so that everyone using your package can decide what to show in the table. I think it should be a read only record where deletions are not supported.


Async Logging

Currently, there is no way to do async logging without doing the following:
await Task.Run(() => logger.LogInformation(.....));
Could async versions of the logger methods be added to support async natively? I understand that you could write your own logger implementation to do logging async, using fire and forget (async void) methods - is this still a bad practice in Asp.Net Core?
I originally logged this here: https://github.com/aspnet/Logging/issues/444

This has nothing to do with MVC


github.Client is not safe for concurrent use; is that intended or a bug?

From https://godoc.org/net/http:

Clients and Transports are safe for concurrent use by multiple goroutines and for efficiency should only be created once and re-used.

https://godoc.org/github.com/google/go-github/github#Client makes no such claims, which is why I'm unsure if this is a bug or intended behavior.
However, given that it looks and feels a lot like http.Client, I thought it might also support concurrent use by multiple goroutines and for efficiency should only be created once and re-used.
That's not the case. If you look at the source of github.Client.Do:
c.Rate = response.Rate

It writes to c.Rate without any mutexes, which is not safe and will cause data races:
WARNING: DATA RACE
Write by goroutine 93:
  github.com/google/go-github/github.(*Client).Do()
      .../src/github.com/google/go-github/github/github.go:310 +0x16b

Is that intended, or is this a bug?
If I want to make concurrent calls to GitHub API via multiple goroutines, should I create multiple github.Clients?

It's certainly the case that a single client shouldn't be used to make calls on behalf of different users, since in most cases the auth token is baked into the oauth2.Transport.  As for data races surrounding c.Rate, that's a bug which I'd happily merge a patch for.  I don't know if there are other such race conditions, as I haven't used this myself to make concurrent calls very often.

I see, thanks.
I want to make use of a single GitHub client for the same GitHub user/auth token, not different ones.
I'll try to make a patch and see if I find any other race conditions.

As for data races surrounding c.Rate, that's a bug which I'd happily merge a patch for. I don't know if there are other such race conditions, as I haven't used this myself to make concurrent calls very often.

I've made such a patch locally and have been using/testing it for the last week or two, and I haven't spotted any other issues with concurrency.
I've created PR #255 with it.


portal: Switch to using ashpd

Ok, this is more code than I expected. I wonder what cargo update when you are generating the updated lock file.

Ok, this is removes more code than I expected.

Yes, and the API will only get better with time once there are actual usages of it + it would allow us to stay up to date here in case the portal ends up gaining new features / changes.

I wonder what cargo update when you are generating the updated lock file.

Not sure what you mean

what, this wasn't merged??


RoundedButton disabled true or false... ?? too bad but the work is Ok

Hey there! Ignite CLI seems to be having a problem, eh?
Welllllll, it just might be. First, search the issues to make sure it's not already
here, and if not head over to http://community.infinite.red to
get some help. If you've identified that it's really an Ignite CLI issue, then:

Explain what's going on and preferably how to replicate the issue (bonus points for a repro app)
Run ignite doctor and paste the result below, including the lines with 3 backticks
Delete these instructions! We don't want to look at them. ;)

What's going on?

Steps to reproduce

ignite doctor results:

Hey @alexmarton , can you provide more info about this?


update swagger info for SwaggerUI

What type of PR is this?

What this PR does / why we need it:
Which issue(s) this PR fixes:

Fixes #1008
Special notes for reviewers:

Please check the following list before waiting reviewers:

[ ] Already committed the CRD files to the Helm Chart if you created some new CRDs
[ ] Already added the permission for the new API
[ ] Already added the RBAC markers for the new controllers

Does this PR introduce a user-facing change??

None

/cherry-pick release-3.4
/cherry-pick release-3.5

/lgtm
/approve

/cherry-pick release-3.4

/cherrypick release-3.5


[Forbidden Lands] Some language-specific translation files missing entires

Some of the translation files(at least the Swedish version) haven't been automatically updated as they should have, and this have resulted in, among things, the Swedish version display some words as missing. Haven't looked closer of other files are missing entries, but looking at the variation of update times, I'm pretty sure it's not the only one.
swedish view of sheet
This was first reported on the forums in a related post, but wasn't identified correctly at first..
@clevett seems like a bug with the i18n tools not updating all files with new entries.
On a related note, Issue #5426 , #5335 , #2458 are solved and could be closed, and #5633 is solved after this week's changes go live.

I can't see your image in the post above Andreas. ;-(
Just to add to this; I looked in the Forbidden Lands translation folder last night and if I recall, only some of the language files updated with last weeks pr.  Checking the folder after today's merge, it looks like they were all updated except for one file "pt-br.json" which was last updated 7 months ago...

Vince, it was just the screenshot Calle posted in the thread, changed the link to point to his reply directly.

Gotcha.  Thanks

@clevett it seems you successfully updated all translation files for Forgotten Lands, except pt-br.json. Looking at the available language options on Roll20, Portuguese(Brazilian) doesn't seem to be an existing option, so I see why it wasn't updated.
The swedish translation now have same amount of entries as the other translation files, so this issue have therefore been resolved.


Add support for timezone in segment granularity

Currently, segment granularity intervals all operate on UTC chunks.
We have a use case where we want to re-index data in PST. This is not possible without including timezone in the granularitySpec.

docs ?

@b-slim Is there any other place I need to add?

thank you @b-slim


Mac OSX - OpenMP - reduction

After much consideration, I am opening an issue here even though it is not a tofu error but a problem of configuration between OSX, Cython an OpenMP, which leads to wrong results (tests failing) even if there is no issue in tofu and no warning/error displayed.
The first issue I found is that with homebrew's gcc-8, OpenMP reductions are not being run in parallel but repeated.
Some example can be found here:
https://stackoverflow.com/questions/54776301/cython-prange-is-repeating-not-parallelizing
https://github.com/bearnshaw/mult-cython
https://github.com/cython/cython/issues/2316

The solution seems to be to use conda's gcc and make sure this is the one being used by default, ie. which gcc should give something among the lines:
/Users/<username>/anaconda3/envs/<yourenv>/bin/gcc.
Since tofu used to fix the gcc compiler only for the compatibility with OSX, the setup.py can be updated so that it doesn't anymore. I will add the specification for the gcc compiler to the documentation.
This will also simplify the installation on ITER as Simon Pinches has to do a patch currently for the installation.

Fixed, in devel, by PR #184


Fix is_bomb_planed -> is_bomb_planted

#106

Thanks, change looks good. I'm in the process of changing the tests so I'll merge this after.

Tests should now be working again. Now running most tests in Rust.


Phenolyzer seems to be broken

The message appears that Phenolyzer is running, but no genes are returned

@stefinfection fixed it


Errors in configuration file results in confusing error

If I update my configuration file with an invalid field, I get the following error:

Can we catch that error and throw an error about an invalid configuration file?

Let's retry this one too.

Cannot reproduce on latest main branch.


Develop branch gets error during create and update operations

@keski I'm getting error while running client-test with mediators generated from the develop branch:
graphQLErrors: [
    {
      message: "ArangoError: AQL: bind parameter 'value2' was not declared in the query (while parsing)",
      locations: [Array],
      path: [Array],
      extensions: [Object]
    }
  ],

The error seem to always be related to value2. Is the parameters (other than the first) not getting defined correctly? Or do I have any dependencies out of sync or something?
PS: I have to run let inputToCreate = tools.makeInputToCreate(t, schema, 4, true); with 4 or above, else I get another error related to dummy fields?

I'll have a look at the issue.
For reference, the dummy fields error is related to how the client tests stop generating nested fields for creation at a given depth. At the depth limit it stops creating objects and instead connects to dummy IDs. The option to increasing the depth is to disable edge validation completely on the server side (i.e., where it checks that the vertices for an edge actually exist in the correct collection/interface).

I was unable to replicate the error. Could you verify that you have the update starwars schema (with required fields for key types) and also drop the DB when you start the server?

I'm using the SPIRIT schema, so that might be that issue.

After some (quite a lot) of testing I finally figured it out: I was still using the old version of client-test and generation-tools.
Now there is just the issue of the dummy fields...


Add pagination for ImageListForDigest and implement FilterTags

ImageListForDigest can now return paginated results, directly from DB. It uses FilterTags, a new method to filter tags (obviously) based on the criteria provided in the filter function.
Pagination of tags is now slightly different, it shows all results if no limit and offset are provided.
Signed-off-by: Alex Stan<EMAIL_ADDRESS>

Actually the commit exposes a CLI bug in computing image size (https://github.com/project-zot/zot/issues/927). Will make a separate commit afterwards to fix the failing tests, but the cli needs a separate fix for other use cases.


Ensure validation works for callable values

Fixes #1681, again!
The previous solution worked for validating values set using the block syntax, like this: set(:application) { "value" }. However it failed for the much more common scenario of set :application, -> { "value" }.
To fix this, we have to check whether the value passed to set is callable (i.e. responds to call with no arguments). If so, we apply the deferred validation logic in this scenario as well.
The additional wrinkle is the case where the value is a Question object. A Question responds to call, but it is not a normal Ruby Proc. We can't wrap it in another object to add validation because then Configuration#is_question? (which uses is_a?(Question)) would erroneously return false.
To account for this, I have changed the technique used for deferred validation to use define_singleton_method to wrap just the call method instead of wrapping the entire object. This ensures that is_a?(Question) remains true even after validation is applied.
Finally, in an effort to keep backtraces as clean as possible, all of this validation wrapping stuff is only applied if a validation rule is actually registered. If no validation rules are defined for a given key, there is no benefit to this meta-programming.

@leehambley I would appreciate a second set of eyes on this PR, if you have a chance. Meta-programming is almost always too clever for its own good, but it seemed the least-bad option. Maybe I missed a simpler solution.

I don't want to put anyone in particular on the spot, but if someone passing by has time to look at this PR, I would appreciate it! I don't feel comfortable merging this without a code review.

This is clever…
I'm struggling to think of a better approach. Patching #call feels dirty to me, but the only reasonable alternative which retains typing would be to dynamically create a decorator class which inherits from the class in question.
Alternatively, could we solve the Question case by not type-checking is_a? Question but rather check for some relevant method or something?
If not, I think this implementation looks solid. I appreciate the tests and the comments, it would be tricky to grok what is going on and why without it.
Thanks!

I suppose a terrible hack would be to create a decorator class that forwards #is_a? and #kind_of? to the composed object…

Could we approach it by taking the callable and wrapping it in another callable which handles validation? Then we could just handle the Question as a special case with a ValidatedQuestion < Question class…
Thinking out loud.

we could just handle the Question as a special case with a ValidatedQuestion < Question class…

Yes, I had the same thought. So that would mean:

For the non-Question case, we simply wrap the original proc in another proc
For the Question case, create a new ValidatedQuestion that has a call method that does the same thing

I will give that a shot.

Closing in favor of #1744.


Rebuilt test suite to only test public api

This PR removes all unit tests from the project and replaces them with a much simpler, more comprehensive test suite.
The test suite now runs the actual codegen tool on the 'examples' folder, and typechecks them. This means:

Issues can now be added to our integration tests by adding failing machines to our 'examples' folder. Once this PR is merged I'll add cases for #23 and #21. This is far easier and more transparent than contributing to unit tests.
Big changes to internals can be made (such as the upcoming migration away from rollup to pure TS) without any changes to the test suite.
No more having to run yarn local-link to test local repositories - just copy them and their imported files to the 'examples' folder and run yarn test:watch.

@Andarist agree on all the above. We have a rather lovely situation in that we get to do e2e testing without any of the usual downsides - slow tests and flakiness. This should cover the vast majority of our bases while also providing a really nice local dev environment for contributors.


this test will failed, maybe is about footnote

the test is follow:
type MarkdigTest(output: ITestOutputHelper) =
    let text =
        Path.Combine(@"C:\Program Files\Typora\resources\app\Docs","Markdown Reference.md")
        |> File.ReadAllText

    let document =
        Markdown.Parse(text, MarkdownPipelineBuilder().UseAdvancedExtensions().Build())

    [<Fact>]
    member this.``NormalizeRenderer Test``() =
        use writer = new StringWriter()
        let normalizer = new NormalizeRenderer(writer)
        normalizer.Render(document) |> ignore
        let raw = writer.ToString()
        File.WriteAllText(@"d:\Markdown Reference.md",raw)

the test file is, need remove the .txt extent name:
Markdown Reference.md.txt
please note that Footnotes, Reference Links, URLs, this is normalized file:
Markdown Reference.md.txt

Can you explain what fails exactly?

i remove some config:
    let document =
        let pipeline =
            MarkdownPipelineBuilder()//.UseAdvancedExtensions()
                .UseAbbreviations()
                //.UseAutoIdentifiers()//*
                .UseCitations()
                .UseCustomContainers()
                .UseDefinitionLists()
                .UseEmphasisExtras()
                .UseFigures()
                .UseFooters()
                //.UseFootnotes()//*
                .UseGridTables()
                .UseMathematics()
                .UseMediaLinks()
                .UsePipeTables()
                .UseListExtras()
                .UseTaskLists()
                .UseDiagrams()
                //.UseAutoLinks()//*
                .UseGenericAttributes()
                .Build()
        Markdown.Parse(text, pipeline)

maybe the link reference definition moves ome  to first occurency together from article bottom.

Oh, yes, the NormalizeRenderer is by far not compatible with all extensions. It requires still lots of work and I have personally zero spare time left for that. so PR welcome. See also issue #155

left side is normed, right side is source.

as I said, it is a known issue, look at #155 and you will see that most extensions are not supported by normalize, and even the core part of CommonMark might not be entirely supported well.

hello! i use regex and f# , C# i just read can't write. i read the code, i guess the bug not in normalize, insteed, bug in parser.
maybe a LinkReferenceDefinitionGroup per every section. next code seem expression one group in a document. that will merged all groups into first. no respect source.
https://github.com/lunet-io/markdig/blob/354db6b306559b73825140b33c3634137be062b1/src/Markdig/Syntax/LinkReferenceDefinitionExtensions.cs#L48

Yes, the approach with a single LinkReferenceDefinitionGroup would have to be changed for the NormalizeRenderer, for the HtmlRenderer it was okay since the location of the definition does not matter for the overall document.

hello! i read the code, i guess the bug not in normalize, insteed, bug in parser. i use regex and f# , C# i just read can't write. manapulate char and use ref to modify source code beyond my job.

Yeah, as @MihaZupan suggested, originally markdig was mainly and only developed for HTML rendering. NormalizeRenderer has been added later, but is far from completed, and it will probably never be completed if nobody in the markdig userbase is willing to contribute fixing it. And that's lots of work.

yes, the NormalizeRenderer  is inverse of parser. it can help to test the parser if respect raw text. so holp to develop continue.


[Bug]: Uncaught (in promise) Error: fatal: Invalid object name '"--pretty=format'.

Describe the bug
I am unable to "Commit-and-sync" with a fresh install of Obsidian + Git plugin on Windows.
On my first attempt at performing the "Commit-and-sync" action, it fails to commit, and the following is the output to the developer console.
Relevant errors (if available) from notifications or console (CTRL+SHIFT+I)
loading Git plugin: v2.27.0
plugin:obsidian-git:314 obsidian-git: error: fatal: Invalid object name '"--pretty=format'.

plugin:obsidian-git:104 Uncaught (in promise) Error: fatal: Invalid object name '"--pretty=format'.

    at Object.action (plugin:obsidian-git:104:10649)
    at zF.exec (plugin:obsidian-git:104:10960)
    at eval (plugin:obsidian-git:103:6654)
    at new Promise (<anonymous>)
    at Xf.handleTaskData (plugin:obsidian-git:103:6543)
    at Xf.eval (plugin:obsidian-git:103:6169)
    at Generator.next (<anonymous>)
    at a (plugin:obsidian-git:100:11259)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
plugin:obsidian-git:314 obsidian-git: error: fatal: Invalid object name '"--pretty=format'.

Steps to reproduce

Install Obsidian v1.6.7 on Windows 10
Install and enable Git Plugin v2.27.0
Exit Obsidian
Install Git for Windows v2.46.2.windows.1
Create a new repo on GitHub
Run the following commands in Git Bash:

cd "C:\Users\<username>\Documents\Obsidian Vault\"
git init
git add .obsidian
git commit -m "Initial commit of obsidian settings"
git branch -M main
git remote add origin https://github.com/path/to/my/vault.git
git push -u origin main

When prompted, authenticate using browser
Open Obsidian, create a new note
Go to "Open Git source control"
Push "Commit-and-sync" button
Commit fails, error is written to developer console

Expected Behavior
No response
Addition context
Debug info copied from settings:
{
    "settings": {
        "commitMessage": "vault backup: {{date}}",
        "commitDateFormat": "YYYY-MM-DD HH:mm:ss",
        "autoSaveInterval": 0,
        "autoPushInterval": 0,
        "autoPullInterval": 0,
        "autoPullOnBoot": false,
        "disablePush": false,
        "pullBeforePush": true,
        "disablePopups": false,
        "disablePopupsForNoChanges": false,
        "listChangedFilesInMessageBody": false,
        "showStatusBar": true,
        "updateSubmodules": false,
        "syncMethod": "merge",
        "customMessageOnAutoBackup": false,
        "autoBackupAfterFileChange": false,
        "treeStructure": false,
        "refreshSourceControl": true,
        "basePath": "",
        "differentIntervalCommitAndPush": false,
        "changedFilesInStatusBar": false,
        "showedMobileNotice": true,
        "refreshSourceControlTimer": 7000,
        "showBranchStatusBar": true,
        "setLastSaveToLastCommit": false,
        "submoduleRecurseCheckout": false,
        "gitDir": "",
        "showFileMenu": true,
        "authorInHistoryView": "hide",
        "dateInHistoryView": false,
        "lineAuthor": {
            "show": false,
            "followMovement": "inactive",
            "authorDisplay": "initials",
            "showCommitHash": false,
            "dateTimeFormatOptions": "date",
            "dateTimeFormatCustomString": "YYYY-MM-DD HH:mm",
            "dateTimeTimezone": "viewer-local",
            "coloringMaxAge": "1y",
            "colorNew": {
                "r": 255,
                "g": 150,
                "b": 150
            },
            "colorOld": {
                "r": 120,
                "g": 160,
                "b": 255
            },
            "textColorCss": "var(--text-muted)",
            "ignoreWhitespace": false,
            "gutterSpacingFallbackLength": 5
        },
        "autoCommitMessage": "vault backup: {{date}}"
    },
    "pluginVersion": "2.27.0"
}

Operating system
Windows
Installation Method
None
Plugin version
2.27.0

No I think the format is correct. I have the same command in my logs, but for me everything is working.

I'm on linux and you're on Windows, but the simple-git dependency hasn't changed for quite some releases and I think if it would impact all Windows machines I've gotten more of these issues. So I don't know that this causes.

I had to switch to my own work, to faster ship a fix I've made to simple-git, but that's already merged and released by simple-git as well. So you're right, I've switched now to the new simple-git versions on the master branch. So you can try the newest version out (remember to install the new version with pnpm install)
I doubt git has introduced any breaking changes in this regard, though.

I guess works fine for me. I get the following stdout: 'òòòòòò 750941ab3ff9e2f7e592a98847e720ea19ddbca6 ò 2024-10-10T11:10:53+02:00 ò 128 ò HEAD -> Test ò  ò Vinzent ò<EMAIL_ADDRESS>òò'
This works for me on Windows and Linux.


Align SetOption doc with settable options list

SetOpt manpage list is recast into a table for readability, and wording tweaked.
Comments in both places remind to keep lists in sync.
Signed-off-by: Mats Wichmann<EMAIL_ADDRESS>Contributor Checklist:

[ ] I have created a new test or updated the unit tests to cover the new/changed functionality.
[ ] I have updated CHANGES.txt (and read the README.rst)
[X] I have updated the appropriate documentation

The userguide has an additional table, to make this more confusing / harder to keep in sync. https://scons.org/doc/4.0.1/HTML/scons-user.html#sect-command-line-option-strings


Refactor image handling to allow different asset sources

Firesize is fine for testing, maybe even for a demo. But the images get unacceptably large for this demo at desktop size - they're not progressive jpegs and the size is beyond belief.
The size problem cannot be understated - Even with a CDN and properly set cache-control headers, the performance for background images makes no sense. Firesize is turning a 316k 1920x1080 progressive jpg into a 2.35M png for a request of 60% the size of the original.
So refactor the image handling to allow for a different image origin location to be configured. Pass this configuration on to Background Store to allow a CDN service to source this new location.
This will come in handy in any case, allow for setting other alternative asset hosts, and is a great opportunity to clean up some of that code.

Addressed in b24b35d385544a6e3322c4f1fa4ca0a1281273aa and dddaf18c7dc0d79a45731dc48f556d60eeb7d56a

I had originally thought this must have been caused by lorempixel, but was wrong. It is Firesize that is causing the image size and type problems.


Revert "shellcheck: ci/ (#13024)"

This reverts commit 22f9592b6311aff10df26a3f6a21b92b633fffcb.
Signed-off-by: Asra Ali<EMAIL_ADDRESS>Commit Message: Hoping to fix clang_tidy errors. Let's check up on CI...
clang_tidy seems to use gcc incorrectly on main branch after the PR.
Fix (potentially): https://github.com/envoyproxy/envoy/issues/13162

cc @phlax

(Note I think the issue it passed previously is there are no code changes so clang-tidy diff is empty. When re-applying we should do a temp code change which I think would uncover the issue.)


Deprecate partition, add splitBy method that multicasts the source sequence

Related to #3797, the ideal replacement would be a method that mutlicasts the source sequence and returns two Observable "lanes", and sends values down one or the other lane based on the predicate. This is conceptually similar to groupBy with only two groups, except it returns an Array of the grouped Observables instead of an Observable of the groups since the groups can be known ahead of time.

Seconded. To my mind, the partition operator is fully useful yet: There needs to be another one that does not subscribe twice.
For trivial examples like in the docs, it works totally fine. Behind the scenes however, it subscribes to the observable behind partition twice which might double the work the code does.
In my concrete case, I followed the docs to split success and error cases. However, instead of calculating if a number is odd or even, I did an API call (with flatMap / catchError in case anything goes wrong). In my opinion, this is quite a common use case. If you now partition this by success / failure and subscribe to both partitioned streams, the API call is actually performed twice because there are two subscriptions that are merged back into one. This might be undesirable because it could double the load on the server (if there is no caching in place).
For this scenario, I might be missing a better operator. In this case, I am sorry. However, the splitBy that is described here seems like a perfect match for the situation I'm facing. As a workaround, i am using a custom operator that uses two subjects and passes elements on correctly, but I doubt this is production-ready yet.

FWIW, I implemented this, but never got around to discussing it or opening a PR: https://github.com/cartant/rxjs-etc/blob/master/source/operators/splitBy.ts

That looks very promising, thanks. Maybe it would be a good idea to merge it back 😄

Would be good to get splitBy into rxjs.

Core Team Meeting: Have @cartant move this into core, whenever he gets the chance. It seems like there's a good deal of interest.

Okay, after a PR and some careful deliberation, we decided we aren't going to pursue getting this into core right now. For reasons that are outlined here: https://github.com/ReactiveX/rxjs/pull/6388#issuecomment-846094188


WIP: Use WKB for geometry instead of GeoJSON

This is a work in progress.
This branch exposes geometries for features as WKB data stored in a bytes object instead of GeoJSON-like structures.
I 100% think that GeoJSON should remain the default - for most situations the performance is acceptable, and it is a much easier route for people to get into working with spatial data. It's also easier to debug with.
Making this an option could improve the performance of workflows that use Shapely, e.g.
for feature in source:
    geom = shape(feature["geometry"])
    ...

vs
for feature in source:
    geom = wkb.loads(feature["geometry"])
    ...

GeoPandas would benefit from this also as it works natively with Shapely geometries.
Some quick benchmarking shows an improvement in performance for some workflows, but this will depend very much on the data being read and how it's being used.
TODO:

How should this mode be enabled? An argument to fiona.open?
Improved method names (not build2...)
Documentation

@snorfalorpagus Fiona itself could benefit from WKB geoms. Imagine reading from a collection, transforming, and then writing a new collection (using OGR_G_ImportFromWkb).
If feature["geometry"] were an instance of a class that derived from, say, collections.abc.Mapping we could add __wkb__ and __geo_interface__ attributes to it, the former being WKB bytes and the latter being a GeoJSON-like dict. On reading a feature from a collection, maybe we set the __wkb__ attribute only, and compute the __geo_interface__ only right before it is needed, as when a user does feature["geometry"]["type"].

@snorfalorpagus my suggestion above was half-baked. My preferred way to get better performance is to make a cdef class _Feature and cdef class _Geometry. Something like
cdef class _Feature:
    cdef OGRFeatureH _featrh

cdef class _Geometry:
    cdef OGRGeometryH _geomh

with public
class Feature(collections.abc.Mapping):
    _feature : _Feature
    geometry = property()  # read-write

class Geometry(collections.abc.Mapping):
    _geom: _Geometry
    wkb = property()  # read-only
    __geo_interface__ = property()  # read-only
   from_mapping = classmethod()  # a factory method
   from_wkb = classmethod()  # another factory method

WKB and GeoJSON representations of the feature's geometry could be evaluated lazily and in some cases, not at all. For example, the following would not need to evaluate either of those, it could exclusively use the low-level cdef OGRFeatureH _featrh.
with fiona.open("example.shp") as source, fiona.open("result.shp", "w", ...) as destination:
    destination.writerecords(source)

Use with Shapely could be something like the following.
def buffer_feature(feature):
    geom = feature.geometry  # implementation detail: OGR_F_GetGeometryRef(feature._feature._featrh) is called, geom keeps a reference to feature so that it is not garbage collected.
    wkb = geom.wkb  # I.D.: OGR_G_ExportToWkb(geom._geom._geomh) is called.
    buffered_geom = shapely.geometry.wkb.loads(wkb).buffer(100.0)
    feature.geometry = buffered_geom  # I.D.: OGR_F_SetGeometry(feature._feature._featrh, Geometry.from_mapping(buffered_geom)._geom._geomh) is called
    return feature

with fiona.open("example.shp") as source, fiona.open("result.shp", "w", ...) as destination:
    destination.writerecords(map(buffer_feature, source))

I don't think we need to implement separate geometry classes like Point. Also, making Geometry instances immutable will be key to keeping the implementation simple.
What do you think of this?

This work is superseded by proposals for Fiona 2.0: https://github.com/Toblerity/fiona-rfc/pull/2


"Rake aborted" when generating derivatives

Very much a novice here...
Following the documentation, when I run the first task the rake aborts and I get this message:

Generating IIIF derivatives for collection 'zines'
This might take awhile.
rake aborted!
WaxIiif::Error::InvalidImageData: Cannot read this image file: _data/raw_images/zines/zine2.jpg. identify /var/folders/5t/n99lj6td3_q74h427zhjfc5m0000gn/T/mini_magick20191010-84071-b38gzx.jpg failed with error:
identify: no decode delegate for this image format JPG' @ error/constitute.c/ReadImage/560. /usr/local/lib/ruby/gems/2.6.0/gems/wax_iiif-0.1.2/lib/wax_iiif/image_variant.rb:37:in rescue in initialize'
/usr/local/lib/ruby/gems/2.6.0/gems/wax_iiif-0.1.2/lib/wax_iiif/image_variant.rb:34:in initialize' /usr/local/lib/ruby/gems/2.6.0/gems/wax_iiif-0.1.2/lib/wax_iiif/builder.rb:233:in new'
/usr/local/lib/ruby/gems/2.6.0/gems/wax_iiif-0.1.2/lib/wax_iiif/builder.rb:233:in generate_variants' /usr/local/lib/ruby/gems/2.6.0/gems/wax_iiif-0.1.2/lib/wax_iiif/builder.rb:253:in block in process_image_records'
/usr/local/lib/ruby/gems/2.6.0/gems/wax_iiif-0.1.2/lib/wax_iiif/builder.rb:246:in each' /usr/local/lib/ruby/gems/2.6.0/gems/wax_iiif-0.1.2/lib/wax_iiif/builder.rb:246:in process_image_records'
/usr/local/lib/ruby/gems/2.6.0/gems/wax_iiif-0.1.2/lib/wax_iiif/builder.rb:76:in block in process_data' /usr/local/lib/ruby/gems/2.6.0/gems/wax_iiif-0.1.2/lib/wax_iiif/builder.rb:73:in each'
/usr/local/lib/ruby/gems/2.6.0/gems/wax_iiif-0.1.2/lib/wax_iiif/builder.rb:73:in process_data' /usr/local/lib/ruby/gems/2.6.0/gems/wax_tasks-1.0.2/lib/wax_tasks/collection/images.rb:124:in write_iiif_derivatives'
/usr/local/lib/ruby/gems/2.6.0/gems/wax_tasks-1.0.2/lib/wax_tasks/site.rb:59:in generate_derivatives' /usr/local/lib/ruby/gems/2.6.0/gems/wax_tasks-1.0.2/lib/tasks/derivatives_iiif.rake:13:in block (4 levels) in <top (required)>'
/usr/local/lib/ruby/gems/2.6.0/gems/wax_tasks-1.0.2/lib/tasks/derivatives_iiif.rake:13:in each' /usr/local/lib/ruby/gems/2.6.0/gems/wax_tasks-1.0.2/lib/tasks/derivatives_iiif.rake:13:in block (3 levels) in <top (required)>'
/usr/local/lib/ruby/gems/2.6.0/gems/rake-12.3.3/exe/rake:27:in <top (required)>' /Users/musicforparkinglots/.gem/ruby/2.6.0/gems/bundler-2.0.2/lib/bundler/cli/exec.rb:74:in load'
/Users/musicforparkinglots/.gem/ruby/2.6.0/gems/bundler-2.0.2/lib/bundler/cli/exec.rb:74:in kernel_load' /Users/musicforparkinglots/.gem/ruby/2.6.0/gems/bundler-2.0.2/lib/bundler/cli/exec.rb:28:in run'
/Users/musicforparkinglots/.gem/ruby/2.6.0/gems/bundler-2.0.2/lib/bundler/cli.rb:465:in exec' /Users/musicforparkinglots/.gem/ruby/2.6.0/gems/bundler-2.0.2/lib/bundler/vendor/thor/lib/thor/command.rb:27:in run'
/Users/musicforparkinglots/.gem/ruby/2.6.0/gems/bundler-2.0.2/lib/bundler/vendor/thor/lib/thor/invocation.rb:126:in invoke_command' /Users/musicforparkinglots/.gem/ruby/2.6.0/gems/bundler-2.0.2/lib/bundler/vendor/thor/lib/thor.rb:387:in dispatch'
/Users/musicforparkinglots/.gem/ruby/2.6.0/gems/bundler-2.0.2/lib/bundler/cli.rb:27:in dispatch' /Users/musicforparkinglots/.gem/ruby/2.6.0/gems/bundler-2.0.2/lib/bundler/vendor/thor/lib/thor/base.rb:466:in start'
/Users/musicforparkinglots/.gem/ruby/2.6.0/gems/bundler-2.0.2/lib/bundler/cli.rb:18:in start' /Users/musicforparkinglots/.gem/ruby/2.6.0/gems/bundler-2.0.2/exe/bundle:30:in block in <top (required)>'
/Users/musicforparkinglots/.gem/ruby/2.6.0/gems/bundler-2.0.2/lib/bundler/friendly_errors.rb:124:in with_friendly_errors' /Users/musicforparkinglots/.gem/ruby/2.6.0/gems/bundler-2.0.2/exe/bundle:22:in <top (required)>'
/usr/local/opt/ruby/bin/bundle:23:in load' /usr/local/opt/ruby/bin/bundle:23:in '

Caused by:
MiniMagick::Invalid: identify /var/folders/5t/n99lj6td3_q74h427zhjfc5m0000gn/T/mini_magick20191010-84071-b38gzx.jpg failed with error:
identify: no decode delegate for this image format `JPG' @ error/constitute.c/ReadImage/560.
I can run the site locally, but no images are generated. Any ideas?

Are you on a Mac? And if so, did you install imagemagick using brew? Seems like an imagemagick issue, but it's hard to tell.
Can you tell me what output you get when you run the command identify -list format ??

Thanks for your response and patience with a novice. I believe I got my original issue ironed out this am. It was a wonky install of imagemagick. I reinstalled -- this time with Homebrew and not from source. When I ran the tasks I received no errors. Yeah!
Unfortunately, I'm not seeing any images at all when I build the site. I can search for items and do get results, but when I go to the item there is no image, just a "grayed" space. Been digging around to see if there's any settings or config issues, but nothing has jumped out yet...any thoughts?

I am on a mac.

Hi @jloan , do you have a public GitHub repository I can look at?
My guess is that you need to regenerate the pages. When you run the derivatives task, it generates the images and adds the image paths to your CSV or other data file. Then the pages task creates markdown pages from that data file.  Does that make sense? It's hard to explain in writing, but basically the task order is important. See: https://minicomp.github.io/wiki/wax/running-the-tasks/
If you've already run the pages task, I'd just delete the folder of pages it generated (probably _zines in your case) and run it again.

Closing this issue, but happy to keep chatting about it.


Is there xmpp compliance?

While I know that JabbR != Jabber. Is JabbR xmpp compliant?

No, unfortunately not.


Player join/leave messages doesnt show up

at newset version <IP_ADDRESS> didint show player connect or disconnect messages on discord

Hmm... It's possible 1.18 changed the join/leave message in someway, or changed the way join/leave events are broadcast. I'll spin up a 1.18 server later today and try to find the issue.

I'm working on solving this, for now on the latest commit player joins work but player leaves don't say anything in Discord.
The underlying issue is that BDS no longer seems to put Join/Leave messages in the ServerLog event packets and so that isn't a viable way to listen for them anymore. There is an event specifically for Player Joins that the plugin now uses, but I have not found a suitable way to track and report disconnects.

This should be fixed in Hotfix v1.0.5.
Please download the patch here.


Bug in KPM method

https://github.com/dean0x7d/pybinding/blob/ec1128aaa84a1b43a74fb970479ce4544bd63179/cppcore/src/kpm/OptimizedHamiltonian.cpp#L112 has the expression of a vector where the index is taken from using an other vector. However, if the Hamiltonian is block-diagonal, the index_queue doesn't contain all the indices to connect all the sites to each other. In essence, you could only reorder for one 'block'. If the matrix is block-diagonal, is would be faster to treat the system in separate calculations. However, this can create strange segmentation errors if for example the hopping parameter between two different systems is changed and goes through zero.
An easy fix is to assign the value of 'row' to the first nonzero integer not in index_queue, and also add this integer to the slice_border_indices-vector. This fix works, and will be added in a future release.

Currenlty, all the bug related to the KPM method are solved. The bugs originated from block-diagonal systems, and systems where there were rows/columns with zeros or where the first diagonal-element of a block-diagonal section was zero.
Also, the function KPM.calc_spatial_ldos now works with multi-orbital models.
To install this updated version, please use pip uninstall pybinding and pip install git+https://github.com/BertJorissen/pybinding.


Fix ChatAnthropic forcing non-streamed response with tools

Have adjusted the ChatAnthopic class to enable streaming with tools properly instead of it previously forcing any request with tools to be non-streamed, also works perfectly with agentExecutor with was our usecase that we had to find a workaround for.
I've kept the prvious if statment code for maintainers to have as reference/edit however they want, also fixed little typos in readme: libs/langchain-anthropic
Fixes # (issue)
https://github.com/langchain-ai/langchainjs/issues/6045

I think this pr is ready now, we'll be using it in production at https://voiceglow.org :)

Hey @Moe03! Thanks for this PR - we have a specific way we're tackling it in #6056 and #6057 so will close this for now. But much appreciated!


How can I preserve the spacing?

I have an ASCII image, and the output seems to omit lines that begin with a space. Is there a way to preserve it?

Could you provide an example?

I went around it by just adding a period in front.

:+1:


Add Calendar

What's the Product's Name?
Calendar
Describe the product in a single sentence.
Calender is a personal calendar application made by Microsoft for Microsoft Windows and was included from Windows Vista to Windows 11. It offers synchronization of calendars using Microsoft Exchange Server, Outlook.com, Apple's iCloud calendar service, and Google Calendar.
When was the product launched? Provide a specific date, if possible.
2014
When was the product discontinued? Provide a specific date, if possible.
December 31 2024
What type of product was it? App, Service, OS, or Hardware?
App

Great thank again! Added in 8b73cc2b0fa94585f0b8d2cfbf777a3de5ead065. Also, I have added also the companion People app.


Support 6 digit extension numbers

Coverage remained the same at 46.246% when pulling 49555f95ab0d29d23ff215c37c541514f12404fa on u9520107:rcint-3514 into 610bdc69ecfd6ee5e955971fad1823d8b65ed888 on ringcentral:master.

Coverage remained the same at 46.246% when pulling cc52a7cfa9e44d08e15a57f7c9bc227507620f61 on u9520107:rcint-3514 into 610bdc69ecfd6ee5e955971fad1823d8b65ed888 on ringcentral:master.

Coverage remained the same at 46.246% when pulling 3f554a3c5a89c9d64d19a7fcb65982cc4dba55bc on u9520107:rcint-3514 into 610bdc69ecfd6ee5e955971fad1823d8b65ed888 on ringcentral:master.

Coverage remained the same at 46.246% when pulling 039ad04b932d05cf028c5c6fd3fe3a764a5f5c87 on u9520107:rcint-3514 into 610bdc69ecfd6ee5e955971fad1823d8b65ed888 on ringcentral:master.

Coverage remained the same at 46.246% when pulling 1ac28781924cf08bb8cd19d627b9b72c1efee490 on u9520107:rcint-3514 into 610bdc69ecfd6ee5e955971fad1823d8b65ed888 on ringcentral:master.


raft-start.sh doesn't start when using geth v1.8.11-stable

7 node example using the geth v1.8.11-stable version does not work as the following below parameters are not available.
--raft
--raftport value
--emitcheckpoints
The build worked on geth v1.7.2.
Is there any plan to update the pre-requisites to specify the verison of geth to be used or is there any changes expected on the raft-start.sh to allow the code to work with the latest geth version,

Hi, can you clarify where you're getting that v1.8.11 version from? We don't have a v1.8.11 release of quorum... If you mean that you're running a bare upstream ethereum geth with quorum-examples, then I don't believe that will work.
Those command line options work fine for all the released Quorum versions and for master.
FYI master includes a merge of upstream geth v1.8.12

Thank you for clarifying.
I had been referring to link and was not able to find the parameters and had used the bare upstream etherium geth with quorum-examples.
I will check with the quorum version and get back. Thanks.

Ok, that explains it.
You should use quorum geth with quorum-examples: https://github.com/jpmorganchase/quorum
The raft command line options are under the Raft consensus docs in the quorum wiki: https://github.com/jpmorganchase/quorum/blob/master/docs/raft.md


Excel (Business) step - Add row to table - expression file path not working

Hello,
I tried to find documentation in the subject but fell short until now.
I am trying to use Logic Apps in order to update a table when a trigger occurs.
I have two different tables and the path to those two tables are in the tigger.
I am using an Expression in the path to "File" instead of manually clicking to get to this path and so that depending on the tigger, the app knows whether to go in file1 or in file2.
Can we use Expression to access a file and if yes could I have an example?

Thank you,
Renaud

@sbi-rviot Thank you for the valuable feedback,we are investigating the issue.

@Adam-Smith-MSFT , do you need more details in order to help?
I realize that the "manual way" gets the ID of the folder instead of the path, when I am dynamically writing the path.
Nonetheless, for my flow, writing the path would solve my issue.
Thank you again.

Hi @sbi-rviot - It's likely your expression in the File field isn't evaluating as string value as per its reference doc - did you review your Run History to see if the expression is being evaluated into that string value that points to valid excel file?
Since this channel is for driving improvements for MS Docs, I request that you open a thread on MSDN forums for your question (with a screenshot of your Run History, omit any private info) and tag me here with its URL so that I can be notified and make sure your thread gets answered.
We will now proceed to close this thread for now. If there are any questions regarding specific MS Docs, please reopen it and we will gladly continue the discussion.

ok!
I found the solution. but thank you!


Show a ratio of test classes vs real classes (Ruby and Symfony2)

Here we show a little ratio of test vs real classes.
This is a loose port of https://gist.github.com/sent-hil/4641437 . I rather do symfony2 than ruby at work, so I extracted a little base method to show the actual prompt. Now the code is quite lean.
It may has some performance issues on large projects, but for most cases it will do nice.
Best regards
:)

Are the docs accurate? Do they need to use rspec or rspec_stats to get that prompt?

 Just fixed it. ;)
Also improved the way how Classes and Tests are counted.


External tools

[Enter feedback here]

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

ID: 89c2607e-b89c-9572-6700-1d6446eb7133
Version Independent ID: d14ccb79-9c49-fc0e-ff34-24d66a1db47a
Content: Using external tools in Power BI (preview) - Power BI
Content Source: powerbi-docs/create-reports/desktop-external-tools.md
Service: powerbi
Sub-service: powerbi-desktop
GitHub Login: @davidiseminger
Microsoft Alias: davidi

@ustrat, I see that you opened a Ppwer BI documentation github issue, but I don't see any other information. I am going to close this issue on the assumption that it was opened by mistake, but if indeed you had a problem with the documentation, please reopen this issue and provide us the details so that we can begin to take steps. Thanks!


[WIP] Better Logger

See https://github.com/crystal-lang/crystal/issues/5874
Still needs specs and documentation, but see https://gist.github.com/ezrast/37c3377c172cd225efe0ed40f4da1e59 for example usage.

I like the interface but the implementation is a little on the complex side. I'd rather have a singleton root logger instead of extend Base. I don't think Logger.log should work either, you should need to .get a logger or use Logger::BASE (not recommended).
The HierarchyFilter could work on longest-substring match, which avoids assuming that :: is used as a separator. This can be done now by creating an array of the filter rules, ordered by match string length, and then iterating that. Later, replace with a radix tree.
This is a really good starting point though!

Perhaps also just have the Filter on the Emitter in this design, with the global Logger::ROOT (BASE was a bad name) controlling which emitter is used, and the emitter handling filtering.
So perhaps:
class Logger
  property backend : Logger | Emitter
end

class Emitter
  property filter : Filter
end

This design allows having a "root logger" which isn't Logger::BASE, meaning there can be many trees of loggers, but usually only one with the root being Logger::BASE. The root of the logger tree references the emitter which controls where the logs go, how they're formatted, and if they're filtered.

The HierarchyFilter could work on longest-substring match, which avoids assuming that :: is used as a separator. This can be done now by creating an array of the filter rules, ordered by match string length, and then iterating that. Later, replace with a radix tree.

If we don't assume a separator then Animals::Anteater will inherit from Animals::Ant. I think we want to avoid that?

Perhaps (not sure) also just have the Filter on the Emitter in this design, with the global Logger::ROOT (BASE was a bad name) controlling which emitter is used, and the emitter handling filtering.
So perhaps:
class Logger
  getter component : String
  property backend : Logger | Emitter
end

class Emitter
  property filter : Filter
end

The issue with this is that it makes the filter difficult to access from the outside - changing the default log level becomes Logger::ROOT.backend.as?(Emitter).try &.filter= Logger::DEBUG, which isn't great. If you want to avoid having nil filters on all the forwarders, I think the way to do it is to make Logger.get return a Forwarder object that doesn't inherit from Logger at all. Then #debug and friends live on Forwarder instead of, or in addition to, on Logger. I'm not sure whether that actually simplifies anything, but I'll play with it.

This design allows having a "root logger" which isn't Logger::BASE, meaning there can be many trees of loggers, but usually only one with the root being Logger::BASE. The root of the logger tree references the emitter which controls where the logs go, how they're formatted, and if they're filtered.

Whoops, I had meant to move get from a class method on Logger to an instance method on Logger::Base. Then one can create forwarders for any arbitrary logger.

@ezrast if you add a filter= on Logger which asserts that this is the root logger and then sets the filter then it's just Logger::ROOT.filter =

@ezrast Note you haven't set the a mail linked with your github's account in your .gitconfig

@j8r Good catch! That explains why Github thinks I've never committed before.
@RX14 That still seems like fighting the type system. If we don't want components to have their own filters we should give them a type that doesn't have filters. Does this change do what you want in that regard? https://github.com/ezrast/crystal/pull/3/files

@ezrast if you go that route then i'd rather just have Logger and RootLogger < Logger and only RootLogger has the emitter and filter.
But I'll wait for other people on the core team to chime in since they'll have their own opinions.

This Component type is what I already had in mind in https://github.com/crystal-lang/crystal/issues/5874#issuecomment-376679699 where the directly used object would just be a shallow wrapper with a component path and a pointer to the logger instance. Since it's immutable, it could even be a struct and make calling Logger.get pretty cheap.
However, this implies a very centralized architecture with every log message routing through one main logger instance. It can get pretty complex to apply filters to specific component paths.
So, I'm not sure that's the best solution.
Looking at Java's logging API, every Logger instance has a filter and a list of handlers as well as an optional reference to a parent logger. Log messages are published to the local handlers and the handlers of all parent loggers (this propagation can be disabled).

I tend to think that copying what java does is the best. There have been about 5-10 java logging libraries over the years, and they're very well optimized by now for production usecases.

I've checked through way too many levels of abstraction to confirm that in log4j2, each logger has a filter, a set of appenders (handlers) and then forwards to it's parent. I'd probably just copy that for now, although it does require a registry of logger instances to look up parents, but that's required anyway to reconfigure loggers at runtime.

I think we still have architecture issues to discuss before nitpicking this PR.

@RX14, as a very general response to your Java comment: in my experience Java things tend to be a pain to deal with operationally, and one of the many reasons is that their components write things to lots of different log files, including duplicating entries between log files, all loosely controlled by a configuration file according to a scheme that is largely inscrutable to non-Java programmers. So I'm in favor of pushing configuration into the root logger instance. I don't want to encourage components to write to their own log files "just in case" and then also push logs downstream to be written again somewhere else.
That said, changing Logger to hold an array of Emitters seems like a benign change, and after that (plus making get an instance method) what we'll have isn't that different from what you and @straight-shoota describe: calling Logger#get will return another logger that forwards to its parent by default but can have a filter and arbitrary emitters added to it.
The main thing missing is a registry, which I don't understand the use case for. Global configuration should go in the root logger; why make every component's logger be available globally?

I definitely would like to see a module the user can be referenced to emit events and a factory method. And decouple the story of filtering in another module/interface. That should help the description to the user.

Can you clarify what you mean by this? Emitter and Filter are already their own modules that will be documented individually.

@ezrast okay, yes, root logger with an array of Emitters, each emitter receiving every log and having separate filtering settings is fine. No registry or parenting arrangement required.
Also the naming is iffy. I'd propose:

Logger::Manager - Holds the array of Collectors
Logger::Collector - Handles the core logic of filtering and serializing logs
Logger::Filter
Logger itself is a struct containing a String context and a reference to the Logger::Manager instance
Logger::DEFAULT_MANAGER, a default Manager
Logger::Manager#get(String), returns a Logger
Logger.get - forwards to Logger::DEFAULT_MANAGER.get

Thoughts?

@straight-shoota because if loggers have state, they need to be stored in a registry so that they can be configured using a central API. That complicates the whole design.

Hm, yeah. But now Logger::Manager is kind of a registry. It at least needs to associate filters to component paths. I'm not favouring any of both approaches, just thinking about it...

The current PR has no registry, distinguishes between components hierarchically in the root logger if you want it to (for which the entire filter class is 26 lines of code and not complex at all), and still has fat loggers at the leaves just in case you want to do something wacky. I'm skeptical that it could get much less complicated.

@straight-shoota except in this design the "registry" (really just parsing the component) is handled by Collectors, and collectors can be implemented by shards. This moves almost all the xomplexity outside the stdlib and allows flexibility. The stdlib will still provide good solutions for deployments with only a few rules (see the API for Logger::HierarchyFilter and compare that to a registry)

I made some of the less-controversial (I think; feel free to prove me wrong) requested changes and updated https://gist.github.com/ezrast/37c3377c172cd225efe0ed40f4da1e59 accordingly.
Outstanding discussion topics include:

Make Logger#get return a thin forwarder instance (removes a footgun but also some flexibility; makes the implementation slightly more complex) or keep it as a fat logger that we just pretend is thin (simplest solution but potentially confusing)?
Filter-per-emitter or filter-per-logger?
What to name things? (should be deferred until the architecture is nailed down)

I'm still not sure about the thin wrappers, but I figure we can leave it as is for now, as it is a sound solution. Once we get some experience with real world usage of the loggers, and determine that thin wrappers would provide an improvement, this can always be revisited.
I'd say per logger. That makes it easy to share the same emitters across different logger instances. If you need different filter settings, you can just create another logger instance and forward messages to it. An alternative would be a FilterEmitter which wraps an Emitter and filters messages before relaying them. But it's not much different from another Logger plus Forwarder.
The current naming actually looks quite nice.

Ultimately, what i'm trying to say is that the data flow graph for my proposal is this:
 Logger --\                      /--> Logger::Collector -------> ...
          |                      |           ^
          |                      |           |
 Logger --|--> Logger::Manager --|           |
          |                      |           v
          |                      |    Logger::Filter
 Logger --/                      |
                                 |
                                 \--> Logger::Collector -------> ...
                                             ^
                                             |
                                             |
                                             v
                                      Logger::Filter

whereas, the same graph for this PR is spaghetti

Logger needs to be stateless and immutable, because otherwise you need to keep a registry of loggers to make filters and appenders configurable by the application.

@RX14, a registry isn't in the question at this point. It's "thin loggers; central configuration" vs "fat loggers; central configuration". In practice, the current PR's data flow is like this --
 Logger (leaf) --> Logger::Forwarder --\                    /--> Logger::Emitter --> ...
                                       |                    |
                                       |                    |
 Logger (leaf) --> Logger::Forwarder --|--> Logger (root) --|--> Logger::Emitter --> ...
                                       |          ^         |
                                       |          |         |
 Logger (leaf) --> Logger::Forwarder --/          |         \--> Logger::Emitter --> ...
                                                  v
                                            Logger::Filter

-- which has the potential to turn into spaghetti if people go adding filters and emitters to the leaf loggers, but the docs should make it clear that that's not the intended use case. Otherwise, the only effective difference between your graph and mine is where the filters go, which is a separate question.
I am not actually against the idea of giving leaf loggers their own immutable class, I just think you're overstating the difference between the two setups.

One important difference between both data flow diagrams isn't shown. In RX14's design, Logger.get("Foo") will always return essentially and identical logger whereas in the current state it will always return a new instance and when you modify it, with say a new filter, other instances will not be affected. This makes it the duty of the application to ensure it shares its logger.

@ezrast that's what i meant by "Logger needs to be stateless and immutable, because otherwise you need to keep a registry of loggers". If Loggers hold configuration data, applications then need to be able to access the loggers of their libraries through .get, which requires a registry. If loggers are immutable, then the config is entirely in the Logger::Manager and the Collectors/Filters - which are easily accessible through the manager.
Also, if you give people the ability to add filters and emitters to leaf loggers, they will add filters and emitters to leaf loggers. If you add filters and emitters to leaf loggers, the data flow diagram does turn into spaghetti.

^ This splits out the guts of Logger into Logger::Dispatcher ("manager" is a very non-descriptive name imo). Logger itself is now a thin struct. What was Logger::ROOT is now Logger.default_dispatcher. Gist updated: https://gist.github.com/ezrast/37c3377c172cd225efe0ed40f4da1e59/revisions
I think @straight-shoota has a good point about putting filters on the Emitter. Emitters may do globally-stateful things like rate limiting or database locking so it makes sense to want to use the same Emitter in two different places that may not have the same log level.
Dispatcher includes Emitter so you can chain Dispatchers together if you want some Emitters to use a separate log level:
# This MyEmitter instance will respond only to warnings and above
Logger.default_dispatcher.emitters.push(
  Logger::Dispatcher.new(Logger::WARN, MyEmitter.new)
)

Looks good. I'll wait for @bcardiff to comment on the design before doing a full review.

Could this get a review :)? 🏓 This is at least blocking crystal-db from getting out of the box logging which is sorely needed, and the rest of the driver ecosystem would immediately benefit from. (https://github.com/crystal-lang/crystal-db/pull/64#issuecomment-393257027).
It would be great if the design here could be approved so that this PR can continue, or the work can be picked up and completed in another.

Thanks for the bump, @z64.
If it would help this get reviewed I can find time to add in documentation soon. Otherwise I'm holding off on docs/tests until the design gets approval.

Prob can be closed now due to https://github.com/crystal-lang/crystal/pull/8847.


fix: pass in server side default values for hydration issue

In ProductDetail, during server render, some of the Radix primitives get set as unchecked/unselected even when we know that these fields should have a value. During hydration, we get an error because aria attributes/params mismatch once values set.
This fix is to set a default value so that this mismatch is prevented.
My testing included using non radix form elements which rendered fine, probably because properties don't change. Default values in the form get set correctly on static rendering but for dynamic rendering we don't see these for some reason.
Is it expected that the useForm hook ignores these values during server render?
I'm open to suggestions.

Closing in favor of just removing edge runtime.


Randao_update object for active state

We are currently modifying crystallized_state during block processing at the last step:
crystallized_state.validators[proposer_index].randao_commitment = block.randao_reveal
The correct way is to maintain a RandaoUpdate object in active_state, and during state recalculations update each validator's randao_commitment

Proposed implementation --

move randao_mix to CrystallizedState
store array of size CYCLE_LENGTH in active_state. These values are each initialized to 0x00 * 32 . Call it pending_randao_reveals
when processing a block, check the validity of the reveal.
during state recalc, for each slot  in (last_state_recalc, last_state_recalc + CYCLE_LENGTH - 1)

if active_state.pending_randao_reveals[slot] != 0x00 *32

let proposer_index be the proposer index from the shuffling related to the slot
`crystallized_state.randao_mix = xor(crystallized_state.randao_mix, active_state.pending_randao_reveals[slot])
crystallized_state.validators[proposer_index].randao_commitment = active_state.pending_randao_reveals[slot]

after a state recalc, set active_state.pending_randao_reveals to be CYCLE_LENGTH 0x00 hashes
after doing all state recalcs,  set active_state.pending_randao_reveals[block.slot % CYCLE_LENGTH] = block.randao_reveal

Note that setting the pending_randao_reveals for the current block happens after state recalcs. This is to handle the case when a block is at (or after) the slot that triggers a state recalc. If we want too keep the size of pending_randao_reveals fix, then we have to do this trick.
There is an alternative method that would do appends and truncates like recent_block_hashes where we fill in missing slots with 0x00 whenever slots are skipped. Need to consider which I prefer..

cc: @JustinDrake

Do we need randao_mix? or can we just use dynasty_seed?
Also during dynasty transition, we should do the following:
crystallized_state.dynasty_seed = crystallized_state.randao_mix
shard_and_committee_for_slots[CYCLE_LENGTH:] = get_new_shuffling(crystallized_state.randao_mix, validators, next_start_shard)

I'd say use the term randao_mix instead of dynasty_seed. https://github.com/ethereum/eth2.0-specs/pull/61 removes all references of the word "dynasty" entirely.

Sorry accidentally fat fingered as a commit instead of a PR, but here's a simple solution: https://github.com/ethereum/eth2.0-specs/commit/fe74c7e299ff90d56f4099733754c0e94e645ccc

@terenc3t @vbuterin is it okay to close this issue by https://github.com/ethereum/eth2.0-specs/commit/fe74c7e299ff90d56f4099733754c0e94e645ccc?

Sgtm!


When homeassistant updated to 2023.4.2, ipad mini2(IOS9 safari)can't working

config.js:
serverUrl: 'http://<IP_ADDRESS>:8188',
wsUrl: 'ws://<IP_ADDRESS>:8188/api/websocket',
on homeassistant 2021.2.3 work fine.

sam http://<IP_ADDRESS>:8188/auth/authorize?client_id=http%3A%2F%2F<IP_ADDRESS>%3A8188&redirect_uri=http%3A%2F%2F<IP_ADDRESS>%3A8188%2Flocal%2Ftileboard%2Findex.html%3Foauth%3D1, on homeassistant 2021.2.3 work fine, maybe homeassistant's oauth has changed, how can I continue use tileboard on my old ipad?

Long live token in config.js can work, but it's not safe.

Have you checked access from a computer where you can see the request which fails (like chrome dev tools)? Or is it just the iPad failing to connect?

just iPad connect failed.

I suppose changes in Homeassistant broken compatibility with iOS 9 which is now almost 8 years old. Don't think we can do anything about it. You have to use less safe long-lived token if you want to keep using this old tablet.


Added file diff into commit message

Added list of modified files into each commit message. Reused output of git status --porcelain.
Current log messages now looks like this:
commit 16c88f652928535e9d5a68750de4cfe746489335
Author: Katafygio <katafygio@localhost>
Date:   Fri Feb 1 07:31:20 2019 +0000

    Kubernetes cluster change

     M tech/configmap-gitlab-runner-cm.yaml
     M tech/deployment-gitlab-runner.yaml

Please review and possibly refactor my changes. I am not golang developer.

Coverage increased (+0.7%) to 90.332% when pulling 3584c1a41e846e841cfe95b62e13f8d31640f855 on Dragonn:master into e6353dda435b4e632fb2f97bf676aaa0923eb5d1 on bpineau:master.

Tried to fix that as good as I am able to. Please review changes.
Sorry for that force-push in history, I have some minor troubles with setting GPG and local git settings.

Sorry for the late answer; I'm not sure about the use case for that, as the information is readily available in the commit anyway?
The git history (so repos size, so clone time) can grow quite fast on busy clusters; we should be careful when adding redundant information to commit messages.

This MR was primarily focused on usage by users not so familiar with git CLI (eg. browsing history in Gitlab or similar GUI) to be able to easily locate recent changes in their namespace.
I have discovered this behavior can be easily achieved by parameter git log --name-status, so currently I don't see any more point in this MR. I can imagine this behavior can suit to someone (e.g. when using GUI-only access), so maybe it could be implemented as opt-in parameter, but I am not going to implement it right now.
On the other hand I don't think size argument is valid here based on what I see in my clusters. Most commits are 2kB ~ 200kB, so cca 80B (per file, 4% in case of smallest commits) so I don't see much storage wastage.


If kCFBundleNameKey isn't set, fallback to CFBundleDisplayName

Description
https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundledisplayname
Context https://posthog.com/questions/should-i-os-set-properties-app-name-seen-in-event-explorer

Sorry I wasn't clear in my original message - the problem is that if you do not have CFBundleDisplayName that no App Name is populated in PostHog.
So the title of this issue is backwards.


email validation added in profile page

Description
added a email validator to the Profile Page #46

Fixes #46

Type of change
Please delete options that are not relevant.

[x] Bug fix (non-breaking change which fixes an issue)

Checklist

[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my own code
[x] I have commented my code, particularly in hard-to-understand areas
[x] My changes generate no new warnings
[x] New and existing unit tests pass locally with my changes
[x] I have maintained a clean commit history by using the necessary Git commands
[x] I have checked that my code does not cause any merge conflicts

Screenshots (if applicable)

Add screen recording

either way its not resolved

@Abhishek332 @theashikagupta


Admin Show All Checked Out Items

While logged in as Admin, allow user to quickly get to a table showing all items in that organization, with the ability to filter the view by status.
Table should show the following for each item in a 5-column layout:

User item is checked-out to (Workflow not yet implemented)
Item ID (clickable link to item's CRUD page (#7 ))
Item Name (clickable link to item's CRUD page (#7 ))
Item Location
Item Status

User item is checked-out to will be added in column 1 once that workflow is complete.

I got this one!


Basic Audio Implementation

Requirements for a basic Audio Implementation:
Hidden functionality

[x] Get libvorbis/libogg/libvorbis compiling with CMake
[ ] Loading a WAV file
[ ] Loading an OGG file
[ ] Conversion of sound file to whatever format we use
Default format right now is signed 16-bit, 44100hz, 2-channel, and 1024-sample buffer size

Visible Endpoints

[ ] Loading a sound file
[ ] Playing a Sound

@RubyNova as we discussed, seems like these would be the initial requirements for a MVP. Can you think of anything else to be added in the "MVP" phase?

WAV is not required for MVP as it is windows only.
Can't see anything else that's required at this time.

Updated so that this reflects current state for audio

A new revelation based upon how the current audio branch works - currently to have an "event-driven" sequence, the example I have written in main.cpp utilizes SDL_Delay() which is undesirable as it freezes the main (rendering) thread for NovelRT while allowing audio to continue.
For this, would we want to incorporate an event system? If so, would the Interaction Service be a good starting point for this?
Also, would the above be out of scope of this issue?

Why is this utilising SDL_Delay()?

Without delaying the thread, the main thread would attempt to run every function immediately (remember, only in main, it is not used in the actual service).

Im not sure i entirely understand. Please post a permalink to the line in question.

https://github.com/novelrt/NovelRT/blob/8f570910bdf1c3237ea732d66c2b9f6c2b09e7c4/src/main.cpp#L105

Ok Ive had a read.
You are correct - SDL_Delay() is a bad idea here.
What I propose instead is we implement a queueing system somewhere inside the audio service heirarchy. The best way to do this would simply be with an std::queue<NovelRT::AudioInformation> where AudioInformation is simply a struct that is defined like so:
struct AudioInformation {
  std::string fileName;
  int playTime;
}

From here you can assemble instances of this and add them to the queue (based on your API as per this comment).
You can then simply have the audio*object (wherever you feel the queue should live basically in your heirarchy) also subscribe to runOnUpdate and then have a value that updates according to the deltaMs and decides when to pop the next file.

Alternatively we could look at handling this with either multithreading or asynchrony but both sound like a bit much for a v1.0.

Nit: on reflection this might possibly be HLAPI rather than LLAPI.

So maybe leave this to discresion of user in LLAPI? Since ultimately I believe an AudioManager to make things more streamlined would be a part of HLAPI and could include this

Yeah what I'm thinking is we can have a NovelAudioQueue which accepts a NovelAudioSource which can then handle a queue of sounds for that one source.
You could build this into an audio manager type of some description if you prefer, just my 2c.

To clarify - given the nature of my suggestion it would build on top of the LLAPI directly meaning it definitely would be HLAPI instead.

We need to update this issue or open a new one as per our discussion on Discord @capnkenny .

We need to open a new one, as while technically the needs of this are met, we're reworking the API as discussed. I'll close it for now - look forward to DMs being blown up when I'm free so I can get the next issue posted with the right info 👍