text:
Extreme time deviations when using different timing tools

Description
When doing benchmarking of CuPY, it is stated in https://readthedocs.org/projects/cupy/downloads/pdf/stable/ that one should use the cupyx.profiler.benchmarktool. However, this seems to report extreme results -- and possibly wrong -- results as well.
If I wish to access the CPU time of the benchmark object, one would imagine that this would provide the same results as then timing with the Python built-in time module -- or to some extend at least.
Currently, I am benchmarking DASK-CUDA code, and I use your functionality to test the average time over 20 repetitions. However, this is by over a factor of 11.000 smaller than what I obtain using normal timing functions, which leads to suspicious results when benchmarking CuPY code as well.
I opened a bug issue saying that the documentation on the benchmark is too sparse, and that some weird time conversions are done under the hood, why the reliability of the tool is questionable. Therefore, I hope to obtain some insights as to whether my program is wrong or if I am timing incorrectly.
To Reproduce
import cupy as cp
import numpy as np
import dask.array as da
from dask_cuda import LocalCUDACluster
from dask.distributed import Client, wait
import rmm
import sys
import time
from helpers import *

from cupyx.profiler import benchmark

def generate_array(size, work_units):
    rs = da.random.RandomState(RandomState=cp.random.RandomState)
    rs = rs.randint(low = 0, high = 100_000, size = (size, work_units), chunks = 'auto')
    rs = rs.map_blocks(cp.asarray)

    return rs

def multiplication(arr):
    array_mult = da.multiply(arr, 42).persist()
    wait(array_mult)

if __name__ == '__main__':

    cluster = LocalCUDACluster('0', rmm_managed_memory=True)
    client = Client(cluster)
    client.run(cp.cuda.set_allocator, rmm.rmm_cupy_allocator)

    rmm.reinitialize(managed_memory=True)
    cp.cuda.set_allocator(rmm.rmm_cupy_allocator)

    size = int(sys.argv[1])
    wk   = int(sys.argv[2])
    arr = generate_array(size, wk)
    start = time.time()
    y   = benchmark(multiplication, (arr, ), n_repeat=20, n_warmup=5)
    end = time.time()
    print(f"{(end-start)*1000} ms")
    print(f"{np.average(y.cpu_times) + np.average(y.gpu_times)} ms")

Installation
No response
Environment
OS                           : Linux-5.15.0-52-generic-x86_64-with-glibc2.35
Python Version               : 3.9.13
CuPy Version                 : 10.6.0
CuPy Platform                : NVIDIA CUDA
NumPy Version                : 1.22.4
SciPy Version                : 1.9.1
Cython Build Version         : 0.29.30
Cython Runtime Version       : None
CUDA Root                    : /home/joachim/anaconda3/envs/rps
nvcc PATH                    : None
CUDA Build Version           : 11020
CUDA Driver Version          : 11070
CUDA Runtime Version         : 11050
cuBLAS Version               : (available)
cuFFT Version                : 10600
cuRAND Version               : 10207
cuSOLVER Version             : (11, 3, 2)
cuSPARSE Version             : (available)
NVRTC Version                : (11, 5)
Thrust Version               : 101000
CUB Build Version            : 101000
Jitify Build Version         : 87d8ccd
cuDNN Build Version          : None
cuDNN Version                : None
NCCL Build Version           : 21212
NCCL Runtime Version         : 21403
cuTENSOR Version             : None
cuSPARSELt Build Version     : None
Device 0 Name                : NVIDIA GeForce GTX 1660 SUPER
Device 0 Compute Capability  : 75
Device 0 PCI Bus ID          : 0000:01:00.0

Additional Information
No response

    start = time.time()
    y   = benchmark(multiplication, (arr, ), n_repeat=20, n_warmup=5)
    end = time.time()
    print(f"{(end-start)*1000} ms")
    print(f"{np.average(y.cpu_times) + np.average(y.gpu_times)} ms")

Comparison between these prints does not make sense -- the benchmark function runs the target function for 20+5 times.

I opened a bug issue saying that the documentation on the benchmark is too sparse, and that some weird time conversions are done under the hood, why the reliability of the tool is questionable. Therefore, I hope to obtain some insights as to whether my program is wrong or if I am timing incorrectly.

I've updated the docs recently. Feedbacks/contributions are highly welcomed :)
https://docs.cupy.dev/en/latest/reference/generated/cupyx.profiler._time._PerfCaseResult.html#cupyx.profiler._time._PerfCaseResult

My apologies. The documentation is my bad and I did not catch the additions. Looks awesome :-)
I agree -- my initial attempt here was wrong. However, when I remove the n_warmup and only have n_repeat = 20 and I divide my Python timer with 20 afterwards, I still have very large differences, i.e.
39 ms vs. 0.07 ms. That is still a factor 500 difference. I am fully aware the the Python time module is not capable of correcting timing it. I just find it suspicious that the Benchmark CPU times are so vastly different than just regular timing in Python. Which ones should I trust?
In actuality, I just wanted to make sure that taking the average over GPU and CPU times are correct as I will be using the results.

The first time a function is run, the code is compiled/loaded from the disk cache, so the CPU time is pretty high.
Successive invocations of the kernel are much faster. The first time is discarded if you use n_warmup so that may be what you are seeing as the discrepancy source between CPU & GPU times.
Just putting a time.start() and time.end() before the function will be distorted.
If you call the function before doing this, the time you capture will be much more accurate.

@Joachimoe I think what you want is the "GPU times" reported by cupyx.profiler.benchmark.
"CPU times" show times taken to execute the function. However, as GPUs run asynchronously from CPUs, these values do not indicate the "real" time required -- the GPU might still be running the code enqueued by that function. So cupyx.profiler.benchmark waits for the GPU (i.e., synchronizes the device) and computes the "real" overall runtimes of the function as "GPU times", which is more reasonable for benchmarking/comparison. Still that "CPU times" is a useful indicator of unexpected synchronization or kernel launch overheads.
I think the code describes it better :)
https://github.com/cupy/cupy/blob/master/cupyx/profiler/_time.py
The above information is covered here but maybe could be improved for readers unfamiliar with the concept of CUDA events etc.
https://docs.cupy.dev/en/stable/user_guide/performance.html#benchmarking

Thank you @emcastillo and @kmaehashi -- Turns out I was a bit confused as to when what happens. I assume that your timing function will work correctly for other libraries as well, such as DASK-CUDA? Or are there things I should be wary of when using your benchmarking tool for other GPU-programming tools?

Or are there things I should be wary of when using your benchmarking tool for other GPU-programming tools?

cupyx.profiler.benchmark should work with other GPU libraries as well, as long as streams are not manipulated during the target function.

Thanks a lot. I will go with the results given by your benchmark then, even though it seems a bit amazing. The following:
import sys
import cupy as cp
from cupyx.profiler import benchmark
from helpers import *

def generate_array(size, work_units):
    rand = cp.random.default_rng()                             #This is the fast way of creating large arrays with cp
    arr = rand.integers(0, 100_000, (size, work_units))        #Create array
    return arr

def multiplication(arr):
    y = cp.multiply(arr, 42) ## Multiply by 42, randomly chosen number
    return y

def bench(arr):
    r = multiplication(arr)
    return r

if __name__ == '__main__':
    sz = int(sys.argv[1])
    wk = int(sys.argv[2])

    arr = generate_array(sz, wk)
    y = benchmark(bench, (arr, ), n_repeat= 20)
    print(cp.average(y.gpu_times))

Executes for a workload of size 262144000 in approximately 0.01 milliseconds. Run this program as python3 multiplication_benchmark.py 262144 1000

Hi, sorry for dropping a ball here... the docs should be seconds instead of milliseconds. I've just sent a fix in #7312.

This makes way more sense, and now corresponds to other timing mechanisms as well.  May want to fix the methods as well, as they currently still print "us", microseconds, when calling the .gpu_times and cpu_times :-)

The string representations seem correct (us), the record in seconds are multiplied by 1e6.
https://github.com/cupy/cupy/blob/807d9c2864659d9eb0e551d540e8a0bd4c4deb35/cupyx/profiler/_time.py#L61-L63

Would it be nice to have a single, uniform way of representing time within the cupy benchmarking framework? All of the confusion between ms, us, and seconds stemmed from the variation.

authors: JoachimMoe Joachimoe emcastillo kmaehashi


text:
ROCm: remove the need to set HCC_AMDGPU_TARGET at runtime

Close #4719. Both hiprtc and hipcc can pick up the right device, so no need to set HCC_AMDGPU_TARGET at runtime.

Jenkins, test this please

Jenkins CI test (for commit b9773bd3558eff8b145193065f40c1e307dead4a, target branch master) succeeded!

pfnCI, test this please.

Jenkins CI test (for commit c86b9ef0fa4b5e1714588db574ad17eba017dfe2, target branch master) succeeded!

source: gharchive/pull-request

authors: chainer-ci kmaehashi leofang

repo: cupy/cupy

license: MIT

license_type: permissive

license_source: github-api


text:
[backport] Fix availability tests in cuSOLVER and cuSPARSE

Backport of #5492 by @kmaehashi

[automatic post] Jenkins, test this please.

Jenkins CI test (for commit 2a42b546b95498d54efb9d8926aab90201823cae, target branch v9) succeeded!

LGTM.

authors: asi1024 chainer-ci kmaehashi


text:
Building and verifying "Vietnamese"

