json files can't be copied off of the boards to Windows machines

My Wifi failed yesterday, which meant that I had a whole load of json files that failed to upload.
I tried to grab them over to my windows laptop, but because the file names had ':' in them, I couldn't, which was a shame as I ended up dropping them to get things working again. Could the ':' be changed to another character?
See https://learn.microsoft.com/en-us/windows/win32/fileio/naming-a-file for 'reserved' characters.

Thanks for raising this. That sounds easy enough to fix. Just need to decide on substitute characters, as my understanding is the filename is currently following a particular standard for logging times.

I have added a fix for this to the patch branch. Changed the : to _.

There is a new release that should fix this issue, so I'm closing this: https://github.com/pimoroni/enviro/releases/tag/v0.0.9
Please re-open it or raise a new issue if you update and experience the problem again. Thanks


Builders in a seperate crate?

I'd love to use the PodBuilder and other builders currently provided by this crate, but I feel that since this crate hasn't been published it doesn't seem like it's stable.
I'm hoping that your Builder API can stabilise and possibly be a seperate crate to be consumed as it is a great way to create the necessary Kubernetes objects (instead of the serve_json::json! mechanism).

I like the idea, but we depend heavily on the k8s_openapi crate and are far from feature complete. We basically add whatever we need when we need it currently.


add query decomposition

This is the preview branch for the article, we can continue the proper review on Notion @davidsbatista

@TuanaCelik can you share here the link for the Notion page?


build: Few minor makefile and dockerfile improvements

test-me-please

test-me-please

Coverage remained the same at 46.599% when pulling e754069f3592e9124f42f115d6adda5802e9ad70 on pr/errordeveloper/makefile-improvements into fe510323817c11dce0587d9aa5c3ea556874aacd on master.

test-me-please

Cool, any metrics yet on whether this changes anything? Build times anywhere? Binary sizes?

The fact that we got rid of dependency declaration will have some effect on build times, I should go and find out what it is, but I suspect the effect to be marginal, but it may as well end up being equal to time it takes to call find :) In the best case scenario, the local incremental builds will be faster, but CI is unlikely to be affected.

Ok, so more on build performance.

The way dependencies are checked is largely inaccurate and hard to maintain (i.e. makefile of each of the components looked for .go files in some set of directories (probably most of the cases just initial set of deps that never got updated), and it ignore all of the external dependencies.
We could fix the nature of dependency calculation and base it on go list, but that shouldn't make any  practical different over relying on go build, which does the same thing for us already.

test-me-please

test-me-please

test-with-kernel

@joestringer this is good to go now, I believe? If so, would you mind approving and merging please?


Revert "shell: support floating point output..."

This reverts commit e812ee6c213143fdc94c20de1b8d26db38cd0cc0.
This is not the right approach. If the shell is incapable of
using standard libc printing functions, it needs to use (and
possibly extend) the existing printk() code already in this
library. See #29202
Signed-off-by: Andrew Boie<EMAIL_ADDRESS>

As I tried to argue in #29171 I think this is the wrong path forward.
v_prf() provides functionality that is crucial to consistent and complete formatting support in the shell, and possibly the logger, and possibly tracing, all of which invoke it under various conditions.  Stuffing it back into minimal libc doesn't help anybody who needs this functionality with other libc solutions.
However, it's been made very clear that the owner of lib/os doesn't want it there, nor to use it to make printk() functionally equivalent.
Perhaps we need another place to put utilities that are generally useful to the entire OS.

However, it's been made very clear that the owner of lib/os doesn't want it there, nor to use it to make printk() functionally equivalent.

Why are making this discussion about ownership?
This is still a PR where you can object and raise concerns and if you have a better solution and think we should not revert, please make the case and others are welcome to do the same.
The change being reverted went in without enough review from all parties concerned which is unfortunate and this can happen. Reverting and looking for better solutions should always be an option.

The change being reverted went in without enough review from all parties concerned which is unfortunate

Don't know what to say about that: #27655 was open for two weeks with the lib/os codeowners added as reviewers when it was created.

Why are making this discussion about ownership?

It's in lib/os:

That is owned by me and Andy. This isn't up for discussion.

Since lib/os has things like base64 and json encoding conversion it seemed reasonable to be there.
But if it the problem is it needs to go somewhere else, and/or be named something else, I can certainly do that.  Who will own that thing, and what do they want it to be called?  Because making proposals that are immediately rejected is not effective use of anybody's time.
If the problem is #29202, moving it back to minimal libc (or anywhere else) isn't going to change much.

that is owned by me and Andy. This isn't up for discussion.

Since lib/os has things like base64 and json encoding conversion it seemed reasonable to be there.

The above refers to making decisions in a meeting. My guess is that the nature and purpose of bringing this into a meeting is not well understood because not everyone can join such meetings.

But if it the problem is it needs to go somewhere else, and/or be named something else, I can certainly do that.

I think it is not about lib/os or lib/. this is about moving it from libc and making it part of the OS also in the case where you use another libc, basically duplicating the code. So we need to step back and figure why shell, logging and others are using this first place and how we can solve the problem at the core.

So we need to step back and figure why shell, logging and others are using this first place and how we can solve the problem at the core.

Agreed.  I think the rationale is pretty well described at #27655:

The shell requires a *printf function that produces its output by calling a function like putchar(3c) to output one character at a time. This eliminates dynamic or static allocation of buffers large enough to hold arbitrary messages.
When CONFIG_MINIMAL_LIBC=y a custom implementation z_prf() is available which is capable of producing float values. It's used to implement s*printf() in minimal libc, and is part of the minimal libc library.
When CONFIG_NEWLIB_LIBC=y the minimal libc library is not available, so z_prf() is not available, so Zephyr falls back to z_vprintk() which also generates output through a putchar()-like function, but is not capable of printing floating point values.

Shell and logging require a way to generate formatted text output that doesn't require arbitrary-sized buffers, because they output to a variety of endpoints (serial, network, debugger back channel).  A good solution is the API for z_prf() and z_vprintk():
typedef int (*out_function)(void *ctx);
int fmt_function(out_function out, void *ctx, const char *fmt, va_args args);

There are no such functions in C libraries; certainly not in newlib.
Zephyr applications need to support generating 64-bit integers and floating point in formatted output, certainly from the shell and arguably from logging.
It's certainly technically possible to take z_prf() or vprintk(), rename it, and attempt to make its support for floating-point or 64-bit value formatting optional so people who don't need that functionality don't pay the cost.  It may be difficult to maintain as the function is basically a complex switch statement, which will get ugly with conditional compilation, but that's not a key blocker.
Then that one core formatter can be used by shell_fprintf(), log_printf(), and any application code that happens to need this functionality.
But if goal is to indeed have only one stream-output-formatter facility, then printk() would also end up using this.  Which means the stack usage for core kernel functions that use printk() would depend on application-provided configuration.
Is that not a concern from the kernel perspective?

However, it's been made very clear that the owner of lib/os doesn't want it there, nor to use it to make printk() functionally equivalent.

What I don't want is two printf() implementations in our OS library that as a maintainer I have to support. I am not trying to be difficult or give you a hard time, or give the impression this some kind of turf war. I will always consider having two pieces of code doing the fundamentally the same thing to be technical debt, especially if they are in the core OS library. We can do better than this.
I am not opposed to making printk() functionally equivalent, but the naive approach of just defining it in terms of z_prf() will not work because the z_prf() code is far less stack efficient. This is a mechanistic not a policy problem.

Which means the stack usage for core kernel functions that use printk() would depend on application-provided configuration. Is that not a concern from the kernel perspective?

Have you considered that it may be possible to build this in such a way that handling format strings without floating point format codes in them might not need significant extra stack space, even if the code is compiled in? I think you are being overly dismissive of the possibility of making printk() work for these use-cases. The z_prf() code is downright wasteful in what it uses for even simple strings. If we could find a suitable low-footprint replacement for minimal libc I'd delete the whole thing in a heartbeat and get ourselves out of the C library business entirely.

Zephyr applications need to support generating 64-bit integers and floating point in formatted output, certainly from the shell and arguably from logging.

Let's be clear here, we're talking about streamable printf without buffering which is not offered by libc.
All the use-cases in the kernel I see for such streamable printf are for:

The debugging shell
Logging to text with runtime rendering of the log strings.

We literally don't care if applications need this, z_prf() is a private namespace and is not application facing, and printk() is documented as not being a full printf() implementation. Apps can roll their own or use the C library. This is seriously not an application concern, this is internal kernel business.

z_prf() provides functionality that is crucial to consistent and complete formatting support in the shell, and possibly the logger, and possibly tracing, all of which invoke it under various conditions.

Crucial is a strong word. I think you're overstating the case. If you can afford the overhead of a debug shell, or runtime rendering of text logs, would a line buffer so that you can use libc string rendering functions really kill you? Especially if you're already willing to accept the order-of-magnitude increase in stack space used by z_prf()?

Changes like re-architecting the shell or trying to make vprintk() support both kernel and application needs are not in my wheelhouse and somebody else can pick them up after one of the above choices is taken

Just re-open the original bug and find a new assignee if you aren't willing to work on this further.

I will always consider having two pieces of code doing the fundamentally the same thing to be technical debt, especially if they are in the core OS library. We can do better than this.

Agreed.

If you can afford the overhead of a debug shell, or runtime rendering of text logs, would a line buffer so that you can use libc string rendering functions really kill you?

Perhaps not, but I don't think it's generally possible to determine statically how big a buffer is needed, given that (shell) format operations come from independent modules and produce text that can be short or long depending on arguments.  All libc formatting API is all-or-nothing (or "what fits and throw away the rest").  Also it makes application capability dependent on underlying libc selection, which has historically been a problem for output formatting.

We literally don't care if applications need this, z_prf() is a private namespace and is not application facing, and printk() is documented as not being a full printf() implementation.

From a kernel perspective, absolutely.  From a Zephyr perspective, it's important to consider the functionality applications need.  To that end:

All the use-cases in the kernel I see for such streamable printf are for:

The debugging shell
Logging to text with runtime rendering of the log strings.

Yes, I think the distinction between what "core kernel" needs and what an application needs is important.  So is whether it's important to keep printk()'s resource use independent of configuration options.

Is all shell use part of core kernel, or is there a specific set of shell modules that are core kernel while others are not?  I wouldn't expect the sensor commands to be core kernel...?
Is subsys/logging core kernel?

Because I'm less concerned about duplication when it's partial functional overlap in functions with clearly-defined different roles and use cases. If:

z_vprintk is the small tight solution that we have today, with constant resource usage independent of Kconfig and a clear understanding that it doesn't support flowing point, won't handle 64-bit decimal correctly (but will do 64-bit hex), and is to be used for anything that's core kernel;
other_formatter is a full-featured generator-style formatter derived from existing z_prf(), intended to be compatible with the full range of standard *printf format specifications,  and provided by Zephyr as an option for applications that want to make use of its functionality

then is there a conflict?  Why not remove z_prf() from core kernel without changing z_vprintk)?  Then let applications chose via Kconfig whether they want shell_printf to use z_vprintk() or other_formatter(), which could be moved somewhere other than lib/os to make clear it's not core kernel?
It might even be possible to extend the full capability to subsys/logging with per-call flag that indicates the full formatter should be used for that message, falling back to z_vprintk() if that feature isn't enabled.

