server render time takes too long.

with angular 2.4.5 server render took less then 130ms. Recently I upgraded to 4.0.0 and now it takes    2.5 seconds and more. Any ideas what went wrong?!

Yikes that's an enormous jump! Is this from a fresh pull down of this Repo here?
I haven't seen times like that, I was seeing around 150-200ms I believe (with all the things his repo has).
Do you have any very long Http processes, setTimeout / setIntervals or Rx timeouts intervals in your code? Any of those could delay it as well.

there is only one http request for /home and it makes no difference if I remove it.  The only diff I can think of is, after update (pull and merged latest from spnetcore-angular2-universal) there was issue with webpack html loader so I replaced templateUrl with template: require(''). Could it be the issue?

I also have prerendering time in order of 2000-3000ms.
But I have heavy nginx cachging in front of app so it's not terrible.
I have one http call that takes arround 100-200ms.
my node bundle is still on JIT. Does that mean it is compiled for every request ?
I can't manage to implement AOT as I can't reference .ngfactory module in genDir. I receive module cannot be found error.

JIT means it compiling for every request yes.
The new engine will accept both, but it automatically compiles JIT ngModules to AoT, but of course in prod you'll always want to supply the AoT one.
I'm not sure and not by a computer at the moment I could check a few things tonight @consigliory but I don't see why that would slow it down to that magnitude.

there is no file at . './ngfactory/app/server-app.module.ngfactory'. it looks like it should be generated but it is not. How can I generate it?

back to AoT it is all great but your previous project setup was able to render same code in 120ms. Looks like somehow templateUrl and require('..') have some difference and changing back to templateUrl it improved from 2.5 sec to 1.1 second. but it still huge difference

I don't think 120ms render time for JIT is possible for any non trivial app.
I could not hit <500ms bootstrap time in browser with JIT with all cached using service worker.

Hey Guys,
I am currently redoing the website of the company I work for. I deployed the project to Azure, but when accessing the site it takes about 13 seconds till the server responds (Time to first byte)..
Any idea what the issue is? :) I have not had the chance to deploy it to a different server to see whether Azure is the problem.. Where would you deploy a website done with this project?
Thanks!

@consigliory @hheexx so AoT is loading really fast just DevMode isn't right? JIT SSR is just very slow, but I have a big commit coming this morning that actually auto compiles your NgModule to AoT during a server render and caches it (so it doesn't have to keep doing that), this helps performance a lot. I saw 1-2 renders go down to 300-ish ms.
The ngAspnetCoreEngine has been upgraded a lot (in this next commit), soon it'll be in the official Universal repo and npm (instead of hidden inside the polyfills folder 😀).
Double checking everythuhg and I'll be getting this in shortly today! 🎁

@patrickgoeler Do you have some sort of timeout / interval / (extremely long Http) the server is waiting for? That doesn't sound right.

No I do not, what I am doing is getting Bootstrap 4, jQuery and Tether via Cdn and we have a whole bunch of images in the site. Also we are handling Bootstrap features like modals with native bootstrap and not ng-bootstrap (yet). Dont know if that makes a difference..

@MarkPieszak mine node is under JIT. I can't configure AOT as I can't reference module factory in virtual filesystem.
I get module not found error.
I guess I am waiting for new version of ngtools to support platform-server..

I've upgraded the engine to auto compile your JIT to AoT, and cache them.
Of course for Prod you want to only provide AoT to skip this auto-compile step entirely.
The engine only does SSR with AoT now, so that will help performance a lot, you might see the first 1 or 2 slightly slower when in DEVELOPMENT, but then they'll speed up a lot. I was seeing 100-300ms. (occasionally 15ms, not sure how/why :))
Also I need to remove those CDNs I noticed those are slowing the server response tremendously from time to time...
Merged PR #179

Does not help me as I can't reference ngfcatory :/
import { ServerAppModuleNgFactory } from './ngfactory/app/server-app.module.ngfactory';

You must have your webpack and tsconfig references setup wrong? If you're using the repo it ignores that file unless you're specifying the AoT webpack config (which ends up using it instead of the normal main.server)

I don't know what could be wrong.
I am using combination of this repo and microsoftjavascriptservices template.
I have genDir specified in tsconfig but I can't reference no file in it.

Made it!
One problem was that AotPlugin does not support instancing it twice.
So I had to change script (like this theme) to call webpack separately to render for node and for browser.
The other problem was I thing that entry module requires full path

My render times had fallen from 3000ms-7000ms to 100ms-300ms
🎉

@MarkPieszak Hello Mark,
I have been following your achievements with universal as I am really impressed with it. I have followed all the github repo to build application with universal as I needed it fully rendered HTML for seo.  but I had a situation with my Angular app TTFB it takes about 7 seconds to byte. which I am really it's really huge for it. I have tried everything on the web to increase it's performance with luck. I used App Shell, Webpack and even changed my server to nginx to serve static content but it's the same. Also another problem that the page takes about 18 seconds to fully which is really huge. Although I am using i18n because the application it's multi language. When I used App shell, my TTFB decreased to 60 ms which is ideal but the probelm that the page only rendered in the static html for the homepage for the whole app. If i tried to analyze any route it will return the same html which will effect my SEO. I understand that I can use csr and google can index it but i don't want to target only google and can be indexed from any craweler.
However, I tried using prerender instead of server side and it did it's magic and loaded the page very quickly but the problem that my web app is really huge have about 80k routes which is not logic. Although that I have a huge server that can store all of this but I thought that's would be stupid idea. Do you know any ideas to solve this situation. you will find below my website link and please let me know what do you think with this situation!!!


fabricbeat availability in fabric-sample code base for easy exploration and understanding.

Can you make fabricbeat available in fabric-sample code base for easy exploration and understanding.
getting more insights on the hyperledger is very useful by collecting information using the fabricbeat.

cc @christo4ferris @balazsprehoda


Meilisearch indexes are deleted after docker restart on local dev

Describe the bug
Dear dev team.
After docker is down indexes are deleted for some reason.
I mean after commands like:
docker-compose down && docker-compose up -d
But data from the other volumes like pgsql is not deleted.
Is it possible to leave indexes untouchable? Do you know why this is happening?
At the moment need to create search indexes every time after docker restart.
To Reproduce
docker-compose down && docker-compose up -d
Expected behavior
Search indexes will stay after docker-compose restart.
**Desktop (please complete the following information):

OS: Win10
Google Chrome v108.0.5359.125

Additional context
I forked the repo and try fresh install with docker-compose.
Containers started and seems to work.
I try to upload folder structure as a project draft. Here I meet problems.
Add any other context about the problem here.

Thanks @karillio, Can you plz share the script?


Enhance arbitrary shapes with background

The new feature to fill arbitrary shapes with a background as discussed in #1262 and implemented by #1315 is amazing. That being said it would be even more useful to me if it flexibility was added.
While I can draw something like this: (a showcased in the tweet)

It is impossible for me to draw a real star which I would expect to look like this:

This would require hiding parts of the line inside of the shape and filling the full area. I actually needed this when trying to draw a heart. All shapes that have an inward crinkle ar otherwise impossible to fill as the lines always curve.
You thus have to cross into your shape to achieve the shape you are aiming for.

What you're referring to is how vector boolean operations work.
In the star example, it can be easily done by not crossing the lines. Same for the heart.
But I agree drawing some shapes will be hard until we support modifying existing points, and having access to underlying brezier handles.
https://excalidraw.com/#json=5747189271756800,hYrYNjqaH3ec7gtjT9HhGA

Btw, I'm an artist and getting the heart shape to look like heart, I had to make a scaffolding first :smile:

@dwelle That's how WebGL renders a heart 😄

Typically (in SVG for example) you fill using an 'even-odd' rule or a 'non-zero' rule. Only support evenodd rule here. Bit in non-zero mode, you don't hide the lines but fill over them. Here's a shape rendered in two modes:

Since we don't want to add more buttons to the UI, what about double click on that element to change the fill mode?!

@lipis  roughjs doesn't support the other mode yet for hachure and cross-hatch fills :(
For solid fills, it is an undocumented feature at the moment.

A ok... something for the future then.


XFCE problem on ChromeOS with Crouton.