Acceptance Criteria
Given that the production server now has the files that were on development for Vietnamese,
When I add the prod URL to the prod manifest and I select "tiếng việt" as a language,
Then I should see the app icon for FTM.
Given that I see the app icon for FTM,
When I open the app and play through the first level in its entirety,
Then I should see text in Vietnamese and hear Vietnamese audio.

@Nikhil77sutara Is this ready for a local language QA? If so, please do @ me in response and switch the assignee to just me-- thank you!

@Nikhil77sutara Is this ready for a local language QA? If so, please do @ me in response and switch the assignee to just me-- thank you!

Hy @burrage Vietnamese is ready for local language QA.

@Nikhil77sutara Vietnamese QA is back!:
https://docs.google.com/document/d/1__6EzFX-BBRXM1VaOUpQRmE80lOCzt6H37s5theoPJc/edit?usp=sharing
Most are fixes Stephanie will be doing but two things:
1.) One thing out of this QA that's probably applicable to all FTMs that we might want to consider is the boundary of where the stones can display. It looks like stones that have multiple letters (e.x. "ngh") can sometimes extend very slightly past the edge of the screen on some devices. Do we have an x, y boundary based on the device viewport already or something similar that we might nudge + X on the left hand side and - X on the right hand side just in case we have stones that end up with multiple letters? That's probably something we would want to do that would help all languages-- not just Vietnamese.
2.) Also from this QA, we'd probably want to look at the font choice for this language. I'm not sure why the "m" character here is looking as it does or why they're saying it looks like a different font entirely? What font is Vietnamese using now?
Anyway... Peruse the QA... let me know if any questions but those would be the 2 that I think we should tackle.

@Nikhil77sutara Stephanie has finished making the changes to the levelgen and added new audio so now we can officially make all the needed changes.

@burrage This is ready for Local QA

@Nikhil77sutara I'm still seeing the same tech issues listed in the first QA that I highlighted in a comment two weeks ago-- any insights there?:
"m" character looks like a different font-- can you verify that we are using the same font for display across all letters? What font is Vietnamese using? Is it different than other fonts we have used in the past?

Stones with 3 or more letters can get cut off because they go off the screen:

#966 spun up to address stones with multiple characters getting cut off.
Would still be good to hear about the font for Vietnamese... Still not sure why the "m" character looks different compared to other letters!

#966 spun up to address stones with multiple characters getting cut off.
Would still be good to hear about the font for Vietnamese... Still not sure why the "m" character looks different compared to other letters!

Hy @burrage ,
So here in vietnamese ,I checked the font and found that we are using the same font (consolas) which we are using for other languages.

Yes @burrage ,
We are having a file i18-font-mapping.ts in which we are maintaining the font of all the languages.

Holy moley! It's like MOST of the languages 😮  I'm really surprised this hasn't come up before... I'm going to check another language to see if it looks similar. Thanks @Nikhil77sutara !

@divyahariharan2103 Also been a while since this has been in QA so I'm leaving this unassigned and anyone that wants to do a prod launch and has bandwidth can be assigned :-)

source: gharchive/issue

repo: curiouslearning/FeedTheMonsterJS


text:
Run the check-line-endings script in GHA

Opening this to see what happens on Windows. I'm not convinced this script won't break dev workflows if this is run in pre-commit, so it should be tested cross-platform.
Checklist

[ ] I have added tests
[ ] I have updated the docs and cheatsheet
[ ] I have not broken the cheatsheet

those CI failures are because it expects to be run with a list of paths, eg bash ./scripts/check-line-endings.sh foo.js bar/baz.txt

also, you'll get feedback a bit faster if you put it earlier in the action 😅

Huh, ** isn't a thing in bash?

huh i thought it was 🤔

ok well there's your windows failure.  strange, though; not the failure I would have anticipated

I believe pre-commit runs in the worktree, but we can check its behaviour too

huh ok fair enough.  so I guess with their lint rule, it would still fail, but it would fix them?

I guess... but given we have tests that depend on the line endings being correct we should probably set the line endings for those particular file types in .gitattributes so it's not an issue in the first place

given we have tests that depend on the line endings being correct

That's actually not the case.  See https://github.com/cursorless-dev/cursorless/blob/68ba545520829a21e26d70437c650fb615d73344/packages/cursorless-vscode-e2e/src/suite/testCaseRecorder.test.ts#L162-L164

and we have otherwise conflicting settings with git defaults:
https://github.com/cursorless-dev/cursorless/blob/68ba545520829a21e26d70437c650fb615d73344/.editorconfig#L6
https://github.com/cursorless-dev/cursorless/blob/68ba545520829a21e26d70437c650fb615d73344/.vscode/settings.json#L23
we should probably set the line endings for particular file types in .gitattributes so it's not an issue in the first place

That was the original approach, but we moved away from that for two reasons:

Maintaining the list of text file types was cumbersome and added complexity
We didn't want to force Windows users to check files out with LF if they really wanted to use CRLF smudging.  Though maybe the original approach actually would work ok with such a setup?

Closing in favour of https://github.com/cursorless-dev/cursorless/pull/1348

authors: auscompgeek pokey

repo: cursorless-dev/cursorless


text:
Incorrectly escaped HTML when honeypot_style_class is used

Describe the bug
When honeypot_style_class is overridden with a value:
def honeypot_style_class
  'classname'
end

the resulting form HTML contains invalid escaping, like this:
<form method="post"><input name="utf8" type="hidden" value="✓" />
<label for="a_comment_body">Do not fill in this field</label><input type="text" name="a_comment_body" id="a_comment_body" />

To Reproduce

Override honeypot_style_class in your application as described

Expected behavior
Resulting HTML should not contain invalid escaping:
<form method="post"><input name="utf8" type="hidden" value="✓" />
Do not fill in this field<input type="text" name="a_comment_body" id="a_comment_body" />

@rchekaluk thanks for the bug report and pull request! There should be a 1.0.1 version available now with this fix.

authors: curtis rchekaluk

repo: curtis/honeypot-captcha

license: mit

license_source: bigquery


text:
Hasn't worked since 0.105.0b4

Version of the custom_component

0.1.1
Configuration
I tried replacing my entire /templates/README.j2 with the following line and got the same error.

# Test

Describe the bug
This was working great within the last week or so. I can tell you that I was running Home Assistant 0.105.0b4 the last time this worked (see the version stamped at the top of my README.md.)
Executing readme.generate from the Developer Tools > Services page gives a Failed to call service readme/generate. 'documentation' error.
Let me know if I can provide more info.
Debug log

2020-02-07 20:41:41 INFO (MainThread) [homeassistant.helpers.script] Script ci_prep: Executing step call service
2020-02-07 20:41:41 ERROR (MainThread) [homeassistant.components.script] Error executing script script.ci_prep. Unknown error for call_service at pos 2:
  Traceback (most recent call last):   File "/usr/src/homeassistant/homeassistant/components/script/__init__.py", line 272, in async_turn_on     await self.script.async_run(kwargs.get(ATTR_VARIABLES), context)
   File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 247, in async_run
     await self._handle_action(action, variables, context)
   File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 331, in _handle_action
     await self._actions[_determine_action(action)](action, variables, context)
   File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 413, in _async_call_service
     context=context,
   File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 96, in async_call_from_config
     domain, service_name, service_data, blocking=blocking, context=context
   File "/usr/src/homeassistant/homeassistant/core.py", line 1226, in async_call
     await asyncio.shield(self._execute_service(handler, service_call))
   File "/usr/src/homeassistant/homeassistant/core.py", line 1251, in _execute_service
     await handler.func(service_call)
   File "/config/custom_components/readme/__init__.py", line 167, in service_generate
     custom_components = get_custom_components(hass)
   File "/config/custom_components/readme/__init__.py", line 200, in get_custom_components
     "documentation": content["documentation"], KeyError: 'documentation'

You have a custom component without the documentation key

That was it. I have narrowed it down to uilogs. I have filed a bug report in that repo.

authors: brianhanifin ludeeus

repo: custom-components/readme


text:
Scale

Hello, it would be cool to add a real scale of objects so that the proportions are 1:1.

@AndreiExtr if you want to contribute, you would be welcome, I have still an unofficial fork here: https://github.com/Luccid-ai/react-planner
See it in action there: beta.luccid.ai !

authors: AndreiExtr MeTaNoV

repo: cvdlab/react-planner


text:
Error while running the pipeline of Aachen