Added dev-review to discuss https://github.com/zephyrproject-rtos/zephyr/pull/29203#issuecomment-710072323 and whether there's consensus that a generic consistent formatting utility has value separate from printk.  This is not intended to bypass any maintainer decisions related to what's in core kernel, but if nobody wants this capability the way forward is made more clear.

Following dev-review 2020-10-22: I'll look into the impact of supporting a single stream-formatting API that can be used by the kernel and applications.


pip install with python2 is broken

I tried installing the v2 potion client (which looks absolutely fabulous) in python2 and pip fails:
$ pip install Potion-client
Collecting Potion-client
  Using cached Potion-client-2.0.0.tar.gz
Requirement already satisfied (use --upgrade to upgrade): jsonschema>=2.4 in ./venv/lib/python2.7/site-packages (from Potion-client)
Requirement already satisfied (use --upgrade to upgrade): requests>=2.5 in ./venv/lib/python2.7/site-packages (from Potion-client)
Requirement already satisfied (use --upgrade to upgrade): six in ./venv/lib/python2.7/site-packages (from Potion-client)
Requirement already satisfied (use --upgrade to upgrade): functools32 in ./venv/lib/python2.7/site-packages (from jsonschema>=2.4->Potion-client)
Installing collected packages: Potion-client
  Running setup.py install for Potion-client ... error
    Complete output from command /home/kyle/Dev/venv/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-wPs324/Potion-client/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-IP0d9z-record/install-record.txt --single-version-externally-managed --compile --install-headers /home/kyle/Dev/venv/include/site/python2.7/Potion-client:
    running install
    running build
    running build_py
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/tmp/pip-build-wPs324/Potion-client/setup.py", line 36, in <module>
        'License :: OSI Approved :: MIT License'
      File "/usr/lib/python2.7/distutils/core.py", line 151, in setup
        dist.run_commands()
      File "/usr/lib/python2.7/distutils/dist.py", line 953, in run_commands
        self.run_command(cmd)
      File "/usr/lib/python2.7/distutils/dist.py", line 972, in run_command
        cmd_obj.run()
      File "/home/kyle/Dev/venv/local/lib/python2.7/site-packages/setuptools/command/install.py", line 61, in run
        return orig.install.run(self)
      File "/usr/lib/python2.7/distutils/command/install.py", line 601, in run
        self.run_command('build')
      File "/usr/lib/python2.7/distutils/cmd.py", line 326, in run_command
        self.distribution.run_command(command)
      File "/usr/lib/python2.7/distutils/dist.py", line 972, in run_command
        cmd_obj.run()
      File "/usr/lib/python2.7/distutils/command/build.py", line 128, in run
        self.run_command(cmd_name)
      File "/usr/lib/python2.7/distutils/cmd.py", line 326, in run_command
        self.distribution.run_command(command)
      File "/usr/lib/python2.7/distutils/dist.py", line 972, in run_command
        cmd_obj.run()
      File "/home/kyle/Dev/venv/local/lib/python2.7/site-packages/setuptools/command/build_py.py", line 51, in run
        self.build_packages()
      File "/usr/lib/python2.7/distutils/command/build_py.py", line 373, in build_packages
        self.build_module(module, module_file, package)
      File "/home/kyle/Dev/venv/local/lib/python2.7/site-packages/setuptools/command/build_py.py", line 71, in build_module
        package)
      File "/usr/lib/python2.7/distutils/command/build_py.py", line 334, in build_module
        "'package' must be a string (dot-separated), list, or tuple")
    TypeError: 'package' must be a string (dot-separated), list, or tuple

    ----------------------------------------
Command "/home/kyle/Dev/venv/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-wPs324/Potion-client/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-IP0d9z-record/install-record.txt --single-version-externally-managed --compile --install-headers /home/kyle/Dev/venv/include/site/python2.7/Potion-client" failed with error code 1 in /tmp/pip-build-wPs324/Potion-client/

If you remove the encoding setting at the top, everything seems to work smoothly (pip install and testing). But it breaks stuff with python3 (mostly with tests running).
There is no issue with installing on python3 though, so it is clearly a unicode handling thing. There are a few mentions of these issues in pip and setuptools bug reports.
https://github.com/pypa/pip/issues/1441
https://bugs.python.org/issue13943

Yes, it was that unicode issue with distutils. I've released a fix in v2.0.1


Backport: UI: 2.2 - Prometheus error when installing Monitoring

backport https://github.com/rancher/rancher/issues/19197

Can be tested on rancher/rancher:v2.2.2-rc1

Update: removed to-test label. This UI fix should be tested in conjunction with https://github.com/rancher/rancher/issues/19278, and the fix for the backend is not in yet.

@jiaqiluo , including validation cases:

Enable Cluster Monitoring -> the monitoring dashboards should be on
Disable Cluster Monitoring -> the monitoring dashboards should be off
Enable Cluster Monitoring and then drop cattle-prometheus/prometheus-cluster-monitoring Pod -> the monitoring dashboards should be off until Prometheus Pod redeploy

Can be tested with rancher/rancher:v2.2.2-rc2

Version: v2.2.2-rc2
I followed the suggested steps outlined by @thxCode

Enable Cluster Monitoring -> the monitoring dashboards should be on
Disable Cluster Monitoring -> the monitoring dashboards should be off
Enable Cluster Monitoring and then drop cattle-prometheus/prometheus-cluster-monitoring Pod -> the monitoring dashboards should be off until Prometheus Pod redeploy

I confirmed that this works (step 3) the dashboard instantly goes to the classic cluster page when we delete the prometheus-cluster-monitoring-0 pod. It then quickly recovers and brings a new pod up.
I do see this though once it has recovered. @thxCode is a refresh needed and expected?

I can confirm we at least don't see a broken cluster monitoring page now as we did before when prometheus was unhealthy. But when it recovers the UI isn't 100% okay until I manually refresh.
Once I manually refresh now everything is fine:

@sangeethah ^^ Just a reminder. This issue is validated and is working as expected per our discussion. I am merely waiting to see if @thxCode has any input per my comment. I wanted to double-check to ensure that once prometheus recovers and is healthy that we expect the user to manually refresh to fully fix monitoring.
The important thing is that monitoring is no longer in a quite broken state where it might show "loading" for % used (green text) whenever prometheus is not healthy and the UI quickly switches to basic view when it detects its unhealthy.
The issue can be closed later with my findings above; just wanted input.

Some observation on v2.2.2-rc2: the cluster page is not stable after the pod is recreated.
As soon as the pod is recreated, the cluster page looks like this:

Then the wheel metrics go back to classic view after 3 - 5 seconds:

Now if I refresh the page manually, it recovers to the desired view:

@jiaqiluo @davidnuzik I think we don't need refresh. If we can improve it.

Can be tested with rancher/rancher:v2.2.0-rc4

The bug fix is validated with v2.2.2-rc5 on both fresh installed and upgraded setup
Notice that when the pod is re-created and becomes active, the UI looks like this with the classic wheels

And after about 1 - 2 mins, the wheels changes to this which is expected

So there is no need to refresh the page manually.


RL Training pipeline on 5-min data

Description

Motivation and Context

How Has This Been Tested?

[ ] Pass the test by running: pytest qlib/tests/test_all_pipeline.py under upper directory of qlib.
[ ] If you are adding a new feature, test on your own test scripts.

Screenshots of Test Results (if appropriate):

Pipeline test:
Your own tests:

Types of changes

[ ] Fix bugs
[ ] Add new feature
[ ] Update documentation

@lihuoran  Could you please check the CI errors?


postMessage returns void instead of response

The postMessage function from https://github.com/bjerkio/nestjs-slack/blob/main/src/slack.service.ts#L109 should return the API response to work with it, for things like sending messages to a thread instead of void.

I totally agree!
You might also notice that we have multiple ways to send a message to Slack, which is why we are returning void today. It makes sense to return a type that maybe have an API response. Does that make sense for your use case too?
On this topic, we might want to think about how we can create threads on all our sending methods.


compile issue for 1.0.1