Hello everyone, I'm trying to use XFCE on ChromeOS, and it works perfectly, but when I reboot my laptop when I try to enter i get this problems:
I've tried to update crouton, but this happens everytime, also with the update.
chronos@localhost / $ sudo startxfce4
Entering /mnt/stateful_partition/crouton/chroots/precise...
/usr/bin/startxfce4: Starting X server
_XSERVTransmkdir: Owner of /tmp/.X11-unix should be set to root
X.Org X Server 1.11.3
Release Date: 2011-12-16
X Protocol Version 11, Revision 0
Build Operating System: Linux 2.6.42-61-generic x86_64 Ubuntu
Current Operating System: Linux localhost 3.10.18 #1 SMP Thu Nov 5 13:16:07 PST 2015 x86_64
Kernel command line: cros_secure console= loglevel=7 init=/sbin/init cros_secure oops=panic panic=-1 root=/dev/dm-0 rootwait ro dm_verity.error_behavior=3 dm_verity.max_bios=-1 dm_verity.dev_wait=1 dm="1 vroot none ro 1,0 2506752 verity payload=PARTUUID=cb49efc8-2109-464e-8197-cbb2ff5d60da/PARTNROFF=1 hashtree=PARTUUID=cb49efc8-2109-464e-8197-cbb2ff5d60da/PARTNROFF=1 hashstart=2506752 alg=sha1 root_hexdigest=770f81d54576018227015302c59e437bf52cf808 salt=b978197594c759e42a0c475c519fa3dc35cadcff1ce5e735ac1892eb4894477b" noinitrd vt.global_cursor_default=0 kern_guid=cb49efc8-2109-464e-8197-cbb2ff5d60da add_efi_memmap boot=local noresume noswap i915.modeset=1 tpm_tis.force=1 tpm_tis.interrupts=0 nmi_watchdog=panic,lapic
Build Date: 12 February 2015  02:49:01PM
xorg-server 2:1.11.4-0ubuntu10.17 (For technical support please see http://www.ubuntu.com/support)
Current version of pixman: 0.30.2
Before reporting problems, check http://wiki.x.org
to make sure that you have the latest version.
Markers: (--) probed, (**) from config file, (==) default setting,
(++) from command line, (!!) notice, (II) informational,
(WW) warning, (EE) error, (NI) not implemented, (??) unknown.
(++) Log file: "/tmp/Xorg.crouton.2.log", Time: Tue Dec  8 10:17:02 2015
(==) Using system config directory "/usr/share/X11/xorg.conf.d"
Fatal server error:
no screens found
Please consult the The X.Org Foundation support
at http://wiki.x.org
for help.
Please also check the log file at "/tmp/Xorg.crouton.2.log" for additional information.
ddxSigGiveUp: Closing log
Server terminated with error (1). Closing log file.
/usr/bin/xinit: giving up
/usr/bin/xinit: unable to connect to X server: No such file or directory
/usr/bin/xinit: server error
Unmounting /mnt/stateful_partition/crouton/chroots/precise...
Thanks for help!

im having the same problem

To better help both of you, we'll need to see the output of: sudo edit-chroot -all
Along with the exact command you used to install the chroot.
Thanx,
-DennisL


No syntax highlighting in XML document tag after Omnisharp is loaded

Issue Description
Before Omnisharp is loaded (initialization in progress):

After Omnisharp is loaded:

Steps to Reproduce
Just waiting for Omnisharp to load.
Expected Behavior
XML document tag should have syntax highlighting.
Actual Behavior
No syntax highlighting for XML document tag.
Logs
OmniSharp log

Starting OmniSharp server at 3/3/2022, 11:01:51 AM
    Target: PATH_TO_SOLUTION
OmniSharp server started with .NET 6.0.102
.
Path: /home/ultimaweapon/.vscode/extensions/ms-dotnettools.csharp-1.24.1/.omnisharp/1.38.1-net6.0/OmniSharp.dll
PID: 5904
    Starting OmniSharp on Unknown 0.0 (Unknown)

    Checking the 'DOTNET_ROOT' environment variable to find a .NET SDK

    DotNetPath set to /usr/share/dotnet/dotnet

    Located 1 MSBuild instance(s)
        1: .NET Core SDK 6.0.102 17.0.0 - "/usr/share/dotnet/sdk/6.0.102/"

    Registered MSBuild instance: .NET Core SDK 6.0.102 17.0.0 - "/usr/share/dotnet/sdk/6.0.102/"

    Invoking Workspace Options Provider: OmniSharp.Roslyn.CSharp.Services.CSharpFormattingWorkspaceOptionsProvider, Order: 0

    Invoking Workspace Options Provider: OmniSharp.Roslyn.CSharp.Services.ImplementTypeWorkspaceOptionsProvider, Order: 110

    Detecting projects in 'PATH_TO_SOLUTION'.

    Queue project update for 'PATH_TO_PROJECT'

...
    Detecting CSX files in 'PATH_TO_SOLUTION_DIR'.

    Did not find any CSX files

    Configuration finished.

    Omnisharp server running using Stdio at location 'PATH_TO_SOLUTION_DIR' on host 5711.

    Loading project: PATH_TO_PROJECT

    Successfully loaded project file 'PATH_TO_PROJECT'.

    Adding project 'PATH_TO_PROJECT'

...
    Update project: PROJECT_NAME

...
    Solution initialized -> queue all documents for code analysis. Initial document count: 630.

C# log
Blank
Environment information
VSCode version: 1.64.2
C# Extension: 1.24.1
Mono Information
        OmniSharp using built-in mono
Dotnet Information
.NET SDK (reflecting any global.json):
 Version:   6.0.102
 Commit:    49861cb924
Runtime Environment:
OS Name:     arch
OS Version:
OS Platform: Linux
RID:         arch-x64
Base Path:   /usr/share/dotnet/sdk/6.0.102/
Host (useful for support):
Version: 6.0.2
Commit:  839cdfb0ec
.NET SDKs installed:
6.0.102 [/usr/share/dotnet/sdk]
.NET runtimes installed:
Microsoft.AspNetCore.App 3.1.20 [/usr/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 6.0.2 [/usr/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.NETCore.App 3.1.20 [/usr/share/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 6.0.2 [/usr/share/dotnet/shared/Microsoft.NETCore.App]
To install additional .NET runtimes or SDKs:
https://aka.ms/dotnet-download

Visual Studio Code Extensions

Extension
Author
Version

autoconf
maelvalais
0.1.0

cpptools
ms-vscode
1.8.4

csharp
ms-dotnettools
1.24.1

go
golang
0.31.1

i18n-ally
lokalise
2.8.1

latex-workshop
James-Yu
8.23.0

ooxml-viewer
yuenm18
1.2.0

rust
rust-lang
0.7.8

vala
prince781
1.0.5

vetur
octref
0.35.0

vscode-antlr4
mike-lischke
2.2.4

vscode-github-actions
me-dutour-mathieu
3.0.1

vscode-yaml
redhat
1.4.0

This is related with issue #3816

Looks exactly the same. I'll close mine.


[TODO][Inductor UT dependency] NotImplementedError: elapsed_time is not supported by XPUEvent

🚀 The feature, motivation and pitch
NotImplementedError: elapsed_time is not supported by XPUEvent
Alternatives
No response
Additional context
No response

@guangyey could you please update the status for this issue?

depends on 2025.0

PR submitted: https://github.com/pytorch/pytorch/pull/140873

done on main branch.


40 set the age when creating humans

Forgot a quick bug.

Thanks for the feedback!
Yes, many of the loops are unnecessary. Seems like I just stopped thinking there...
And regarding overwriting children, now that I take a look again I'm surprised the simulation even runs and doesn't get into an infinite loop ... I planned to use != in the while part to make sure only Adults were overwritten but my mind must've went to "only assign a different value if Adult" and gotten them mixed up.
Anyways I'll see to it, that I fix my stuff before pestering everyone again.

Thanks for the feedback!
Yes, many of the loops are unnecessary. Seems like I just stopped thinking there...
And regarding overwriting children, now that I take a look again I'm surprised the simulation even runs and doesn't get into an infinite loop ... I planned to use != in the while part to make sure only Adults were overwritten but my mind must've went to "only assign a different value if Adult" and gotten them mixed up.
Anyways I'll see to it, that I fix my stuff before pestering everyone again.

No problem at all! This is exactly what the reviews are for, to get right on track with the feedback again. Don't stress yourself too much.

Assignment now uses one loop and one stream, at the cost of some complexity (I hope the comments explain what is going on well enough)
The possible infinite loop should also be gone.


Add [square-]brackets/parenthesis icons and improve curly-braces/json metadata

I still think these are way too small.
Top row current, bottom row with this change, correlate these with most monospace fonts: https://fonts.google.com/?preview.text=<{}>&preview.text_type=custom&category=Monospace

Chevrons and braces usually have a ratio much closer to our current version.

correlate these with most monospace fonts:
…
Chevrons and braces usually have a ratio much closer to our current version.

Some of those do have equal height though…
Since this is an icon font (nobody is going to be using Lucide for actually coding (I hope! 😅) I’m not sure trying to match (most, but not all) existing monospace font proportions is a more important goal than having them look nice and consistent as a set…
@karsa-mistmere So are you pushing for the elongated versions, or saying just curly-braces should be, with the others smaller (or just chevrons) or some other combination…?
On a related note: should chevrons-left-right and code really be 2 separate icons?

I’m not sure trying to match (most, but not all) existing monospace font proportions is a more important goal than having them look nice and consistent as a set…

You know, that's exactly my point: I don't think they're going to look consistent at all if their ratios are utterly unlike 99.9% of real life examples. :)
I've done some research:

Fontawesome

Material Icons

Codicons

Bootstrap icons

Remix Icon

Phosphor Icons

Tabler icons

Unicons

Most have ratios pretty similar to what we currently have, and in every single one of them the curly braces are taller if only by a little.

On a related note: should chevrons-left-right and code really be 2 separate icons?

Ouch. That's a tough nut, and something we should probably investigate further.
Maybe chevrons-* icons should match the base chevron size, but I'm not entirely sure. It might be more consistent, but it's maybe somewhat less balanced:

On a related note: should chevrons-left-right and code really be 2 separate icons?

Should those be icons at all :wink:

@karsa-mistmere Ok, so just pushed those changes… You can see how they are modelled here:

The chevrons-*/code thing can be dealt with in a separate PR if necessary…

What do we think about this set being called simply brackets, parentheses and braces (with the latter being renamed from the current curly-braces, and curly moved to a tag)?

What do we think about this set being called simply brackets, parentheses and braces (with the latter being renamed from the current curly-braces, and curly moved to a tag)?

Yeah, that would definitely work for me, but let's wait for @ericfennis' input first.

And for now something completely different: why are you using force push? 🤔

I keep running into the error above because of these, and I think it's generally not a good idea anyway, since with force pushes, we're losing some of the commit history and history about changes made.
It's not a super big deal per se, but it certainly makes it harder to review your pull requests, since by the time I get to some notifications, the respective changes will have already been overwritten, so if it's not absolutely necessary, I would very much appreciate it if you just used regular pushes. 😅

We're force squashing them anyway, but while they're a work in progress, it's better to see all the revisions. :)

We're force squashing them anyway, but while they're a work in progress, it's better to see all the revisions. :)

Ok, cool.

What do we think about these for bracket-dot and bracket-error (from codicons)… too much?

@danielbayley: Not totally sure, but in either case, braces-dot should use the same dot as bell-dot will, or the other way around.

@danielbayley @karsa-mistmere I'm ok with renaming them. These are the official names. But we maybe should aliases for backwards compatibility.

@danielbayley @karsa-mistmere I'm ok with renaming them. These are the official names. But we maybe should aliases for backwards compatibility.

Done.


Page nesting

Successfully finished a site a couple days ago with your starterkit – thx, worked great!
Concerning another project: is the following nesting structure supported by your starterkit:
Page 1
Page 2
Page 3
   |
   Page 3.1
   Page 3.2
      |
      Page 3.2.1
      Page 3.2.2
      Page 3.2.3

Urls would then be for example
www.example.com/cities/rome/theatres
www.example.com/cities/rome/museums
www.example.com/cities/rome/restaurants
Or is the nesting limited to for example
www.example.com/cities/rome
Thanks again!
(Sorry, don't know how to add the github "question" label.)

You can add nested levels by yourself.

Edit: https://github.com/johannschopplich/kirby-vue3-starterkit/blob/fa9bc8c3e8aaacd60e505b8750481e2ef70559b2/frontend/src/router/index.js#L17

const routes = [
  // ...
  // Add these lines below the `site.children` spreaded array
  ...site.grandchildren
    .filter(page => page.childTemplate)
    .map(page => ({
      path: `/${page.uri}/:id`,
      component: () => import(`../views/${capitalize(page.childTemplate)}.vue`).catch(() => Default)
    }))
]

Add grand children below children key: https://github.com/johannschopplich/kirby-vue3-starterkit/blob/fa9bc8c3e8aaacd60e505b8750481e2ef70559b2/site/config/spa-site.php#L6

'grandchildren' => array_values(
  site()
      ->grandChildren()
      ->published()
      ->map(fn($child) => [
          'uri' => $child->uri(),
          'title' => $child->title()->value(),
          'isListed' => $child->isListed(),
          'template' => $child->intendedTemplate()->name(),
          'childTemplate' => $child->hasChildren() ? $child->children()->first()->intendedTemplate()->name() : null
      ])
      ->data()
),

Have fun!

You can add nested levels by yourself.

Edit: https://github.com/johannschopplich/kirby-vue3-starterkit/blob/fa9bc8c3e8aaacd60e505b8750481e2ef70559b2/frontend/src/router/index.js#L17

const routes = [
  // ...
  // Add these lines below the `site.children` spreaded array
  ...site.grandchildren
    .filter(page => page.childTemplate)
    .map(page => ({
      path: `/${page.uri}/:id`,
      component: () => import(`../views/${capitalize(page.childTemplate)}.vue`).catch(() => Default)
    }))
]

Add grand children below children key: https://github.com/johannschopplich/kirby-vue3-starterkit/blob/fa9bc8c3e8aaacd60e505b8750481e2ef70559b2/site/config/spa-site.php#L6

'grandchildren' => array_values(
  site()
      ->grandChildren()
      ->published()
      ->map(fn($child) => [
          'uri' => $child->uri(),
          'title' => $child->title()->value(),
          'isListed' => $child->isListed(),
          'template' => $child->intendedTemplate()->name(),
          'childTemplate' => $child->hasChildren() ? $child->children()->first()->intendedTemplate()->name() : null
      ])
      ->data()
),

Have fun!

@TobeyEh I'm curious. Did you succeeded implementing nested pages?

@TobeyEh I'm curious. Did you succeeded implementing nested pages?

Hi, wow, thanks I will try it asap! The kirby panel structure has not been set up yet so I couldn't test is yet. Later this evening though. I just wanted to ask in advance if it's even possible, if not I would have just used the non-Vue starterkit.

Hi, wow, thanks I will try it asap! The kirby panel structure has not been set up yet so I couldn't test is yet. Later this evening though. I just wanted to ask in advance if it's even possible, if not I would have just used the non-Vue starterkit.

Cool! No rush. It's a good question. If I write dedicated docs one day, I'll put in in the FAQ section.
As I said, haven't tested locally myself, but it should work. Every route level has to be passed to the router, I've only included two levels as default – similar to the starterkit.

Cool! No rush. It's a good question. If I write dedicated docs one day, I'll put in in the FAQ section.
As I said, haven't tested locally myself, but it should work. Every route level has to be passed to the router, I've only included two levels as default – similar to the starterkit.

Hey! I have only tested it locally in a very simple setup but it really seems to work! 🎉
Thanks again for your great starterkit support! I will keep you posted concerning the level nesting.

Hey! I have only tested it locally in a very simple setup but it really seems to work! 🎉
Thanks again for your great starterkit support! I will keep you posted concerning the level nesting.


Fix vertical scroll bug

Fixes #25

@thegeorgeous can you rebase this pr to fix the conflicts ?

This is breaking the layout.

Working fine for me. In firefox.

Working on a UI redesign. This will be fixed in next version.


[FEATURE REQUEST] Case insensitive sessions

Will your endless flood of issues ever stop
Maybe. Probably not. Please feel free to close / decline to address / defer indefinitely any of them, or ask that I batch issues up with very condensed descriptions to save you time in reading them :)
Is your feature request related to a problem? Please describe.
It's difficult to say if this is truly a problem. If it is a problem, I don't yet know the scale of it as I need to review the data I have
The Behavior
In some configurations, you will see something like this (the 3 numbers you see there are line count, word count and count, respectively, a shortened output I use sometimes when sanity-checking/testing my post-processor)
...
http://redacted.co.za/views/admin.html 24 45 2
...
http://redacted.co.za/Views/admin.html 24 45 2         <--- Effectively a duplicate, if the server/app ignores case
...

I included the full JSON rows for these at the end in case you wanted to be sure I wasn't misreading the output
In some server/application configurations of course, case sensitivity is "a thing" so this behavior is certainly not wrong- it's correct, and is very possibly by design. However, it's not always desirable
Describe the solution you'd like
Perhaps provide an option to avoid making an "identical" request more than once- where identical is determined by ignoring the case of the URL paths
Ideally, this would mean that http://redacted.co.za/views/admin.html is only requested once, rather than twice with slightly differing case
It's probably fair to say this is a silly nitpick and/or a non-issue. I need to measure how frequently this actually occurs as it's not something I've noticed many times before. The best course of action may be for me to collect more data before even considering taking any action, unless you feel that it would be simple (and desirable) to make changes
Describe alternatives you've considered

Ensure your word-list is in a uniform case

This doesn't seem to help in this particular scenario, it occured with a wordlist that is tolower()'d. If this is not expected behavior, I included my full configuration below. I considered it may be related to --extract-links, where the word-list caused the first request (with lowercase /views) and extraction of the links caused the second one (with uppercase /Views. This would explain not seeing it happen too frequently

Remove the duplicates in post-processing (with an app, or a shell utility like tr or jq, to normalize the case of the URL path in the results)

This is a trivial solution for sure and provides the desired output; the deficiency with that solution is that it doesn't prevent the requests from occurring, it just acts as a filter. If this occurs often, at scale, it adds up to a lot of unnecessary requests- I'm not too concerned about this happening when used for 1, 2, 10 or 30 endpoints

Additional context
I don't consider this a significant issue, and won't until I have time to quantify the frequency/volume of it. I wanted to at least bring it to your attention though. I wonder if it may be more of an edge-case than anything else and may only occur when --extract-links is enabled, as mentioned above
In case this was unexpected behavior and you're curious about the details (or want to verify I'm not misinterpreting the data), full configuration and unabridged JSON rows follow...
*** Configuration ***
depth = 5
extensions = ["php", "asp"]
extract_links = true
filter_regex = [ "^<title>Request Rejected", "\n<TITLE>Access Denied</TITLE>\n\n
Access Denied
", "Reference&#32"]
filter_word_count = [6455]
insecure = true
json = true
no_recursion = false
quiet = false
redirects = false
save_state = false
scan_limit = 45
silent = false
status_codes = [200, 204, 301, 307, 308, 401, 403, 405]
time_limit = "5m"
timeout = 8

Unabridged Output Rows

{
"type": "response",
"url": "http://redacted.co.za/views/admin.html",
"path": "/views/admin.html",
"wildcard": false,
"status": 200,
"content_length": 830,
"line_count": 24,
"word_count": 45,
"headers": {
"accept-ranges": "bytes",
"server": "Microsoft-IIS/10.0",
"x-powered-by": "ASP.NET",
"date": "Thu, 19 Aug 2021 05:13:51 GMT",
"content-length": "830",
"last-modified": "Sun, 12 Jul 2020 11:39:47 GMT",
"content-type": "text/html",
"etag": ""265539254158d61:0""
}
}
{
"type": "response",
"url": "http://redacted.co.za/Views/admin.html",
"path": "/Views/admin.html",
"wildcard": false,
"status": 200,
"content_length": 830,
"line_count": 24,
"word_count": 45,
"headers": {
"content-type": "text/html",
"last-modified": "Sun, 12 Jul 2020 11:39:47 GMT",
"x-powered-by": "ASP.NET",
"server": "Microsoft-IIS/10.0",
"etag": ""265539254158d61:0"",
"accept-ranges": "bytes",
"date": "Thu, 19 Aug 2021 05:14:14 GMT",
"content-length": "830"
}
}

Thank you for the report, as always!
A few quick comments:

i'm pretty sure i already prevent duplicate requests (the code i'm thinking of was there at the start, so it's been a minute). Duplicate here implies case-sensitivity tho.s
I think it's a fair assumption that --extract-links is the culprit, if your wordlist was all lowercase

I think I'm pretty much ok with this behavior as it is, based on what you've told me.  My reasoning is that ferox isn't requesting anything you haven't explicitly asked for.  You've asked for the words in your wordlist. Additionally, you've opted into the unknown grab-bag of extracting links from source. I feel like this should probably be chalked up to expected behavior.
I'm going to leave this open for discussion, and for any other data you find/wish to share (i'd be interested to know of any further analysis you perform). I'm not necessarily opposed to the suggestion, but don't see it as a need.

i'm pretty sure i already prevent duplicate requests (the code i'm thinking of was there at the start, so it's been a minute). Duplicate here implies case-sensitivity tho.s
I think it's a fair assumption that --extract-links is the culprit, if your wordlist was all lowercase

I figured as much- I'm considering this a non-issue for now and will close it.
If I end up seeing this in large numbers later (I'm not expecting this) I'll look a little more closely and reopen with actual measurements rather than an anecdote
Thanks for taking the time


Research using arbitrary docker containers as plugins

Each running container would interface with Tetra by setting hooks, protocol hooks and commands using either a modified RFC 1459 frame style (UID as identifier) or as json objects using Json-RPC.

This would be a cool thing to have implemented, but it is not a goal at this time.


Add some aliases for x86

i386, i686, etc. should all be implemented by the x86 binary.
Also fixed up some text on README about supported platforms, since the library is using the uber/h3 version for it's major and minor version numbers.

Pull Request Test Coverage Report for Build 34

14 of 14 (100.0%) changed or added relevant lines in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.05%) to 98.193%

Totals

Change from base Build 33:
0.05%

Covered Lines:
326

Relevant Lines:
332

💛  - Coveralls

Pull Request Test Coverage Report for Build 35

14 of 14 (100.0%) changed or added relevant lines in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.05%) to 98.193%

Totals

Change from base Build 33:
0.05%

Covered Lines:
326

Relevant Lines:
332

💛  - Coveralls

The test failure here should be addressed in #14.


CIP-0061? | Stake-based Protocol Governance Restrictions

Abstract
The Cardano journey was divided into several phases, the last of which relates to the decentralization of the network governance. We call this last phase: 'Voltaire'. While Voltaire is in the making, some aspects of the protocol remain relatively centralized and under the control of a few entities. This proposal improves on the current status quo by adding a layer of control to the Stake Pool Operators (a.k.a. SPOs) and by extension, to delegators. This proposal is fairly lightweight and can be implemented without a hard fork.
Motivation
Decentralized governance is a hard topic and it is likely to take some time to get to a point where Cardano has a fully working decentralized governance. In the meantime, while tolerated until now, the current status quo is judged unacceptable by many. As of today, the number of entities that can control the current set of governance operations is limited. Those operations include:

Protocol parameters updates
Protocol versions updates
Transfers to and from the reserve (a.k.a MIR transfers)
Transfers to and from the treasury (a.k.a MIR transfers)

At this stage, any such operation can be performed if and only if a quorum of 5 out of 7* genesis members is reached. Genesis members represent here keys that were assigned to the three founding entities: Input Output, Emurgo and the Cardano Foundation. Because the current quorum limit is 5 and because of the current distribution of the genesis key (3 - 2 - 2), it suffices for only 2 out of the 3 funding entities to perform such an operation.
Over the past months and years, this topic has been at the centre of many vigorous debates. We thus think that the current status quo has to change.

* This ratio is currently configurable via a protocol parameter.

Specification
We propose to modify the current ledger rules and node configuration to, by default, reject any update proposal or MIR transfer unless they have been explicitly referenced in the node configuration. We propose to make this behaviour optional and only enforced on block-producing nodes (so that, downstream applications such as full-node wallets are not affected unless they desire to).
More concretely, the node's configuration will be extended to contain a list of pre-authorized transaction ids. Upon validating transactions in blocks, containing either:

Protocol parameter updates proposals;
MIR certificates

the ledger will check for the existence of the carrying transaction in the pre-authorized set. Unless present, the transaction will be deemed (phase-1) invalid.
Rationale

By doing this, we force any sensitive operation such as update proposals or MIR transfers to be endorsed by a majority (by stake) of block producers. Indeed, only nodes that have endorsed the operation in their configuration will produce and recognize chains containing the operation. This also means that in a situation of no consensus, the network will inevitably fork between those who endorse the update and those who don't. Ultimately, the longest chain rule will apply and the chain that can produce the most blocks will eventually be adopted. That chain will be the one which is endorsed by the most stake (since the block production is roughly proportional to the stake).

This mechanism means that it'll be impossible to endorse an update unless accepted by the majority of nodes (weighted by the stake they "control"). It is important to remark that this mechanism is highly asymmetric:

If the majority of the nodes are NOT endorsing an update, then the network will fork until the majority successfully produce a longer and denser chain than the minority. Then, since that chain would still be valid from the point of view of the minority, it'll eventually be adopted following the longest chain rule. This effectively prevents the founding entities from rolling out updates by themselves, without the endorsement of the majority of the network.

However, if the majority of the nodes are endorsing an update, then, in the case where there exists a minority, it will be impossible for the minority to ever adopt the longest chain produced by the majority unless they also in turn accept the update. In case they don't, they would seemingly be unable to produce new blocks; resulting in a segregated network being formed. If the minority is too large (e.g. 40% vs 60%), this may also drastically reduce the active stake for the rest of the network maintained by the majority and decrease the overall efficiency of the network.

It'll be therefore ill-advised for the founding entities to push an update that isn't endorsed by a crushing majority.

An immediate consequence of this is that power is also implicitly given to delegators. Because the block production is ultimately determined by stake; should there be a disagreement between an SPO endorsement and its delegators', they would have the opportunity to re-delegate and move their stake away from the SPO, and effectively reduce its influence in the network.

This change can be implemented by adding extra validations to the ledger. This would consequently diminish the number of blocks that are considered valid and thus, do not require a hard fork. In fact, a hard fork is required when the number of valid blocks is made greater. The proposal also does not change any of the existing binary formats or even, any of the existing procedures when it comes to updates. This seemingly means that updates can still only be issued by the founding members. Yet, it forces them to bring them for discussion and approval before.

While this proposal makes it slightly more complicated for the founding entities to create updates (as they are now required to (a) coordinate with the community and (b) pre-create the transaction in a deterministic manner), the technical complexity of endorsing an update for SPOs boils down to adding a line in a configuration file. It is also easy to verify that the added line indeed corresponds to the update since it is a mere transaction id.
In particular, Catalyst funds distribution is done through MIR transfers, and this proposal would require every ada-holder (through their SPO) to endorse every MIR transfer coming from Catalyst. In practice, the full list of transfers can be pre-constructed by the founding entities and shared as one configuration file which can be verified manually at first, and automated afterwards.

Backward Compatibility

Any previous protocol parameter update, hard-fork proposals or MIR transfers can be found on-chain and listed in the configuration, to make the existing chain valid;
Or, we could only enable the restrictions after a certain slot, removing the need for specifying any past governance operation (and thus, trimming down a bit the configuration).

Path To Active

[ ] Discuss feasibility and consequences of the proposal with the core networking, consensus and ledger teams;
[ ] Discuss the proposal with the ada holder community as well as Stake Pool Operators;
[ ] Implement the new configuration scheme in the ledger & cardano-node;
[ ] Roll out a new soft update to activate the mechanism on all nodes of the network

Today although Cardano stake is liquid there is essentially two sets of problems

People may not be motivated to move stake. Look at Ada in retired pools. My pool which closed months back itself has 10k and yes IOG has 4k rewards sitting in my retired pool
ISO. ISO are temporary but some run for months, During this time stake moves and centralizes around ISO supported pools. MELD and Sundae showed us a preview of this. Exchanges add another dimension altogether. Few centralized exchanges and few Dex (with ISO) can control.

The current rewards scheme is mainly meant for stake to be delegated such that it maximizes  rewards. For example I love poolX because it gives me maximum rewards but i dont probably agree with the pool operator's view on parameter. So I would probably diverge on parameters. Now I dont want to  move my stake because I am a player according to the rewards paper whose main goal is to maximize rewards.
Stake decentralization is the key.
Current rewards scheme is not suitable for governance.

Few things I am thinking

if you can add Pledge to Delegation ratio in this. So voting power is based on Pledge to delegation
If I choose to run a full-node wallet or a full-node then I should have the ability to override delegation. The idea is network is as secure as number of full-nodes running. Bitcoin has shown what people can do with their full nodes (not miners) incase of forks. This is a little more tricky to implement.

I think Pledge to delegation ratio is a must. Currently there is no other parameter to quantify "skin in game"

meanwhile over on the Cardano Forum: Lets have a discussion about the Governance (BFT) keys

I think Pledge to delegation ratio is a must. Currently there is no other parameter to quantify "skin in game"

The IOG governance team is currently working on voting delegation for Catalyst/Voltaire - the idea is to have separate representative groups for different voting purposes, as well as direct voting if preferred.  That proposal allows representatives to declare their Ada holdings (via stake keys) to demonstrate "skin-in-the-game" if that is an issue for voters.  We expect this to be available from Fund10 (needs wallet support, for example).
Be careful with pledge to delegation ratios - you can end up giving some "whales" significant influence (as we discovered with a0)

Note that this proposal gives a veto to the SPOs on all governance decisions. This is not necessarily a good thing, and I would argue that it is a bad direction to go in.
In my view, in principle, governance should be controlled by the stake holders (directly or indirectly). While the stakeholders do delegate to SPOs for block production, their interests are not perfectly aligned with the interests of SPOs, so it is not (in my view) appropriate to delegate governance decisions to them too.
The SPOs necessarily have a veto on protocol upgrades that involve software changes, since the SPOs must deploy the software, but I would not give them a vote or a veto on other governance decisions.

How do the SPOs publicly signal their support for a given future proposal? There has to be a way to measure "overwhelming support" for a proposal before the key-holders choose to submit it.

I voiced a similar concern on the Twitter thread. I don't feel comfortable giving SPOs so much power, especially since exchanges are also staking their user's funds.
Indirectly related to this proposal I think the very  first and easiest step should be for CF to take back control over their two genesis keys.
While it is probably more difficult to implement, I would very much prefer a direct vote by ADA holders on update proposals and treasury/reserve Tx (why is it possible to manipulate the reserve at all by the way?). I think it is important to make it an active process in which each stake holder can vote with yes or no, weighted by their stake.
During this transition time I could also imagine a process, similar to what's described in the CIP where SPOs can signal their approval AND Ada holders can cast their vote on the Catalyst side chain. The signal and vote wouldn't have any technical effect, but would still send a strong signal to the genesis key holding entities if the community is d'accord with the upgrade.

How do the SPOs publicly signal their support for a given future proposal? There has to be a way to measure "overwhelming support" for a proposal before the key-holders choose to submit it.

This is a good point. Currently, the only thing that a SPO can publicly signal support for is a hardfork, via the major protocol version listed in the block header. The pre-authorization of txids actually undermines this mechanism: a node operator could update their software before a hardfork (and hence start producing blocks promoting the new major protocol version), and chose to not pre-authorize the transaction which includes the major protocol version update. Hence the metric is lest trustworthy.

I wanted to share and discuss a few thoughts:
This effectively drops the MAV of Cardano from 23 to 5. The US Government does issue/use thousands of National Security Letters per year to force businesses/ISP's/ect to secretly comply [with force]. The US Government will/has use secret courts and secret court proceedings to force power. I hope the genesis keys are divided to 7 different people, each protected with a different password, and the QR code encrypted recovery keys are engraved into teflon sheets and buried all over Charles' vast property (no metal detectors).
Imagine CIP-61 succeeds. We don't want a situation where a cabal of sybil-multipool-operators, exchanges, hedge funds, and wealth managers decide to collect 51% and vote themselves the $500M treasury. We don't want a cabal to decide to set a0 of the current equation to 10.0. a0=10.0 in the current RSS equation would totally destroy self-custodial non-pledged staking. We don't want a cabal to set the minimum pool fee to 1000 because that would destroy the majority of small pools. We need to make sure the MAV keeps growing for Voltaire governance to be safer (CIP-50 topic space).
There could be a stake pool operator 'house' and 'senate' where the 'house' votes are weighted by stake and the 'senate' is 1 pool 1 vote composed of every pool with at least 36 blocks on-chain more than 72 epochs old. This would prevent any 'quick' attempt at a governance attack. The consensus threshold cannot be configurable and should likely be set to a super-majority: 66% house && 66% senate? There would be no construct for a judicial (Code is already law) or executive (No president figure) branches. This construction could be incorporated into Charles' recommendation of a crypto users' constitution and bill of rights.
This governance mechanism needs to be as solid as an embedded device firmware updater, allow for safe bootstrapping of Cardano Governance.
The network should be hard-coded to reject parameters which would cripple it, such as setting the maximum transaction size equal to 0 or setting the minimum UTxO amount to 1e6. Parameters should be configurable within a sane range. Should we hard-code an automatic rejection to transactions which attempt to spend more than 10% of the treasury every 5 epochs?
I agree that it would be wise to have a mechanism where operators could broadcast support for one or more competing proposals.

I will, for now, close this PR as I have not enough time to allocate to this right now and, from what I could grasp from the community feedback, it seems that there's still a majority of people that trust the founding entities to not do anything reckless and therefore, need not the safeguards that this proposal would offer.
While closing, I would just like to address one of the recurring concern that came in response to this CIP which was, I believe, misunderstood by many. This proposal does not grant additional power to SPOs, it actually only makes it easier for them to apply something their already have. Although, as we've seen with the Vasil (1.35.3) upgrade, SPOs does not seem to be needing this proposal to already enforce this power :upside_down_face:.
I am also hopeful for CIP-0047? which pursues a similar goal.


Problems with adding/removing columns

Something wrong is happening between the editor and the SQL API when the user creates a new column or removes it. When adding a new column it doesn't appear (but checking directly with the SQL API the column is there) and a force reload is needed to get the new column at the editor.
On the other hand when the user removes the column an error is thrown at the editor and again, a force reload is needed to get the correct table schema and all.
I've experienced this behavior this morning and just seen @piensaenpixel  having the same issue.

@juanignaciosl @gfiorav here we go!

Apparently the SQL-API has been returning a Last-Modified header recently. The browser uses this information to decide on its own not to request a given page again (skipping varnish).
@rochoa can give some insight on the solution for this :smile:

It's more a client side issue with last-modified and if-modified-since headers. Although varnish/api-sql are returning a fresh result the client is reusing the result as the new last-modified header is the same.
We will release a new SQL API version that will skip cached last modified result for authenticated requests until we find a general solution for all cases.

Great, thanks @rochoa.

Thanks, @rochoa !

The bug is reproducible under Chrome and Safari, but Firefox is working properly.
Also the problem can be found adding new rows.

Probably has to do with how different browser manage cache. I think the fix that @rochoa proposes should have us in the clear for all cases (rows, columns, etc). We'll see!

S/B 8026890

To solve this properly, the editor could invoke the CDB_TableMetadataTouch SQL function on the table instead of purging Varnish, which will both purge Varnish (either using Varnish or any other invalidation method set as a trigger on CDB_Tablemetadata) and bump the last_modified date on cdb_tablemetadata table (which will return a proper Last-Modified and might also help to avoid some other edge cases with cached tiles).

Genius!
Let's try this tomorrow :)

El 1 feb 2016, a las 22:49, Alejandro Martínez<EMAIL_ADDRESS>escribió:
To solve this properly, the editor could invoke the CDB_TableMetadataTouch SQL function on the table instead of purging Varnish, which will both purge Varnish (either using Varnish or any other invalidation method set as a trigger on CDB_Tablemetadata) and bump the last_modified date on cdb_tablemetadata table (which will return a proper Last-Modified and might also help to avoid some other edge cases with cached tiles).
—
Reply to this email directly or view it on GitHub.

SQL API is no longer using the internal cache to return the last modified, but as @zenitraM pointed out we still need to invoke cdb_tablemetadatatouch so last update time gets updated and SQL API can retrieve that value for the last modified header.


Cannot create property 'caller' on string 'incorrect header check'

Summary
I recently started with a clean Mac Studio and was installing the latest of everything. I don't remember the exact order of operations, but I believe that upon installing Node (via brew install node) that two errors started occurring. What I do know is that at one point during my install, I was able to properly save/deploy a class to my sandbox using VSCode and then upon installing Node, I started to receive two errors:

(node:30077) [DEP0040] DeprecationWarning: The punycode module is deprecated. Please use a userland alternative instead.
(Use node --trace-deprecation ... to show where the warning was created)

This^ one was resolved by moving down to node@20

Error (10): Cannot create property 'caller' on string 'incorrect header check'

I cannot move past this^ error, at the moment.
Both seem to have appeared roughly around the time I installed NodeJS via the installer here: https://nodejs.org/en/download/prebuilt-installer
I also ran the doctor (below), which said something about auth being a fail.
Steps To Reproduce
There is no direct repo for this issue, as I believe it has to do exclusively with software/plugin versions, given that I was able to deploy once mid-installation.
System Information
Using ZSH:
❯ sf version --verbose --json

{
"architecture": "darwin-arm64",
"cliVersion"<EMAIL_ADDRESS>"nodeVersion": "node-v20.15.0",
"osVersion": "Darwin 23.5.0",
"rootPath": "/opt/homebrew/lib/node_modules/@salesforce/cli",
"shell": "zsh",
"pluginVersions": [
"@oclif/plugin-autocomplete 3.1.2 (core)",
"@oclif/plugin-commands 4.0.2 (core)",
"@oclif/plugin-help 6.2.1 (core)",
"@oclif/plugin-not-found 3.2.3 (core)",
"@oclif/plugin-plugins 5.2.4 (core)",
"@oclif/plugin-search 1.1.2 (core)",
"@oclif/plugin-update 4.3.5 (core)",
"@oclif/plugin-version 2.2.3 (core)",
"@oclif/plugin-warn-if-update-available 3.1.5 (core)",
"@oclif/plugin-which 3.2.2 (core)",
"@salesforce/cli 2.46.6 (core)",
"apex 3.1.18 (core)",
"auth 3.6.21 (core)",
"data 3.4.6 (core)",
"deploy-retrieve 3.9.4 (core)",
"info 3.3.6 (core)",
"limits 3.3.12 (core)",
"marketplace 1.2.12 (core)",
"org 4.2.1 (core)",
"packaging 2.4.6 (core)",
"schema 3.3.11 (core)",
"settings 2.3.1 (core)",
"sobject 1.4.11 (core)",
"source 3.4.2 (core)",
"telemetry 3.4.0 (core)",
"templates 56.2.11 (core)",
"trust 3.7.5 (core)",
"user 3.5.13 (core)"
]
}

❯ sf plugins inspect @salesforce/cli

└─ @salesforce/cli
├─ version 2.46.6
├─ homepage https://github.com/salesforcecli/cli
├─ location /opt/homebrew/lib/node_modules/@salesforce/cli
├─ commands
│  ├─ [removed... not necessary...]
└─ dependencies
├─ @inquirer/select ^2.3.5 => 2.3.5
├─ @oclif/core 4.0.4 => 4.0.4
├─ @oclif/plugin-autocomplete 3.1.2 => 3.1.2
├─ @oclif/plugin-commands 4.0.2 => 4.0.2
├─ @oclif/plugin-help 6.2.1 => 6.2.1
├─ @oclif/plugin-not-found 3.2.3 => 3.2.3
├─ @oclif/plugin-plugins 5.2.4 => 5.2.4
├─ @oclif/plugin-search 1.1.2 => 1.1.2
├─ @oclif/plugin-update 4.3.5 => 4.3.5
├─ @oclif/plugin-version 2.2.3 => 2.2.3
├─ @oclif/plugin-warn-if-update-available 3.1.5 => 3.1.5
├─ @oclif/plugin-which 3.2.2 => 3.2.2
├─ @salesforce/core ^7.2.0 => 7.3.12
├─ @salesforce/kit ^3.1.0 => 3.1.3
├─ @salesforce/plugin-apex 3.1.18 => 3.1.18
├─ @salesforce/plugin-auth 3.6.21 => 3.6.21
├─ @salesforce/plugin-data 3.4.6 => 3.4.6
├─ @salesforce/plugin-deploy-retrieve 3.9.4 => 3.9.4
├─ @salesforce/plugin-info 3.3.6 => 3.3.6
├─ @salesforce/plugin-limits 3.3.12 => 3.3.12
├─ @salesforce/plugin-marketplace 1.2.12 => 1.2.12
├─ @salesforce/plugin-org 4.2.1 => 4.2.1
├─ @salesforce/plugin-packaging 2.4.6 => 2.4.6
├─ @salesforce/plugin-schema 3.3.11 => 3.3.11
├─ @salesforce/plugin-settings 2.3.1 => 2.3.1
├─ @salesforce/plugin-sobject 1.4.11 => 1.4.11
├─ @salesforce/plugin-source 3.4.2 => 3.4.2
├─ @salesforce/plugin-telemetry 3.4.0 => 3.4.0
├─ @salesforce/plugin-templates 56.2.11 => 56.2.11
├─ @salesforce/plugin-trust 3.7.5 => 3.7.5
├─ @salesforce/plugin-user 3.5.13 => 3.5.13
├─ @salesforce/sf-plugins-core 10.0.1 => 10.0.1
└─ ansis ^3.2.0 => 3.2.0

❯ sf doctor --command "project retrieve preview"

=== Running command with debugging
sf project retrieve preview --dev-debug
=== Running all diagnostics
pass - salesforcedx plugin isn’t installed
pass - you don't have any linked plugins
pass - [@salesforce/plugin-trust] can ping: https://registry.npmjs.org
pass - [@salesforce/plugin-trust] can ping: https://registry.yarnpkg.com
pass - [@salesforce/plugin-trust] can ping: https://registry.npmjs.org/
pass - using latest or latest-rc CLI version
pass - [@salesforce/plugin-deploy-retrieve] sourceApiVersion matches apiVersion
warn - [@salesforce/plugin-deploy-retrieve] sourceApiVersion matches default target org max apiVersion
pass - can access: https://test.salesforce.com
pass - can access: https://appexchange.salesforce.com/services/data
pass - can access: https://developer.salesforce.com/media/salesforce-cli/sf/channels/stable/sf-win32-x64-buildmanifest
fail - [@salesforce/plugin-auth] CLI supports v2 crypto
Wrote command stdout log to: /Users/nathan/Development/sf/innerFrame--dev/1719234717698-command-stdout.log
Wrote command debug log to: /Users/nathan/Development/sf/innerFrame--dev/1719234717698-command-debug.log
Wrote doctor diagnosis to: /Users/nathan/Development/sf/innerFrame--dev/1719234717698-diagnosis.json
=== Suggestions

Check https://github.com/forcedotcom/cli/issues for CLI issues posted by the community.
Check http://status.salesforce.com for general Salesforce availability and performance.
using npm registry https://registry.npmjs.org/ from npm config
The sourceApiVersion in sfdx-project.json doesn't match the max apiVersion of the default target org. As a result, you're not using the latest features available in API version 61.0. The version mismatch isn't a problem, as long as it's the behavior you actually want.
Your current installation of Salesforce CLI, including all the plugins you've linked and installed, doesn't yet support v2 crypto. All plugins and libraries must use at least version 6.7.0 of @salesforce/core to support v2 crypto. You're generally still able to successfully authenticate with your current CLI installation, but not if you generate a v2 crypto key.

Here is the /*-command-debug.log:

2024-06-24T13:11:58.084Z sf:telemetry Usage acknowledgement file already exists
2024-06-24T13:11:58.085Z sf:telemetry Using telemetry logging file /var/folders/nz/pzbqqdbj6wvg7j98t90np42r0000gn/T/sf-telemetry/telemetry-84b6fb9a028bb4bdc6e1531e08da67c0a568d066.log
2024-06-24T13:11:58.119Z sf:telemetry Setting up process exit handler
Error (10): Cannot create property 'caller' on string 'incorrect header check'
*** Internal Diagnostic ***
TypeError: Cannot create property 'caller' on string 'incorrect header check'
at Object.statusMatrix (/opt/homebrew/lib/node_modules/@salesforce/cli/node_modules/isomorphic-git/index.cjs:14122:16)
at async ShadowRepo.getStatus (/opt/homebrew/lib/node_modules/@salesforce/cli/node_modules/@salesforce/source-tracking/lib/shared/local/localShadowRepo.js:131:31)
at async SourceTracking.ensureLocalTracking (/opt/homebrew/lib/node_modules/@salesforce/cli/node_modules/@salesforce/source-tracking/lib/sourceTracking.js:332:9)
at async Promise.all (index 1)
at async SourceTracking.getConflicts (/opt/homebrew/lib/node_modules/@salesforce/cli/node_modules/@salesforce/source-tracking/lib/sourceTracking.js:397:9)
at async getConflictFiles (file:///opt/homebrew/lib/node_modules/@salesforce/cli/node_modules/@salesforce/plugin-deploy-retrieve/lib/utils/previewOutput.js:195:16)
at async Promise.all (index 1)
at async RetrieveMetadataPreview.run (file:///opt/homebrew/lib/node_modules/@salesforce/cli/node_modules/@salesforce/plugin-deploy-retrieve/lib/commands/project/retrieve/preview.js:42:67)
at async RetrieveMetadataPreview._run (/opt/homebrew/lib/node_modules/@salesforce/cli/node_modules/@oclif/core/lib/command.js:302:22)
at async Config.runCommand (/opt/homebrew/lib/node_modules/@salesforce/cli/node_modules/@oclif/core/lib/config/config.js:424:25)

2024-06-24T13:11:59.089Z sf:telemetry Spawning<EMAIL_ADDRESS>/opt/homebrew/lib/node_modules/<EMAIL_ADDRESS>/Users/nathan/Library/Caches/sf /var/folders/nz/pzbqqdbj6wvg7j98t90np42r0000gn/T/sf-telemetry/telemetry-84b6fb9a028bb4bdc6e1531e08da67c0a568d066.log"

This is essentially a duplicate of Issue with project deploy start in CI pipeline
Until isomorphic-git fixes the issue in their code you cannot use NodeJS equal to or greater than v22.3.0.  Please see the comments in that issue report.
The deprecation warning you're seeing is not an error causing problems.

(you'll notice I've already downgraded: node-v20.15.0)

I'm having the same issue


Changed template when tag is changed

When creating a new discussion, the correct template is being filled into the editor after the first tag has been chosen.
But when this tag is removed and another tag is being selected, the template is not changed to the template of the other tag. I think it would be great if that would be the case

Hi, thanks for the report! Is this a separate issue from https://github.com/askvortsov1/flarum-discussion-templates/issues/10? IE, are you experiencing this even when there has been no text entered by the user before changing tags?

Yes this is a separate issue. The text is not changing correctly to the new tag's template even when the user has not typed any text.
I made it two separate issues because you might decide to implement one the two but not the other one (of course, both would be ideal for me 🙂)

Hmm this feels like a bug then, probably slipped past me in a previous update. I'll get this fixed.

Done in v0.5.0


Inno Setup 6.4.0-dev

cannot extract version 6.4.0-dev

No wonder, since only versions up to 6.3 are supported!


Enable an easier access to SDL_Surface's fields

surface->h vs surface.get()->h
I can add the same to SDL_CLASS but I don't know SDL enough yet to say whether other classes need field access or not.

Thank you for the PR. This is good catch, surface.get()->h is odd.
I think is it weird to use operator-> at all, it does not feel Surface should behave like a pointer. So I kind of mimicked the behavior of std::reference_wrapper with the .get() method but guffed returning pointer instead of reference.  Maybe made .get() to return reference instead of a pointer? Also, do you think we need an operator<SDL_Surface&> 🤷 ?
Your thought?

Maybe made .get() to return reference instead of a pointer? Also, do you think we need an operator<SDL_Surface&> shrug ?

Neither of them would enable surface->h-like syntax. As for doing these changes independently of the operator ->(), I don't know. Currently it's possible for sdl::Foo to store nullptr, and .get() wouldn't work with nullptr reference, which are UB.


[$250] Accounting tab appears then disappears after selecting an integration during onboarding

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Version Number: 9.0.48-0
Reproducible in staging?: Y
Reproducible in production?: N/A Unable to check
If this was caught during regression testing, add the test name, ID and link from TestRail: N/A
Email or phone of affected tester (no customers<EMAIL_ADDRESS>Issue reported by: Applause - Internal Team
Action Performed:

Go to staging.new.expensify.com
Sign up with a new Gmail account
Select Manage my team's expenses on onboarding modal
Select employee amount > Next
Choose any integration > Next
Complete the onborading
Go to workspace settings

Expected Result:
Accounting tab will not appear and disappear
Actual Result:
Accounting tab appears then disappears
Workaround:
Unknown
Platforms:

Which of our officially supported platforms is this issue occurring on?

[x] Android: Native
[x] Android: mWeb Chrome
[x] iOS: Native
[x] iOS: mWeb Safari
[x] MacOS: Chrome / Safari
[x] MacOS: Desktop

Screenshots/Videos

Add any screenshot/video evidence

https://github.com/user-attachments/assets/ffcd907c-b369-4e3e-8b96-e855e540cf9b
View all open jobs on GitHub
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~021844716640793633414
Upwork Job ID:<PHONE_NUMBER>793633414
Last Price Increase: 2024-10-11

Issue OwnerCurrent Issue Owner: @allroundexperts

I don't think this needs to be a blocker, so removing the labels, but yes let's find someone to work on it!

Proposal
Please re-state the problem that we are trying to solve in this issue.
Accounting tab appears then disappears after selecting an integration during onboarding
What is the root cause of that problem?
Right here when we complete the onboarding we set the areConnectionsEnabled to true:
https://github.com/Expensify/App/blob/abdfb7233e040a61d1e4433e202a8b644c7455f4/src/libs/actions/Report.ts#L3647-L3677
What changes do you think we should make in order to solve the problem?
We should remove this code
https://github.com/Expensify/App/blob/abdfb7233e040a61d1e4433e202a8b644c7455f4/src/libs/actions/Report.ts#L3647-L3677
What alternative solutions did you explore? (Optional)

Oh we forgot to send the policy id cc @nkdengineer. Please raise a PR for this since it's a regression
@marcaaron regarding https://github.com/Expensify/App/pull/49161#discussion_r1765675105, what's the param that we should use to send the policy id over?

@allroundexperts I'd like to handle this being a "regression" from https://github.com/Expensify/App/pull/49161

@marcaaron regarding https://github.com/Expensify/App/pull/49161#discussion_r1765675105, what's the param that we should use to send the policy id over?

@s77rt I will raise the PR when we confirm this. Or we can do this in the second PR of the new feature when the task translation is confirmed.

Should be policyID.

Or we can do this in the second PR of the new feature when the task translation is confirmed.

That sounds fine to me!

@nkuoch I will take this over as it's related to something I missed when working with these guys.

Hey @twilight294 I'd suggest bringing that up in Slack or shooting an email over to<EMAIL_ADDRESS>Typically, when something is a regression it's the responsibility of the person who implemented the PR. I appreciate the help and can provide this document to you review. And will also say that there are always exceptions. But I can't personally provide any guarantees right now.

Not overdue. Will be fixed in next PR

@nkdengineer is working on it. It should be part of a PR related to https://github.com/Expensify/App/issues/48745

Being fixed in https://github.com/Expensify/App/pull/51070

This is fixed now. Can be closed


manifest.prod.boltdns.net

This domain is the manifest for boltDNS. Blocking this domain breaks embedded videos that use the BrightCove player. It is also a CNAME for dualstack.brightcove.map.fastly.net
For example, try and play the embedded video on https://www.intel.ca/content/www/ca/en/products/docs/processors/core/performance-maximizer.html
This domain does not host any ads, spyware, or malware.
Reported upstream https://github.com/EnergizedProtection/block/issues/557

Thanks for reporting, I've removed the domain


Example or docs ?

Hi,
I'm pretty interested in your project as I'm also trying to merge Ember and F7. Could you provide some more documentation or a basic example of an application to run ?
I see you're using liquid-fire, so I guess you don't use F7 routing API ? Did you already tried to use it ?
Thanks

Example app is laying under tests directory https://github.com/chukcha-wtf/ember-cli-f7/tree/master/tests/dummy . You can download ember-cli-f7 repository, run npm install && bower install and then simply start server via ember s to see it in action.
F7 routing API is used mostly for rendering HTML (which is done via ember router) and providing page animations (which can be done via liquid-fire). However I was disappointed with Velocity.js (used by liquid-fire) performance so in my app I've combined liquid-fire with F7 default animations which provided pretty good results. If you'll be interested I can provide some draft gist which explains how it was done.

Oh ok, I'm looking in your dummy tests right now ;) The result is pretty good ! But I'm new to Ember so I'm a bit lost for now.
In which case did you find Velocity bad perfs ? Some Android devices ?
Liquid-fire allows to have a good management for the back button that is a common problem when working with transitions... But it seems that you loose the swipe back gesture (F7 feature) ?
Some gists could help for sure, thanks !

It's a common practice to include 'dummy' app when developing add ons)
Yeah, on my N5 Velocity added additional lag for about 100 - 200ms before page transition and compared to iPhone5 it was an noticeable delay.
Basically I wasn't interested in swipe back, personally I don't like it as it works badly when used with swipeout actions (like in mail app on iOS) but am pretty sure that similar functionality can be achieved.
Here's a gist which will guide you through creating page animation in your app. https://gist.github.com/chukcha-wtf/3c042755cc000f9ce61d
hint: to speedup page rendering on older Android devices I'll recommend to use pure HTML instead of components from ember-cli-f7. While they provide some simplicity while creating layouts it also adds some additional listeners which is not good on Android, unfortunately.

Ok I didn't know for that dummy thing ;)
As an iPhone user, I think swipe back is a must have to create quality hybrid app, as it doesn't feel native without this feature. But I guess we have to make a choice here !
I'll take a look at your gist, thanks. Thanks also for the hint, indeed i saw a lot of .ember-view in the rendered HTML, which surprised me.
Btw, do you know how Liquid-Fire internally "hooks" Ember routing to append new pages, instead to have them "immediately replaced" ? I'd like to try to use F7 router API ; I kinda succeeded in using it with Meteor, but can't find any way with Ember, for now...

Well, with some sort of further hacking 'liquid-fire' and adding 'caching' mechanism I'm pretty sure that we'll be able to achieve 'swipeback' however it's not my primary goal at the moment.
There are fairly complex approach for rendering few routes at the same time, I suggest you to start from here https://github.com/ef4/liquid-fire/blob/master/addon%2Frouter-dsl-ext.js .
.ember-view class will be added for anything rendered by ember (when you're using components for example).
btw, if F7 worked well with Meteor why you've switched to Ember?

Ok thanks for the clues. Actually, we're trying several solutions to find which one fits best our needs. Meteor is pretty cool and easy to learn, but can be too restrictive. We're not set on any framework for now.

Haha, let me now when you'll find the best solution, as we're at the same boat at the moment) We've tried pure ionic but it doesn't work well, especially with 'swipeout' actions. And I'm still interested in trying ReactNative, but there appears some problems with cross-platform app porting (additional actions required which isn't good for us).

Closing an issue for now

Haha, wish me luck !
Speaking of UI framework, Framework7 looks the best for me because it's really framework-agnostic (among other qualities). Ionic, Onsen UI and Supersonic are all more or less based on Angular, which is not an option for us today because the 2nd version is coming, but not stable yet. What's more, we need something thought for native (via cordova) and responsive, which is not the case for Ionic for example (doesn't even support Firefox).
Speaking of client-side MVC... well, we'll see !
Anyway, thanks for your help ;)
--
Nico Prat
Le 21 septembre 2015 à 16:18:32, Pavlo Babenko<EMAIL_ADDRESS>a écrit:
Haha, let me now when you'll find the best solution, as we're at the same boat at the moment) We've tried pure ionic but it doesn't work well, especially with 'swipeout' actions. And I'm still interested in trying ReactNative, but there appears some problems with cross-platform app porting (additional actions required which isn't good for us).
—
Reply to this email directly or view it on GitHub.


Lumbar support

I added support for Lumbar (http://walmartlabs.github.io/lumbar/) by including a lumbar.json file.
Also, corrected require js detection by verifying the require method is defined (as exports can be defined regardless of require...)

After working with many build systems such as ember-cli, grunt, requirejs, and browserify, this is the first time I heard of lumbar. I did however open an issue to publish this library on npm to be consumed with browserify.

Yeah I guess Lumbar isn't really popular enough yet. I can work-around it and manually include backbone-super in Lumbar, but for that I need PR #35 to get merged. Then, this PR could be closed.

#35 is merged.


Daemon manifest sign

Update push to sign with the daemon's key when no manifest is given
Passes key to tag store when initializing from daemon

LGTM!


Support multi vehicle sitl gazebo without ros

Describe problem solved by this pull request
Previous implementation used ros launchfiles, to spawn multiple vehicles in SITL gazebo. This was great, but required manually expanding the launchfile to add more vehicles and required ros to be installed on the system in order to run roslaunch
Describe your solution
This PR adds a simple bash script that spawns multiple px4 SITL instances and spawns the model in gazebo. It can also spawn as many vehicles as the user wants.
Tools/gazebo_sitl_multiple_run.sh <number_of_vehicles>
Test data / coverage
The following shows screenshots of spawning 10 vehicles with the script

Also running two vehicles doing different missions

Additional context
I have noticed that gazebo processes don't exit cleanly and I need to manually kill gazebo when stoping the script. This should be included in future improvements

Hi @Jaeyoung-Lim
This will need docs like http://dev.px4.io/master/en/simulation/multi_vehicle_jmavsim.html
Is the usage the same? Ideally it would be very similar.

I test the pr, and output
 ./Tools/gazebo_sitl_multiple_run.sh
killing running instances
Starting gazebo
Gazebo multi-robot simulator, version 9.11.0
Copyright (C) 2012 Open Source Robotics Foundation.
Released under the Apache 2 License.
http://gazebosim.org

[Msg] Waiting for master.
[Msg] Connected to gazebo master @ http://<IP_ADDRESS>:11345
[Msg] Publicized address: <IP_ADDRESS>
starting instance 0 in /home/xiaowei/src/Firmware/build/px4_sitl_default/instance_0

Spawning iris_0
[Err] [Plugin.hh:187] Failed to load plugin libgazebo_multirotor_base_plugin.so: libgazebo_multirotor_base_plugin.so: cannot open shared object file: No such file or directory
[Err] [Plugin.hh:187] Failed to load plugin libgazebo_motor_model.so: libgazebo_motor_model.so: cannot open shared object file: No such file or directory
[Err] [Plugin.hh:187] Failed to load plugin libgazebo_motor_model.so: libgazebo_motor_model.so: cannot open shared object file: No such file or directory
[Err] [Plugin.hh:187] Failed to load plugin libgazebo_motor_model.so: libgazebo_motor_model.so: cannot open shared object file: No such file or directory
[Err] [Plugin.hh:187] Failed to load plugin libgazebo_motor_model.so: libgazebo_motor_model.so: cannot open shared object file: No such file or directory
[Err] [Plugin.hh:187] Failed to load plugin libgazebo_gps_plugin.so: libgazebo_gps_plugin.so: cannot open shared object file: No such file or directory
[Err] [Plugin.hh:187] Failed to load plugin libgazebo_magnetometer_plugin.so: libgazebo_magnetometer_plugin.so: cannot open shared object file: No such file or directory
[Err] [Plugin.hh:187] Failed to load plugin libgazebo_barometer_plugin.so: libgazebo_barometer_plugin.so: cannot open shared object file: No such file or directory
[Err] [Plugin.hh:187] Failed to load plugin libgazebo_mavlink_interface.so: libgazebo_mavlink_interface.so: cannot open shared object file: No such file or directory
[Err] [Plugin.hh:187] Failed to load plugin libgazebo_imu_plugin.so: libgazebo_imu_plugin.so: cannot open shared object file: No such file or directory
starting instance 1 in /home/xiaowei/src/Firmware/build/px4_sitl_default/instance_1

Spawning iris_1
[Err] [Plugin.hh:187] Failed to load plugin libgazebo_multirotor_base_plugin.so: libgazebo_multirotor_base_plugin.so: cannot open shared object file: No such file or directory
[Err] [Plugin.hh:187] Failed to load plugin libgazebo_motor_model.so: libgazebo_motor_model.so: cannot open shared object file: No such file or directory
[Err] [Plugin.hh:187] Failed to load plugin libgazebo_motor_model.so: libgazebo_motor_model.so: cannot open shared object file: No such file or directory
[Err] [Plugin.hh:187] Failed to load plugin libgazebo_motor_model.so: libgazebo_motor_model.so: cannot open shared object file: No such file or directory
[Err] [Plugin.hh:187] Failed to load plugin libgazebo_motor_model.so: libgazebo_motor_model.so: cannot open shared object file: No such file or directory
[Err] [Plugin.hh:187] Failed to load plugin libgazebo_gps_plugin.so: libgazebo_gps_plugin.so: cannot open shared object file: No such file or directory
[Err] [Plugin.hh:187] Failed to load plugin libgazebo_magnetometer_plugin.so: libgazebo_magnetometer_plugin.so: cannot open shared object file: No such file or directory
[Err] [Plugin.hh:187] Failed to load plugin libgazebo_barometer_plugin.so: libgazebo_barometer_plugin.so: cannot open shared object file: No such file or directory
[Err] [Plugin.hh:187] Failed to load plugin libgazebo_mavlink_interface.so: libgazebo_mavlink_interface.so: cannot open shared object file: No such file or directory
[Err] [Plugin.hh:187] Failed to load plugin libgazebo_imu_plugin.so: libgazebo_imu_plugin.so: cannot open shared object file: No such file or directory
Starting gazebo client

maybe need to add a path?

I test the pr, and output
 ./Tools/gazebo_sitl_multiple_run.sh
killing running instances
Starting gazebo
Gazebo multi-robot simulator, version 9.11.0
Copyright (C) 2012 Open Source Robotics Foundation.
Released under the Apache 2 License.
http://gazebosim.org

[Msg] Waiting for master.
[Msg] Connected to gazebo master @ http://<IP_ADDRESS>:11345
[Msg] Publicized address: <IP_ADDRESS>
starting instance 0 in /home/xiaowei/src/Firmware/build/px4_sitl_default/instance_0

Spawning iris_0
[Err] [Plugin.hh:187] Failed to load plugin libgazebo_multirotor_base_plugin.so: libgazebo_multirotor_base_plugin.so: cannot open shared object file: No such file or directory
[Err] [Plugin.hh:187] Failed to load plugin libgazebo_motor_model.so: libgazebo_motor_model.so: cannot open shared object file: No such file or directory
[Err] [Plugin.hh:187] Failed to load plugin libgazebo_motor_model.so: libgazebo_motor_model.so: cannot open shared object file: No such file or directory
[Err] [Plugin.hh:187] Failed to load plugin libgazebo_motor_model.so: libgazebo_motor_model.so: cannot open shared object file: No such file or directory
[Err] [Plugin.hh:187] Failed to load plugin libgazebo_motor_model.so: libgazebo_motor_model.so: cannot open shared object file: No such file or directory
[Err] [Plugin.hh:187] Failed to load plugin libgazebo_gps_plugin.so: libgazebo_gps_plugin.so: cannot open shared object file: No such file or directory
[Err] [Plugin.hh:187] Failed to load plugin libgazebo_magnetometer_plugin.so: libgazebo_magnetometer_plugin.so: cannot open shared object file: No such file or directory
[Err] [Plugin.hh:187] Failed to load plugin libgazebo_barometer_plugin.so: libgazebo_barometer_plugin.so: cannot open shared object file: No such file or directory
[Err] [Plugin.hh:187] Failed to load plugin libgazebo_mavlink_interface.so: libgazebo_mavlink_interface.so: cannot open shared object file: No such file or directory
[Err] [Plugin.hh:187] Failed to load plugin libgazebo_imu_plugin.so: libgazebo_imu_plugin.so: cannot open shared object file: No such file or directory
starting instance 1 in /home/xiaowei/src/Firmware/build/px4_sitl_default/instance_1

Spawning iris_1
[Err] [Plugin.hh:187] Failed to load plugin libgazebo_multirotor_base_plugin.so: libgazebo_multirotor_base_plugin.so: cannot open shared object file: No such file or directory
[Err] [Plugin.hh:187] Failed to load plugin libgazebo_motor_model.so: libgazebo_motor_model.so: cannot open shared object file: No such file or directory
[Err] [Plugin.hh:187] Failed to load plugin libgazebo_motor_model.so: libgazebo_motor_model.so: cannot open shared object file: No such file or directory
[Err] [Plugin.hh:187] Failed to load plugin libgazebo_motor_model.so: libgazebo_motor_model.so: cannot open shared object file: No such file or directory
[Err] [Plugin.hh:187] Failed to load plugin libgazebo_motor_model.so: libgazebo_motor_model.so: cannot open shared object file: No such file or directory
[Err] [Plugin.hh:187] Failed to load plugin libgazebo_gps_plugin.so: libgazebo_gps_plugin.so: cannot open shared object file: No such file or directory
[Err] [Plugin.hh:187] Failed to load plugin libgazebo_magnetometer_plugin.so: libgazebo_magnetometer_plugin.so: cannot open shared object file: No such file or directory
[Err] [Plugin.hh:187] Failed to load plugin libgazebo_barometer_plugin.so: libgazebo_barometer_plugin.so: cannot open shared object file: No such file or directory
[Err] [Plugin.hh:187] Failed to load plugin libgazebo_mavlink_interface.so: libgazebo_mavlink_interface.so: cannot open shared object file: No such file or directory
[Err] [Plugin.hh:187] Failed to load plugin libgazebo_imu_plugin.so: libgazebo_imu_plugin.so: cannot open shared object file: No such file or directory
Starting gazebo client

maybe need to add a path?

use source Tools/setup_gazebo.bash $(pwd) $(pwd)/build/px4_sitl_default sovled

@zhaoxiaowei1013 Thanks for trying it out. I included the environment sourcing inside the script

@hamishwillee It is even simpler. You don't need to fire up multiple scripts


Batch import (via CSV)?

I would like to migrate to Watson but have an open project that I would like to migrate as well. I have about 40 frames (start, end, project, tags). Right now the only way to get data into Watson would be to start and stop 40 times and edit the frames one by one or figure out the way Watson sets IDs and times and create a custom dictionary.
Do you have any work around or import script or is this something that is missing?

Do you have a sample of the input data format?

Sure. Here are the first two lines of the CSV (sorry, German dates dd.mm.YY, last column is auto calculated from start to end, but either could be deleted if neccessary)
date,note,tag,project,start,end, hh:mm
29.09.16,Work on hero image,Code; Design,1601-localhon,17:30:00,17:00:00,00:30:00

If you are familiar with Python it shouldn't be an issue :) . For now we don't have an official doc on how to play with Watson Python API, but basically you would need to:

Instantiate a Frames object
Add each of your frame from your CSV (1 line = one frame)
Write the frames

It's a bit messy and I'm sure it could be improved in many ways, but it should work :) .

 Note that it will happily add the same data twice if you run it more than once:
#!/usr/bin/env python2
# -*- coding: utf-8 -*-
#  watson_import_csv.py
#
"""Short one line description."""

import argparse
import csv
import logging
import sys
import os

from datetime import datetime

from watson import Watson

FIELDS = "date,note,tag,project,start,end,duration".split(",")
DATE_FORMAT = '%d.%m.%y'
TIME_FORMAT = '%H:%M:%S'
log = logging.getLogger("import_csv")

def import_csv(infile):
    watson = Watson(config_dir=os.environ.get('WATSON_DIR'))
    parser = csv.DictReader(infile, delimiter=",")

    for row in parser:
        log.debug("INPUT row: %r", row)
        try:
            date = datetime.strptime(row['date'], DATE_FORMAT).date()
            start = datetime.strptime(row['start'], TIME_FORMAT).time()
            stop = datetime.strptime(row['end'], TIME_FORMAT).time()
            start = datetime.combine(date, start)
            stop = datetime.combine(date, stop)
            tags = [tag.strip() for tag in row['tag'].split(';') if tag.strip()]
            now = datetime.utcnow()
            message = row['note'].strip() or None
            log.debug("Adding frame: project=%s, start=%s, stop=%s, tags=%s, ",
                      "updated_at=%s, message=%s", row['project'], start, stop,
                      tags, now, message)
        except Exception as exc:
            log.error("Could not parse row data %r: %s", row, exc)
        else:
            watson.frames.add(row['project'], start, stop, tags, now, message)

    watson.save()

def main(args=None):
    ap = argparse.ArgumentParser(description=__doc__.splitlines()[0])
    ap.add_argument('-v', '--verbose', action="store_true",
        help="Be verbose")
    ap.add_argument('infile', type=argparse.FileType('r'), help="Be verbose")

    args = ap.parse_args(args if args is not None else sys.argv[1:])

    logging.basicConfig(format="%(name)s: %(levelname)s - %(message)s",
        level=logging.DEBUG if args.verbose else logging.INFO)

    import_csv(args.infile)

    return 0

if __name__ == '__main__':
    sys.exit(main(sys.argv[1:]) or 0)

Please note that my example is script is supposed to work with #119 applied.

Excellent solution, thanks a lot @SpotlightKid. Can easily get adopted to special needs.


[feature] Resty Metrics for HTTP vs TCP Failures

With this library providing a metrics manager for Prometheus, and autoconfiguration for Resty clients, we should support automatically wiring up metrics from Resty clients into Prometheus.
Setting it up is a bit tricky, as the Resty client metrics must be registered only once per Prometheus registry, which the manager should handle. Clients should all refer to same global Resty client metrics / subsystem. When creating a Resty client it should be optional (possibly a separate New func) to provide a metrics manager and registry that it then wires itself into the client, and ensures that the metrics it depends on are registered or will be registered.
We can then use Resty's OnError (https://github.com/go-resty/resty?tab=readme-ov-file#onerror-hooks) to receive a hook when errors occur, determine if the error is a response error or otherwise assume it was a network error, and increment an http_failure vs network_failure counter depending. These metrics do not need specific URLs yet as that would be high cardinality.
If we wish to distinguish network errors with specific known errors and tags we could do something like: https://stackoverflow.com/questions/67646842/how-to-handle-net-errors-in-golang-properly
Once this metrics framework and basic failure counters are in place, we can consider expanding support for response time histograms, counters for particular HTTP methods and response codes, etc. leveraging OnBeforeRequest and OnAfterResponse more.

Merging the above proposals I am interpretting the proposal as ...

enhance ffresty to have a (global) EnableClientMetrics func which configures metrics manager and registry globally for use in FFResty clients.
enhance ffresty to support global hooks for onError.
enhance ffresty to add specific global hooks for metrics if they are configured via (1) using the global onError hooks and possibly other global hooks (2)

That proposal sounds great to me @alexwood thanks! Can iterate through the details once a draft PR is ready and we have a working example of the failure metrics as prove point for hooks / metrics wiring framework 🙇🏻

Changes merged that add http response metrics and also non http error metrics
@onelapahead can we close this issue or do you wish to keep it open for some additional follow on requirements we want to include.

I think we can close this one! Thanks for the contribution @alexwood and @onelapahead


fix: typo in ecommerce.mdx

Description (required)

fix typo in ecommerce.mdx

Related issues & labels (optional)

Closes #
Suggested label:

LGTM!


MongoDB arbiter poddisruption budget never allows drain

Describe the bug
Because mongodb's default replica count and minavailable for arbiter are both 1 creating a pod that can never be evicted.
https://github.com/helm/charts/blob/master/stable/mongodb/templates/poddisruptionbudget-arbiter-rs.yaml
https://github.com/helm/charts/blob/master/stable/mongodb/values.yaml
replicas:
secondary: 1
arbiter: 1
Pod Disruption Budget
ref: https://kubernetes.io/docs/concepts/workloads/pods/disruptions/
pdb:
enabled: true
minAvailable:
primary: 1
secondary: 1
arbiter: 1
Version of Helm and Kubernetes:
Anything that supports PDBs?
Which chart:
mongodb
What happened:
We upgrade clusters by draining nodes 1 by 1. However nodes with the arbiter would hang.
What you expected to happen:
Have minavailable < replicas.
How to reproduce it (as minimally and precisely as possible):
Apply the chart with default values. Try and drain the node that gets the arbiter. It should timeout.
Anything else we need to know:

@tompizmor might care about this?


Authentication fails for secondary userstores when one userstore fails

Describe the issue:

Overall authentication failure for secondary userstores when one userstore fails.
How to reproduce:

Create two or more secondary userstores
Connect the faulty userstore as the secondary userstore
Move up the faulty userstore in userstore order by redeploying others
Try to authenticate to user in secondary userstore (this userstore should be in after the faulty userstore in userstore order)
User authentication will fail

Expected behavior:

User should be able to authenticate even though other userstores are failed
Environment information (Please complete the following information; remove  any unnecessary fields) :

Product Version: [ IS 6.1.0]
OS: [ Mac]
Database: [H2]
Userstore: [LDAP, JDBC]

When authenticating, if the user is not found in the primary userstore, it will iterate the authentication with secondary userstore[1]. If the userstore fails, it will throw UserStoreException, hence result in exiting the authentication flow with authentication failure error without proceeding to search within subsequent userstores.
[1] https://github.com/wso2/carbon-kernel/blob/v4.9.0/core/org.wso2.carbon.user.core/src/main/java/org/wso2/carbon/user/core/common/AbstractUserStoreManager.java#L11331-L11342
Optional Fields
Related issues:

https://github.com/wso2/product-is/issues/8535

Duplicate of https://github.com/wso2/product-is/issues/8535


Type mismatch problem when trying to get annotation from returnType of method

Hi,
I have a annotated Java class. Translation fails when using reflection on method.getReturnType().getAnnotation(...)
error: /Users/bla/NetBeansProjects/j2objc-test/src/main/java/com/j2objc/test/annotation/SomeClass.java:18: Type mismatch: cannot convert from Annotation to SomeAnnotation
Since the getAnnotation() call on the method suceeds I think this is "just" a bug, not a general problem, isn't it?
@SomeAnnotation
public class SomeClass {

    public void methodWithReflection() throws NoSuchMethodException {
        final Method method = this.getClass().getMethod("someMethod");

        //works
        final SomeAnnotation annotation1 = method.getAnnotation(SomeAnnotation.class);
        //does not work
        final SomeAnnotation annotation2 = method.getReturnType().getAnnotation(SomeAnnotation.class);
    }

    @SomeAnnotation
    public SomeClass someMethod() {
        return null;
    }
}

@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface SomeAnnotation {

    String value() default "";
}

Sounds like "just a bug" (we should add a project issue label for that:-),
since JUnit 4 tests wouldn't run if it totally didn't work. Your classes
look sufficient to duplicate the issue, but if you attach them to a new
issue you'll be notified as soon as it's fixed.
On Sun, Feb 21, 2016 at 4:27 AM dholzenburg<EMAIL_ADDRESS>wrote:

Hi,
I have a annotated Java class. Translation fails when using reflection on
method.getReturnType().getAnnotation(...)
error:
/Users/bla/NetBeansProjects/j2objc-test/src/main/java/com/j2objc/test/annotation/SomeClass.java:18:
Type mismatch: cannot convert from Annotation to SomeAnnotation
Since the getAnnotation() call on the method suceeds I think this is
"just" a bug, not a general problem, isn't it?
@SomeAnnotationpublic class SomeClass {
public void methodWithReflection() throws NoSuchMethodException {
    final Method method = this.getClass().getMethod("someMethod");

    //works
    final SomeAnnotation annotation1 = method.getAnnotation(SomeAnnotation.class);
    //does not work
    final SomeAnnotation annotation2 = method.getReturnType().getAnnotation(SomeAnnotation.class);
}

@SomeAnnotation
public SomeClass someMethod() {
    return null;
}

}
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)public @interface SomeAnnotation {
String value() default "";

}
—
Reply to this email directly or view it on GitHub
https://github.com/google/j2objc/issues/715.

Hi Tom,
thank you for the fast response.
I'm not sure what you mean by "..., but if you attach them to a new
issue you'll be notified as soon as it's fixed.".
Is there anything I need to do? I am not that familiar with github yet...

No worries. You can create a new j2objc issue here
https://github.com/google/j2objc/issues/new. If you have a GitHub account
(free, plus they don't sell your account details to evil marketers :-),
then as we update the report you'll get an email.
On Mon, Feb 22, 2016 at 11:43 AM Dirk Holzenburg<EMAIL_ADDRESS>wrote:

Hi Tom,
thank you for the fast response.
I'm not sure what you mean by "..., but if you attach them to a new
issue you'll be notified as soon as it's fixed.".
Is there anything I need to do? I am not that familiar with github yet...
—
Reply to this email directly or view it on GitHub
https://github.com/google/j2objc/issues/715#issuecomment-187344656.

But why creating a new issue? This one is already an issue, isn't it?

Doh! You're right, and I shouldn't respond to email while being a tour
guide for visiting relatives. :-)
On Wed, Feb 24, 2016 at 4:19 AM Dirk Holzenburg<EMAIL_ADDRESS>wrote:

But why creating a new issue? This one is already an issue, isn't it?
—
Reply to this email directly or view it on GitHub
https://github.com/google/j2objc/issues/715#issuecomment-188225999.

:-)

The problem is with the version of Eclipse compiler that j2objc uses for its front-end. Unfortunately, we can't upgrade to the current version (where it's fixed) at this time because that introduces other bugs.
A workaround is to add a cast:
final SomeAnnotation annotation2 =
    (SomeAnnotation)method.getReturnType().getAnnotation(SomeAnnotation.class);

This will be fixed as soon as a Eclipse point release addresses those other problems.

Thank you very much for the explanation and the workaround. Let's keep this issue open until the new version of the Eclipse compiler is used.

Any updates on this one?
Tried again yesterday with j2objc 2.0.5 and it still seems to be an issue. The suggested workaround is still needed and working.

I can't duplicate this problem with your original test, here's my modifications so it builds with javac and has labels to make sure the correct annotation instance is returned.
SomeAnnotation.java:
import java.lang.annotation.*;

@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface SomeAnnotation {
  String value() default "";
}

SomeClass.java:
import java.lang.reflect.*;

@SomeAnnotation("type")
public class SomeClass {

  public static void main(String... args) throws NoSuchMethodException {
    final Method method = SomeClass.class.getMethod("someMethod");

    System.out.println("annotation on method: " + method.getAnnotation(SomeAnnotation.class));
    System.out.println("annotation on return type: "
        + method.getReturnType().getAnnotation(SomeAnnotation.class));
  }

  @SomeAnnotation("method")
  public SomeClass someMethod() {
    return null;
  }
}

Here's the output, using an unzipped download of j2objc-2.0.5:
$ javac SomeClass.java SomeAnnotation.java
$ java SomeClass
annotation on method: @SomeAnnotation(value=method)
annotation on return type: @SomeAnnotation(value=type)
$ ~/Downloads/j2objc-2.0.5/j2objc SomeClass.java SomeAnnotation.java
$ ~/Downloads/j2objc-2.0.5/j2objcc SomeClass.m SomeAnnotation.m
$ ./a.out SomeClass
annotation on method: @SomeAnnotation(value=method)
annotation on return type: @SomeAnnotation(value=type)

I'm closing this bug since we switched j2objc's front-end to use javac, so an Eclipse bug like this is no longer relevant. If you have still have problems, please file a new bug with a test that works with javac and fails with j2objc.