I get this error in the match_features.main() function of the Aachen pipeline:
[11/04/2021 08:57:35 INFO] Matching local features with configuration:
{'model': {'name': 'superglue',
'sinkhorn_iterations': 50,
'weights': 'outdoor'},
'output': 'matches-superglue'}
Loaded SuperGlue model ("outdoor" weights)
0%|                                                                                | 0/85515 [00:00<?, ?it/s]
Traceback (most recent call last):
File "pipeline_Aachen.py", line 38, in
sfm_match_path = match_features.main(matcher_conf, sfm_pairs, feature_conf['output'], outputs)
File "/home/ubuntu/Hierarchical-Localization/hloc/match_features.py", line 83, in main
match_from_paths(
File "/home/ubuntu/.local/lib/python3.8/site-packages/torch/autograd/grad_mode.py", line 15, in decorate_context
return func(*args, **kwargs)
File "/home/ubuntu/Hierarchical-Localization/hloc/match_features.py", line 147, in match_from_paths
data['image1'] = torch.empty((1,)+tuple(grp['image_size'])[::-1])
File "h5py/_objects.pyx", line 54, in h5py._objects.with_phil.wrapper
File "h5py/_objects.pyx", line 55, in h5py._objects.with_phil.wrapper
File "/home/ubuntu/.local/lib/python3.8/site-packages/h5py/_hl/group.py", line 305, in getitem
oid = h5o.open(self.id, self._e(name), lapl=self._lapl)
File "h5py/_objects.pyx", line 54, in h5py._objects.with_phil.wrapper
File "h5py/_objects.pyx", line 55, in h5py._objects.with_phil.wrapper
File "h5py/h5o.pyx", line 190, in h5py.h5o.open
KeyError: "Unable to open object (object 'image_size' doesn't exist)"

hi,Did you solve this problem and how it was solved? thanks!

hi,Did you solve this problem and how it was solved? thanks!

I think this issue happens if you download Aachen from visuallocalization.net
For this pipeline, you should download the dataset following the README here
https://github.com/cvg/Hierarchical-Localization/blob/master/hloc/pipelines/Aachen_v1_1/README.md

PR https://github.com/cvg/Hierarchical-Localization/pull/263 should fix the issue.

authors: Skydes gmberton hiXiaoYU rishabhramteke xdh096

repo: cvg/Hierarchical-Localization


text:
How to generate input data that I don't have？

Hi：
I want to use inLoc for indoor positioning, I only have indoor pictures, no 3D points converted (cse_scan_000.ptx.mat), transformation matrix that converts 3D points in original ptx file to global coordinates (cse_scan_000.ptx.mat) and the scan points (XYZcut) (cse_cutout_000_0_-30.jpg.mat),
how do I generate the above data?
Not running the demo,  processing it with my own data
thank you very much.

The 3D scans are required. You are free to open an issues on the InLoc repository or reach out to the authors of the dataset. There are also alternative download links here: https://github.com/HajimeTaira/InLoc_dataset/blob/b9a4ee2668c9d2ffe76f83613b2afba26d6fabb8/extract_db_all_mirror.sh#L52-L71

authors: Skydes fumenglin


text:
Improve string representations

Going through some of the major classes and improving their string representations.
Two examples:
cp.Variable(2, name='x').__str__()
>>> 'x'
cp.Variable(2, name='x').__repr__()
>>> 'Variable((2,))'

Maybe the latter could still show the variable name.
cp.Constant(np.ones((3,3))).__str__()
>>> '[[1. 1. 1.]\n [1. 1. 1.]\n [1. 1. 1.]]'
cp.Constant(np.ones((3,3))).__repr__()
>>> 'Constant(CONSTANT, NONNEGATIVE, (3, 3))'

Maybe the former could print only a few elements, as it gets hard to read when the arrays contain many elements.

Hey @phschiele , I tried some fixes for this issue and just wanted to make sure they were in-line with what you wanted.
Here is what I get for the two changes you mentioned.
cp.Variable(2, name='x').__repr__()
'Variable((2,), x)'
cp.Constant(np.ones((3,3))).__str__()
'[[1. 1. 1.]\n [1. 1. 1.]\n  ...]'

@Transurgeon That's already looking good! What about the number of columns when the data matrix gets larger? Will they also be partially hidden?

@phschiele No, but I can try to work on that. I think for more than 5 columns we should add some '...' to hide the rest of the data.
cp.Constant(np.ones((5,5))).__str__()
'[[1. 1. 1. 1. 1.]\n [1. 1. 1. 1. 1.]\n  ...]'

But for more it would look like this (I think adding a comma helps to visually separate the "1." from the three dots)
cp.Constant(np.ones((1,7))).__str__()
'[[1. 1. 1. 1. 1. , ... ]]'

Are you using the numpy functionality for this?
np.set_printoptions(edgeitems=3)
print(np.arange(60).reshape((6, 10)))
# [[ 0  1  2 ...  7  8  9]
#  [10 11 12 ... 17 18 19]
#  [20 21 22 ... 27 28 29]
#  [30 31 32 ... 37 38 39]
#  [40 41 42 ... 47 48 49]
#  [50 51 52 ... 57 58 59]]

np.set_printoptions(edgeitems=2)
print(np.arange(60).reshape((6, 10)))
# [[ 0  1 ...  8  9]
#  [10 11 ... 18 19]
#  ...
#  [40 41 ... 48 49]
#  [50 51 ... 58 59]]

No I am not, im doing some string parsing on self.name(). Do you want me to base the output like np.print with edgeitems=2?

authors: Transurgeon phschiele

repo: cvxpy/cvxpy


text:
Code Cleanup Part 2

Clean up includes, use forward declarations where possible, especially in headers.

No longer include , instead create "common/string.hpp" that includes "" and include that. Limit standard library includes in the project.

Split up enums.hpp, instead have a directory "enums" that contains e.g. enums/types.hpp enums/logical_operators.hpp

Rename _GetChunk() to GetChunkInternal()
Move JoinSidefunctions away form LogicalComparisonJoin, create separate header file.
Limit dependencies in the mainheaders because if any of those change all the tests need to be recompiled.

This is implemented by #169

repo: cwida/duckdb


text:
调完字体大小后程序自动退出了

重启脚本后仍然没法使用吗

现在好了，感谢！

authors: Hyperhomemadecookieemia wfrfred


text:
lem doesn't work without clipboard.

lem C-w and C-y works with trivial-clipboard now. trivial-clipboard uses clipboard provided by the desktop environments which isn't operation system. it's means that we cannot uses these functions in the system which doesn't have it. I propose you that lem has two clipboards. One is trivial-clipboard and another is global variables of editor.

on xyzzy(https://github.com/xyzzy-022/xyzzy/commits/develop)
there are two term for the concept. selection which are way to refer system's clipboard.
and region refer almost same as emacs's region which are used to kill some part of buffer.
User can select algorithm how those two to sync (or not).
Japanese further explanation here http://hie.s64.xrea.com/xyzzy/note/region-selection.html#2

clipboard functions are separated from kill-ring now. I'll close this issue. later.

authors: asciian snmsts

repo: cxxxr/lem


text:
Improve support for configuration CRDs

The configuration CRDs are not currently documented as of cyberark/secretless-docs#186. We'd like to make some improvements to their usability and implementation so that they can be made generally available, and this includes:

adding better tests
adding support for config reloading:

refactor existing PoC config reloading functionality / replace with viper as appropriate
add logic around restarting proxy services

updating to use v2 config instead of v1 config

v2 config issue is logged in #715

repo: cyberark/secretless-broker


text:
Add Auto-Upgrade Feature for Seamless Chart Deployment and Version Management

Problem Statement:
Our team aims to streamline the deployment process by utilizing this tool to effortlessly deploy charts and seamlessly upgrade versions as soon as they are available in the Helm repository.
Proposed Solution:
Integrate a feature that enables users to auto-upgrade the chart to the latest version with the click of a button, similar to the functionality offered by flux2 (Gitops).
Alternative Solutions:
Manual version checks and upgrades can be cumbersome and prone to human error. Automating this process would significantly reduce the workload and ensure timely updates.
Implementing a notification system to alert users about new chart versions could also be beneficial, but it may not be as efficient as an automated upgrade option.
Additional Context:
By incorporating this auto-upgrade feature, users can maintain their deployments effortlessly, staying up-to-date with the latest features and fixes without manual intervention. This enhancement would greatly enhance the efficiency and usability of the tool.

Hey @aviorma, we picked this up in the past couple of days. We added a section to the Edit module page that allows you to change the version of a template or load the latest version.
In the recording below, we had a Module referencing a template on version x.x.x (the latest version). The module was created when the latest version was 0.3.0, and since then, we have added version 0.4.0. In version 0.4.0 we added an additional field (my-new-field) to show the functionality.
You can now easily load the latest version by clicking the "lock" icon in the Template section and hitting the Load button, thus bumping from 0.3.0 to 0.4.0.
https://github.com/cyclops-ui/cyclops/assets/72022639/71cf0ac3-7b5f-4799-bf93-e843f940cebe
You can try it yourself by installing the RC version we created by running the command below:
kubectl apply -f https://raw.githubusercontent.com/cyclops-ui/cyclops/v0.5.0-rc.1/install/cyclops-install.yaml &&
kubectl apply -f https://raw.githubusercontent.com/cyclops-ui/cyclops/v0.5.0-rc.1/install/demo-templates.yaml

Let me know what you think and if this would help your team

Implemented with v0.7.0

authors: aviorma petar-cvit

repo: cyclops-ui/cyclops


text:
feat(cyclops-ui): Filter Modules by TargetNamespace

closes #640
📑 Description
✅ Checks

[x] I have tested my code (provide screenshots or screen recordings of a working solution)
[x] I have performed a self-review of my code

ℹ Additional context
Demo

@quest-bot loot #640

hey @petar-cvit @KaradzaJuraj, can you please review this pr in your free time?

hey @KaradzaJuraj thanks for reviewing this, will be pushing the changes soon!

hey @KaradzaJuraj made the changes as mentioned can you please review them in your free time?

hey @KaradzaJuraj, done with the changes! please review them in your free time!!


text:
[疑似BUGS]NET::ERR_CERTIFICATE_TRANSPARENCY_REQUIRED

部分HTTPS，网站会出现这个错误，无法访问：
NET::ERR_CERTIFICATE_TRANSPARENCY_REQUIRED

https://knowledge.symantec.com/support/ssl-certificates-support/index?page=content&id=ALERT2160

repo: cyfdecyf/cow


text:
disabled download file and override css how ?

How to disabled or remove download file in version 1.12 ?

I have the same question

You can add this to you css stylesheet or global.css if you use tailwind. At the end, the better is to interact directly with the htm; element for more freedom
'''css
#pdf-download {
display: none !important;
}
'''

authors: Anhduc2k dionkas mathieugruson

repo: cyntler/react-doc-viewer


text:
[request] ZeroConf/mdns networking - avahi

It'd be great to be able to visit http://stratux.local or something to reach the webui, rather than http://192.168.10.1. Could we add mdns support? I've done it on other raspberry pi units I've built before.
sudo apt-get update
sudo apt-get install libnss-mdns
sudo hostname stratux

We could, but we'd lose the ability to use cellular internet when connected to stratux.

Ah. Damn.
On Fri, Jan 29, 2016 at 12:05 cyoung notifications@github.com wrote:

We could, but we'd lose the ability to use cellular internet when
connected to stratux.
—
Reply to this email directly or view it on GitHub
https://github.com/cyoung/stratux/issues/225#issuecomment-176947016.

Well, unless you can think of a way to have the DHCP clients configured with an internal DNS server and somehow switch between that and cell service DNS - forward packets, or setting a primary/secondary type setup. That's the challenge.

I'll poke around. Maybe I can finally contribute some actual code to the project. :) This sort of thing is vaguely in my wheelhouse.

Discussed on slack, but for the record: I set up avahi-daemon on my 0.5b5 build yesterday, changed hostname to stratux, and was able to both reach the internet and http://stratux.local from my iPhone.
Haven't tested on a cellular iPad as I don't have one. I'll be able to test Android monday morning.

Thanks for putting it on the record here. I got an invite to Slack but I find it hard enough to keep up with everything monitoring this and the reddit forum. I fear that, with three forums now, some things are bound to drop thru the cracks and not be reported/published in the more public/open forums.

It should help make it easier to selectively keep up with things - less chat here.

We may want to make this an option - it seems to flat-out not work with Android. I can do a little more investigation around how android devices support mdns, but for now it seems like the short answer is "they don't".

Still need better options here.

authors: Ergonomicmike cyoung egid

repo: cyoung/stratux


text:
add browsers-node12.14.1-chrome85-ff81

add browsers-node12.14.1-chrome85-ff81

oh now, it failed!!!! @Bkucera

why did it fail!?

you could look at the build job output ...

thanks auto formatter..

authors: Bkucera bahmutov

repo: cypress-io/cypress-docker-images


text:
Talk: Writing type-checked web services in Rust

Abstract
We'll create a backend service in Rust: we'll talk about architecture, code organisation, testing and discuss commonly requested features like rate limiting, logging and database integration. We'll see the benefits of using Rust in terms of safety and compile time guarantees. We're also going to explore deployments on (fly.io) a developer friendly cloud provider with a free plan - so you can hit the ground running and start delivering value.
Your name (and pronouns)
Federico Rampazzo (he)

[ ] This will be my first tech talk

Contact Details
federico@apiplant.com
https://twitter.com/air_framp_one
Location & Time frame
Paphos, anytime
Code of Conduct

[x] I've read and agree to the Code of Conduct

Moved to https://github.com/cyprusrust/CyprusRust/issues/1

authors: PatrickHeneise framp

repo: cyprus-developer-community/talks


text:
test(e2e): add end to end test setup with webdriver-io

Closes #35

Regarding adding the "final new line" rule on workspace settings. I opted against doing it, since I saw that we don't want it for markdown files in .editorconfig.

repo: cytechmobile/radicle-vscode-extension


text:
[BUG] Converting a pointer from a C callback to a memory view causes an exception when trying to index into the array

Describe the bug
Miniaudio is a library which allows recording and playback of audio using a C callback which Miniaudio calls on another thread. This callback receives two pointers, input and output, which I am converting to Python memory view objects before passing them to my Python callback. However if the Python callback does something like: output[0] = 5, a strange exception is raised. However things like: output[...] = input work.
To Reproduce
I was unable to reproduce this bug by casting a pointer obtained by calling malloc to a memory view, so I made a zip file containing the test code along with Miniaudio which is a single header file.
testcase.zip
Open it, cd into it, "cythonize -i -3 testcase.pyx", then open Python and "import testcase"
Expected behavior
The resulting array object is indexable.
Environment (please complete the following information):
Windows 10 (64-bit), Python 3.9.5, Cython 0.29.26
Additional context
The exception that's raised when indexing into the array is:
Traceback (most recent call last):
File "stringsource", line 493, in View.MemoryView.memoryview.convert_item_to_object
struct.error: bad char in struct format
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "testcase.pyx", line 25, in testcase.data_callback
print(data[0]) # exception
File "stringsource", line 237, in View.MemoryView.array.getitem
File "stringsource", line 414, in View.MemoryView.memoryview.getitem
File "stringsource", line 495, in View.MemoryView.memoryview.convert_item_to_object
ValueError: Unable to convert item to object
If I explicitly declare a C variable of type float[:] in the testcase and return it to Python, that results in a ValueError with no additional information.

I think this is a bit complex for me to reasonably manage to debug at least. It feels like a memory corruption error to me - somewhere along the line the format string that defines what type of array it is is getting overwritten?
One hint:
data = <float[:sample_count]>(input)
print(data[0])

This is creating a Python object that wraps the array input. data[0] goes through the standard Python object __getitem__ lookup (i.e. is fairly slow).
What you probably want is
cdef float[:] data
data = <float[:sample_count]>(input)
print(data[0])

You'll still create the Python object, but have the advantage of the faster direct memory lookup.
I doubt it'll solve your errors though.

Assigning data as a Python object was pretty much intensional. The intention of:
print(data[0])
is to demonstrate how accessing the array from Python causes an error. Also, my Miniaudio bindings are creating arrays like this so they can be passed on to pure Python callback functions which can modify the data.
How could a format string get overwritten? Shouldn't it be a constant?
Actually, you've reminded me of something. Replace the line which indexes data with this and see if you get a UnicodeDecodeError:
print(memoryview(data).format)

How could a format string get overwritten? Shouldn't it be a constant?

Unintentionally, for example, by something writing beyond the end of an array. It is a guess at what might have gone wrong though

I was somehow able to solve this problem by manually determining the
arrays info and calling cython.view.array() with the proper format
string, ETC.
I thought that at some point recently I managed to reproduce this
weird bug without Miniaudio, but I can't seem to duplicate it now.
On 12/29/21, da-woods @.***> wrote:

How could a format string get overwritten? Shouldn't it be a constant?

Unintentionally, for example, by something writing beyond the end of an
array. It is a guess at what might have gone wrong though
--
Reply to this email directly or view it on GitHub:
https://github.com/cython/cython/issues/4521#issuecomment-1002734426
You are receiving this because you authored the thread.
Message ID: @.***>

I've run into a similar problem using memoryviews when trying to enable automatic encoding/decoding of C strings as UTF-8. The .pyx file in the example provided by @Keithcat1 above includes the directives to enable this feature, as described here:
# cython: embedsignature=True, auto_pickle=False, c_string_encoding="utf-8", c_string_type=str

Removing the last two directives, I was able to compile and run the example. I think it was successful, anyway -- it just prints out a long stream of floating point numbers.

The case where I encountered this error is with a function like the following:
cdef void callback_v_dp(PyFuncInfo& funcInfo, size_array1 sizes, double* arg):
    cdef double[:] view = <double[:sizes[0]]>arg if sizes[0] else None

where size_array1 is a typedef for std::array<size_t, 1> and the exception thrown is a ValueError with no additional info.
If I try using arg to initialize a numpy array as:
    data = np.asarray(<double[:sizes[0]]>arg)

Then I get the exception:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe4 in position 0: unexpected end of data

which is what led me here. The code above works fine when not including these string encoding directives.

authors: Keithcat1 da-woods speth

repo: cython/cython


text:
[BUG] std::sort gives SIGSEGV with compare function

Describe the bug
std::sort gives me SIGSEGV when I specify custom compare function.
Code to reproduce the behaviour:
main.pyx
# distutils: language = c++

import random

from libcpp.vector cimport vector
from libcpp.algorithm cimport sort

def main():
    cdef vector[int] *vec

    # Without compare
    vec = new vector[int]()
    for i in range(10):
        vec.push_back(random.randint(1, 10))

    print('before without:', vec[0])
    sort(vec.begin(), vec.end())  # normal
    print('after without:', vec[0])

    # With compare
    vec = new vector[int]()
    for i in range(10):
        vec.push_back(random.randint(1, 10))

    print('before with:', vec[0])
    sort(vec.begin(), vec.end(), compare)  # error (SIGSEGV)
    print('after with:', vec[0])

cdef bint compare(int n1, int n2):
    return n1 < n2

wrapper.py
from .main import main

main()

setup.py
from distutils.extension import Extension

from Cython.Build import cythonize
from setuptools import setup

setup(
    ext_modules=cythonize(
        module_list=[
            Extension(
                name='main',
                sources=['main.pyx'],
                extra_compile_args=['--std=c++17']
            )
        ]
    ),
    script_args=['build_ext', '--inplace']
)

Example output:
before without: [1, 5, 3, 7, 7, 8, 2, 3, 8, 8]
after without: [1, 2, 3, 3, 5, 7, 7, 8, 8, 8]
before with: [8, 6, 4, 10, 8, 9, 7, 6, 1, 10]

Process finished with exit code 139 (interrupted by signal 11: SIGSEGV)

Expected behaviour
No response
Environment
OS: macOS 11.6.8 M1
Python version: 3.10.6
Cython version: 3.0.0a11
Additional context
Cython generates this c++ code for "with" section:
std::sort<std::vector<int> ::iterator,int (int, int)>(__pyx_v_vec->begin(), __pyx_v_vec->end(), __pyx_f_9mypackage_4main_compare);

But if I remove template aguments like this and compile again "with" section works:
std::sort(__pyx_v_vec->begin(), __pyx_v_vec->end(), __pyx_f_9mypackage_4main_compare);

It works fine for me without crashing, but I don't think that proves anything because I'm on a different platform.
There's good reasons why Cython wants to know and specify the template parameters, but it isn't always helpful. It's something that could probably be improved (but I'm not sure how).
In this case I think you could use an alternative declaration of sort:
cdef extern from "<algorithm>":
   void sort(...)

which will just let the C++ compiler sort out the parameters. That works well for functions which don't return anything, but less well for functions which do have a return value.

@da-woods Thanks, now it works!

I'm going to reopen this because I think there's probably an actual bug there that we might want to fix one day. Although I'm not sure how or when


text:
Pythonise the docs #4187: "Extension types (aka. cdef classes)" (cdef_classes.rst)

Continuing to Pythonize Сython documentation!
Lots of process details and standardization are found here: #4187
BTW, the fact that this is a draft PR does not mean that you can no longer leave review, as I understand it, so I urge you to do it.

The big problem with this page of the doc is that there is no obvious place to write a warning about the two syntax versions.
Here's what happens if you shove it in at the very beginning, which is clearly awful:

This is what happens if you write it after the title:

It is possible to use a horizontal line:

You can do this in a separate subheading:

Alternatively, if we change the message to a note, it stands out quite well:

I don't know what to choose (it will also apply to all other documentation)
For example, here's what a note will look like in a basic tutorial:

I think a note is best. Once readers have seen it on one page, it's easy to ignore on others. Highlighting the paragraph in a Note makes it clear that it's not part of the main page content.

@scoder @da-woods @Bluenix2 @mattip Faced, as I understand it, a kind of this (#1428) issue. Described the behavior here. (Not sure if there is enough difference to create a new issue)
The problem is that if people follow this tutorial step by step, they will face this problem.
In general, the development process with pure python and using pxd is very inconvenient due to this problem.
If we want to show people pure Python code using pxd, they should definitely be warned about this issue.
It seems that this rather unpleasant problem can be solved quite simply, as far as I understand, there is already progress on its solution: #4063
Sorry for sending notifications, I just think if you can, it would be good to try to think about a solution / review the proposed solution.

it just needs the testing tidied up a bit.

It seems that the author of that PR is not in the business of improving tests.
Oh yes, you, as a cython collaborator, can make commits in PR.
Is there anything I can do to help improve those tests?

If you are using setup.py to build you can force recompilation with the --force

Yes, it looks like a temporary solution, but it is still unpleasant to compile, for example, a large number of files every time you change one.

@scoder do you have any comments?
The only thing that might be helpful is to add a warning about #1428
Anyway, the next thing I will do after merging this PR is to solve the above issue.

@scoder #1428 is now closed so there is no need to add a warning anymore. Can this PR be merged now?

@scoder Maybe we will merge this PR?

oops experimented a little with fork branches

@scoder please merge this PR.

Thanks

Thanks

Thanks you, finally this is merged ..


text:
Add support for PRs across forks

Currently Builda fails because it can't find the PR branch, because it lives in a fork instead of the original repository. I need to find a way to detect that case and create the bot with the correct origin URL and such.

So I have this working, I just needed to pipe through the fork's origin URL to be modified in the project's metadata. However I'm not sure if it's a valid case to have DVTSourceControlWorkspaceBlueprintRemoteRepositoriesKey be the same key for two different repo origins. Right now it seems to work to have both the original origin and the fork's origin under the same key, but more info needs to be gathered before I can call this safe.

I took a look into xcs's couchdb and it seems like the remote repository key doesn't have to be unique, because the information is stored per-bot anyway. Technically it probably should be unique, but I can't see a case at the moment where this would cause any problems (but I'm sure something will turn up eventually :+1:)


text:
Zenodo JSON schema is missing the License definition

Determine whether the License is desired on the Zenodo schema.  If we keep it then we must add a definition, otherwise remove it.

@horsburgh - The zenodo json schema is missing a definition for the License property object.
https://zenodo.org/schemas/records/record-v1.0.0.json
If the license is something you want included with the zenodo schema, please let me know and I'll hunt down the definition.  The JSON schema we used for reference is missing the definition.  If it isn't something you care about, then we can just remove the license property.  It is also worth considering If there are any other properties you would like to prune.

repo: cznethub/dspback


text:
[FR] Don't close tabs, but switch focus

When I have a note opened already in a background tab, and then try to open this note via the quick switcher it closes the foreground note. I would feel like just switching tabs would be preferrable.

This is a matter of opinion obviously, and the default behaviour would also discard the active note, but this would for example enable quick and easy navigation between open tabs via the quick switcher.

Hey @czottmann, no worries, thanks for making this plugin =D

[...] there's no event Mononote could hook into [...], Mononote can only react to the change in the active tab

Yes, that's tricky =/
Just generating ideas here, but caveat emptor: they might be bad =)
(I don't know my way around the Obsidian-API or TypeScript)
I think it's possible, to use Workspace.getLastOpenFiles to find out which file lost focus. Then one would need to check whether this one was open in the current pane and if it was, but it's not anymore, restore it and only afterwards switch to the duplicate note.
If we open a new tab, and the old one is still there, we can check that it's still there. If it isn't, we could restore it. The problem is, that if it isn't there, we might have just come from another window, or a popover.
To alleviate that, one could probably do the bookkeeping internally (shudder) and keep a reference to the last focused file, which is updated on changes, using Workspace.getActiveViewOfType or some such. Then, when the focus changes, you know which view lost focus, and can even recognize if that's due to a popover or another window (assuming that a View/Leaf can find out where it is). (Could this even allow for #16 without breaking hover editor?)
Seems like a lot, but might be worth it. I'll sleep it over, and if you're interested, and I find the time (soon™) I'd put some effort in detailing and maybe even implementing this.

I'd really love this as an option / default, I found this through the https://github.com/scambier/obsidian-no-dupe-leaves plugin (which only seems to affect clicking a link, not the Quick Switcher feature in Obsidian), I almost exclusively use quick switchers to navigate opened windows / apps OS-wide, as well as different files and terminal tabs elsewhere, as it reduces mouse strain from nerve damage in my hands, and currently in order to avoid opening a duplicate note with the quick switcher I need to

Look at my opened tabs to see if I already have it opened
2a. Ctrl T if I don't → Use Quick Switcher
3b. If I do, use arrow keys / other navigation shortcuts to switch to that note

This plugin is wonderful in that it avoids the duplication behavior with the quick switcher, but unfortunately replacing the current window is somewhat disruptive (even if avoidable by doing Ctrl T → Quick Switcher → use mononote), I think this feature would be very helpful :)