Congrats on 1.x release!
However, I seem to get an error on compilation
[12:10:45]  Error: ./node_modules/formiojs/dist/formio.form.min.css Module parse failed:
node_modules/formiojs/dist/formio.form.min.css Unexpected token
(1:0) You may need an appropriate loader to handle this file type. | .flatpickr-calendar{background:0
0;overflow:hidden;max-height:0;opacity:0;visibility:hidden;text-align:center;padding:0;-webkit-animation:none;animation:none;direction:ltr;border:0;font-size:14px;line-height:24px;border-radius:5px;position:absolute;width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-touch-action:manipulation;touch-action:manipulation;background:#fff;-webkit-box-shadow:1px
...
@ ./node_modules/angular-formio/formio.component.js 225:29-73
@ ./src/pages/survey-entry/survey-entry.ngfactory.js
@ ./src/app/app.module.ngfactory.js
@ ./src/app/main.ts

So, are you just trying to run this repo with npm start? I updated https://github.com/formio/angular-app-starterkit with this version and am not getting that error. It may help to know the environment you are running into this issue.

ionic application.
typescript 2.4.2
npm run ionic:build --prod

that would be awesome. thanks.

git clone https://github.com/mikethm/issue-1.git
npm i
npm run ionic:build --prod

This should be fixed in version 1.2.0. Thanks.


switching between files in editor

Is there a way we can switch files in the editor.  When we need to open file in an already opened editor and when we switch files, right now we are only updating the values in the monaco-editor, which really not right has the editor's model will have old versionId, EOL etc.
How can we update the model to the previous versionId when we switch files in the editor?

This is a monaco question and is not specific to this library. Please ask it in the appropriate place.


Update Code - Proof_Of_Contribution.md

There is a conflict and can not merge.
Please put code contributions in the same pull request as the hour request.
This PR does not include the number of hours requested.

Here is the best practices guide.
https://github.com/MorpheusAIs/Morpheus/blob/main/!KEYDOCS README FIRST!/8.Code Contributor Best Practices.md

Ping. There is still a conflict preventing the merge of the PR.


Introduce ExternalRedirectResponse

Introduces ExternalRedirectResponse to allow redirects to other hosts without the need to configure those hosts globally allowing for more fine-grained control.
Fixes #330.

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Comparison is base (da7cc88) 96.93% compared to head (7476be6) 96.89%.

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@             Coverage Diff              @@
##             master     #331      +/-   ##
============================================
- Coverage     96.93%   96.89%   -0.04%
- Complexity      429      433       +4
============================================
  Files            52       53       +1
  Lines          1923     1870      -53
============================================
- Hits           1864     1812      -52
+ Misses           59       58       -1

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

Is the project interested in a feature like this? Is there anything I can help with to get this merged? Thanks!

I'm very much interested to see this merged


Add basic helper functions for hd_key.go

Nothing major here, just added a few helpers to allow me to only pull in go-bitcoin as an import without mucking through the bsvec & bsvutil packages.
Added:

GenerateHDKeyFromString - Generate HD key from xPrivKey string
GetHDChild - Get a child of an HD key without passing in a full path of chain/num
GetPrivateKeyFromHDKey - Get an HD key's private key
GetPublicKeyFromHDKey - Get an HD key's public key
GetAddressFromHDKey - Get an address associated with the HD keys public key (Found this one to be useful as I wanted legacy format by default)

Let me know if you'd prefer more tests, I only added one for GetHDChild to test for depth and whatnot. The others felt more like basic wrapper funcs.

@galt-tr for packages like this, I'd like to have the highest coverage of tests (currently 89%). I can help add tests since these are simple wrapper functions... it's good sometimes to have someone write tests that was not the developer that created the method (helps expose logic flaws, etc) - so I don't have a problem knocking them out - would only take me 20 mins or so ;)

I'll merge soon and add the few tests ;)

@mrz1836 Sounds great about the tests. Will be sure to add tests for any future methods to keep coverage up. Thanks!


How to check if fonts are properly set up in .zshrc in order to implement an automatic fallback config?

I have a working setup on most machines, but occasionally I have to SSH to one of my machine from a different machine (from some random Windows computer, from my mobile phone, ...) and I cannot install fonts there. Can I check if fonts are installed in .zshrc?
If yes, it would be possible to configure a fallback way for the powerlevel9k config which does look fine also without special fonts installed.
Note: Don't confuse with the fallback-strategy for fonts, I am talking about a fallback .zshrc config.
See also: #436 #253

Unfortunately we haven't found a way to automatically detect fonts yet. At least no proper reliable way. Neofetch does font detection of the terminal. And we adopted that solution for debugging purposes. But these solutions try to get that information from your terminal (as this is the program that uses the set font to display) and it won't detect a putty terminal..
So, you could set an env variable when connecting with putty and use that to switch your config.

That's bad and good news at the same time. Your hint with env variables helped to find a way to achieve what I need. It's quite hackish, but works for me - maybe for others with the same problem too. Thanks!
I've added the code in this commit lumbric/dot-file-repo@a39cd84f6bd45b3098551b77926ad0fa03378b5a to my dot file repository. If anyone wants to copy it.
Basically the idea is that wherever my dot file repository and my .zshrc is in use, I will also have correct fonts installed. When SSH-ing from a client without my environment into a server with my environment, I can detect this by setting a env variable in my .zshrc and in this case load a fallback zsh theme or remove undisplayable symbols (that's what I did).
Env variables with names LC_* are passed automatically from client to server by default in OpenSS. This is meant for passing the locale to the server, but we can use it as others have done before. Look for these lines in your /etc/ssh/sshd_config:
# Allow client to pass locale environment variables
AcceptEnv LANG LC_*

On server side LC_CLIENT_HAS_DOT_FILE_REPO is never set explicitely (only via SSH), on client side it is obviously only run if .zshrc is executed. This means if the variable is not set, a fallback theme can be loaded:
source ~/.dot-file-repo/zsh/powerlevel9k_settings.sh

# Fall back mode for powerlevel9k when SSH-ing to server with dot-file-repo and
# powerlevel9k installed, but dot-file-repo and fonts not available on client.
if [ -z $SSH_CLIENT ]; then
    # this env variable will be available only if this .zshrc is used on client
    export LC_CLIENT_HAS_DOT_FILE_REPO=1
fi
if [ -z $LC_CLIENT_HAS_DOT_FILE_REPO ]; then
    source ~/.dot-file-repo/zsh/powerlevel9k_settings_no_font_fallback.sh
fi

I did something very cheap, I simply disabled all broken features until it looked good enough:
POWERLEVEL9K_HOME_ICON=''
POWERLEVEL9K_HOME_SUB_ICON=''
POWERLEVEL9K_FOLDER_ICON=''
POWERLEVEL9K_SSH_ICON=''

POWERLEVEL9K_LEFT_SEGMENT_SEPARATOR=""
POWERLEVEL9K_LEFT_SUBSEGMENT_SEPARATOR=""
POWERLEVEL9K_RIGHT_SEGMENT_SEPARATOR=""
POWERLEVEL9K_RIGHT_SUBSEGMENT_SEPARATOR=""

POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(host dir_writable dir vcs)

One could also try to find symbols supported with normal fonts or load a standard zsh theme. Please let me know if you have suggestions how to imrpove this part of my config and make the fallback more beautiful!


Video recording not working on chrome/firefox on iPad

Description
Video recording not working on chrome/firefox on iPad
Steps to reproduce
Open below link and try to record video on iPad and it wont let me record the video
https://collab-project.github.io/videojs-record/examples/audio-video.html
Results
Expected
Should record the video on iPad and ios devices
Actual
Video recording not working on iPad
Error output
Additional Information
versions
videojs
what version of videojs does this occur with?
browsers
Latest firefox and chrome
OSes
iOs 9.3.2

Thanks in Advance. :(

If I am not mistaken apple forces everyone to use webkit on mobile devices so all the browsers are basically the same and webm and recording is not supported by apple webkit.

Is it possible to get the console output, curious what error it's throwing. But like @ignl said, it's not supported on any iPad/iOS browser at the moment (see http://iswebrtcreadyyet.com). You can track it's progress here: https://bugs.webkit.org/show_bug.cgi?id=124288. So it's a known issue I can't work around unfortunately.

It should be working now, right?

@tomasdev yes, safari is problematic though.


Update testintuneapplication.md

Fixed Typo
Fixes https://github.com/MicrosoftDocs/microsoft-365-docs/issues/12775

@JohanFreelancer9 Please copy review

@tiburd Please merge this PR. Thanks


getall and exec SIGSEGV with keys that trigger InvalidCiphertextException

Reproduced with both unicreds 1.5.0 and 1.5.1. Occurring on Mac OS X Sierra using darwin builds from github and within an alpine docker container using linux builds, also running on OS X.
Environment has multiple keys, with only some using the 'env:prod' context.

| => unicreds -r us-east-1 -E 'env:prod' getall -d
• Configure AWS             profile= region=us-east-1
• Getting all secrets
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x2496]
goroutine 1 [running]:
panic(0x3e5640, 0xc4200140d0)
/usr/local/Cellar/go/1.7/libexec/src/runtime/panic.go:500 +0x1a1
main.main()
/Users/markw/Code/go/src/github.com/versent/unicreds/cmd/unicreds/main.go:171 +0x456

Get returns a proper result:

| => unicreds -r us-east-1 -E 'env:prod' get key
⨯ failed                    error=InvalidCiphertextException:
status code: 400, request id: 037d2e62-bc06-11e6-9287-8fb5c387f130

Attempted to reproduce with a local build. Instead of reproducing the failure, it simply works as expected with a subset of keys returned. Based on some quick searches, it may be a go bug related to OS X Sierra. The go patch I found was committed on October 17th, so even the 1.5.1 build is likely to be missing it.
Now using a local build to unblock. Filing this issue to bring visibility in case this impacts other users.

Issue was fixed via an unreleased commit which was getting picked up by the local build. When a new release of unicreds is issued, it will fix this issue.


Figure out where to add the "tools" library

Where should we put all of the tools? For now, should it be a wiki - with links to other wiki pages?

I think yeah, it should have a main page and then subclass the other pages maybe?
Tools
Tools: Sitemaps
Tools: Personas
And then folders in the repo for any worksheets or visualizations?

Yeah. I'm wondering what your recommendation is (from an engineering perspective) - in terms of taking these entries and pulling the info into a website later on?

Agree with @deathbearbrown on this one. I like the overarching topic and then doing subpages.

And I think pulling them into a site would work later, because we can organize a jekyll site (for example) in that way easily.

Great. Thanks @deathbearbrown and @susanjrobertson - I added the wiki page. I'll close out this issue now.


operators mondoo-operator (0.2.4)

Bundle for mondoo-operator v0.2.4.
Signed-off-by: Joel Diaz<EMAIL_ADDRESS>

/merge possible

/merge possible


wayland-scanner as a library

It may be useful to allow using wayland-scanner as a library for codegen (essentially describing a protocol in data). This may help with api design experiments with wayland-backend.

What kind of api design experiments do you have in mind?
Because afaik rust does not allow to make a crate that is both a library and a proc-macro, so that would mean splitting wayland-scanner into two crates.


0.2.5: Unresolved References when building on iOS

I am building a multiplatform (Android/iOS) project using the Kissme library, and everything works great on Android. But when I try to build the iosBinaries task, I get the following errors:
Unresolved Reference: netguru
Unresolved Reference: Kissme

I saw that there was a pre-existing issue about this several months ago (#55), but it was closed without a resolution. Has there been any progress on fixing it?

I have the same problem...
Might be due to the fact, that in bintray no klib for version 0.2.5  was supplied: https://dl.bintray.com/netguru/maven/com/netguru/kissme/ios/0.2.5/
You can try using the debug version: https://dl.bintray.com/netguru/maven/com/netguru/kissme/ios_debug_ios_arm64/0.2.5/

That's a shame. I was really excited about using this library. I hope the dev can fix this sometime soon.

I'm back again with this library and still not resolved. Please tell us wether this library abandoned or still on fixing progress.

Same here! Seems like ths library is abandoned

@samiuelson?

Hello, did you find any workaround to use this lib in your project?

Sadly, no. I had to give up on it.

In my case, I implemented the logic using the foundation package...Not really efficient and took me a very long time to implement...


Add more debug information to dbt seed

I am getting an error while and it would be nice to know which line/column is causing it. All I get now is this:

Creating table dbt_pedro.abc_revenue_data
Inserting 36783 records into table dbt_pedro.abc_revenue_data
Traceback (most recent call last):
  File "/home/ec2-user/miniconda3/envs/abc35/bin/dbt", line 11, in <module>
    sys.exit(main())
  File "/home/ec2-user/miniconda3/envs/abc35/lib/python3.5/site-packages/dbt/main.py", line 29, in main
    handle(args)
  File "/home/ec2-user/miniconda3/envs/abc35/lib/python3.5/site-packages/dbt/main.py", line 47, in handle
    res = run_from_args(parsed)
  File "/home/ec2-user/miniconda3/envs/abc35/lib/python3.5/site-packages/dbt/main.py", line 101, in run_from_args
    result = task.run()
  File "/home/ec2-user/miniconda3/envs/abc35/lib/python3.5/site-packages/dbt/task/seed.py", line 12, in run
    seeder.seed(self.args.drop_existing)
  File "/home/ec2-user/miniconda3/envs/abc35/lib/python3.5/site-packages/dbt/seeder.py", line 134, in seed
    self.do_seed(schema, cursor, drop_existing)
  File "/home/ec2-user/miniconda3/envs/abc35/lib/python3.5/site-packages/dbt/seeder.py", line 104, in do_seed
    cursor, schema, table_name, virtual_table
  File "/home/ec2-user/miniconda3/envs/abc35/lib/python3.5/site-packages/dbt/seeder.py", line 68, in insert_into_table
    cursor.execute(insert_sql)
psycopg2.DataError: value too long for type character varying(65)

@pedromachados this is a little tough, as Redshift doesn't tell us which record in the CSV causes this error. I think that in this particular case, you can run dbt seed --drop-existing to destroy and recreate the table. That should help mitigate this particular problem.
Overall though, agreed: dbt's seed functionality needs some more polish

There was an issue with escaping single quotes or some sort of text
encoding issue. I ended up removing the text columns so I could get the
import done.
Not sure if the csv import can be made more robust.
Another thing that would be good is the ability to seed specific fIles and
to define a different target schema if desired. This could be controlled
via configuration in the dbt project file.
On May 27, 2017 5:29 PM, "Drew Banin"<EMAIL_ADDRESS>wrote:

@pedromachados https://github.com/pedromachados this is a little tough,
as Redshift doesn't tell us which record in the CSV causes this error. I
think that in this particular case, you can run dbt seed --drop-existing
to destroy and recreate the table. That should help mitigate this
particular problem.
Overall though, agreed: dbt's seed functionality needs some more polish
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/fishtown-analytics/dbt/issues/448#issuecomment-304479982,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AGjyPmW7re9nLxFJEPOdNBccwXhDyUqeks5r-KPhgaJpZM4NoHzp
.

Hey @pedromachados -- this is a totally reasonable request, especially since with our most recent release users can now specify schemas for all models. I made an issue for this here:
https://github.com/fishtown-analytics/dbt/issues/561
Closing this.


Android Studio 3.1.4 build error

I've imported connectbot into a fresh download & install of Android Studio 3.1.4 and it fails building with this Exception:
org.gradle.api.tasks.StopExecutionException: Configuration on demand is not supported by the current version of the Android Gradle plugin since you are using Gradle version 4.6 or above. Suggestion: disable configuration on demand by setting org.gradle.configureondemand=false in your gradle.properties file or use a Gradle version less than 4.6.

I've tried adding a new line in connectbot/gradle.properies reading org.gradle.configureondemand=false but that did not change the build error.
Please help. I'm a complete newbie when it comes to Android development... I would like to implement this feature: https://github.com/connectbot/connectbot/issues/587 but first I need to be able to compile an apk from your sources so that I can start making modifications.

From: https://stackoverflow.com/questions/49990933/configuration-on-demand-is-not-supported-by-the-current-version-of-the-android-g
In Android Studio,
For Mac go to the Preferences > Build, Execution, Deployment > Compiler and uncheck the configure on demand.
For Linux/Windows go to the File > Settings > Build, Execution, Deployment > Compiler and uncheck the configure on demand.

hth,

Thank you very much! That worked!
Now it builds the project in a little under two minutes, but I still can't find an apk file anywhere in the project folder..


Package Installation Section - Python Version Update

Updated the recommended download of Python version 2.7 to Python 3.

Thank you for the contribution! I realize I'm behind on the updating from Python 2 to 3. Please let me know if there are any other recommended changes.


Plan & prep for user story mapping session

Description:
This ticket is to account for the time and effort needed to prepare for user story mapping in December. It will rely on figuring out the PRDT website direction but we can start to lay out basic end to end user flows for how someone would want to update and edit a website.
Acceptance Criteria:

[x] Basic end to end user story mapped out for public users
[x] Basic end to end user story mapped out for admin/internal users
[x] Mural board is set up
[x] session is added to calendars

Dependencies

Potentially blocked by PRDT direction/website decisions

moving to done and will make new ticket to finalize board.


zlib1.dll was not found in latest version

Hi Lucas, in the latest version I'm getting "The code execution cannot process because zlib1.dll was not found.". Also happened on my friend's machine (both Windows 11). Thanks for this piece of software btw, not sure what I'd do without it!

Same here, on Windows 10

+1 one me here on win10 as non administrative user.

Thanks for the flag, I will get this fixed soon and have an update in the day or so!

@monomango-wieland-hilker @eraxeg @function-store Sorry for the delay on this, I realize some of you posted a while back about this.
If anyone could try the 1.0.5 release and see if that fixed it or if there are any other dll's still missing please let me know!
https://github.com/EnviralDesign/TD-Launcher/releases/tag/v1.0.5

excellent! thanks for checking


Launcher App proposal

This is a full (but initial) description of a Launcher App, that plays the role of an Admin App and a KeyChain for all the other apps as discussed in https://github.com/solid/authorization-and-access-control-panel/issues/45 .
It comes with three sections to address the Problems Solved, the Use Cases and the Success Criteria set by the Panel.
A lot of pieces relating to ontologies and other parts of the acl ecosystem would need then to be worked on for it to be able to address all issues the panel wanted to address.
Much more could be done if COWL were developed further in browsers and if it were to taking into account this use case.

Put in proposals folder

Nice! Could the launcher app also just edit the ACL files? So then there would basically be no spec changes needed, right?

why the Launcher App being or not able to edit files would mean that there would be no spec changes. I suppose it depends which spec changes

I was referring to how your proposal seems to rely on the app launcher keeps keys and issues or signs tokens. If the goal is purely that to decide which access a launched or "installed" app gets, then why not just store that information in acl:origin triples in the appropriate ACL docs on the server, as the current spec already allows?

There are a number of advantages of having the launcher app over relying on the Origin that the panel identified as being important.

The Origin method is too vague a method to individuate Apps. A Company could be providing a number of apps from the same Origin. The LauncherApp allows individuation of apps in a more fine grained way: it can use something like a Manifest URL to identify a type of App, or using the AppId an instance of an App used by an individual. This would allow one to request access for a given AppId, say if one wants to allow access to medical data only to a certain specific App.
The Launcher App can control on the user's behalf which set of resources the App can authenticate to. This would allow a user to start with conservative restrictions on the App while testing it, and later change the policy to be more liberal once his confidence in the App has grown, without needing to change all the ACLs.
If the JS from the Origin were in charge of making keys for an App, the private key could be leaked to the Origin and to other servers, and so the resource server on seeing an Authentication request for an App could not tell if it was the individual App instance belonging to a user, or any other instance used by other users that was authenticating. The Launcher App allows individuation of a User/App instance pair.

Having said that the Origin can still be an important way to individuate organisations that create Apps, and block or allow all the apps from an Origin if needed.
The Launcher App then can provide many additional services for the user.

It can create space for each App on the user's Pod, as it is a good candidate to have administrator rights to do this.
It can maintain policies for the user as to when he should be asked to authenticate, something that is quite important in the Solid context to avoid the user being overwhelmed by authentication requests. (This is actually a problem for TLS client authentication, though it could be solved in the same way if browsers wanted it to, and if enhancements to TLS client cert auth were to see the day to make it function well with HTTP2.0).
It can be a central place to keep the quite complicated authentication and access control logic which otherwise may need to be contained in each individual App, thereby making it easier for people to write Apps, and for progress to be made in authentication logic without this affecting them.
It can of course present all the Apps the user like to use in one place and help her find the metadata for each app, provide feedback on them, etc...

Re your first point 3 (individuation of a User/App instance pair), that sounds promising, nice! That may be a reason to change how our bearer tokens work, yes. But to make that work, the launcher app would need some sort of server-side secret, right? Otherwise the first person to use the launcher app would get access to whatever secret the launcher app uses to produce those signatures?
And yes, our existing acl:origin system is not ideal for native (mobile) apps, but I think that might turn out to be a perpendicular issue to the one a launcher app would solve.
So until then I think it would also be interesting to explore how we can build a launcher app that works with the current spec (i.e., one that just edits the acl:origin triples in the ACL docs).

The Launcher App can  securely create public/private keys and store the private key in the browser storage using JS Crypto API. I implemented that 4 years ago or so to test it. It can be done in a way that it is impossible to ever see the private key.
But yes, one should try to first get the Launcher App to work with some simple code (trying that now) and then with existing protocols, and then finally that would allow one to extend what can be done.


Use apollo-link-state in cart

We should change cart logic to use apollo-link-state instead of local storage to store cart items and use mutation components instead of doing it manually.

@piotrgrundas Do you think this issue is still valid?


Tooltip appears at the bottom of the page

Hello! Help me please to understand why my tooltip appears at the bottom of the page. fiddleLink.
Thanks!

Hi, include Tooltipster's CSS.

Thank you very much!


⚠ Bofrost.at has degraded performance

In 3848213, Bofrost.at (https://www.bofrost.at) experienced degraded performance:

HTTP code: 200
Response time: 3352 ms

Resolved: Bofrost.at performance has improved in 9ee24a0 after 25 minutes.


ContentType question

This might be related to a question just recently asked but I wanted to give specific context to my question.
I have content types in TENANT_APPS in my settings.py file:
TENANT_APPS = (
    'django.contrib.contenttypes',

I have approximately 20 tenants and am trying to set a content_type variable in a Tag to a specific content_type.  There were issues, so I boiled it down to:
from customer.models import Customer
from django.db import connection
from django.db.models import get_model
from django.contrib.contenttypes.models import ContentType
tenants = Customer.objects.exclude(schema_name="public")

for tenant in tenants:
    if not 'public' in tenant.schema_name:
        print('---------------------------------------------')
        connection.set_tenant(tenant)

        # Add the call tags
        app, model = 'call.Call'.split('.')
        class_object = get_model(app, model)
        print('class object {}'.format(class_object))

        ct = ContentType.objects.get_for_model(class_object)
        print('CT {} and CT.id {}'.format(ct, ct.id))

        cts = ContentType.objects.filter(model__icontains='Call')
        print('CTS: {}'.format([(x.id, x) for x in cts if x.name=='Call']))

When I run the above code I get the output below.  What I am confused by is why the CT.id is always "24" from the get_for_model does not match the id when I do the ContentType.objects.filter call.  The last one is what I would expect is correct.
class object <class 'call.models.Call'>
CT Call and CT.id 24
CTS: [(90, <ContentType: Call>)]
---------------------------------------------
class object <class 'call.models.Call'>
CT Call and CT.id 24
CTS: [(55, <ContentType: Call>)]
---------------------------------------------
class object <class 'call.models.Call'>
CT Call and CT.id 24
CTS: [(26, <ContentType: Call>)]
---------------------------------------------
class object <class 'call.models.Call'>
CT Call and CT.id 24
CTS: [(17, <ContentType: Call>)]
---------------------------------------------
class object <class 'call.models.Call'>
CT Call and CT.id 24
CTS: [(60, <ContentType: Call>)]
---------------------------------------------
class object <class 'call.models.Call'>
CT Call and CT.id 24
CTS: [(1, <ContentType: Call>)]
---------------------------------------------
class object <class 'call.models.Call'>
CT Call and CT.id 24
CTS: [(88, <ContentType: Call>)]

I am using django 1.8, Python 3.4 and django-tenants 0.9.1 (yes, slightly older).

I needed to think about your words to have idea what is your problem. And I know it now :)
get_for_model is caching first value. It's better to have ContentTypes in shared apps, as you will encounter such issues, without doing it. If you insist to have it in tenant apps, then you need to overwrite all ContetType cache behaviours to setup multi-tenancy.

Oh, that is interesting.  I just started moving towards that last night with some testing I was doing, but you nailed it.
I added:
ContentType.objects.clear_cache()
after the tenant is set and then everything worked as I expected:
---------------------------------------------
class object <class 'call.models.Call'>
CT Call and CT.id 88
CTS: [(88, <ContentType: Call>)]
CT: Call 88
class object <class 'call.models.Call'>
new CT Call and CT.id 88
---------------------------------------------
class object <class 'call.models.Call'>
CT Call and CT.id 8
CTS: [(8, <ContentType: Call>)]
CT: Call 8
class object <class 'call.models.Call'>
new CT Call and CT.id 8
---------------------------------------------
class object <class 'call.models.Call'>
CT Call and CT.id 4
CTS: [(4, <ContentType: Call>)]
CT: Call 4
class object <class 'call.models.Call'>
new CT Call and CT.id 4
---------------------------------------------
class object <class 'call.models.Call'>
CT Call and CT.id 23
CTS: [(23, <ContentType: Call>)]
CT: Call 23
class object <class 'call.models.Call'>
new CT Call and CT.id 23
---------------------------------------------

So, admittedly I am still a little confused.  Should the ContentType be in the SHARED or TENANT apps?  It seems the ContentType somehow sits on the edge of the whole tenant thing as it caches but sort of across tenants. (My understanding here is limited.)  I would love to understand it a little more so I don't mess things up.  (And thanks for your help)

Sorry for so late response, I overlooked it. From my point of view, if you are not doing anything strange with ContentType you should have it in SHARED apps, it will just share ids for all types. Question is, why you want to have it also in TENANT apps? It will be there already from SHARED.

I don't think it's needed. My big scale production app has no contenttypes app in TENANT_APPS. I would even suggest to have it only there. The opposite situation is only good with very slim SHARED apps where we are not using any contettypes related features.
If you have time you can contribute to docs.


Estimating data transfer costs

As we're getting close to supporting GCP prices (#24), it would be good to start discussing how we can estimate data transfer costs for AWS and GCP (we'll probably use the same mechanism when we add Azure).
Some options I can think of are:

Add one new resource to the infracost terraform provider so users could input total amounts of data transfer for each type (from region to internet, from region to another region, cross-AZ...) and leave infracost to calculate cost estimates. This seems easy to implement but requires users to provide total usage numbers.
Specify data transfer properties on a per-resource basis, possibly using the existing resources (though most resources don't have infracost provider-support yet), and expect users to provide estimates for resources they want, and let infracost sum them up, then calculate cost estimates. This would take more effort to implement, and I'm not sure if users would know these numbers on a per-resource basis?

@aliscott, @shomeprasanjit, @robh007 any thoughts or other options?

The current Infracost provider resources all have a resources attribute that specifies a list of resources that it applies to. We could use a similar concept for this - have a single new resource type for data transfer but use the resources attribute to associate it to a group of cloud resources. This way the user can either specify one or many of these data transfer resources, depending on how they want to associate them to existing resources.

As per our use-case, specifying data transfer properties per-resource does give us the flexibility to quantify and single-out cost per resource basis especially needed during drill down of infrastructure cost.  I think we should think about some mechanism to pass a template to the infracost utility containing specific pre-defined keys (ex: requests/sec, data transfer volume(in/out) etc based on per day/per hour/per month)  and we just fill in the values to it. lastly have infracost to calculate cost estimates.
One more point, I think we should also come up with some default values incase these values are not passed by users and call out those values while showing the output.
let me know your thoughts.

@shomeprasanjit good points, we're seeing the need to have something like an infracost config file so the things you discuss could possibly be set there. As a first cut, if I understand @aliscott's proposal, users could add something like the following to specify per-resource as well as project-wide data transfer properties. These would be summed by infracost and multiplied by the tiered pricing to calculate the total cost.
data "infracost_aws_data_transfer" "my_resource_data_transfer" {
  resources = list(aws_apigatewayv2_api.my_http.id, aws_apigatewayv2_api.my_websocket.id)

  monthly_data_out {
    value = 10 # GB
  }
}

data "infracost_aws_data_transfer" "other_data_transfer" {
  monthly_data_out {
    value = 5 # GB
  }
}

Regarding default values, I think it's worth exploring, maybe as a config option that could be turned on/off, since there are many usage-based resources and infracost showing - for their cost might look odd for first-time users.

Should data transfer prices always be shown in the infracost output since it's a "global" price? the AWS pricing pages always seem to include data transfer prices for all resources.

AFAIK, data transfer cost is usually associated with individual resources. hence should be included in the drill down list of total aggregated cost under each resource.

Thanks @shomeprasanjit! Let's assume the following setup:
data "infracost_aws_data_transfer" "my_resource_data_transfer" {
  resources = list(aws_apigatewayv2_api.my_http.id, aws_apigatewayv2_api.my_websocket.id) # Would be great if we could apply wildcards here too, e.g. 'aws_apigatewayv2_api.my_app1*'

  monthly_data_out {
    value = 10 # GB
  }
}

data "infracost_aws_data_transfer" "other_data_transfer" {
  monthly_data_out {
    value = 5 # GB
  }
}

Since data transfer is tiered, and can be used by most cloud resources, I can think of 3 options for showing it in the infracost output:

Show one data transfer cost component per cloud resource that uses infracost_aws_data_transfer. Use the first non-free tier to calculate the cost. The downside is that tiered prices are ignored, thus we might be over-estimating the costs.
Show one data transfer cost component at the bottom of the infracost output, sum all of the infracost_aws_data_transfer values and calculate the cost using the applicable tiers. The downside is that users won't be able to see the data transfer cost of each resource.
Hybrid of 1 and 2: sum all of the infracost_aws_data_transfer values and calculate the total cost using tiered pricing, then calculate the user's per-GB data transfer price. Show a cost component per cloud resource that uses infracost_aws_data_transfer, as well as one at the end for any non-resource-specific data transfer.

Option 3 is the most complicated to implement but it seems the best for users?

@alikhajeh1, Infracost provides us "before the fact" pricing and hence meant to be ballpark estimates only, so I won't be too concerned about over-estimating.  AFAIC, Option 3 is the best way to describe both resource-specific and non-resource specific (outbound, in-bound traffic) data transfer costs.
And just to be clear we are dealing with on-demand prices only and doesn't include any Savings Plan, right?

@shomeprasanjit yep, initially just on-demand pricing. Longer term we could connect to the users cloud account and take into account Savings Plans, RIs and any custom price books.

I think I might be a bit out of context. As far as I know, we always ignore the free tier in our pricing. So why should we handle it for data transfer costs?

I think I might be a bit out of context. As far as I know, we always ignore the free tier in our pricing. So why should we handle it for data transfer costs?

@sinabakh we're ignoring the free tier for now for data transfer, I updated https://www.infracost.io/docs/supported_resources just now to mention that "Most expensive price tier is used".
@shomeprasanjit https://github.com/infracost/infracost/blob/master/infracost-usage-example.yml#L24-L29 shows an example of how the data transfer can be defined, each block aws_data_transfer.my_resource_1 or aws_data_transfer.my_region will show-up separately in the infracost output. We decided not to implement the tiered price calculation so we can ship the usage-file feature to gather feedback on the approach quicker. We'll get round to calculating price tiers more accurately once users are happy with the usage-based resources :)
Going to close this issue, feedback via comments here or the community Slack channel is welcome. New issues can be created for bugs or other ideas on improving this.

@sinabakh we're ignoring the free tier for now for data transfer, I updated https://www.infracost.io/docs/supported_resources just now to mention that "Most expensive price tier is used".
@shomeprasanjit https://github.com/infracost/infracost/blob/master/infracost-usage-example.yml#L24-L29 shows an example of how the data transfer can be defined, each block aws_data_transfer.my_resource_1 or aws_data_transfer.my_region will show-up separately in the infracost output. We decided not to implement the tiered price calculation so we can ship the usage-file feature to gather feedback on the approach quicker. We'll get round to calculating price tiers more accurately once users are happy with the usage-based resources :)
Going to close this issue, feedback via comments here or the community Slack channel is welcome. New issues can be created for bugs or other ideas on improving this.


Please update the crates.io version to 0.7.0

I cannot change ruma's dependency to ruma-events 0.7.0 because it won't pull it from crates.io. However ruma-events 0.6.0 does not build on my system (it relies on an older ruma-identifiers which doesn't compile)

Yikes, good catch! Sorry I forgot to publish to crates.io when I tagged 0.7.0. It's published now.


There is no way to display and control iOS 17.4 Iphone 13 Xcode 15.3 Mac OS WebDriverAgent no custom

There is no way to display and control iOS, I attach screenshots and logs. Everything worked on another Mac Mini on iOS 16.6  In GADS version 1.40, Xcode 14.3.1

{"event":"provider_setup","level":"info","msg":"Starting provider on port 10001","time":"2024-07-23T15:41:47+03:00"} {"event":"provider_setup","level":"info","msg":"Checking if Appium is installed and available on the host","time":"2024-07-23T15:41:47+03:00"} {"event":"provider_setup","level":"info","msg":"Checking if Appium is set up and available on the host PATH","time":"2024-07-23T15:41:47+03:00"} {"event":"provider_setup","level":"info","msg":"Provider runs on macOS and is set up to provide iOS devices","time":"2024-07-23T15:41:48+03:00"} {"event":"provider_setup","level":"debug","msg":"Handling trailing slash of provided WebDriverAgent repo path if needed","time":"2024-07-23T15:41:48+03:00"} {"event":"provider_setup","level":"debug","msg":"Provided WebDriverAgent repo path has no trailing slash, adding it","time":"2024-07-23T15:41:48+03:00"} {"event":"provider_setup","level":"debug","msg":"Checking if provided WebDriverAgent repo path exists on the host","time":"2024-07-23T15:41:48+03:00"} {"event":"provider_setup","level":"info","msg":"Checking if xcodebuild is set up and available on the host (Xcode is installed)","time":"2024-07-23T15:41:48+03:00"} {"event":"provider_setup","level":"info","msg":"Building WebDriverAgent for testing using xcodebuild in path /Users/Shared/appium-webdriveragent/with command/usr/bin/xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination generic/platform=iOS build-for-testing -derivedDataPath ./build","time":"2024-07-23T15:41:48+03:00"} {"event":"webdriveragent_xcodebuild","level":"debug","msg":"Command line invocation:","time":"2024-07-23T15:41:49+03:00"} {"event":"webdriveragent_xcodebuild","level":"debug","msg":"    /Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination generic/platform=iOS build-for-testing -derivedDataPath ./build","time":"2024-07-23T15:41:49+03:00"} {"event":"webdriveragent_xcodebuild","level":"debug","msg":"","time":"2024-07-23T15:41:49+03:00"} {"event":"webdriveragent_xcodebuild","level":"debug","msg":"User defaults from command line:","time":"2024-07-23T15:41:49+03:00"} {"event":"webdriveragent_xcodebuild","level":"debug","msg":"    IDEDerivedDataPathOverride = /Users/Shared/appium-webdriveragent/build","time":"2024-07-23T15:41:49+03:00"} {"event":"webdriveragent_xcodebuild","level":"debug","msg":"    IDEPackageSupportUseBuiltinSCM = YES","time":"2024-07-23T15:41:49+03:00"} {"event":"webdriveragent_xcodebuild","level":"debug","msg":"","time":"2024-07-23T15:41:49+03:00"} {"event":"webdriveragent_xcodebuild","level":"debug","msg":"Prepare packages","time":"2024-07-23T15:41:49+03:00"} {"event":"webdriveragent_xcodebuild","level":"debug","msg":"","time":"2024-07-23T15:41:49+03:00"} {"event":"webdriveragent_xcodebuild","level":"debug","msg":"ComputeTargetDependencyGraph","time":"2024-07-23T15:41:49+03:00"} {"event":"webdriveragent_xcodebuild","level":"debug","msg":"note: Building targets in dependency order","time":"2024-07-23T15:41:49+03:00"} {"event":"webdriveragent_xcodebuild","level":"debug","msg":"note: Target dependency graph (2 targets)","time":"2024-07-23T15:41:49+03:00"} {"event":"webdriveragent_xcodebuild","level":"debug","msg":"    Target 'WebDriverAgentRunner' in project 'WebDriverAgent'","time":"2024-07-23T15:41:49+03:00"} {"event":"webdriveragent_xcodebuild","level":"debug","msg":"        ➜ Explicit dependency on target 'WebDriverAgentLib' in project 'WebDriverAgent'","time":"2024-07-23T15:41:49+03:00"} {"event":"webdriveragent_xcodebuild","level":"debug","msg":"    Target 'WebDriverAgentLib' in project 'WebDriverAgent' (no dependencies)","time":"2024-07-23T15:41:49+03:00"} {"event":"webdriveragent_xcodebuild","level":"debug","msg":"","time":"2024-07-23T15:41:49+03:00"} {"event":"webdriveragent_xcodebuild","level":"debug","msg":"GatherProvisioningInputs","time":"2024-07-23T15:41:49+03:00"} {"event":"webdriveragent_xcodebuild","level":"debug","msg":"","time":"2024-07-23T15:41:53+03:00"} {"event":"webdriveragent_xcodebuild","level":"debug","msg":"CreateBuildDescription","time":"2024-07-23T15:41:53+03:00"} {"event":"webdriveragent_xcodebuild","level":"debug","msg":"","time":"2024-07-23T15:41:53+03:00"} {"event":"webdriveragent_xcodebuild","level":"debug","msg":"ClangStatCache /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang-stat-cache /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS17.4.sdk /Users/Shared/appium-webdriveragent/build/SDKStatCaches.noindex/iphoneos17.4-21E210-99a79c02cfa501706f5b564e46d84afe.sdkstatcache","time":"2024-07-23T15:41:53+03:00"} {"event":"webdriveragent_xcodebuild","level":"debug","msg":"    cd /Users/Shared/appium-webdriveragent/WebDriverAgent.xcodeproj","time":"2024-07-23T15:41:53+03:00"} {"event":"webdriveragent_xcodebuild","level":"debug","msg":"    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang-stat-cache /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS17.4.sdk -o /Users/Shared/appium-webdriveragent/build/SDKStatCaches.noindex/iphoneos17.4-21E210-99a79c02cfa501706f5b564e46d84afe.sdkstatcache","time":"2024-07-23T15:41:53+03:00"} {"event":"webdriveragent_xcodebuild","level":"debug","msg":"","time":"2024-07-23T15:41:53+03:00"} {"event":"webdriveragent_xcodebuild","level":"debug","msg":"** TEST BUILD SUCCEEDED **","time":"2024-07-23T15:41:53+03:00"} {"event":"webdriveragent_xcodebuild","level":"debug","msg":"","time":"2024-07-23T15:41:53+03:00"} {"event":"provider_setup","level":"info","msg":"Checking if go-ios binary is set up and available on the host PATH","time":"2024-07-23T15:41:53+03:00"} {"event":"ios_device_setup","level":"info","msg":"Running setup for device00008110-001230360E78401E","time":"2024-07-23T15:41:58+03:00"} {"event":"ios_device_setup","level":"info","msg":"Mounting DDI on device 00008110-001230360E78401Ewith command[ios image auto --basedir=./provider1/devimages], image will be stored/found in ./provider1/devimages","time":"2024-07-23T15:41:58+03:00"} {"event":"ios_device_setup","level":"debug","msg":"goIOSForward: Forwarding port with command [ios forward 55675 9500 --udid=00008110-001230360E78401E]","time":"2024-07-23T15:41:59+03:00"} {"event":"ios_device_setup","level":"debug","msg":"goIOSForward: Forwarding port with command [ios forward 55674 8100 --udid=00008110-001230360E78401E]","time":"2024-07-23T15:41:59+03:00"} {"event":"ios_device_setup","level":"debug","msg":"goIOSForward: Forwarding port with command [ios forward 55676 9100 --udid=00008110-001230360E78401E]","time":"2024-07-23T15:41:59+03:00"} {"event":"webdriveragent_xcodebuild","level":"debug","msg":"startWdaWithXcodebuild: Starting WebDriverAgent with command [xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination platform=iOS,id=00008110-001230360E78401E -derivedDataPath ./build test-without-building]","time":"2024-07-23T15:41:59+03:00"} {"event":"ios_device_setup","level":"info","msg":"Successfully started WebDriverAgent for device 00008110-001230360E78401Eforwarded on port 55674","time":"2024-07-23T15:42:03+03:00"} {"event":"ios_device_setup","level":"debug","msg":"updateWebDriverAgent: Updating WebDriverAgent session and mjpeg stream settings for device00008110-001230360E78401E","time":"2024-07-23T15:42:03+03:00"} {"event":"device_setup","level":"debug","msg":"Starting Appium on device 00008110-001230360E78401Ewith command[appium -p 55726 --log-timestamp --session-override --log-no-colors --default-capabilities {"appium:udid":"00008110-001230360E78401E","appium:mjpegServerPort":"55676","appium:clearSystemFiles":"false","appium:webDriverAgentUrl":"http://localhost:55674","appium:preventWDAAttachments":"true","appium:simpleIsVisibleCheck":"false","appium:wdaLocalPort":"55674","appium:automationName":"XCUITest","platformName":"iOS","appium:deviceName":"Iphone 13","appium:wdaLaunchTimeout":"120000","appium:wdaConnectionTimeout":"240000"}]","time":"2024-07-23T15:42:03+03:00"}
{"ts":1721738524246,"msg":"Welcome to Appium v2.11.2 (REV c92adb3c479d70bb29f4399a808c972ef41510e7)","appium_ts":"2024-07-23 12:42:04:242","log_type":"Appium","session_id":""} {"ts":1721738524248,"msg":"Non-default server args:","appium_ts":"2024-07-23 12:42:04:248","log_type":"Appium","session_id":""} {"ts":1721738524250,"msg":"{ logNoColors: true, logTimestamp: true, port: 55726, sessionOverride: true }","appium_ts":"2024-07-23 12:42:04:250","log_type":"Appium","session_id":""} {"ts":1721738524250,"msg":"Default capabilities, which will be added to each request unless overridden by desired capabilities:","appium_ts":"2024-07-23 12:42:04:250","log_type":"Appium","session_id":""} {"ts":1721738524251,"msg":"{ 'appium:udid': '00008110-001230360E78401E',","appium_ts":"2024-07-23 12:42:04:251","log_type":"Appium","session_id":""} {"ts":1721738524251,"msg":"The autodetected Appium home path: /Users/d_khlebest/.appium","appium_ts":"2024-07-23 12:42:04:251","log_type":"Appium","session_id":""} {"ts":1721738524251,"msg":"Attempting to load driver xcuitest...","appium_ts":"2024-07-23 12:42:04:251","log_type":"Appium","session_id":""} {"ts":1721738524252,"msg":"Attempting to load driver uiautomator2...","appium_ts":"2024-07-23 12:42:04:252","log_type":"Appium","session_id":""} {"ts":1721738524255,"msg":"Requiring driver at /Users/d_khlebest/.appium/node_modules/appium-xcuitest-driver/build/index.js","appium_ts":"2024-07-23 12:42:04:255","log_type":"Appium","session_id":""} {"ts":1721738524259,"msg":"Requiring driver at /Users/d_khlebest/.appium/node_modules/appium-uiautomator2-driver/build/index.js","appium_ts":"2024-07-23 12:42:04:259","log_type":"Appium","session_id":""} {"ts":1721738525099,"msg":"XCUITestDriver has been successfully loaded in 0.847s","appium_ts":"2024-07-23 12:42:05:099","log_type":"Appium","session_id":""} {"ts":1721738525101,"msg":"AndroidUiautomator2Driver has been successfully loaded in 0.847s","appium_ts":"2024-07-23 12:42:05:099","log_type":"Appium","session_id":""} {"ts":1721738525112,"msg":"Appium REST http interface listener started on http://<IP_ADDRESS>:55726","appium_ts":"2024-07-23 12:42:05:112","log_type":"Appium","session_id":""} {"ts":1721738525113,"msg":"You can provide the following URLs in your client code to connect to this server:","appium_ts":"2024-07-23 12:42:05:113","log_type":"Appium","session_id":""} {"ts":1721738525114,"msg":"Available drivers:","appium_ts":"2024-07-23 12:42:05:113","log_type":"Appium","session_id":""} {"ts":1721738525114,"msg":"  -<EMAIL_ADDRESS>(automationName 'XCUITest')","appium_ts":"2024-07-23 12:42:05:114","log_type":"Appium","session_id":""} {"ts":1721738525115,"msg":"  -<EMAIL_ADDRESS>(automationName 'UiAutomator2')","appium_ts":"2024-07-23 12:42:05:114","log_type":"Appium","session_id":""} {"ts":1721738525115,"msg":"No plugins have been installed. Use the \"appium plugin\" command to install the one(s) you want to use.","appium_ts":"2024-07-23 12:42:05:114","log_type":"Appium","session_id":""}

I don't see any errors in the logs, but that 502 status code when checking the device health seems off. Are you using actual IP address for the provider or something like localhost or <IP_ADDRESS>? I don't believe I've seen this but I'll try to reproduce

Thanks for the reply, I use localhost

Okay, I'll test with localhost, I use actual local network IP address at all times and might have missed something. The custom WebDriverAgent should work the same way as mainstream WebDriverAgent as long as it's signed properly - what is the problem there, device not becoming available at all?

It worked when I changed everything localhost to ip address! Thanks a lot

It worked when I changed everything from localhost to an ip address! Thanks a lot

Amazing, let me know if you encounter other issues so I can work on them :P


Added Unyson and updated frameworks

Added Unyson framework

Fixed PHP notices in cronjobs

Enabled update for frameworks

Updated all frameworks information with cronjobs/weekly-update.php script

@moldcraft thank you so much for spending the time to set it locally 👍  I'm glad you managed to do it. Having said that, could you please either clean the PR from all the compiled files or submit it as a new PR?

I will do, but I am curious why you can't accept it with compiled files?

@vovafeldman Done

silence is golden

@moldcraft don't worry, I didn't forget about your PR. We will be merging all the submit frameworks soon (don't forget it's a side project and that we have a busy full time jobs). Appreciate your patience.

Hey @moldcraft, I was checking your homepage and I'm trying to figure out if Unyson is a framework or actually a page builder for websites. Can you please help me out with the decision?

Unyson has:

Option-types (and the possibility to create your own)
Built-in Extensions
Helper functions
It integrates with theme

Here are the themes made with Unyson

@moldcraft thanks! Final question, you mentioned that it's both for themes and plugins. If it's a drag & drop theme builder, why would I want to use it as a framework for my plugin? Do you have an example plugin that uses it?

I set plugins to false

I manually added it https://github.com/Freemius/IncludeWP/blob/master/src/frameworks/unyson.php
And I have another question. Once a developer finish to build a theme with the plugin, what happens next? How this developer redistribute the theme? Does the theme require the plugin? Does the theme developer include the plugin in the theme's folder?

The theme requiers the plugin via TGM.
Thank you!

@moldcraft the framework is now listed on the site https://includewp.com/
The scraper didn't find any matching plugins/themes on .org. It could be one of the following:

The framework isn't used by any .org plugin / theme.
The framework is loaded using TGMPA (not yet recognized by IncludeWP).
Something wrong with the thumbprint.

If you know there's a plugin/theme using it for sure, please share the URL so we can check why it wasn't recognized.

Great! I don't know any theme on wp.org built with Unyson. Most of the themes are on ThemeForest and they require Unyson with TGM


Emacs readline key bindings in insert mode

I can see some emacs readline key bindings are supported in insert mode (e.g. C-w) and some are not (e.g. M-f)
Have found no info about it in README. Can you please clarify about emacs readline key bindings?

Hi @edshamis
Thanks for your issue, and sorry for the late reply, currently I'm quite busy, you're welcome to contribute to the document if you want. Hope you have a good day! : )
Thanks and Regards


Add support for Traditional Chinese

This looks like #6061. Did you make two PRs by accident?

No, this one is for Hong Kong, other one is for Taiwan.


add eMMC support?

Hi, any plans or timeline for supporting eMMC?

1+
wait for eMMC  too
best wishes
rudi ;-)

Implemented in https://github.com/espressif/esp-idf/commit/31cbd1b251eff20368fe30d8551c71cb46c50a2d based on PRs #1941 and #590.


[core] Optimize branches system table when specifying branch_name

Purpose
Optimize branches system table when specifying branch_name

Linked issue: close #xxx

Tests

API and Format

Documentation

Nice catch, but maybe need consider about branch usage in real production.

Hi @herefree thanks for the contribution.
But I can hardly imagine a situation with too many branches, so there's no need to optimize it here.


Question: new dimension in bonsaitrees3

Why does version Bonsai Trees 3 v3.0.1 and higher adds the new dimension called bonsaitrees3:growtown?

Forcing the world running under experimental settings
Teleporting into this dimension will generate structures from other mods
can't find any setting to disable this "feature"

related commit:
https://github.com/thraaawn/BonsaiTrees/commit/9420f4cbb7dcfc4ffcf43d712e2868730975eb2f
quote: "It might burn your world to the ground with it. You have been warned."
guess this should not be enabled by default?

It's a dimension that can be used to generate the model json files.
You know a way to make dimensions optional via config? I couldn't find it.
Or how to prevent modded structures from being generated? Is that possible by now?
Every mod that adds a dimension causes that warning dialog to appear, use Shutup Experimental Settings! to get rid of it.
That message relates to the command used to generate the trees there.
How does it bother you? What did you intend to do when you teleported there? How did you teleport there without being opped or in creative mode?

correct "Every mod that adds a dimension causes that warning", but this mod does not need it own dimension for normal gameplay proposes.
"How does it bother you?"

A normal player does not need to generate model json files
having a new dimension cost cpu time, even very little
this should be an optional feature only, never be part of a release version

"You know a way to make dimensions optional via config? "

most likely not, hence the solution is to keep this feature in a separate branch for development proposes only

"Or how to prevent modded structures from being generated? Is that possible by now?"

unclear to me, dimension should ne be available in normal game mode in the first time.

"What did you intend to do when you teleported there? How did you teleport there without being opped or in creative mode?"

checked it out put of interest
of course we used commands to get there.

Pack devs need to generate model files. There needs to be an easy way to generate model files. Adding support for other mods is the single most requested feature for this mod. This command allows you to do that yourself.
The dimension is never used or even generated if you don't load it up first. No CPU impact at all, except a few ms during load time.
I can't make it an optional feature as dimensions can not be optional. The only way would be to create a separate mod...
If I keep it in a separate branch then pack makers and others wanting to create mod support will not have access to it.
A normal player isn't able to get there in the first place.

There are good reasons for having it, not many for not having it. I honestly can't think of a good reason against it besides the optional dependency on the Shut Up Experimental Settings mod. There is simply nothing else that impacts players in any way because there is another dimension registered.

"The dimension is never used or even generated if you don't load it up first."
Reason I saw this dimension in the first place was that I checked the load using /forge tps, which listed the dimension, this proves that is it generated and loaded.
Closing Ticket as this is and intended behavior, and questions are clarified.


Panics when edid is null

If the edid pointer is null, the library crashes.
I was able to get this to happen with the uefi target, using qemu on wsl, and the extra options --enable-kvm -debugcon stdio
panicked at library/core/src/panicking.rs:219:5:
unsafe precondition(s) violated: slice::from_raw_parts requires the pointer to be aligned and non-null, and the total size of the slice not to exceed `isize::MAX`

#![no_std]
#![no_main]

use core::arch::asm;
use core::fmt::{Result, Write};

use limine::request::FramebufferRequest;
use limine::BaseRevision;

pub struct Console;

impl Write for Console {
    fn write_str(&mut self, s: &str) -> Result {
        for b in s.bytes() {
            unsafe {
                asm!("out dx, al", in("dx") 0xe9, in("al") b);
            }
        }
        Ok(())
    }
}

#[used]
static BASE_REVISION: BaseRevision = BaseRevision::new();
#[used]
static FRAMEBUFFER_REQUEST: FramebufferRequest = FramebufferRequest::new();

#[no_mangle]
unsafe extern "C" fn _start() -> ! {
    assert!(BASE_REVISION.is_supported());

    Console.write_fmt(format_args!(
        "edid: {:?}\n",
        FRAMEBUFFER_REQUEST
            .get_response()
            .unwrap()
            .framebuffers()
            .next()
            .unwrap()
            .edid()
    ));

    hcf();
}

#[panic_handler]
fn rust_panic(info: &core::panic::PanicInfo) -> ! {
    Console.write_fmt(format_args!("{}", info));
    hcf();
}

fn hcf() -> ! {
    unsafe {
        asm!("cli");
        loop {
            asm!("hlt");
        }
    }
}

Oh, interesting. This was totally my bad, I didn't realize it ever would be null! I'll review your PR.
P.S. thank god for assert_unsafe_precondition :)


Feat: Configure next/pwa to create a PWA Application

Define You

[ ] Hacktoberfest Participant
[ ] Contributor
[x] Maintainer

Hi @SarthakSKumar ,
I love to contribute to this issue,
plss assign this issue

Assigned @its-abhishek :)

Issue Resolved @its-abhishek . Closing now.
Thank you :)


djinni implementation question

I want to use djinni (https://github.com/dropbox/djinni) to generate obj-C, Java, and C++ from an interface definition file. I would like to make a fipsified version of it.
My question is, how best to implement this?

Do I create a fips verb that calls the djinni script and somehow allow other projects to call that verb with its own arguments as a dependency?
Or do I create a fips djinni cmake macro that can somehow create targets with arguments that fips can understand?
Another suggested implementation method?

From first glance it looks like a good scenario for fips code-generator. A code generator is basically a python script which is called from cmake to create target files from source files. Here's the section from the docs:
http://floooh.github.io/fips/codegen.html
The advantage is that this is fully integrated into the build process. When the source files are edited, the code-generator will automatically be run.
Here are examples from Oryol and my emulator:
Sprite sheet generator:
This converts a PNG file and sprite-defintions into an embedded C source file:

the source 'inplace' python script: https://github.com/floooh/oryol-samples/blob/master/src/Paclone/sprites.py
the resulting C header/source pair: https://github.com/floooh/oryol-samples/blob/master/src/Paclone/sprites.h, https://github.com/floooh/oryol-samples/blob/master/src/Paclone/sprites.cc
the fips-specific CMakeLists.txt call: https://github.com/floooh/oryol-samples/blob/master/src/Paclone/CMakeLists.txt#L12
an additional helper python script imported by the above generator script: https://github.com/floooh/oryol/blob/master/fips-generators/SpriteSheet.py

Import MagicaVoxel files into embedded C header/source pair

the python generator script: https://github.com/floooh/oryol-samples/blob/master/fips-generators/ImportVox.py
the cmake file entry: https://github.com/floooh/oryol-samples/blob/master/src/KC85-3/CMakeLists.txt#L8, in this case the generated C header/source pair is generated 'out of source' and not committed into version control

Shader Code Generator
This is the most complex use-case so far, it parses a 'annotated GLSL' shader source files, translates them to various GLSL dialects, HLSL and MetalSL, checks for error by calling offline shader compiler tools, and translates the errors back to IDE format.

a simple shader source file looks like this: https://github.com/floooh/oryol/blob/master/code/Samples/Triangle/shaders.shd
it is added to the build with an Oryol specific cmake macro: https://github.com/floooh/oryol/blob/master/code/Samples/Triangle/CMakeLists.txt#L4
the custom cmake macro looks like this: https://github.com/floooh/oryol/blob/master/fips-include.cmake#L189
and here's the code-generator script (pretty big though): https://github.com/floooh/oryol/blob/master/fips-generators/Shader.py

Read emulator ROM dumps:
Here's another simple example which loads binary dumps and writes them into a C array:

the generator script: https://github.com/floooh/yakc/blob/master/fips-generators/dump.py
how it's added to the build: https://github.com/floooh/yakc/blob/master/src/yakc/CMakeLists.txt#L17
a YAML file, which defines what to dump: https://github.com/floooh/yakc/blob/master/src/yakc/roms/roms.yml
and what's generated: https://github.com/floooh/yakc/blob/master/src/yakc/roms/roms.h, https://github.com/floooh/yakc/blob/master/src/yakc/roms/roms.cc

Z80 instruction decoder
And finally here's a code-generator example which creates a Z80 instruction decoder source using an 'inplace' python script:

the python script: https://github.com/floooh/yakc/blob/master/src/yakc/z80_opcodes.py
the generated C++ source: https://github.com/floooh/yakc/blob/master/src/yakc/z80_opcodes.cc
how it's added to the build: https://github.com/floooh/yakc/blob/master/src/yakc/CMakeLists.txt#L15

I hope this helps :)
-Floh.

Thank you for this detailed response. It does seem to be a perfect fit for my scenario. I will go down this road for implementation, thank you! 👍

djinni generates many files when invoked, is it possible for fips_generate to support multiple HEADER and SOURCE arguments?
Perhaps it would make sense to implement HEADERS and SOURCES multivalve arguments?

TL;DR: not possible at the moment, but see bottom for a workaround using 'verbs'
Yes, that's a current limitation. I'll write a feature ticket that multiple target files should be supported, it should be doable but affects both the cmake as well as python side.
I can't promise a delivery date though. I also can't think of a simple workaround the at the moment, at least one that would fully integrate with the build process. The problem is the multiple generated .cpp files which need to be included in the build, if djinni would just generate headers it would be easy (those don't need to be included as build files, only included somewhere else). Since cmake doesn't accept non-existing files as input, the code-generated writes empty dummy files when cmake is run to workaround that chicken-egg-situation.
I guess until this is fixed another workaround is to run djinni as a 'fips verb', verbs are python scripts in a project's fips-verb which can then be run as './fips [verbname] [args]'. Have a look here: https://github.com/floooh/oryol/tree/master/fips-verbs
These scripts need to implement a 'help' and a 'run' function (check the 'testrunner.py' script which is fairly simple:
https://github.com/floooh/oryol/blob/master/fips-verbs/testrunner.py
The run() function takes 3 args: fips_dir, proj_dir and args. Args is an array of string following the verb name, and proj_dir ist the absolute path to the project.
For instance, if you have a file 'djinni.py' in your project's (or a dependency project's) fips-verbs directory, you can run './fips djinni' to invoke that script, this would need to happen when the djinni input files change (that's the drawback versus the generators, which would run automatically at build time).
You would also need to add the generated files manually to the CMakeLists.txt files where they are needed.
I hope this works as a first workaround until it is possible to define multiple target files for generators...
Cheers,
-Floh.


Tag new release

I need to use the code from https://github.com/spatie/pdf-to-image/pull/205 in our project, as without the fix in the constructor it consistently fails to run. Using dev-main is a workaround, but not preferred.
@freekmurze / @patinthehat Can you please tag a release?

@bobvandevijver I can't tag a release on this repository, but I'm sure @freekmurze will be able to when he's available.

@freekmurze Any chance you can create a release?

We have forked this library and removed the imagick dependency requirement in favour of direct Ghostscript calls. See https://github.com/Drenso/pdf-to-image.

@bobvandevijver are you open to a pr that provides the option for what you implemented?

No, I have given up on this repository as there is clearly no interest in community contributions.

@bobvandevijver Not true at all.  Spatie has over 200 repositories to maintain, and sometimes things get lost in the noise.  Why don't we collaborate on a PR and I'll make sure it gets reviewed/considered for merge/release?
I can't promise @freekmurze will accept a PR for this, but I know he'll give it fair consideration.


Helm without internet

I am trying to use helm in AWS eks but all the document says to use the below command to install tiller
helm init --service-account tiller
The above command is downloading the package from Internet but in our prod environment we don’t have Internet, I can download the image and put this in ecr but where will u mention the ecr image path as the above command is not an yaml file also is it recommended to run helm offline ?

@dhineshbabuelango You can use the --tiller-image flag on init to set an alternate location to pull the image from. You can use this to set it to your location in ecr. Will that work?

@mattfarina thanks for your reply, this will work for us, I can give a try in this. But if there is any update in the tiller image, can we run the same tiller command specifying the new image name ?

@dhineshbabuelango yes but add the --upgrade flag.

Thanks mattfarina for your help


[New Feature]: CSV option for DATA SUMMARY of bach-ui

Checked for duplicates
Yes - I've already checked
Alternatives considered
Yes - and alternatives don't suffice
Related problems
There have been situations that OPS team wanted to list the files that have not had PUBLISHED status. Yet unable to extract the result of DATA SUMMARY from bach-ui.
Describe the feature request
It is nice to be able to extract the result of DATA SUMMARY from bach-ui as a CSV files for more analysis or archiving purposes.

Add download or export button for CSV file

@chrisjrd Can we change

the 3rd column (metadata) to filename and just list filename on the CSV file
filename to save include current time (ex. data_summary_20240410.csv)


Update Magnum submodules with support for querying MeshData size from Python

Motivation and Context
I was actually false-advertising on the call that it's possible to query trade.MeshData.index_data and trade.MeshData.vertex_data size from Python. So I added those.
For images, trade.ImageData2D.data was a thing before already. Those are byte array views, so len() is the byte count.
Also contains all other submodule updates that are a part of #1874 as well. Nothing controversial or attention-worthy there, since all those changes are mostly just related to glTF export that only the batch renderer uses.
How Has This Been Tested
My CIs pass.

Nit: on the magnum-bindings. You cast from handle to C++ back to handle with py::cast(self). You could just have self start as py::handle cast to C++ and save a conversion.

Hm, but there I need to access self.indexData() for example. So I would need to (manually) cast to C++ anyway, no? Not sure what you mean exactly.

Hm, but there I need to access self.indexData() for example. So I would need to (manually) cast to C++ anyway, no? Not sure what you mean exactly.

Ah, I guess in this case it doesn't make quite as much sense. It's very useful for when you are using only python APIs. Also, it would save you a python->C++->python roundtrip, but probably not worth the added complexity here.

Yeah, here it's not that much of a perf bottleneck, so I prefer to have it done the least error-prone way possible.
Anyway, thanks for the hints, as always. Much appreciated :)


[WIP] Coda_base signature refactor

This contains the in progress refactor to move coda_base over to the coda_spec signature pattern.
This is a WIP and needs some attention before merging. The compiler is running out of memory due to build flags passed by dune. I'm going to spend 2 hours to change the coda_spec pattern to attempt to mediate this for now while an alternative is figured out with dune.

Closing due to bitrot. Plan is to re attempt this work soon, but in a slightly different fashion.


Feature: Ability to extract stack trace from zapcore.Field

Hi there,
I currently have all my systems using logging middleware to log errors. This means that the stack trace associated with the error log is not relevant and is always fixed because it is using the call stack from the middleware, not where the error is raised.
Many errors have the ability to capture their stack trace at the time they were created.
It would be great to have the zapsentry.core{} be customizable in order to extract the stack trace from the given []zapcore.Field.
I believe this is the code that would need changing:
		if event.Exception == nil && !c.cfg.DisableStacktrace && c.client.Options().AttachStacktrace {
			stacktrace := sentry.NewStacktrace()
			if stacktrace != nil {
				stacktrace.Frames = filterFrames(stacktrace.Frames)
				event.Threads = []sentry.Thread{{Stacktrace: stacktrace, Current: true}}
			}
		}

Rather than using sentry.NewStacktrace(), it we could call a customizable function that accepts the []zapcore.Field from the core.Write() method. The default implementation could just call sentry.NewStacktrace() but in my situation, I can look for the error in any of the []zapcore.Fields that are errors.
If this is something that you think would be valuable and if you think this is the right approach, I would be happy to create a PR.

Okay I had time to try this out today and it looks like it's not as simple as I would have hoped.
The stack trace extraction from the error actually happens in the sentry package, not zapsentry.
Digging into how the sentry package does it, they use reflection to find certain methods (not sure why they didn't just use an interface). I ended up implementing a method StackFrames() []uintptr on my error and then I started seeing the stack trace from my error show up in Sentry.


[refactor]: remove unused dependencies

Description

Linked issue

Closes #{issue_number}

Benefits

Checklist

[ ] I've read CONTRIBUTING.md
[ ] I've used the standard signed-off commit format (or will squash just before merging)
[ ] All applicable CI checks pass (or I promised to make them pass later)
[ ] (optional) I've written unit tests for the code changes
[ ] I replied to all comments after code review, marking all implemented changes with thumbs up

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
6866 unchanged lines in 128 files lost coverage.
Overall coverage decreased (-3.4%) to 56.039%

Files with Coverage Reduction
New Missed Lines
%

client/src/lib.rs
1
0.0%

cli/src/torii/pagination.rs
1
98.9%

config/src/block_sync.rs
1
95.0%

config/src/network.rs
1
93.75%

config/src/torii.rs
1
96.43%

config/src/wasm.rs
1
87.5%

core/src/smartcontracts/isi/block.rs
1
87.5%

config/base/derive/src/proxy.rs
2
98.11%

config/src/kura.rs
2
79.41%

config/src/lib.rs
2
0.0%

Totals

Change from base Build<PHONE_NUMBER>:
-3.4%

Covered Lines:
21923

Relevant Lines:
39121

💛  - Coveralls