Thanks, people, I appreciate the input! I will see what I can do but it might take a bit, as Mononote is not my priority right now.

I will see what I can do but [...] Mononote is not my priority right now

As I said, I'd be willing to detail and implement this and send a PR. It might take a while, but will happen eventually, because I want this for myself

@FynnFreyer Feel free to give it a shot! I believe it can be solved by checking the history of the newly activated tab, and if there is history, instead of closing it before focussing the already existing note, we could go back one step. Just from the top of my head…

Thank you @czottmann! This addon is a great help and I think if we can get something like what you described in the last comment, that would be a great solution.  Here's hoping Obsidian has a way for that when someone gets the time to try it.
Not pushing for a more speedy release but wanted to +1 the RFE and also show my appreciation :)

@lifehaschanged re-opening the last closed tab after switching still loses prior history iiuc.  I prefer the workaround @czottmann proposed, though I can see why it's maybe not the best, as you might end up with tabs on pages you didn't remember why you had open. Any solution that loses history is pointless to me.  Another alternative might be that when it notices a new tab opening to a page that is already open, the addon closes the new tab and goes to the existing one, rather than the other way around, or just goes to the existing tab rather than even opening a new one (I think the former is more possible here?)

Thanks for all the input, folks, really appreciate it. Sorry about the absence, but this here is a side project, and I need to make money to pay rent, so those projects get higher priority. 🤷🏻♂

I took some time to dive deeper into how Obsidian handles things, and I'm at a loss at how to proceed. Before I proceed with the distilled version of what I found out, let's recap: Mononote can only react to events triggered by Obsidian, namely the active-leaf-changed event. There's no "before" hook here, i.e. the event is always triggered after the fact. AFAICT there's no other event besides (maybe?) file-open that emits a signal that the currently focussed tab was changed.
Now going back to the original example, simplified: We have two tabs, T1 w/ note N1, and T2 w/ note N2. N1 contains a link to N2. Clicking that link should focus T2 (N2), but T1 shouldn't close but go back in history, effectively show N1 again.
Tricky. I've experimented with checking the history of the currently open tab (T1), and if there is back history, keeping the tab open instead of closing it, and going back. Calling workspaceLeaf.history.back() etc., however, does two things:

It'll trigger the history-change event 👍🏼
It'll bring the leaf/tab in question to the fore 🫤

The latter has the effect that the just-focussed tab doesn't remain in focus, plus now there's yet another active-leaf-changed event, starting a new cycle with a race condition on top.
To be honest, I'm a bit at a loss the moment about how to proceed. I'm open to suggestions.

I would love this as well. Hopefully Obsidian implements directly! Obsidian workspaces can become so messy.

@lifehaschanged

Why can't everything stay as it is, and when a link is clicked, only a new empty tab is opened before switching to the other targeted tab? This way, only the empty tab would be closed, leaving the other one intact. I can already test this in Obsidian with the current Mononote setting: when I switch from an empty tab to another tab, only the empty tab is closed. It would just require inserting Obsidian's internal command for a new tab before the actual tab switch.

In order to open a new tab, Mononote would need to know when to open that new tab. It's a reactive plugin, and only listens to notifications that Obsidian is sending out. And there's no notification for "Obsidian is about to open a link" that we could hook into. The app does its thing, and then, when it's done doing that, sends out a notification "I've focussed a tab", including the pointer to the tab. There's also a "I've opened a file" notification (which includes a pointer to the opened file, but none to the tab that holds the file).
And Mononote mustn't cram anything into Obsidian's own source code, there be dragons, not to mention it'd be rude AF ;)

A short update: I'm currently rewriting the whole internal logic.
I've ditched the idea of closing any superfluous tabs, which makes the whole process a lot less brittle. Instead, when a tab (T1) gets activated/focussed, all its siblings are tested for T1's displayed note. If any tabs are found, the oldest (T2) is activated/focussed while T1 will return to its previous note. If there is no previous note, T1 is closed.
The app's event loops are chock-full of possible race conditions and surprises. For example, when a tab's active-leaf-change event is sent out, the tab's history isn't updated yet. 😐 (Something I hadn't realized before.) And going back in a tab's history will trigger another  active-leaf-change event which Mononote has to ignore. So… complexity.
Anyway, it's working quite well right now but as we all know, the devil's in the edge cases. 😉 I'll do some more tests later, fingers crossed!

Fixed/implemented in Release 1.2.1. Let me know if it isn't, please!

Works like a dream. You rock @czottmann 🙏

Wow amazing - thank you.
On Thu, Jun 20, 2024 at 23:46:58, Kyle Venn @.***>
wrote:

Works like a dream. You rock @czottmann https://github.com/czottmann 🙏
—
Reply to this email directly, view it on GitHub
https://github.com/czottmann/obsidian-mononote/issues/18#issuecomment-2181019734,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AQTI3XA7CP2L53CVV3IRPRTZIL2PFAVCNFSM6AAAAABB7GWTICVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCOBRGAYTSNZTGQ
.
You are receiving this because you commented.Message ID:
@.***>

@CarlossShi That is correct. Mononote is reactive not least because Obsidian doesn't emit any type of "beforeFileOpen" events. It opens a new tab, then emits an "I'm done" type of event.
To prevent that, one would need to inject code into Obsidian itself (as opposed to work with the plugin API). I won't do that, as a) it's bad form, and b) there be dragons.

authors: 5HT2 FynnFreyer Tejeev czottmann jamie9090 kvenn

repo: czottmann/obsidian-mononote


text:
🛑 Demo Webhook Public Api is down

In 6a8ab53, Demo Webhook Public Api ($DEMO_WEBHOOK) was down:

HTTP code: 503
Response time: 87 ms

Resolved: Demo Webhook Public Api is back up in 9f58d78 after 268 days, 21 hours, 11 minutes.


text:
🛑 Demo Forms Api is down

In 3ccaf72, Demo Forms Api ($DEMO_FORM) was down:

HTTP code: 503
Response time: 531 ms

Resolved: Demo Forms Api is back up in 5a9c055.


text:
Support file scoped namespace

Currently the code documentor doesn't work on source files using a file scoped namespace.
Example:
namespace MyNamespace;
public class Class1 {

}

The extension already support this. looks like MS has broken something in the 17.6.X release flow. I verified the extension on early versions and it handled that fine. I get errors on wpf tooling unhandled exceptions that are part of the VS2022. I would wait for the next MS update cause from what i see its nothing related to the extension


text:
Surprising behavior of .join(string)

First, let me express my thanks for d3, it's a total blast and I've enjoyed it for years. I have used it in both my personal and professional life and it has always been great. I really appreciate it.
See: https://jsfiddle.net/70u8z2vq/
Which has JS:
d1 = [0]
d2 = [0, 1]

function makeCX(d) {
  console.log("Calling makeCX")
  return 20 * d;
}

function slow(d) {
  d3.select("svg#slow-drawing")
    .selectAll("circle")
    .data(d)
    .join("circle")
    .attr("cx", makeCX)
    .attr("r", 10)
}

function fast(d) {
  d3.select("svg#fast-drawing")
    .selectAll("circle")
    .data(d)
    .join(enter => enter.append("circle")
                        .attr("cx", makeCX)
                        .attr("r", 10))
}

console.log("-----------------")
console.log("Slow:")
console.log("First:")
slow(d1)
console.log("Second:")
slow(d2)

console.log("-----------------")
console.log("fast:")
console.log("First:")
fast(d1)
console.log("Second:")
fast(d2)

The difference between slow and fast is that slow calls .join with a string and fast calls .join with a function.
When adding new data (e.g., when calling slow(d2)),  slow ends up calling makeCX for both the old data and the new data. Where fast(d2) only calls makeCX on the new data. So, in this particular case, fast calls makeCX one fewer time than slow.
However, in general, when adding data points one at a time this can be the difference between a runtime of O(n^2) and O(n). :eyes:
I think I sort of expected .join(string) to be equivalent to .join(x=>x.append(string)...), but it seems to not be. Is this intended? And is there documentation somewhere about the different behaviors of .join under different argument type conditions?

selection.join(string) is very much not the same as selection.join(enter); the latter only handles the enter selection case, whereas the former performs a general update that additionally handles update and exit. So this:
d3.select("#slow-drawing")
  .selectAll("circle")
  .data(d)
  .join("circle")
    .attr("cx", makeCX)
    .attr("r", 10)

Is equivalent to this:
d3.select("#slow-drawing")
  .selectAll("circle")
  .data(d)
  .join(
    enter => enter.append("circle"),
    update => update,
    exit => exit.remove()
  )
    .attr("cx", makeCX)
    .attr("r", 10)

The big difference between the “slow” and “fast” paths are that:

The slow path sets the cx and r attributes on updating circles (not just entering).
The slow path removes exiting circles.

Thank you, I learned a lot.
I would like to help by updating the documentation. Is the top-level README of this repo the source of truth for the docs? If so, i could make a PR. If not, let me know where I can contribute.
I appreciate you and this library very much.

The README is the official API reference, but we’re developing more human-friendly documentation over on Observable: https://observablehq.com/collection/@d3/d3-selection

Super! Thanks again. :bowing_man:

authors: harold mbostock

license: isc


text:
How to disable alt+c and alt+a commands? They mess with Polish keyboard

I can't write some Polish signs because of the alt+c and alt+a key assingment. Is there any way to disable them? I tried just removing lines from the key.conf but it didn't seem to do anything

Okay, after some searching I found that keys backspace and alt+c are mapped together, and right arrow key is mapped together with alt+a.
I don't know if it is only my keyboard or not but that prevented me from writing in Polish normally
Anyway I just mapped character deletion to ctrl+o and help to ctrl+h which now is quite usable, and I remapped the arrow keys to numpad keys so now Polish works for me.

Hi @MaciejWieczor - glad to hear you found a solution.
In any case, in the above commit I've added support for disabling key bindings by assigning them KEY_NONE. Perhaps it could be useful to someone.


text:
Group feature IDs in 256-bit unit

This PR changes to make groups of feature IDs in 256-bit units so that vmovdqa is more likely to be called instead of vmovdqu.
Benchmark results:

main: 7.764 [sec]
this branch: 7.035 [sec]

I renamed U31Array to U31x8 and added a new struct named U31.

repo: daac-tools/vibrato


text:
Wrong icon for "Next tutorial" button

Version: master 2505d64e8b6976ec568bca8097d6e0a938894b53
When passing the Tutorial, the icon used for the "Next tutorial" button is incorrect (and the same as the icon for "Previous tutorial" button).

Also probably my fault. Taking a look!

Also probably my fault. Taking a look!

authors: michaelkirk ortem

repo: dabreegster/abstreet


text:
use osm data for actual building height

Rather than a random building height, we can often pull real building height from OSM:

I found that the reallllly tall buildings looked a little too dominate in downtown areas, so I compressed their height a a bit.
Here's how it would look without that height compression - WDYT?:

Note that because this adds a field to Building, it requires re-importing map data.

I have all the data ready to upload. I can send you data/MANIFEST.txt and we can coordinate a push, or I can try adding a file to the PR branch.

I think you should be able to push to this branch. Give it a try!

I think you should be able to push to this branch. Give it a try!

For the sake of time, I just pushed a separate commit. I successfully pushed to https://github.com/dabreegster/abstreet/compare/michaelkirk-mkirk/building-height?expand=1, but it looks like I needed to clone your repo instead. I'll figure out this workflow eventually. >_<

authors: dabreegster michaelkirk


text:
Improve web app performance

Loading the GJ file with all edges and optionally origins/destinations is painfully slow

[ ] Optionally omit edges with low counts?
[x] Try pmtiles (possibly with attribute-filter or https://github.com/felt/tippecanoe#geojson-extension to simplify at low zooms)

London with defaults: 248MB, extremely laggy to load and pan
Without OD points or OSM tags: 97MB, still laggy
Same, but also skipping edges with < 10 count: 38MB, slightly better, but still unusably slow

pmtiles were the answer, of course ;)

repo: dabreegster/routing-engines


text:
How to...

Hi there.
I have the below data.
I want to show the graph grouped on the date, with on that day there was high medium and low numbers.
Please can you advise how I can do this please?
Thanks in advance.
	, Count	 Date
 High	 16	 2016-10-03
 Medium	 14	 2016-10-03
 Low	 20	 2016-10-03
 High	 19	 2016-10-04
 Medium	 17	 2016-10-04
 Low	 12	 2016-10-04
 High	 22	 2016-10-05
 Medium	 15	 2016-10-05
 Low	 20	 2016-10-05
 High	 20	 2016-10-06
 Medium	 12	 2016-10-06
 Low	 14	 2016-10-06
 High	 9	 2016-10-07
 Medium	 16	 2016-10-07
 Low	 21	 2016-10-07
 High	 21	 2016-10-10
 Medium	 15	 2016-10-10
 Low	 25	 2016-10-10

This is more like a basic Highcharts-question, nevertheless I'd like to share my opinion with you. ;-)
This is how I would structure your data:
	high	medium	low
2016-10-03	16	14	20
2016-10-04	19	17	12
2016-10-05	22	15	20
2016-10-06	20	12	14
2016-10-07	9	16	21
2016-10-10	21	15	25

in customise tab:
chart settings > type > column
axes > x axis 1 > type > datetime
this results in a chart like: http://easychart.org/issues/58
interesting further reading material: http://www.highcharts.com/docs/chart-concepts/understanding-highcharts
Kind regards,
Thomas

repo: daemth/easychart


text:
Not compatible with Visual Studio Code for the Web?

I was very excited to try out the new GitHub Codespaces functionality on the dafny-lang/dafny repo, but when I attempt to install this plugin I get the error "The 'Dafny' extension is not available in Visual Studio Code for the Web"
Is this because the plugin attempts to download Dafny? Is there any conceivably way we can work around it?
To reproduce, just navigate to https://github.dev/dafny-lang/dafny and find the Dafny plugin in the marketplace.

I've been quickly checking this out. There are some restrictions for web extensions. First and foremost, they must not use any of the Node.JS API: https://code.visualstudio.com/api/extension-guides/web-extensions
Furthermore, they need adaptions to package.json to declare themselves as web compatible. For example, instead of the main property, they require a browser property to denote their entrypoint.
The difficult part will be the language server. I believe without it, the extension only provides syntax highlighting. The language server requires the dotnet runtime and is executed as a separate process. It's not an ultimate showstopper since you can run dotnet applications in the browser using WebAssembly. It's definitely possible since I've already created a web application that runs a Roslyn analyzer from within the browser. However, there are some limitations. For example, threads/tasks are not supported yet. Interestingly enough, there is an API for WebAssembly language clients. However, the web version will most likely not supported verification since it requires z3.
After concluding my thoughts, I think this sounds like a super interesting field to explore. Although this will not be my primary concern for #41, I'll try to avoid unsupported APIs. Moreover, I have the feeling that we'd need to package the language server with the extension.

@robin-aws
The reason that you're getting the error message is that you're using github.dev, not code spaces, which runs VS Code without a backing container, so it runs purely in your browser and isn't able to run extensions that have a component that runs outside of the browser, like the Dafny extension. If you follow the codespaces quickstart quide, you can setup a codespace and install the Dafny extension.
I'm not sure how billing works for codespaces, so I don't know how well it fits our use-case. We can also look into GitPod: https://www.gitpod.io/gitpod-vs-github-codespaces

@camrein

The difficult part will be the language server.

I don't think we should attempt this. It would take much effort and the problem can be fixed by spending a little money on a container.

Thanks for your input. I didn't know there were two different web versions of VSCode. I agree with you that it's best to use Codespaces with a backing container.

Closing since I don't think we want to turn the Dafny IDE extension into a web extension

authors: camrein keyboardDrummer robin-aws

repo: dafny-lang/ide-vscode


text:
Change diff > Github Comment Limit

Hey Dag, this is something I noticed.
Really large changes greater than the 60k-ish Github Comment character limit get cut off. An easy work around to this is to add a step to the Github Action that cats diff.md. Could accomplish this by updating the README.md.
I think another solution might be to do the following:

After all apps are evaluated, count the characters in diff.md
If > Github Character Limit, insert a line that says, `The diff is greater than the Github Comment character limit, please see  for your full diff near the top of diff.md.

What do you think? This is simple enough that I'm happy to take a crack at implementing. Thanks again for this groundbreaking tool!

Hey @seanturner026! :)
Thank you for sharing your suggestions!
When a comment is cut off, what do you see?
The tool should already count the diff.md characters and display something like: Diff is too long. Truncated to {} characters. This can be adjusted with the --max-diff-length flag when the GitHub character limit is reached. If it doesn’t, then it's a bug! 💥

If > Github Character Limit, insert a line that says, `The diff is greater than the Github Comment character limit, please see for your full diff near the top of diff.md.

Could you clarify what you mean by "near the top of diff.md"? I am not sure what this refers to 😄

When a comment is cut off, what do you see?  The tool should already count the diff.md characters and display something like: Diff is too long. Truncated to {} characters. This can be adjusted with the --max-diff-length flag when the GitHub character limit is reached. If it doesn’t, then it's a bug! 💥

You're right, I forgot that the diff is too long comment does get introduced there. Here's an example.
https://github.com/seanturner026/argocd-applicationset/pull/27#issuecomment-2291868594
This all means that the "other solution" I referenced above is generally irrelevant.

Could you clarify what you mean by "near the top of diff.md"? I am not sure what this refers to 😄

This was in reference to how the PR comment is the content of diff.md.
So instead of:
Summary:

 {base => target}/blah | 2711 ++++++++++++++++++++++++++-----

Perhaps:
Summary:

NOTE: Diff is too long. Truncated to {} characters. This can be adjusted with the --max-diff-length flag
 {base => target}/blah | 2711 ++++++++++++++++++++++++++-----

But as I mentioned I overlooked the fact that that line is already at the bottom, so there's really no difference here. I think we can close this.

repo: dag-andersen/argocd-diff-preview


text:
docs(go-git): authenticate against Git repositories

Add a guides section
Add a guide explaining how to auth against Git repositories

Signed-off-by: Guillaume de Rouville

@vikram-dagger, implemented all your recommandations. It looks way better 🙏

@vikram-dagger split the go code into snippet. Ready for review

@grouville when you have a moment, can you make the changes and then we can merge asap

@grouville when you have a moment, can you make the changes and then we can merge asap

@mircubed done

@shykes can you review and merge?

@shykes can you review and merge?

I defer to @vikram-dagger

@vikram-dagger, rebased

authors: grouville mircubed shykes

repo: dagger/dagger


text:
Example for uncertainty quantification

Hello, very impressive project!
Could you advice or provide an exmaple of how to activate the uncertainty quantification and see the results?
Best regards,
Dmitri Tcherniak

Hi @dimatcherniak and thank you!
To activate the uncertainty calculations, you need to set the calc_unc argument to True when you initialize the SSIcov class, e.g.:
from pyoma2.algorithms.ssi import SSIcov

ssi = SSIcov(name="SSIcov_unc", br=50, ordmax=100, method="cov_mm", calc_unc=True)

that' it!
keep in mind that this is still experimental.

authors: dagghe dimatcherniak


text:
Using 'RunOnluIfLoggedOn' is not working for me

The above is not working and i am catching this
Task Scheduler 2.0 (1.2) does not support setting this property. You must use an InteractiveToken in order to have the task run in the current user session.
Thanks in advance
Originally posted: 2015-04-27T07:08:07

Yes, when using TaskScheduler 2.0 (Vista and later) the RunOnlyIfLoggedOn property will throw an exception. You must instead do as instructed and register the task using an InteractiveToken setting.
Originally posted: 2015-05-02T13:48:54

repo: dahall/TaskScheduler


text:
Question: Routing support

I was looking around the Poimandres Discord and found your profile where I noticed Waku! After looking further into it and playing around with it, I really want to use Waku in my projects, but there's one catch for me: I would really like to take advantage of the typesafety provided by something like the Tanstack Router.
I'm wondering if there is support for bringing my own router, or if not is it planned?
All the best! - Lizzy
I'm @LizzyTheWitch on Discord, by the way. You can reach me there instead if you like.

Oh, i just found #272, will be closing now to continue there!

I was looking around the Poimandres Discord and found your profile where I noticed Waku!

That's wonderful.

authors: LizAinslie dai-shi

repo: dai-shi/waku


text:
setuptools warning

By packaging 3.5.0 on Gentoo Linux I see the following setuptools warning:
 * QA Notice: setuptools warnings detected:
 *
 *      Package 'pgactivity.profiles' is absent from the `packages` configuration.
 *      Package 'pgactivity.queries' is absent from the `packages` configuration.

What command do you run to get these warnings?

Based on https://setuptools.pypa.io/en/latest/userguide/datafiles.html it's not clear to me what would be missing in our setup.

What command do you run to get these warnings?

the warning comes from portage that search for 'setuptools warning' string:
https://github.com/gentoo/portage/blob/08a2bc3800ea2e997716903244ec041339b45b06/lib/portage/package/ebuild/doebuild.py#L2395
The exact command used to build is:
python3.12 -m gpep517 build-wheel --prefix=/usr --backend setuptools.build_meta --output-fd 3 --wheel-dir /var/tmp/portage/dev-db/pg_activity-3.5.0/work/pg_activity-3.5.0-python3_12/wheel

For completeness I'm attaching the full build log:
pg_activity-3.5.0_20240403-070656.log.txt
An interesting part is:
/usr/lib/python3.12/site-packages/setuptools/command/build_py.py:207: _Warning: Package 'pgactivity.profiles' is absent from the `packages` configuration.
!!

        ********************************************************************************
        ############################
        # Package would be ignored #
        ############################
        Python recognizes 'pgactivity.profiles' as an importable package[^1],
        but it is absent from setuptools' `packages` configuration.

        This leads to an ambiguous overall configuration. If you want to distribute this
        package, please make sure that 'pgactivity.profiles' is explicitly added
        to the `packages` configuration field.

        Alternatively, you can also rely on setuptools' discovery methods
        (for example by using `find_namespace_packages(...)`/`find_namespace:`
        instead of `find_packages(...)`/`find:`).

        You can read more about "package discovery" on setuptools documentation page:

        - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html

        If you don't want 'pgactivity.profiles' to be distributed and are
        already explicitly excluding 'pgactivity.profiles' via
        `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`,
        you can try to use `exclude_package_data`, or `include-package-data=False` in
        combination with a more fine grained `package-data` configuration.

        You can read more about "package data files" on setuptools documentation page:

        - https://setuptools.pypa.io/en/latest/userguide/datafiles.html

        [^1]: For Python, any directory (with suitable naming) can be imported,
              even if it does not contain any `.py` files.
              On the other hand, currently there is no concept of package data
              directory, all directories are treated like packages.
        ********************************************************************************

I can reproduce indeed; thank you.
Will look at it.

Just released version 3.5.1 with this and #410 fixed.

authors: asarubbo dlax

license: PostgreSQL


text:
ExternalLoginFailure localization of title

https://github.com/damienbod/AspNet5IdentityServerAngularImplicitFlow/blob/master/src/StsServerIdentity/Views/Account/ExternalLoginFailure.cshtml doesnt have a localization for the title.

Thanks for the PR, merged

authors: athalius damienbod


text:
Broken CSP Blazor due to auto generated javascript

I have this problem as well and due to the Javascript created / required by Blazor, the CSP can not be implemented in a good way. The following script is generated:
<script>
var Module; window.__wasmmodulecallback__(); delete window.__wasmmodulecallback__;
</script>

Can the Javascript not be improved? Due to the Blazor Javascript, the CSP for the script-src is defined with
script-src 'self' 'unsafe-inline' 'unsafe-eval'

It would be really cool if this could be improved.
Greetings Damien

https://github.com/dotnet/aspnetcore/issues/34428

fixed


text:
Adding top offset & rotation

I need to add a vertical offset to the content (of a cell) as well as rotation, so I believe I should adjust somewhere around here https://github.com/dancormier/react-native-swipeout/blob/master/src/index.js#L369 ?

#255

repo: dancormier/react-native-swipeout


text:
No longer working since update 4.

On October 1st, the developers released patch 4 which, among other things, "fixed multiple issues related to authentication flow and provided more communication as to what is happening to the user". Intentionally or not, it has also broken the bypass, and now the game is stuck on the "Waiting for response from authentication server" screen.

Update: the game seems to run fine with "SteamDeck=0" environment variable override in launch options. So the issue can be closed now, I guess.

"fixed multiple issues related to authentication flow" and failing to connect sounds like an anti-circumvention measure.
I forked this for archival purposes and don't actually have the game or even a PSN account, and I have no intention of getting one in order to keep this repo immune to their EULA. If they do eventually patch the SteamDeck=0 bypass I'll need contributors who actually have the game to fix it.
I'll keep this issue open while the situation develops.

To be quite honest, after thinking about it really hard, I think my initial panic is just due to a fact that I last played the game on my main PC, where the env var override is already present, while today I was using my Deck without it, so initial behavior was different. I guess the only thing this really did was add the "Waiting" message instead of showing black screen during the time when I'm supposed to log into the PSN account. I'll try downgrading the game back to 3.1 to see if I'm correct.

Steam Decks are Linux machines, that's why.
It may have just been user error.

I checked the version 3.1, literally the only thing that's changed is that with the SteamDeck env var set to 1, the older versions sat on a black screen while the user was supposed to log into PSN, while version 4 now shows the "Waiting" message. With SteamDeck=0 both versions start fine. How can I delete the issue? I feel stupid for creating it without checking properly beforehand.

I'll go ahead and close it then.

authors: ClaudeLib dandykong

repo: dandykong/nopssdk


text:
fix ui, add dockerfile

add makefile and docker for convenient
fix ui
use the server address in user input directly

Most time the influxdb address may be normal host:port type, but sometimes people need their particular style of address. Is there any better idea? I can make some change to make this better.

I added some change to fix a QueryDataStore error.
When influxdb return some error like this:
{"results":[{"statement_id":0,"error":"GROUP BY requires at least one aggregate function"}]}

we need to get error message from results and set message to error in store.

repo: danesparza/influxdb-ui


text:
HTTP POST

how do i post data as json in angularjs

This is a question for Angular, not specifically this library. As I haven't used Angular in a few years (haven't done much in the frontend at all), I can't actually answer this question for you. Hopefully you can find help in one of the Angular support channels, or StackOverflow!

repo: danhunsaker/angular-dynamic-forms


text:
🛑 WA is down

In 48b5be9, WA (http://103.150.92.1:1680/) was down:

HTTP code: 0
Response time: 0 ms

Resolved: WA is back up in ee99bcf.

repo: danichrisd/up


text:
Rename component to askForEnv

component is too important and general a name to assign to that somewhat specialized function. askForEnv communicates better what the function does, methinks.

Or perhaps askLater, conveying the sense that we are delaying asking for the environment until the method / advice is executed...

I can't think of a good name. Leave it as component for now.

repo: danidiaz/dep-t-advice


text:
Reduce frequency of pre-commit autoupdates

Since the project is not using many pre-commit hooks and it is mostly only ruff that gets updated it would make sense to reduce the update frequency to monthly.
Is can be done by adding the following lines to .pre-commit-config.yaml:
# pre-commit ci
ci:
  autoupdate_schedule: monthly

Maybe even look into further pre-commit ci customizations?

Feature request implemented in #38.

repo: daniel-mizsak/python-package-template


text:
🛑 DevOps App Roadmap Prod is down

In 8af3756, DevOps App Roadmap Prod (https://roadmap-app.onrender.com/) was down:

HTTP code: 0
Response time: 0 ms

Resolved: DevOps App Roadmap Prod is back up in fc35985 after 6 minutes.

repo: danielitogomez/upptime


text:
what's the amount of words will this captioning use?

what's the amount of words will this captioning use?
it depends on what?

There is another additional step to remove rare words (< 5 occurrences). It will produce 2536 unique words.

repo: danieljl/keras-image-captioning


text:
[REQUEST] Auto edge bug

Well, i didn't found this feature in any public forum, it would be amazing if someone can add it to Osiris, if u don't know what is edge bug, u should see this video: https://www.youtube.com/watch?v=7jV-HBEi5wM

if (config->misc.edgeBug && GetAsyncKeyState(config->misc.edgeBugKey) && localPlayer->flags() & 1)
        cmd->buttons |= UserCmd::IN_DUCK;

thats probably the easiest (and worst) way to do it,

if (config->misc.edgeBug && GetAsyncKeyState(config->misc.edgeBugKey) && localPlayer->flags() & 1)
        cmd->buttons |= UserCmd::IN_DUCK;

thats probably the easiest (and worst) way to do it,

wtf is that? isn't that crouch in air?

WHEN UR ON GROUND -> localPlayer->flags() & 1
WHEN UR IN AIR -> !localPlayer->flags() & 1

@ApolloXXX I can sell you my code, from my private hakenzz.
JumpBug & EdgeBug.

leak.codes posted proper edgebug source this week. I cant unlock it tho. U will have to go there to get it.

authors: Finndramere M70000 gabesmithdev iniw littlehurensohn

repo: danielkrupinski/Osiris


text:
Streamproof esp delaying on low fps

Idk if its just for me but streamproof esp thing is delaying hard when shaking my crosshair or enemy is moving
Actually im using old esp its ok for me but i just tried streamproof esp newly.. on some maps like im getting 50fps(nuke cache whatever decreases my fps) esp getting fucked i cant even see where is enemy at clearly and i have to shoot to box
its pretty obvious move for overwatch
take a look at please

Nvm i didnt even use it

Nvm im not using it idc


text:
Sitemap creation in blog

Do you have any plans to work on sitemap creation in the blog to make it more search engine friendly?

No I'm too busy at the moment.
But it should be straight forward to implement:

Create a controller / endpoint with url /sitemap.xml
Load all blog post urls from database
Create XML structure
Optional: Add output to caching

Thanks for sharing the technical steps to implement the sitemap.

authors: danielpalme shahabblouch

repo: danielpalme/MVCBlog


text:
Matlab version

Working Matlab version should be pointed out.
As an example it seems not working on R2015b

Issue should be fixed in commit 1d996c95605275798982591d47c6bd1578019081. See issue #3.

authors: brankaleon danielrherber