Add Github Actions CI

Hi @hramrach !
Thank you for contributing to iniparser and also thank you for your hint in #151.
@ndevilla added me as co-maintainer a few days ago. And after reading through the open issues and merge requests, the first thing I did, was creating iniparser-meta in order to build and test iniparser automatically. And also to provide an upstream standard build environment. I saw that many issues were related to build issues and my hope is to provide means to solve those.
I chose Gitlab because I am very familiar with it so it is easy for me to maintain.
Maybe have a look at iniparser-meta to see if you could contribute there?

I did not experience those build issues, I can build iniparser on Windows and Linux with the provided makefile as is.
Even though I occasionally work with projects that use CMake I still don't understand it. Given that situation I will stay away from iniparser-meta.
I see you added the valgrind check there, and besides the biolerplate to run the Github CI there is nothing particularly useful here.
My recommendation is to pick a build system and use only one. Dealing with more than one at the same time is just source of additional bugs.

I did not experience those build issues, I can build iniparser on Windows and Linux with the provided makefile as is.

Ok, but there are issues like #121 and #98 and patches. I figured there is a demand to integrate iniparser into build systems.

Even though I occasionally work with projects that use CMake I still don't understand it. Given that situation I will stay away from iniparser-meta.

If there is anything you think is missing just let me know.

My recommendation is to pick a build system and use only one. Dealing with more than one at the same time is just source of additional bugs.

You are right. First, I thought about integrating CMake directly into iniparser. This is technically less effort. But then I considered that iniparser may have some users loving it for its simplicity. And I think iniparser-meta can solve build and packaging issues as well.
The CI also runs the Makefile based build to make sure that it works.

The reality is that different build systems have different strengths and different weaknesses. If you support multiple then the user is free to pick the one that provides the strengths they like but you as the maintainer have to deal with weaknesses of all of them.
That there is a patch to use a different build system or a generic request for 'making some changes' does not mean the current one is insufficient.
A makefile is completely capable of header file installation, generating a .pc file, providing variables for build customization, and using standard tools like pkgconfig to pick up dependencies.
Where it gets dodgy is when OS features need to be detected (eg. if you wanted to detect that the OS has working sscanf implementation).


Internal script error! - opcode #33554445 (report please).

Godot version
3.3 compiled with Gramps steam library
System information
Windows 10
Issue description
I am reporting this because that's what it said to do. I wasn't doing anything weird, and it went away the next time I ran the scene. Should we still report these opcodes?
Steps to reproduce
Just reporting an opcode - this is not reliably reproduced
Minimal reproduction project
No response

You can just close this out if you dont want opcodes reported

Without reproduction steps or minimal project the report isn't very useful in itself. Comment if you find a way to reproduce it consistently.


Refactor Program class

Start() is a big method. Pull out the code that sets up the menu into a separate method.
You have several boolean flags . Consider whether an enumerated variable and a basic state machine would simplify some of your logic for keeping track of whether you're playing the game, at the end of the level, etc.

Start() has been refactored, with specific blocks of text appearing in distinct methods. Those methods are then called in Start(). Some code that could not be refactored remains free in Start(). Functionality has not been altered as of April 11.


Defaulting country code if one isn't provided

Is it possible to have some sort of configuration variable to enable automatically defaulting to a particular country code if one isn't provided? For my site, the vast majority of the users are in the US and have US mobile numbers so it's confusing to require +1 at the beginning. Right now I added the following code to PhoneNumberForm in forms.py but obviously this isn't ideal:
def clean_number(self):
    data = self.cleaned_data.get('number', '')
    if not data:
        raise forms.ValidationError("You must enter a phone number")
    if len(data) == 10 and (data[0:1] != "+" or data[0:2] != "00"):
        # Assume US number and prepend +1.
        data = "+1" + data
    return data

Sorry for the late reply. I think the form could benefit from some UX improvements. The country code could be replaced with a predefined selection for example. The default value could either be a configurable setting, or auto-picked from some geo-mechanism.

Geolocation to determine country code would be pretty nifty actually. It would even be supported in pretty much every modern browser too.

Geo-location (client-side) would trigger warning dialogs, which might not be so nice. I was more thinking of something like Maxmind's GeoIP. Combined with a nice country-picker, I think it would make a better UX. What do you think?

After some pondering, I think the difficulties are:

The form is rendered by Python, so little influence on the HTML output possible.
Geo-dependency should be avoided. It's a pain to install and the package should work as well without it.

Currently the validating is very simple; validating (a possible subset of) E.164 formatted phone numbers. The package python-phonenumbers (and its lite version) look like reasonable packages to improve the situation.

Client side geolocation could be done as opt-in (e.g. have to push a button to make it happen). One concern about python-phonenumbers is that there's 100MB of data that gets loaded the first time it's used, but the lite version might not have this issue.

Resolved with PR #112.


Documentation Not Availible

http://msdn.microsoft.com/coding4fun/hardware/article.aspx?articleid=1879033
The Above URL for Documentation does not work!

Docs are included in the packages on the Releases tab. Links to c4f are defunct, beyond my control.


Improve UI

Change the UI to always display letters and previous guesses:
❯ cabal run wordlehs
Up to date
Welcome to Wordle.hs!
Type :? for help, :g to view guessed letters, or :q to quit.
  The word was LOSER.

Looks much better. Thanks!


Setup CMake package target and CI auto-deploy tags

$ cmake --build . --target package # or make package if make is used`

can now be used to create binary packages for raylib.
AppVeyor and Travis CI are now configured to push the artifacts
that result from building git tags to the related Github releases page.
As discussed, please tag the merge commit with v1.9.0-dev and lets see it in action. :-)
Unfortunately, AppVeyor overwrites the release text on Github, so if you'd like to add custom text to the release, please wait till CI has finished uploading the artifacts.
If everything works correctly, there should be following packages on the releases page:

raylib-1.9.0-dev-Win32-mingw.zip
raylib-1.9.0-dev-Win64-mingw.zip
raylib-1.9.0-dev-Win32-msvc15.zip
raylib-1.9.0-dev-Win32-msvc15.zip
raylib-1.9.0-dev-Linux-i386.tar.gz
raylib-1.9.0-dev-Linux-amd64.tar.gz
raylib-1.9.0-dev-macOS.tar.gz

The macOS package is a universal (fat) library, which contains both i686 and amd64 builds.

Thanks for this amazing feature!


Screenshot Default Location

Is your feature request related to a problem? Please describe. There is no way to change the default location of screenshots in RuneLite at the moment. Meaning that all my screenshots keep clogging up my C:/ drive.
Describe the solution you'd like It would be great to have an option to choose the file location in the current "Screenshot" settings. For example a "Browse..." addition, so we can re-route the current default pathway.
Describe alternatives you've considered I've tried to move the entire ".runelite" file over to my D:/ drive but there is no option for "locations" in properties therefore I can't move the file.
Additional context I also tried to cut and paste the ".runelite" file to my D:/ drive in hopes of it fixing the problem but to no avail.
Thanks in advance guys.

Duplicate of #1324

You can also make symlink in Windows btw


feat: Chatui agent dropdown fields

Please describe the purpose of this pull request.
This pull request adds new features to the MemGPT project. Specifically, it implements dropdowns for humans, models, and personas in the React-based chat UI, and introduces corresponding API calls and store setups. The styling of the dropdown menu has been updated to align with the global style of the application.
How to test

Run memgpt server and npx nx serve
Create a new agent with the default values (don't change the dropdowns)

Have you tested this PR?
Here are some screenshots from my tests:

Related issues or PRs
Resolves one of two parts outlined in issue #897. This PR implements the front end and the REST API changes.
Is your PR over 500 lines of code?
It is not.
Additional context
Note that until the changes are made by @cpacker to the Sync Server, only the default values will work when adding agents, otherwise a 500 is returned. This is also the case for the current production build when typing invalid values.

@cpacker looks good from my side! I don't have permission to approve PRs but LGTM from my side! 🚀

Thanks for the review @goetzrobin ! I'll try and figure out how to allow you to approve PRs in the future (maybe via some usage of github teams)


Could not decrypt ID

When I tried using it with ruby 2.1.5 and rails 4.1.8, I get "Could not decrypt ID".
I'm using my fork of the 4.1 Encrypted_id fix:  gem "encrypted_id", github: 'ACPK/encrypted_id'

Any ideas?


Semantic Versioning query..

Hi! Do you consider the data structure exposed by jsdoc -X part of the public API? If so, shouldn't you bump the jsdoc major version number when the data structure changes?
Breaking changes to the -X data structure (data content and structure differs if a ES5 class is rewritten in ES 2015) broke jsdoc2md and i had no idea until the reports started coming in.. jsdoc2md consumes the -X output..

JSDoc doesn't currently follow semantic versioning. I expect we'll switch to semantic versioning once there is a better-supported way to use JSDoc as a library.
That said, I'm not aware of any breaking changes to the -X data structure for ES2015 classes. (If there were breaking changes, they should have broken the default template as well.) What exactly is the change that caused problems for you?

hi! Ok, fair enough if it doesn't follow SemVer.. closing..
Regarding the breaking change, i suppose it boils down to what is perceived as "breaking". The change causing problems for me is the difference in JSON data structure between ES5 and ES6 classes.
My users complain "class docs are broken", but i discovered it only affects ES6 class docs. I can't advise them to "rewrite your class in ES5". The ES6 class statement is purely sugar, i didn't expect the underlying class representation to change. This assumption in mind, the alteration of data structure for ES6 felt like a "breaking" change.
Anyway, I have fixed the issue my side. It's hacky (inspecting a kind: "class" record for tell-tale signs it might be ES6) but will do for now.


Convert to TypeScript

As a preliminary step before https://github.com/phetsims/bamboo/issues/42, it seems valuable to convert bamboo to TypeScript.

I noticed a CT error caused by the change to UpDownArrowPlot.ts, I believe it is fixed in the above commit. I also renamed DEFAULT_PAINTABLE_OPTIONS so that it is not as easily confused with PAINTABLE_DEFAULT_OPTIONS.

Bamboo is in TypeScript, additional improvements can be done on-demand.  Closing.


[WIP] Dig upem out of ufo files

Builds on #2, diff will show those changes until merged.
Note to self: @anthrotype taking this over and looking at glyph:ir

Initially, @rsheeter was assuming DS sources only use a UFO default layer (the "glyphs" subdirectory) and was listing the directory parsing each individual .glif file with norad::Glyph::load(glif_file), ignoring layercontents.plist as well as contents.plist.
After picking this PR up, at first I changed it so we take into account the fact that DS sources can reference other layers within a given UFO, and used the plist crate to directly parse layercontents.plist and the contents.plist in order to get to the path of glif files (rather than listing the layer directories).
Now, after @cmyr changed norad to allow filtering selected layers to be loaded in https://github.com/linebender/norad/pull/280, I modified this PR again to no longer mess with internal UFO .plist files but rely on norad to load only the layers that are used.
However, given the direction Rod is taking in #10 and #12, we may have to either go back to parsing the .plist files ourselves, or change norad to provide a method to only load specific glyphs (i.e. the ones that changed for incremental builds purposes) as opposed to all the glyphs within particular layers.

given the direction Rod is taking in https://github.com/googlefonts/fontmake-rs/pull/10 and https://github.com/googlefonts/fontmake-rs/pull/12

Apologies for the inconvenience but I did indeed self-parse the plists in #15.


[Feature Request]: New platform scheduled pipeline to check external version updates

Description
Implement a platform scheduled pipeline to check the latest version for all external sources, e.g., public external actions/steps or tools.
Discuss a possible MVP with the team, for example:
Check https://docs.github.com/en/code-security/dependabot/dependabot-version-updates/configuring-dependabot-version-updates
OR

List all versioned resources (declarative JSON, yaml or other)
Compare for each current vs latest
Provide a job summary of the findings, highlighting what's new
A step further could be to automatically create an issue whenever a mismatch

Versions to check

Note: First draft not exhaustive

PSRule action
Bicep
Az cli
PS version
PS modules (Az, powershell-yaml)
GH Runner/ADO Agent OS
Autoassign PR action
...

Dependabot can automatically bump PSRule action and other GitHub Actions. Config looks like this: https://github.com/Azure/PSRule.Rules.Azure/blob/001f49cffe50b10383934594ea8f926b8526fc13/.github/dependabot.yml#L25-L33


[FileProcessor] Fix return array on FileProcessors

@TomasVotruba this is based on error https://github.com/rectorphp/rector-src/runs/4649685575?check_suite_focus=true#step:14:81 , I tried to apply the changes of return of FIle processor return on LatteFileProcessor and NeonFileProcessor

All checks have passed 🎉 @TomasVotruba let's give it a try.

@TomasVotruba it works 🎉

Thank you :partying_face: :+1:


Memory usage increases even through blocks are freed

Hi!
We are using mimalloc in a service and have noticed that over time there is less and less memory available on the machine where the service runs.
We are doing some in isolation experiments, to narrow down whether the issue is really and issue or it is just an expected behavior from mimalloc for our workload.
We ended up with the following (rather simple) sequence as a repro:

Repeat for 100 times (or more):

Allocate an array of 300000 pointers
Allocate 300000 memory blocks. Each odd memory allocation is 128K, the even ones are 512 bytes. Effectively interleaving 128K and 512 bytes allocations
Free all 300000 blocks

After running our process still shows the memory in use even though free has obviously been called.
We tried calling mi_collect at each iteration of 300000 allocations to force reclaiming the memory, but it did not help (with or without force).
Is there something I am doing wrong or is there some way I can mitigate this?
Also an interesting aspect is that stats say that "Not all freed" for the reserved and committed rows of the stats:
heap stats:     peak      total      freed       unit      count
  reserved:    19.0 gb    19.0 gb       0 b        1 b              not all freed!
 committed:    19.0 gb    19.0 gb       0 b        1 b              not all freed!
     reset:       0 b        0 b        0 b        1 b              ok
   touched:       0 b        0 b   1838.8 gb       1 b              ok
  segments:     4.7 k    476.4 k    476.4 k                         ok
-abandoned:       0          0          0                           ok
   -cached:       0          0          0                           ok
     pages:    39.1 k      3.8 m      3.8 m                         ok
-abandoned:       0          0          0                           ok
 -extended:       0
 -noretire:       0
     mmaps:       0
   commits:     4.8 k
   threads:       0          0          0                           ok
  searches:     0.0 avg
numa nodes:       1
   elapsed:       4.078 s
   process: user: 3.234 s, system: 0.843 s, faults: 1548488, reclaims: 0, rss: 5.8 gb, commit charge: 19.0 gb

The code is below, let me know if more information is needed!
Thanks,
/Dan
// Copyright (c) Microsoft. All rights reserved.

#include <stddef.h>
#include <stdlib.h>
#include <stdint.h>
#include <mimalloc.h>

#define ALLOC_COUNT                 300000
#define ALLOC_CYCLES                100

int main(void)
{
    size_t iter;
    // loop several times
    for (iter = 0; iter < ALLOC_CYCLES; iter++)
    {
        // arrange
        uint32_t i;

        // allocate an array of pointers
        void** blocks = (void**)mi_malloc(sizeof(void*) * ALLOC_COUNT);

        // act
        // allocate the memory by alternating 128K and 512 blocks
        for (i = 0; i < ALLOC_COUNT; i++)
        {
            blocks[i] = mi_malloc(i % 2 ? (128 * 1024) : 512);
        }

        // assert
        // free all blocks
        for (i = 0; i < ALLOC_COUNT; i++)
        {
            mi_free(blocks[i]);
        }

        // free the array of pointers
        mi_free(blocks);

        // force mimalloc to collect (aggresively)
        mi_collect(true);
    }

    // print stats - this shows that not all are free???
    mi_stats_print_out(NULL, NULL);

    // just loop while collecting - just in case
    while (1) mi_collect(true);//    size_t failedTestCount = 0;
}

Hi @dcristoloveanu ,  thanks for your report and working with me :-)  As we discussed this is expected behaviour from this program but I respond here to document it. Because it is not touching the memory it allocates , at first we only see the use for OS pages that are touched due to metadata. For the segments of 4MiB some contain small mimalloc pages and others big ones. When segments get reused, slowly all segments will at some time be used for small mimalloc pages (instead of the original big ones) and thus OS page touching increases until all metadata for all small pages is touched at which point it stabilizes.

Ty @daanx!


[CLion] Env var setup not performed when using gdb/lldb (not gdbserver)

I'm running some tests under gdb, and not using gdbserver. My test uses Runfiles::CreateForTest() from here which relies on the env var TEST_SRCDIR. However when launching through the IDE, this var has not been set.
In comparison, if I use the --run_under flag to run a test in GDB from the command line. The TEST_SRCDIR is set.

Might be a duplicate of #193 actually.


[scripts] Move ci test conditional to test-ci

Moved travis conditional from travis.yml to script/ci/test-ci
Added logs to indicate that test-ci is being run

This is mainly to clean up CI output logs.
/cc @estroz @dmesser

/hold

Closing since this change can't pass CI and because it wouldn't add much value to CI


Infer Base URL Based on Current Date

In cs251tk/toolkit/args.py, would it make sense to infer the default base URL based on the current date?

Absolutely.
StoGit uses a $course-$semester$calendarYear format: "sd-s14" (software, spring of 2013-14), "hd-f17" (hardware, fall of 2017-18).
So really, we'd assume software design (for now), say that semester is "s" if currentMonth < 6, otherwise "f", and just grab the calendar year?
I think that should work.

Could we include it in the spec somehow?

Then we'd have to update each spec file every year, though.
I could see benefits for making a "class spec" file - containing, like, the StoGit base, and a list of homeworks, maybe including due dates.
But I don't think I want to include the stogit base URL in the current spec files, no.

now = datetime.date.today()
abbr = 'sd'
semester = 's' if now.month < 6 else 'f'
year = str(now.year)[2:]
stogit =<EMAIL_ADDRESS>base_url = '{}:{}-{}{}'.format(stogit, abbr, semester, year)

I think that should work? Needs testing.

I have a commit that should do this locally. I'll PR it soon.

Closed by #36.


[ENH] automatically determine which dwis can/should be merged

Unlike fmriprep, fieldmaps are dealt with at the very beginning of the pipeline to figure out which scans are in the same "warped space".  This PR should be an entry point for discussing how to group scans.
This particular setup works for

HCP
HCP lifespan
ABCD

I like this @mattcieslak . Curious how much the sdc performance improves with this setup when running on the HCP data that you mentioned?
Since clear standards for combining dwi's across runs don't really exist yet in the field (and particularly for optimizing sdc accordingly), I agree that this is an important conversation to be having early on.
Another thing that might help here is to make more efficient use of aggregated metadata across runs with a volume legend to keep track of which b0s/dwis go with which sdc method/files and acq. params. Thoughts?
@dPys

@mattcieslak, could you point me to the exact spot where the heuristic of which dwis can/should be merged is implemented?

It's here: https://github.com/nipreps/dmriprep/blob/b9e4cc6ef19b5c884377c15d55dde6812a79fcf7/dmriprep/workflows/base.py#L765

Not sure how I missed all these suggestions. I will take a look and write some responses. This might also make a good topic for discussion at the code sprint.


Minor typo in README

Changed "add" to ".join()" to reflect current API.

Seems like the .join() method previously was named .add(). The example is also currently not working but #22 fixes that.


Re-enable torchmultimodal's exponential distribution related test cases

Summary:
Re-enable exponential distribution related test cases skipped by https://github.com/facebookresearch/multimodal/pull/364

Codecov Report
Base: 91.01% // Head: 63.53% // Decreases project coverage by -27.48% :warning:

Coverage data is based on head (940e037) compared to base (89c9242).
Patch has no changes to coverable lines.

Additional details and impacted files
@@             Coverage Diff             @@
##             main     #393       +/-   ##
===========================================
- Coverage   91.01%   63.53%   -27.49%
===========================================
  Files          56      143       +87
  Lines        3228     9604     +6376
===========================================
+ Hits         2938     6102     +3164
- Misses        290     3502     +3212

Impacted Files
Coverage Δ

tests/modules/losses/test_mdetr_losses.py
100.00% <ø> (ø)

tests/utils/test_generate.py
100.00% <ø> (ø)

examples/albef/data/vqa_datamodules.py
0.00% <0.00%> (ø)

tests/models/flava/test_flava.py
100.00% <0.00%> (ø)

examples/omnivore/data/presets.py
0.00% <0.00%> (ø)

tests/models/albef/test_multimodal_encoder.py
100.00% <0.00%> (ø)

examples/albef/finetune_vqa.py
0.00% <0.00%> (ø)

tests/utils/test_attention_utils.py
100.00% <0.00%> (ø)

tests/utils/test_common.py
100.00% <0.00%> (ø)

... and 82 more

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.

@ebsmothers Could you please view this PR ? Thank you !

@ebsmothers  There are some checks still haven’t completed yet, should we wait for it or do something to trigger it ?


Node fails to restart after stopping

The following works:
node create ...
node stop ...
node start ...

But if we stop and start the same node again, it fails and the node never starts.

hi @adrianbenavides! could you tell what error does it fail with?

@pro465 thank you for looking into this.
I think there are multiple things that are broken / not-yet-handled in this area.
Here's one example I can reproduce. But I suspect there are more cases.
» ockam node create n1

Node Created!

Node:
  Name: n1
  Status: UP
  Services:
    Service:
      Type: TCP Listener
      Address: /ip4/<IP_ADDRESS>/tcp/63746
    Service:
      Type: Secure Channel Listener
      Address: /service/api
      Route: /ip4/<IP_ADDRESS>/tcp/63746/service/api
      Identity: Pd4a7aba84b6b9d8d4457c1ea52c1468aa9b0ef939ed43eaec381dcaf1509a048
      Authorized Identities:
        - Pd4a7aba84b6b9d8d4457c1ea52c1468aa9b0ef939ed43eaec381dcaf1509a048
    Service:
      Type: Uppercase
      Address: /service/uppercase
    Service:
      Type: Echo
      Address: /service/echo
  Secure Channel Listener Address: /service/api

» ockam message send hello --to /node/n1/service/uppercase
HELLO

» ockam node stop n1

» ockam node start n1
Attempting to restart node 'n1'
Running: start node ...ok!

This hangs:
» ockam message send hello --to /node/n1/service/uppercase
^C

» ockam node show n1

Node:
  Name: n1
  Status: UP
  Services:
    Service:
      Type: TCP Listener
      Address: /ip4/<IP_ADDRESS>/tcp/63746
    Service:
      Type: Secure Channel Listener
      Address: /service/api
      Route: /ip4/<IP_ADDRESS>/tcp/63746/service/api
      Identity: Pd4a7aba84b6b9d8d4457c1ea52c1468aa9b0ef939ed43eaec381dcaf1509a048
      Authorized Identities:
        - Pd4a7aba84b6b9d8d4457c1ea52c1468aa9b0ef939ed43eaec381dcaf1509a048
    Service:
      Type: Uppercase
      Address: /service/uppercase
    Service:
      Type: Echo
      Address: /service/echo
  Secure Channel Listener Address: /service/api

@mrinalwadhwa try to reproduce this in GA led to:
https://github.com/pro465/ockam/runs/7873283378?check_suite_focus=true#step:8:403
so startup::stop somehow is failing in GA, while in your machine it is not?

@pro465 interesting, I just tried again and it didn't happen on my machine.

so, it seems kill call is succeeding:
https://github.com/pro465/ockam/runs/7873805002?check_suite_focus=true#step:8:403
that means there is a bug in the check in StartCommand::run

Hi,
I inserted a few printouts into the code, I could see something that perhaps is kind of a relevant thing.
This code
startup::start(&command.node_name, &cfg, &start_cfg);

searches for a start up config json, which on my machine looks like so:
{
  "commands": []
}

So on the surface, it looks like there is no command to run upon the node startup.
And the printout after a list (or send) command, for example:
sending: route: 1#localhost:6001 => 0#_internal.nodemanager
ERROR: Failed to process request

Just to try something dirty I explicitly connected the node in the startup code by:
connect_to(6001, (cfg.clone(), command.node_name), query_status);

which produced no apparent effect.

The abandoned PR #3456 determined that..

The node does not restart its 'default services' because --skip-defaults is used when re-starting a node, and that this is the desired behaviour.
To re-start 'default services' the node should record in a config file when it starts services, and then when a node starts it should read that config to re-start its services.
The CLI (ockam_command) has the startup.json functionality, but this was not fully rolled out and its believed that it should be the node (ockam_api) that re-starts its services (not ockam_command)

Next steps...

[ ] Remove startup.json functionality from ockam_command.
[ ] Add startup.json infrastructure code to ockam_api.
[ ] Node to restart the 'default services' when node starts up.
[ ] Node to restart other 'things' (e.g. TCP inlets and outlets) when node starts up.

@neil2468 of course, all yours.

@adrianbenavides commented (https://github.com/build-trust/ockam/pull/3533#issuecomment-1260682593)...

Regarding your proposal on https://github.com/build-trust/ockam/issues/3234, just wanted to let you know that I'm currently working on a substitute for this startup.json functionality.
In a nutshell, we want to be able to define the commands that must be executed when a node is created and after it's restarted. You can find some details here: https://github.com/build-trust/ockam/pull/3519 (note that it's still a WIP feature, and could change quite a bit in the coming days/weeks). Let me know if you think this would be enough to tick your Node to restart other 'things' (e.g. TCP inlets and outlets) when node starts up. checkbox or if you had something else in mind.

The #3519 feature could work to fix this issue. 👍
However its adoption would mean.. 🤔

It would be ockam_command and not ockam_api that keeps track of what has been started within a node.
Adding ockam service start commands for the node's "default" services (e.g. uppercase & echoer).
Removing the node's starting of non-essential services when it starts.
Removing the '--skip-defaults' feature when starting a node.
Modifying the commands.bats test script to explicltly start needed services.
Modifying help and user documents to explicitly start needed services.

@adrianbenavides , @SanjoDeundiak Thoughts? Is this how Ockam would like the CLI to develop?

@neil2468 Thank you for continuing to look into this.
I will try to write a longer thread on this soon, but in the meantime a quick point ... we don't want users to have to start all services. So there should be default list of services that are started when a node starts. Configuration should allow overriding this default list.

As I commented on https://github.com/build-trust/ockam/pull/3832#issuecomment-1324680687, the code related to this issue is being heavily refactored and probably this issue will be solved when we finish that task.
I'll keep this thread updated as we progress.

@adrianbenavides I cannot reproduce the issue, i think we can close this

Sure, thanks for the heads up!


Implement Light/Dark Theme on All Pages

I'm an avid user of TWBlocks and I appreciate the work put into making these blocks available.
I have a suggestion to enhance the user experience. Currently, the light/dark theme toggle is available only on the homepage. I propose extending this feature to all pages for consistency and improved accessibility.
By implementing the light/dark theme toggle across all pages, users can customize their browsing experience according to their preference seamlessly. This enhancement would elevate TWBlocks and provide users with a cohesive experience throughout the entire site.
Thanks!

Thanks! Makes tons of sense. I've changed it to be available on all pages now.


Error: Cannot find module '../service_key.json'

bsuma@DESKTOP-bsum MINGW64 ~/Desktop/firebase_projects/CRUD_app (main)
$ nodemon app.js
[nodemon] 2.0.20
[nodemon] to restart at any time, enter rs
[nodemon] watching path(s): .
[nodemon] watching extensions: js,mjs,json
[nodemon] starting node app.js
node:internal/modules/cjs/loader:1042
throw err;
^
Error: Cannot find module '../service_key.json'
Require stack:

C:\Users\bsuma\Desktop\firebase_projects\CRUD_app\js_assets\db_config.js
C:\Users\bsuma\Desktop\firebase_projects\CRUD_app\app.js
at Module._resolveFilename (node:internal/modules/cjs/loader:1039:15)
at Module._load (node:internal/modules/cjs/loader:885:27)
at Module.require (node:internal/modules/cjs/loader:1105:19)
at require (node:internal/modules/cjs/helpers:103:18)
at Object. (C:\Users\bsuma\Desktop\firebase_projects\CRUD_app\js_assets\db_config.js:2:24)
at Module._compile (node:internal/modules/cjs/loader:1218:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1272:10)
at Module.load (node:internal/modules/cjs/loader:1081:32)
at Module._load (node:internal/modules/cjs/loader:922:12)
at Module.require (node:internal/modules/cjs/loader:1105:19) {
code: 'MODULE_NOT_FOUND',
requireStack: [
'C:\Users\bsuma\Desktop\firebase_projects\CRUD_app\js_assets\db_config.js',
'C:\Users\bsuma\Desktop\firebase_projects\CRUD_app\app.js'
]
}

Node.js v18.13.0
[nodemon] app crashed - waiting for file changes before starting...

This is generated just for the absence of service_key.json,
which contain the information of the firestore, and the apis ...
We will be fix them as soon as possible.
Thank you for your valuable contrubution.
Happy Codding ...

@saaktimaan : The issue #15 raised by you is now fixed..


Addition of macie.tf to add working macie change

NOTE - this requires additional changes to the role MemberInfrastructureAccess.  The macie2:* must be in there.
For cooker this was done online and has been lost every evening and had to be added back before each terraform plan was run. Added to both cooker and example.
Various changes were made following David's comments.

the providers step that was originally in the code had been moved to platform_providers.tf. After running a plan without this it appears it was not needed so it has been removed and the platform_providers.tf code has been posted in this PR
macie.tf has been amended to change the original code so the buckets are not shown but the code such as "data.aws_s3_bucket.bucket1.id," replaces the bucket names that were listed.
As there was no easy way to find the bucket IDs to use in the above code the amended items were added to the data.tf, following comment vy @davidkelliott . Details of these will be shown in the documentation.

The RDS install was failing because it was trying to use and outdated version of the db software. Updated the application_variables.json to set this to 16.3. Not 100% sure it will fix the issue but it may

Moved the apply out of macie.tf as the opa wasn't happy with it.

Review wasn't needed - it could be approved in development directly.

Heya @SteveLinden; to summarise I think this is almost good to go. Can you do the following?

Remove the code from cooker - it's served its purpose.
Remove the comments from ECS in example - if there's an issue there then we can visit that in a separate PR.


refactor: migrate DeleteComponentButton to TypeScript

SUMMARY
Migrated DeleteComponentButton to TypeScript to apply direction outlined in #18100 .
BEFORE/AFTER SCREENSHOTS OR ANIMATED GIF
No changes
TESTING INSTRUCTIONS
The storybook can be used to verify those changes.
ADDITIONAL INFORMATION

[x] Has associated issue: #18100
[ ] Required feature flags: no
[ ] Changes UI: no
[ ] Includes DB Migration (follow approval process in SIP-59)

[ ] Migration is atomic, supports rollback & is backwards-compatible
[ ] Confirm DB migration upgrade and downgrade tested
[ ] Runtime estimates and downtime expectations provided

[ ] Introduces new feature or API: no
[ ] Removes existing feature or API: no

@ad-m , @zhaoyongjie , @kristw

@ad-m I've made mentioned changes.

@geido I've moved it to functional component

Thanks @Scrip7! Now running CI

@geido CI is done!


Create a logo for this app

Hi.. My name is Andela Denaro, and I want to propose logo for your project.
Here's my design.

I would appreciate hearing your opinion on this. Kind regards.

Hi Andela, my name is Ndadji Maxime. I really like your design! It's really in the spirit of the application that I'm trying to build. Wow, you're pretty good huh. Thank you very much for your interest and I hope we will collaborate throughout this great adventure?

Yes sure.. Challenge accepted.
So what do you think? If it suits your mind, I will provide the original file for this project.

Yes that corresponds to my expectations. It would be interesting to have a version without the text that will be used as the icon of the desktop application.

Ok thanks!


fixed broken zhihu url

as title

This is a awesome project, thanks a lot BTW.

Tanks for your contribution!


fixed self static and parent for class static

Should fix #272

Codecov Report

Merging #273 (7f05c47) into main (bb253d9) will increase coverage by 0.01%.
The diff coverage is 100.00%.

@@             Coverage Diff              @@
##               main     #273      +/-   ##
============================================
+ Coverage     93.49%   93.51%   +0.01%
- Complexity      362      363       +1
============================================
  Files            57       57
  Lines           969      971       +2
============================================
+ Hits            906      908       +2
  Misses           63       63

Impacted Files
Coverage Δ

src/Analyzer/FileVisitor.php
80.76% <100.00%> (+0.50%)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update bb253d9...7f05c47. Read the comment docs.


Add automation to automatically assigned milestones to issues closed during iteration

Ideally we only want to add milestones for issues which have an associated PR.
Together with https://github.com/microsoft/vscode-python/issues/21934, this should make sure that an issue fixed is always verified.

@lramos15 We found something similar in https://github.com/microsoft/vscode-github-triage-actions/blob/stable/release-pipeline/index.ts but it also assumes the concept of "unreleased" labels, which we don't have.
Also it seems like https://github.com/microsoft/vscode-github-triage-actions/blob/71a4da6d2999defd04415ec9924c0579ad26ac90/release-pipeline/ReleasePipeline.ts#L81 calls into "issue.getClosingInfo()" which assumes we're working on vscode repository:
https://github.com/microsoft/vscode-github-triage-actions/blob/71a4da6d2999defd04415ec9924c0579ad26ac90/api/octokit.ts#L446-L461
Can you help with how to modify it to work with this repository?


what are these metrics

Hi,
What are these metrics in _internal.subscriber.destination

createFailures
writeFailures

can I use them to setup alerts to monitor the health of the Kapacitor itself ?
What is the recommended way to monitor Kapacitor?

Recommended approach is outlined here: https://www.influxdata.com/blog/influxdb-debugvars-endpoint/
Yes, you can use the emitted metrics to monitor the health of a Kapacitor instance.
When the InfluxData support team monitors Kapacitor instance within InfluxCloud -- we use a variety of system metrics along with Kapacitor specific metrics. You will likely need to modify the queries slightly based on your setup (i.e. hostnames will be different in your environment).
Some example queries we use:
System Memory  --
SELECT mean("used_percent") AS "Kapa Mean Used Percent" FROM "telegraf"."autogen"."mem" WHERE time > :dashboardTime: AND host =~ /.kapa./ GROUP BY time(:interval:)
System Load:
SELECT mean("load5") as "Kapa Load5", mean("load15") as "Kapa Load15", mean("load1") as "Kapa Load1" FROM "telegraf"."autogen"."system" WHERE time > :dashboardTime: AND host =~ /.kapa./  group by time(:interval:)
System CPU:
SELECT mean("usage_user") as "Kapa Usage" FROM "telegraf"."autogen"."cpu" WHERE time > :dashboardTime: AND "cpu"='cpu-total' AND "host"=~ /.kapa./ group by time(:interval:)
Kapacitor specific ----
Number of Subscriptions (between InfluxDB and Kapa):
SELECT "num_subscriptions" FROM "telegraf"."autogen"."kapacitor" WHERE time > :dashboardTime:  AND host =~ /.kapa./ fill(0)  Single Stat
Number of Running Tasks:
SELECT "num_enabled_tasks" FROM "telegraf"."autogen"."kapacitor" WHERE time > :dashboardTime: AND host =~ /.kapa./ fill(0)  single-stat
Data Ingest Rate:
SELECT sum(points_received_rate) FROM (SELECT non_negative_derivative(first("points_received"),1s) as "points_received_rate" FROM "telegraf"."autogen"."kapacitor" WHERE time > :dashboardTime: GROUP BY "database", "retention_policy", "measurement", time(:interval:)) WHERE time > :dashboardTime: GROUP BY time(:interval:)
Ingest by Task:
SELECT non_negative_derivative("collected",1s) FROM "telegraf"."autogen"."kapacitor" WHERE time > :dashboardTime: AND ("parent"='stream' OR "parent"='batch')  GROUP BY task


fix: multiple field display & switch collection

For anyone who wants to have quick fix before merge.
# composer.json

{
    "require": {
        // ...
        "outl1ne/nova-media-hub": "dev-main",
    },
    "repositories": {
        // ...
        "nova-media-hub": {
            "type": "vcs",
            "url": "https://github.com/godkinmo/nova-media-hub.git"
        }
    }
}

Then
composer require outl1ne/nova-media-hub:dev-main

For anyone who wants to have quick fix before merge.
# composer.json

{
    "require": {
        // ...
        "outl1ne/nova-media-hub": "dev-main",
    },
    "repositories": {
        // ...
        "nova-media-hub": {
            "type": "vcs",
            "url": "https://github.com/godkinmo/nova-media-hub.git"
        }
    }
}

Then
composer require outl1ne/nova-media-hub:dev-main

I have updated my project but the multiple files still does not show console shows "TypeError: Cannot read properties of undefined (reading 'length')"

Oh, I see the error too, not test on create resource... I am going to fix this

@marcelosantos89 just fixed, can try again

It's working now 👍
Thank you

I have noticed something else.
How to reproduce:

Add multiple images to a field and save.
Clear all images from that field and save.
When you try to add new images it won't save if you click save again it will save empty.

Maybe this bug is not because of your fix if it's not i will add to issues

Just fixed

Hi @godkinmo! Thanks for your PR. I applied the fixes from your PR to the main branch, but used a different approach to fix the non-casted attribute field not showing any values after saving.
I released your fixes with appropriate credits in version 1.0.1. :) Thanks a ton for helping out!


forvo engine to support Hebrew pronunciation

Please add suport for forvo.
Making an engine???!!!
So that Hebrew pronunciation can be possible.
Since Google translator has no support for Hebrew speaker for a long time now.
It is unbealivable that Google does not support sounds for Hebrew language at this
point of its technology and resources
https://forvo.com/word/שלום/

Thanks for the suggestion. (Closing as it is a duplicate of #253.)

Yeah! But the suggestion was make in 2018...
Please add this. People who study Hebrew and Arabic - right-to-left -
languages would
appreciate it.
On Tue, Jun 29, 2021 at 11:08 AM Mort Yao @.***> wrote:

Thanks for the suggestion. (Closing as it is a duplicate of #253
https://github.com/soimort/translate-shell/issues/253.)
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/soimort/translate-shell/issues/407#issuecomment-870633595,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AKLPRKPKOIKIPBIOTFRGXETTVHHWRANCNFSM47QFM35Q
.

For now the priority is probably to fix the support for the Bing engine, which supports Hebrew pronunciation as well.

Great!
But do not forget forvo.
Because it is real native people speaking and the quality is just amazing.
You can try it online and see for yourself....
On Wed, Jun 30, 2021 at 6:08 PM Mort Yao @.***> wrote:

For now the priority is probably to fix the support for the Bing engine,
which supports Hebrew pronunciation as well.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/soimort/translate-shell/issues/407#issuecomment-871728611,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AKLPRKMWCBW5CB3A7WHTC5LTVOBURANCNFSM47QFM35Q
.


Do not create keystone endpoints when Glance is not available

Unlike services like CinderVolume where replicas:0 still sees an available api and scheduler, if the default GlanceAPI has replicas:0, - which is something suggested at day1 when the storage backend is still not available -, a keystone endpoint is created anyway in the catalog.
This means that the Glance service can be discovered, the endpoint can be reached from an OpenShift point of view, and it fails returning a 503 if a request is made.
This behavior might result confusing for the human operator, who thinks that there's a problem with the service, ignoring that is should still be configured.
This patch fixes this problem by not creating the endpoints at all if no Glance replica is available.

maybe I read it wrong, but this will still make glance to be in setup complete state, right? just the endpoint is not registered. So it won't point the end user to what is missing and you just get a different error when using the openstack cli to create/list images

maybe I read it wrong, but this will still make glance to be in setup complete state, right? just the endpoint is not registered. So it won't point the end user to what is missing and you just get a different error when using the openstack cli to create/list images

Correct, it reconciles (like before), but simply it won't register the endpoints, so users don't get a 503 when they try to openstack image list.

maybe I read it wrong, but this will still make glance to be in setup complete state, right? just the endpoint is not registered. So it won't point the end user to what is missing and you just get a different error when using the openstack cli to create/list images

Correct, it reconciles (like before) and reaches Setup complete, but simply it won't register the endpoints, so users don't get a 503 when they try to openstack image list.

ack, I guess we need to revisit what we discussed a couple of months back if we need a condition which reflects the actual functional state in addition the the Setup complete

maybe I read it wrong, but this will still make glance to be in setup complete state, right? just the endpoint is not registered. So it won't point the end user to what is missing and you just get a different error when using the openstack cli to create/list images

Correct, it reconciles (like before) and reaches Setup complete, but simply it won't register the endpoints, so users don't get a 503 when they try to openstack image list.

ack, I guess we need to revisit what we discussed a couple of months back if we need a condition which reflects the actual functional state in addition the the Setup complete

Do you want me to hold this change? It doesn't change the problem and the current state of things, but I'm ok to hold in case we need to make it part of a broader discussion.

maybe I read it wrong, but this will still make glance to be in setup complete state, right? just the endpoint is not registered. So it won't point the end user to what is missing and you just get a different error when using the openstack cli to create/list images

Correct, it reconciles (like before) and reaches Setup complete, but simply it won't register the endpoints, so users don't get a 503 when they try to openstack image list.

ack, I guess we need to revisit what we discussed a couple of months back if we need a condition which reflects the actual functional state in addition the the Setup complete

Do you want me to hold this change? It doesn't change the problem and the current state of things, but I'm ok to hold in case we need to make it part of a broader discussion.

No, if @dprince agrees that this is a better then the current behavior I am fine to get it in and we follow up with the discussion on general improvement to reflect you got what you requested and the service is functional

Would we then remove it if replicas get scaled down to 0. My issue with replicas wasn't that the endpoint existed, it was that I expected the default glance-api to be 1.

Would we then remove it if replicas get scaled down to 0. My issue with replicas wasn't that the endpoint existed, it was that I expected the default glance-api to be 1.

Right, when replicas: 0 the endpoints are removed. This doesn't address the replicas 1 vs 0, it's more to avoid getting a 503 if we scaled the service down.

Would we then remove it if replicas get scaled down to 0. My issue with replicas wasn't that the endpoint existed, it was that I expected the default glance-api to be 1.

Right, when replicas: 0 the endpoints are removed. This doesn't address the replicas 1 vs 0, it's more to avoid getting a 503 if we scale the service down (it might result misleading).

@stuggi @dprince Note that Glance is a "special" component here: both API and the underlying engine are up or down at the same time, you can't have API up and running, but not accepting data/image upload.
If you explicitly set replicas: 0, k8s Route returns a 503 because HAProxy has no backends. However, in theory, it shouldn't behave this way, because there's no backend to forward requests to, and the client should be notified about that, instead of thinking that "there's a problem in the API".
Do you think this is kind of an antipattern in the openstack-k8s-operators ?

Would we then remove it if replicas get scaled down to 0. My issue with replicas wasn't that the endpoint existed, it was that I expected the default glance-api to be 1.

Right, when replicas: 0 the endpoints are removed. This doesn't address the replicas 1 vs 0, it's more to avoid getting a 503 if we scale the service down (it might result misleading).

@stuggi @dprince Note that Glance is a "special" component here: both API and the underlying engine are up or down at the same time, you can't have API up and running, but not accepting data/image upload. If you explicitly set replicas: 0, k8s Route returns a 503 because HAProxy has no backends.

technically, I'd say the route behaves correct as it has no knowledge of what kind of service it servers. If there is no service running it can just return the 503.

However, in theory, it shouldn't behave this way, because there's no backend to forward requests to, and the client should be notified about that, instead of thinking that "there's a problem in the API".  Do you think this represents of an anti-pattern in the openstack-k8s-operators ?

Returning information to the user on what is missing would be beneficial. Not registering the endpoint probably also does not point to that the config is missing, right? But as you said in other discussion to proceed e.g. with ceph hci deployment, at least right now, we first need a ctlplane deployment, then do the ceph deployment and go back to the ctlplane and configure it as backend.
As an idea, what about if glanceapi replica is 0, or the controller recognize that there is no backend configured, we bring up a simple/custom httpd deployment, which returns a static json for status/images which reports, no backend configured/available. I did a simple test and it could look like this:
sh-5.1$ openstack image list
+--------------------------------------+-----------------------+--------+
| ID                                   | Name                  | Status |
+--------------------------------------+-----------------------+--------+
| 00000000-0000-0000-0000-000000000000 | NO BACKEND CONFIGURED | queued |
+--------------------------------------+-----------------------+--------+

Would we then remove it if replicas get scaled down to 0. My issue with replicas wasn't that the endpoint existed, it was that I expected the default glance-api to be 1.

Right, when replicas: 0 the endpoints are removed. This doesn't address the replicas 1 vs 0, it's more to avoid getting a 503 if we scale the service down (it might result misleading).

@stuggi @dprince Note that Glance is a "special" component here: both API and the underlying engine are up or down at the same time, you can't have API up and running, but not accepting data/image upload. If you explicitly set replicas: 0, k8s Route returns a 503 because HAProxy has no backends.

technically, I'd say the route behaves correct as it has no knowledge of what kind of service it servers. If there is no service running it can just return the 503.

However, in theory, it shouldn't behave this way, because there's no backend to forward requests to, and the client should be notified about that, instead of thinking that "there's a problem in the API".  Do you think this represents of an anti-pattern in the openstack-k8s-operators ?

Returning information to the user on what is missing would be beneficial. Not registering the endpoint probably also does not point to that the config is missing, right? But as you said in other discussion to proceed e.g. with ceph hci deployment, at least right now, we first need a ctlplane deployment, then do the ceph deployment and go back to the ctlplane and configure it as backend. As an idea, what about if the controller recognize that there is no backend configured, we bring up a simple/custom httpd deployment, which returns a static json for status/images which reports, no backend configured/available. I did a simple test and it could look like this:
sh-5.1$ openstack image list
+--------------------------------------+-----------------------+--------+
| ID                                   | Name                  | Status |
+--------------------------------------+-----------------------+--------+
| 00000000-0000-0000-0000-000000000000 | NO BACKEND CONFIGURED | queued |
+--------------------------------------+-----------------------+--------+

maybe then we could default to 1?

Would we then remove it if replicas get scaled down to 0. My issue with replicas wasn't that the endpoint existed, it was that I expected the default glance-api to be 1.

Right, when replicas: 0 the endpoints are removed. This doesn't address the replicas 1 vs 0, it's more to avoid getting a 503 if we scale the service down (it might result misleading).

@stuggi @dprince Note that Glance is a "special" component here: both API and the underlying engine are up or down at the same time, you can't have API up and running, but not accepting data/image upload. If you explicitly set replicas: 0, k8s Route returns a 503 because HAProxy has no backends.

technically, I'd say the route behaves correct as it has no knowledge of what kind of service it servers. If there is no service running it can just return the 503.

However, in theory, it shouldn't behave this way, because there's no backend to forward requests to, and the client should be notified about that, instead of thinking that "there's a problem in the API".  Do you think this represents of an anti-pattern in the openstack-k8s-operators ?

Returning information to the user on what is missing would be beneficial. Not registering the endpoint probably also does not point to that the config is missing, right? But as you said in other discussion to proceed e.g. with ceph hci deployment, at least right now, we first need a ctlplane deployment, then do the ceph deployment and go back to the ctlplane and configure it as backend. As an idea, what about if the controller recognize that there is no backend configured, we bring up a simple/custom httpd deployment, which returns a static json for status/images which reports, no backend configured/available. I did a simple test and it could look like this:
sh-5.1$ openstack image list
+--------------------------------------+-----------------------+--------+
| ID                                   | Name                  | Status |
+--------------------------------------+-----------------------+--------+
| 00000000-0000-0000-0000-000000000000 | NO BACKEND CONFIGURED | queued |
+--------------------------------------+-----------------------+--------+

maybe then we could default to 1?

I'm not sure about this: my concern is that you're writing this data in the database, and I don't think we have a way to clean it up automatically when we redeploy (and rolling out a new config doesn't restart everything from scratch). Also, the human operator is allowed to mess up w/ the customServiceConfig interface, and it might happen that decommissioning a backend results in an inconsistent state as well.
We could .Delete the API, but I feel like we might risk to overcomplicate the code, and I'm not sure we want to get into that business here (and actually, the goal is to start a process of simplify the use cases and the operator from Epoxy+).
It's easy to detect that no backend is set from the operator, just wondering if we can return a static response telling the human operator that he's not allowed to upload an image until a backend in configured (@konan-abhi knows more on that front).
I need to think more about this, but from your replies so far I would say the endpoint creation is a NACK from the operators perspective.

Would we then remove it if replicas get scaled down to 0. My issue with replicas wasn't that the endpoint existed, it was that I expected the default glance-api to be 1.

Right, when replicas: 0 the endpoints are removed. This doesn't address the replicas 1 vs 0, it's more to avoid getting a 503 if we scale the service down (it might result misleading).

@stuggi @dprince Note that Glance is a "special" component here: both API and the underlying engine are up or down at the same time, you can't have API up and running, but not accepting data/image upload. If you explicitly set replicas: 0, k8s Route returns a 503 because HAProxy has no backends.

technically, I'd say the route behaves correct as it has no knowledge of what kind of service it servers. If there is no service running it can just return the 503.

However, in theory, it shouldn't behave this way, because there's no backend to forward requests to, and the client should be notified about that, instead of thinking that "there's a problem in the API".  Do you think this represents of an anti-pattern in the openstack-k8s-operators ?

Returning information to the user on what is missing would be beneficial. Not registering the endpoint probably also does not point to that the config is missing, right? But as you said in other discussion to proceed e.g. with ceph hci deployment, at least right now, we first need a ctlplane deployment, then do the ceph deployment and go back to the ctlplane and configure it as backend. As an idea, what about if the controller recognize that there is no backend configured, we bring up a simple/custom httpd deployment, which returns a static json for status/images which reports, no backend configured/available. I did a simple test and it could look like this:
sh-5.1$ openstack image list
+--------------------------------------+-----------------------+--------+
| ID                                   | Name                  | Status |
+--------------------------------------+-----------------------+--------+
| 00000000-0000-0000-0000-000000000000 | NO BACKEND CONFIGURED | queued |
+--------------------------------------+-----------------------+--------+

maybe then we could default to 1?

I'm not sure about this: my concern is that you're writing this data in the database, and I don't think we have a way to clean it up automatically when we redeploy (and rolling out a new config doesn't restart everything from scratch). Also, the human operator is allowed to mess up w/ the customServiceConfig interface, and it might happen that decommissioning a backend results in an inconsistent state as well. We could .Delete the API, but I feel like we might risk to overcomplicate the code, and I'm not sure we want to get into that business here (and actually, the goal is to start a process of simplify the use cases and the operator from Epoxy+). It's easy to detect that no backend is set from the operator, just wondering if we can return a static response telling the human operator that he's not allowed to upload an image until a backend in configured (@konan-abhi knows more on that front). I need to think more about this, but from your replies so far I would say the endpoint creation is a NACK from the operators perspective.

What I did was not to add something to the DB, its just a static response from the custom deployment. for this I was just using an nginx deployment which returned
      location /v2/images {
        default_type application/json;
        return 200 '{"images": [{"owner_specified.openstack.md5": "", "owner_specified.openstack.sha256": "", "owner_specified.openstack.object": "images/cirros", "name": "NO BACKEND CONFIGURED", "disk_format": "qcow2", "container_format": "bare", "visibility": "shared", "size": null, "virtual_size": null, "status": "queued", "checksum": null, "protected": false, "min_ram": 0, "min_disk": 0, "owner": "a6d19bd37e9b4a998b04193f5564e033", "os_hidden": false, "os_hash_algo": null, "os_hash_value": null, "id": "00000000-0000-0000-0000-000000000000", "created_at": "2024-10-14T15:53:00Z", "updated_at": "2024-10-14T15:53:00Z", "locations": [], "tags": [], "self": "/v2/images/00000000-0000-0000-0000-000000000000", "file": "/v2/images/00000000-0000-0000-0000-000000000000/file", "schema": "/v2/schemas/image"}], "first": "/v2/images", "schema": "/v2/schemas/images"}';
      }

      location / {
        default_type application/json;
        return 200 '{"versions": [{"id": "v2.15", "status": "CURRENT", "links": [{"rel": "self", "href": "https://glance-default-public-openstack.apps-crc.testing/v2/"}]}, {"id": "v2.13", "status": "SUPPORTED", "links": [{"rel": "self", "href": "https://glance-default-public-openstack.apps-crc.testing/v2/"}]}, {"id": "v2.12", "status": "SUPPORTED", "links": [{"rel": "self", "href": "https://glance-default-public-openstack.apps-crc.testing/v2/"}]}, {"id": "v2.11", "status": "SUPPORTED", "links": [{"rel": "self", "href": "https://glance-default-public-openstack.apps-crc.testing/v2/"}]}, {"id": "v2.10", "status": "SUPPORTED", "links": [{"rel": "self", "href": "https://glance-default-public-openstack.apps-crc.testing/v2/"}]}, {"id": "v2.9", "status": "SUPPORTED", "links": [{"rel": "self", "href": "https://glance-default-public-openstack.apps-crc.testing/v2/"}]}, {"id": "v2.8", "status": "SUPPORTED", "links": [{"rel": "self", "href": "https://glance-default-public-openstack.apps-crc.testing/v2/"}]}, {"id": "v2.7", "status": "SUPPORTED", "links": [{"rel": "self", "href": "https://glance-default-public-openstack.apps-crc.testing/v2/"}]}, {"id": "v2.6", "status": "SUPPORTED", "links": [{"rel": "self", "href": "https://glance-default-public-openstack.apps-crc.testing/v2/"}]}, {"id": "v2.5", "status": "SUPPORTED", "links": [{"rel": "self", "href": "https://glance-default-public-openstack.apps-crc.testing/v2/"}]}, {"id": "v2.4", "status": "SUPPORTED", "links": [{"rel": "self", "href": "https://glance-default-public-openstack.apps-crc.testing/v2/"}]}, {"id": "v2.3", "status": "SUPPORTED", "links": [{"rel": "self", "href": "https://glance-default-public-openstack.apps-crc.testing/v2/"}]}, {"id": "v2.2", "status": "SUPPORTED", "links": [{"rel": "self", "href": "https://glance-default-public-openstack.apps-crc.testing/v2/"}]}, {"id": "v2.1", "status": "SUPPORTED", "links": [{"rel": "self", "href": "https://glance-default-public-openstack.apps-crc.testing/v2/"}]}, {"id": "v2.0", "status": "SUPPORTED", "links": [{"rel": "self", "href": "https://glance-default-public-openstack.apps-crc.testing/v2/"}]}]}';
      }

Would we then remove it if replicas get scaled down to 0. My issue with replicas wasn't that the endpoint existed, it was that I expected the default glance-api to be 1.

Right, when replicas: 0 the endpoints are removed. This doesn't address the replicas 1 vs 0, it's more to avoid getting a 503 if we scale the service down (it might result misleading).

@stuggi @dprince Note that Glance is a "special" component here: both API and the underlying engine are up or down at the same time, you can't have API up and running, but not accepting data/image upload. If you explicitly set replicas: 0, k8s Route returns a 503 because HAProxy has no backends.

technically, I'd say the route behaves correct as it has no knowledge of what kind of service it servers. If there is no service running it can just return the 503.

However, in theory, it shouldn't behave this way, because there's no backend to forward requests to, and the client should be notified about that, instead of thinking that "there's a problem in the API".  Do you think this represents of an anti-pattern in the openstack-k8s-operators ?

Returning information to the user on what is missing would be beneficial. Not registering the endpoint probably also does not point to that the config is missing, right? But as you said in other discussion to proceed e.g. with ceph hci deployment, at least right now, we first need a ctlplane deployment, then do the ceph deployment and go back to the ctlplane and configure it as backend. As an idea, what about if the controller recognize that there is no backend configured, we bring up a simple/custom httpd deployment, which returns a static json for status/images which reports, no backend configured/available. I did a simple test and it could look like this:
sh-5.1$ openstack image list
+--------------------------------------+-----------------------+--------+
| ID                                   | Name                  | Status |
+--------------------------------------+-----------------------+--------+
| 00000000-0000-0000-0000-000000000000 | NO BACKEND CONFIGURED | queued |
+--------------------------------------+-----------------------+--------+

maybe then we could default to 1?

I'm not sure about this: my concern is that you're writing this data in the database, and I don't think we have a way to clean it up automatically when we redeploy (and rolling out a new config doesn't restart everything from scratch). Also, the human operator is allowed to mess up w/ the customServiceConfig interface, and it might happen that decommissioning a backend results in an inconsistent state as well. We could .Delete the API, but I feel like we might risk to overcomplicate the code, and I'm not sure we want to get into that business here (and actually, the goal is to start a process of simplify the use cases and the operator from Epoxy+). It's easy to detect that no backend is set from the operator, just wondering if we can return a static response telling the human operator that he's not allowed to upload an image until a backend in configured (@konan-abhi knows more on that front). I need to think more about this, but from your replies so far I would say the endpoint creation is a NACK from the operators perspective.

I think it would just be wrong to create/delete the endpoint when there is a scale down to 0 and up again. And also the response does not point to that there is a config missing.
What I did was not to add something to the DB, its just a static response from the custom deployment. for this I was just using an nginx deployment which returned
      location /v2/images {
        default_type application/json;
        return 200 '{"images": [{"owner_specified.openstack.md5": "", "owner_specified.openstack.sha256": "", "owner_specified.openstack.object": "images/cirros", "name": "NO BACKEND CONFIGURED", "disk_format": "qcow2", "container_format": "bare", "visibility": "shared", "size": null, "virtual_size": null, "status": "queued", "checksum": null, "protected": false, "min_ram": 0, "min_disk": 0, "owner": "a6d19bd37e9b4a998b04193f5564e033", "os_hidden": false, "os_hash_algo": null, "os_hash_value": null, "id": "00000000-0000-0000-0000-000000000000", "created_at": "2024-10-14T15:53:00Z", "updated_at": "2024-10-14T15:53:00Z", "locations": [], "tags": [], "self": "/v2/images/00000000-0000-0000-0000-000000000000", "file": "/v2/images/00000000-0000-0000-0000-000000000000/file", "schema": "/v2/schemas/image"}], "first": "/v2/images", "schema": "/v2/schemas/images"}';
      }

      location / {
        default_type application/json;
        return 200 '{"versions": [{"id": "v2.15", "status": "CURRENT", "links": [{"rel": "self", "href": "https://glance-default-public-openstack.apps-crc.testing/v2/"}]}, {"id": "v2.13", "status": "SUPPORTED", "links": [{"rel": "self", "href": "https://glance-default-public-openstack.apps-crc.testing/v2/"}]}, {"id": "v2.12", "status": "SUPPORTED", "links": [{"rel": "self", "href": "https://glance-default-public-openstack.apps-crc.testing/v2/"}]}, {"id": "v2.11", "status": "SUPPORTED", "links": [{"rel": "self", "href": "https://glance-default-public-openstack.apps-crc.testing/v2/"}]}, {"id": "v2.10", "status": "SUPPORTED", "links": [{"rel": "self", "href": "https://glance-default-public-openstack.apps-crc.testing/v2/"}]}, {"id": "v2.9", "status": "SUPPORTED", "links": [{"rel": "self", "href": "https://glance-default-public-openstack.apps-crc.testing/v2/"}]}, {"id": "v2.8", "status": "SUPPORTED", "links": [{"rel": "self", "href": "https://glance-default-public-openstack.apps-crc.testing/v2/"}]}, {"id": "v2.7", "status": "SUPPORTED", "links": [{"rel": "self", "href": "https://glance-default-public-openstack.apps-crc.testing/v2/"}]}, {"id": "v2.6", "status": "SUPPORTED", "links": [{"rel": "self", "href": "https://glance-default-public-openstack.apps-crc.testing/v2/"}]}, {"id": "v2.5", "status": "SUPPORTED", "links": [{"rel": "self", "href": "https://glance-default-public-openstack.apps-crc.testing/v2/"}]}, {"id": "v2.4", "status": "SUPPORTED", "links": [{"rel": "self", "href": "https://glance-default-public-openstack.apps-crc.testing/v2/"}]}, {"id": "v2.3", "status": "SUPPORTED", "links": [{"rel": "self", "href": "https://glance-default-public-openstack.apps-crc.testing/v2/"}]}, {"id": "v2.2", "status": "SUPPORTED", "links": [{"rel": "self", "href": "https://glance-default-public-openstack.apps-crc.testing/v2/"}]}, {"id": "v2.1", "status": "SUPPORTED", "links": [{"rel": "self", "href": "https://glance-default-public-openstack.apps-crc.testing/v2/"}]}, {"id": "v2.0", "status": "SUPPORTED", "links": [{"rel": "self", "href": "https://glance-default-public-openstack.apps-crc.testing/v2/"}]}]}';
      }

I agree that creating/deleting keystone endpoints might be seen as a workaround other than a real fix, and 503 is the Ingress default behavior that is does not depend on the application.
I'm going to explore with the team the idea of not having replicas: 0 and instead reconfigure httpd to always return a static response, and update this patch accordingly.

I think my preference might be to just always create the endpoint. Seems simpler that way

Closing this change as we gathered two main things:

it's ok to always create endpoints, and it's not a good way to tell the openstack cli that the service is not there
we can use httpd to provide a static response when no explicit backend is configured: this would allow to always set replicas: 1 (or greater) and pack a message to tell the human operator the backend must be configured.

We're going to follow up with a different patch, but thanks everyone involved for the suggestions and feedback!


Robocopy gets called with /PURGE and not /MIR

Hi Markus!
It's a bit convoluted, but in the logic, we add /PURGE to a command that already has /E specified, effectively giving us /MIR:
/MIR : MIRror a directory tree - equivalent to /PURGE plus all subfolders (/E)
Cheers!

your right, that i have not seen. In this case I close this pull request


GetMiddleware not called on GetRouterOutlet initialRoute

Describe the bug
When you have a GetRouterOutlet if the initialRoute has a middleware with redirect it will never be called for that route.
Same when you use GetRouterOutlet.pickPages if the emptyPage has a middleware with redirect it will never be called for that route.
Reproduction code
Take the example_nav2 and make the dashboard route use the  EnsureAuthMiddleware
example_nav2/lib/app/routes/app_pages.dart:
            GetPage(
              middlewares: [
                //only enter this route when authed
                EnsureAuthMiddleware(),
              ],
              name: _Paths.DASHBOARD,
              page: () => DashboardView(),
              binding: DashboardBinding(),
            ),

To Reproduce
Steps to reproduce the behavior:

Launch the application and that's it, you are on the dashboard instead of the page redirect
You can also go to 'products' and come back, it won't make any difference

Expected behavior
You should be redirected to the login instead of seeing the dashboard but the middleware is not firing
Flutter Version:
2.5.3
Getx Version:
Tested on 4.3.8, 4.3.5, master, revert-1753-patch-5, router-fix, @Bdaya-Dev master
Describe on which device you found the bug:
Tested on Android and IOS

Any news ?

Well at the moment the issue is still here.
I don't have the time to investigate it further.
Currently, I'm using a workaround:
GetMaterialApp.router(
      onReady: () => Get.rootDelegate.offNamed(AppPages.INITIAL),

The idea is to use a splash screen as the default route and then load your first route using the rootDelegate on ready which will trigger the middleware.
I'm not even sure that middlewares were implemented with the idea that you could run some on the default route.


Post etag when submitting a change of ROA

Add a hidden field reference_etag to be sent when changing a registered office address. This is populated with the etag value returned by the ROA API
Resolves FA-271

👍


Able to create a password containing white spaces

Bug description
User can create a password containing white spaces.
To Reproduce
Steps to reproduce the behaviour:

Start creating a new wallet.
Create and confirm the password: " " (a single white space).

Current behaviour
User gets no warnings. User is able to proceed to the next screen.
Expected behaviour
User is not allowed to provide white space(s) as a password.

When entering current password in "Change password" screen user can enter a password containing white spaces.

checked


Probably is "user-error" but still I need some assistance ✨please🙏🏻

I got lots working already... For example: all the incoming web-mentions and tweets, are being received and displaying nicely on my (static) webpages.  Thats all good 👍🏻 I also got bridgy previewing - and sending out tweets, including images and all the options... So I know all my micro-formating is fairly good.
However some problems:

Problem with curl. curl says unauthorized ?  Here's an example:

(newpel) [Mon Dec 06] root@batopi: ~/virtualenvs/newpel$   curl -d 'source=https://grok.starkraving.asia//2021/12/06/ab_cd_01/&target=https://brid.gy/publish/twitter' \
    https://brid.gy/publish/webmention
{
  "error": "Error: {\"request\":\"\\/1.1\\/statuses\\/update.json\",\"error\":\"Read-only application cannot POST.\"} HTTP Error 401: Unauthorized"
}
(newpel) [Mon Dec 06] root@batopi: ~/virtualenvs/newpel$

Second problem...
I cannot get the twitter replies to work (even from bridgy interface) . The tweet will send, but not as a reply.  I think must be doing something wrong... I am definitely including the class="u-in-reply-to" href="https://twitter.c .. blah blah etc  But have tried 100+ things to fix it, and all failed, so really need some help please...

Examples:
This is supposed to be a reply:
https://twitter.com/GrokRaving/status/1467873156669087747?s=20
replying to:
https://twitter.com/ab_cd_goldfish/status/1464289491435220995
And here is the microformating:
This is link to the message (containing the micro-formatting) :

This is the text of the reply to @ab_cd_goldfish (usha.red/qAI)

#webmention

#indieweb

    <time hidden class="dt-published">2021-12-06 22:58:00+08:00</time>
    <time hidden class="dt-updated"></time>

Glad it's mostly going well! Re #1, your Twitter auth is in a funny state. Not sure what happened, but try disabling and re-enabling publish on https://brid.gy/twitter/GrokRaving . And re #2, your u-in-reply-to element needs to be an a, not a div. https://brid.gy/about#reply

thanks for your fast reply 🙏🏻

ok, I have changed to   so now the reply is working. ✔
I will tinker with the auth over next few days. Yes, I think I understand what u mean by "* is in a funny state*". ✔

As I do not want the URL link in the tweet I am including u-bridgy-omit-link and that is working ✔
However, I am including my shortened URL in the content of the tweet - by my Jinga2 code.  I tried to get brid.gy to automatically use my shortened url - but it won't. That is because of how I self-host (which means a port number is unavoidably in some addresses - which confuses brid.gy) - and  I am fine with that.
It is not a problem that brid.gy cannot use my shortened URL.... it just means I need another way (ie posse-post-discovery ) to link back to the url of the tweet on my site, so brid.gy can later find replies to this tweet.. But that makes it get a bit confusing:

Seems like I just need 2 more things.  🤷🏻♂
(1) a u-syndication link in the page where I store my tweet.
The doc says u-url and u-syndication. I already have the u-url . Am I supposed to just repeat the contents of the u-url into a u-sundication tag ?  like so:

I suspect I am wrong in that - because - why would both be needed ? ie ( "and" ) .
(2) a "top-level h-entry" in the home page of my blog.
The home page already contains these tags:
<link rel="webmention" href="https://webmention.io/{{ SITEURL-TXT }}/webmention" />

So - what is needed ???  top-level h-entry ? pointing to the "top level" ?? What is that ? the home page, i.e itself ? That would be just duplicating the h-card that is already there.  What should the ** top-level** h-entry statement look like ?

Glad replies are working! And Bridgy can definitely do shortened URLs, maybe try that first before going to extra effort for syndication links? https://brid.gy/about#short-link
Otherwise, if you really want to do synd links, for 1: u-syndication links point to the syndicated copy of your post, eg your tweet. Follow the links in the docs for more info, eg https://indieweb.org/u-syndication
And 2: The top-level h-entry was for your individual post pages, which it looks like already have them, eg https://grok.starkraving.asia/2021/11/24/c19cover/ . Your home page https://grok.starkraving.asia/ is missing h-feed and h-entry's though, you'll need those there. https://indieweb.org/h-feed

Yes,  I know that : Bridgy can definitely do shortened URLs
I tried to explain above that I have already tried that - and that  it does not work in my case. I gave the reason in my previous comment: , because of how I self-host (which means a port number is unavoidably in some addresses - which confuses brid.gy)
More detail:  When Bridgy finds a port number in a URL it seems to just throw it away. If Bridgy kept the port number in the URL then I could let Bridgy handle the shortened URLs... Example:
This post:  https://grok.starkraving.asia/2021/12/06/ab_cd_02/
Has this shortened:  http://usha.red/qAI
Bridgy (wrongly) maps it to : https://starkraving.asia/qAI .
It should be mapped to:  https://starkraving.asia:8819/qAI
If Bridgy kept the port number (in this case 8819) then it would work for my situation.
So I left to go via the other path.  And my head is spinning from what you wrote about u-syndication . Maybe I misunderstood it, but u saying it needs the URL of the tweet itself ? That url does not exist until after the tweet is posted... So, before the tweet is posted,  it needs to contain a url - that does not exist at that time - so that it can be posted ???

Sorry I didn't address the port question! Where specifically do you think Bridgy is throwing it away? It looks like it's handling the port ok to me, at least for publishing. eg when I put http://usha.red/qAI into Enter post URL on https://brid.gy/twitter/GrokRaving, I see in the logs that it folllows the redirect(s) and fetches the post ok, including the port, and then correctly returns this error:

since your Twitter account links to grok.starkraving.asia, not starkraving.asia.

And my head is spinning from what you wrote about u-syndication . Maybe I misunderstood it, but u saying it needs the URL of the tweet itself ? That url does not exist until after the tweet is posted... So, before the tweet is posted, it needs to contain a url - that does not exist at that time - so that it can be posted ???

u-syndication links are only needed for backfeed, not publish. You're right though, you wouldn't have it when you first publish a post. You'd need to add it in later, after you've tweeted and have the tweet URL.

Sorry I didn't address the port question! Where specifically do you think Bridgy is throwing it away? It looks like it's handling the port ok to me, at least for publishing. eg when I put http://usha.red/qAI into Enter post URL on https://brid.gy/twitter/GrokRaving, I see in the logs that it folllows the redirect(s) and fetches the post ok, including the port, and then correctly returns this error:

since your Twitter account links to grok.starkraving.asia, not starkraving.asia

Could not find ... for "starkraving.asia" ... The message should be for "starkraving.asia:8819" .  why is that dropped from the url  ?

Could not find ... for "starkraving.asia" ... that is the problem.
The message should be for "starkraving.asia:8819" . why is the port number dropped from the url ?

Because it's not a URL, it's a domain. Bridgy associates your domain(s) with your account, not any specific URLs, and it looks up your account by domain the same way when you try to publish.

ok -  as I wrote above -

tried to get brid.gy to automatically use my shortened url - but it won't. That is because of how I self-host (which means a port number is unavoidably in some addresses - which confuses brid.gy) - and I am fine with that.

Which means I gotta do it by u-syndication.  So it seems like the steps are:

generate the page
post the tweet via curl
grab the url of the tweet
generate the page again - including the url in u-syndication tag

Is that what is needed ??

This might work better in chat. Feel free to jump on a talk live! https://indieweb.org/discuss
In the meantime: short links are for publish, u-syndication links are for backfeed. Separate things, they're not interchangeable. You can't use u-syndication as another way to publish with your shortlink. Maybe you want rel-shortlink instead?

starting up  slack

@snarfed  Hi again - hopefully this is the last question...
The process on this side is now fully automated. The writers can write once and process once, and all the generation etc happens semi-magically (as far as the writers are aware 😉).  We've hand-checked, and believe it is as per your advice ✔
The tweet posts successfully ✔ , BUT we are getting  the dreaded "No webmention targets" 😱 on Bridgy dashboard. Just hoping, please, that you can help explain why ?  We have labored over the documentation for hours and seems like we already comply with every step. Possibly is something we have misinterpreted.
This tweet : https://twitter.com/GrokRaving/status/1468541731310391300
Is a posting of this page:  https://grok.starkraving.asia/2021/12/08/qldpolicevax/ . Which contains: u-url and u-syndication in its  h-entry class.

it was sent by the Bridgy user  (twitter: @Grokraving ), via the bridgy webpage.
The domain ( grok.starkraving.asia ) in Twitter profile.
The domain ( grok.starkraving.asia ) is showing the Brid.gy page.
In -  the page - on our site we have:

      ....

      ...

As the link is not contained in the Tweet, we are wanting Bridgy to  run posse-post-discovery.
So we go through the checklist of steps: "both u-url and u-syndication in the post" ✔ and "one of the following 3" must be in the post Home page = Link on twitter profile . So we did the 3rd option ✔ i.e:  "a <link rel="feed" href="..."> pointing to another page  with top-level h-feed or `h-entry"

Home page contains:

         <link rel="feed" type="text/html" href="https://grok.starkraving.asia/.well-known/hfeed.html">

The "other page ( hfeed.html )" contains:

             ....

But - the result on Bridgy is that - it finds the tweet ✔ - ,  and finds - Responses to it (e.g. 2 likes) ✔  BUT.. those responses are not being sent to Webmention.io  because  "No  Webmention target"

The link in that tweet, https://usha.red/YlI , isn't working for me. I tried from multiple locations and clients, all of them time out.
Also, Bridgy only crawls your web site and finds new u-syndication links occasionally, every 6h by default. It will then backfeed any responses it found before then, up to a point, as well as in the future. The crawling Bridgy does (both web sites and silos like Twitter), can be expensive, and Bridgy has >6k accounts, so we limit the frequency.

not https .    it should be :  http://usha.red/YlI
If I made typo in git comment I will correct it in morning. is 2:30am
here now .
------ Original Message ------
From: "Ryan Barrett" @.>
To: "snarfed/bridgy" @.>
Cc: "Jalsco" @.>; "Author" @.>
Sent: 9/12/2021 4:17:53 AM
Subject: Re: [snarfed/bridgy] Probably is "user-error" but still I need
some assistance ✨please🙏🏻 (Issue #1094)

The link in that tweet, https://usha.red/YlI , isn't working for me. I
tried from multiple locations and clients, all of them time out.
Also, Bridgy only crawls your web site and finds new u-syndication
links occasionally, every 6h by default. It will then backfeed any
responses it found before then, up to a point, as well as in the
future. The crawling Bridgy does (both web sites and silos like
Twitter), can be expensive, and Bridgy has >6k accounts, so we limit
the frequency.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/snarfed/bridgy/issues/1094#issuecomment-989057599,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AB45SM5MKJ6IFNUTLTV7FYLUP6ONDANCNFSM5JO635ZA.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

I did press the button to say "crawl it now" (actually multiple times).
So I assumed that it had crawled the website  If it hasn't then maybe there is no problem .  If you have not seen an obvious problem, then that is also a good sign.

not https . it should be : http://usha.red/YlI

ah, true, sorry!
I see the u-syndication on https://grok.starkraving.asia/2021/12/08/qldpolicevax/ , but it's in a div. It needs to be an a.

I did press the button to say "crawl it now" (actually multiple times).

Hmm, when I looked a bit ago (and then clicked it), it said it hadn't crawled in 6 hours. Were you maybe clicking the Poll now button instead?
(No matter either way though!)

Seems correct on (http) Twitter.

Probs both  poll and crawl - I must sleep now almost 3am- I will change  to  tomoz.

ok, I changed all instances of  u-url and u-syndication to be in  not .
That is - in the Post page - and also - in the top-level h-feed page (as per link above), and then refreshed the CDN cache.

Great! Your top level https://grok.starkraving.asia/ page still doesn't have any h-entrys though.
Sorry this is so much trouble btw! I know it probably doesn't help, but most people use a server or theme that already supports microformats2 out of the box, so they don't hit most of these problems. You're definitely taking on more challenge by implementing microformats yourself. Totally ok though!

Don't be sorry - its a learning experience... as long I get there in the end. Thx 4 all yr help too !
The top level page has a link to the h-feed of all the articles.  and has its h-card .. You mean it needs more than that ?

Each article needs h-entry around it, u-url on the article's permalink, and u-syndication on the tweet link. u-syndication can be on either the home page (eg https://grok.starkraving.asia/ ) or the article page (eg https://grok.starkraving.asia/2021/12/02/qldmand/ ).

I believe am complying with sentence you just wrote.  So, still unclear what is missing.
Each article needs h-entry around it ✔
u-url on the article's permalink, and u-syndication on the tweet link. ✔
u-syndication can be either the home page (eg https://grok.starkraving.asia/ ) OR  article page ✔
Yes, we have the usyndication on the article page.
And from home page - which is just a list of articles - there is link to this (potentially) an entry for every article.

             ....

Do you mean we need u-url and u-synidcation ON BOTH  og (1) article page and (2) home page ??

Pinged you in chat!
(Short answer, yes, you need at least h-entry and u-url on home page for each article. u-syndication can be on either home page (preferable) or article page.)

So we already have what is required...  🤷♂

You're welcome, glad it's working now!


MiR100 Connector: Allow disabling the websockets interface

🗒 Description
Add an option to disable the websockets interface on the MiR100 Connector.

Please squash commits before merging :)

CC @rudy-02


Random state doesn't work with metric='precomputed'

Hi. I'm facing an unexpected reproducibility issue with my dataset.
I have quite a large matrix and doing some hyperparameter tuning that includes UMAP. To optimize run time, I cached data preprocessing and distance computations. When I tried to apply the "best" set of hyperparameters in my notebook, I got different results despite random_state set. My UMAP version is 0.5.3.
Sharing the code to reproduce and a small section of my data for which I'm facing the reproducibility issue just as for the full dataset.
import pickle
import numpy as np
from sklearn.metrics.pairwise import euclidean_distances
import umap

with open('example.pkl', 'rb') as fin:
    B = pickle.load(fin)

# No issue when passing data directly
embedding1 = umap.UMAP(
        n_neighbors=10,
        random_state=42
    ).fit_transform(B)

embedding2 = umap.UMAP(
        n_neighbors=10,
        random_state=42
    ).fit_transform(B)

print(np.max(np.abs(embedding1 - embedding2)))

# But if I use metric='precomputed' and pass distance matrix, the reproducibility is lost.
D = euclidean_distances(B)

embedding3 = umap.UMAP(
        n_neighbors=10,
        random_state=42,
        metric='precomputed'
    ).fit_transform(D)

embedding4 = umap.UMAP(
        n_neighbors=10,
        random_state=42,
        metric='precomputed'
    ).fit_transform(D)

print(np.max(np.abs(embedding3 - embedding4)))

example.pkl.zip

Interestingly, if I use random data of the same size, the problem doesn't happen.
B2 = np.random.normal(size=B.shape)
D2 = euclidean_distances(B2)

embedding5 = umap.UMAP(
        n_neighbors=10,
        random_state=42,
        metric='precomputed'
    ).fit_transform(D2)

embedding6 = umap.UMAP(
        n_neighbors=10,
        random_state=42,
        metric='precomputed'
    ).fit_transform(D2)

print(np.max(np.abs(embedding5 - embedding6)))

I have the same problem with data of mine. The peculiar thing is that I cannot create a minimum reproducible example. It seems that it's something very specific about my data. I cannot recreate the error with simulated data. The pairwise distance matrix I use does not have any NaN values and the values are between 0 and 1.
It seems that if I reduce the size it works (see code snippets below) but this size issue again does not appear for simulated data.
mapper1 = umap.UMAP(metric='precomputed', random_state=42).fit(pdm_hamming)
mapper2 = umap.UMAP(metric='precomputed', random_state=42).fit(pdm_hamming)

np.all(mapper1.embedding_ == mapper2.embedding_)

return False
but
mapper1 = umap.UMAP(metric='precomputed', random_state=42).fit(pdm_hamming[:1000, :1000])
mapper2 = umap.UMAP(metric='precomputed', random_state=42).fit(pdm_hamming[:1000, :1000])

np.all(mapper1.embedding_ == mapper2.embedding_)

returns True
and so does
mapper1 = umap.UMAP(metric='precomputed', random_state=42).fit(pdm_hamming[1000:, 1000:])
mapper2 = umap.UMAP(metric='precomputed', random_state=42).fit(pdm_hamming[1000:, 1000:])

np.all(mapper1.embedding_ == mapper2.embedding_)

Any help would be greatly appreciated :)


[MISC;ISSUE-12] Makefile APIs

I did some modifications to the requirements files (including the upper bound) in order to get things running and produce consistent environments. I could not get the pipelines running without errors otherwise. What happened was in fact that the dev build would break when using "requirements.txt" and not bounding importlib-metadata. The thing is that conflicts with the requirements.txt versions would show up only when compiling the dev environment, but there the strict requirement would prevent to pick another version, hence the error.
To be honest, this requirements issue is far from obvious and it should probably be tackled in a separated issue (this PR is only for writing the Makefile, not much about handling the requirements). I have updated the PR with a slightly revised version where

we build the requirements.txt with the requirements_dev.in as constraints (and also importlib-metadata bound which is not taken otherwise since constraints seem NOT to follow transitive dependencies).
the requirements_dev.txt can be build using the requirements.txt AND requirements_dev.in together as inputs.

These checks has nevertheless highlighted that Sphinx wants a importlib-metadata > 4.4 whereas flakes8 wants it to be <4.2. I have commented out Sphinx which is not used right now. But still, this requirements issue should be addressed in a separated issue, I believe.
About the make run_ci, there is already a rule for doing so, which is the make checks. This runs mypy, linting and tests, which in turns depends on black and pip-tools for requirements, among other things. We could name it make ci if you prefer

I still do not agree on constraining requirements files to open requirements files. As we discussed in person this could lead to having different versions of the same package in each environment and this is exactly what we want to avoid using pip-tools.
Furthermore, I do not agree with constraining production requirements to dev requirements: it should be the other way around.
For more details about this process see pip-tools README
For what it takes the incompatibility between requirements of two of our chosen tools, I didn't go through the newly proposed configuration for requirements yet but, If the problem with requirements is this big, then we should face it before any other change that could impact or be impacted by them.
The fastest solution would be removing one of the two tools until we face this specific problem in another, dedicated, issue.

I still do not agree on constraining requirements files to open requirements files. As we discussed in person this could lead to having different versions of the same package in each environment and this is exactly what we want to avoid using pip-tools. Furthermore, I do not agree with constraining production requirements to dev requirements: it should be the other way around. For more details about this process see pip-tools README
For what it takes the incompatibility between requirements of two of our chosen tools, I didn't go through the newly proposed configuration for requirements yet but, If the problem with requirements is this big, then we should face it before any other change that could impact or be impacted by them. The fastest solution would be removing one of the two tools until we face this specific problem in another, dedicated, issue.

Honestly I do agree with @NicolaDonelli especially on the fact that dev should be limited by prod requirements.
In any case it's preferable to have as strict as possible management of the requirements. So I think it's the case to investigate better the problem, as proposed, in another dedicated issue.

So, shall we merge this PR as-is (which is really not quite about requirements) and move this to a different issue? Unless you have comments on makefiles and related...

Agreed.
I'll be fine with this PR when it will be reverted to the previous configuration of requirements.
So please revert to requirements_dev.in constrained to requirements.txt (removing the constraint added to requirements.txt to requirements_dev.in), eventually removing dependencies (like flake8>=3.8.4) that cause the conflict and their usages from Makefile (opening contextually an issue to highlight the problem).


Did you mean to show the clock messages?

Currently the Chat actor just drops them.  It seems kind of nice to show them in the UIs.  This may not be the best way to achieve it (perhaps convert to ReceivedMessage, for example), but it is expedient.

Thanks! Indeed, it seems Chat.injectMessage is broken since https://github.com/jrudolph/akka-http-scala-js-websocket-chat/commit/7b126ebb9100b11ae44c02a05428e39f234a0520#diff-b2dc71e680abd13a537313d300613d3dL30.


Request fail on parsing json body with accent character

I am calling an endpoint i made to update a customer. When passing my json body i get a 400 Bad request. Seems like a json body that contains accent characters is not parsed correctly by the request object.
So this is the json body im sending to my endpoint:
{
  "last_name": "Gélinas"
}

Expected Behavior
The get_json fonction should not return a 400 Bad Request
request.get_json(force=True)

The request.data should not remove the last } from the body when it contains accent character
request.data
# Should contain : "b'{\\n \"last_name\": \"G\\xc3\\xa9linas\"\\n}'"

Actual Behavior
When reaching the endpoint, i am using the request object provided by flask to retrieve the body like so:
request.get_json(force=True)

But with this code, i am getting a 400 Bad Request error. So i try using raw data instead like so:
request.data

I found out the request.data contains:
"b'{\\n \"last_name\": \"G\\xc3\\xa9linas\"\\n'"

As you can see, there is a missing } at the end which brakes any call to json.loads function
Environment

Python version: 3.7.4
Flask version: 1.1.1
Werkzeug version: 0.16.0

I can't reproduce this issue as described. Posting the given example JSON, Flask receives the entire request body and loads it correctly.
If the body does not contain all the data, or incorrectly encoded data, that's an issue with the data you're sending. All Flask can do is try to load what it receives.

i meet this error too
when i use urllib3.PoolManager to request Flask Server(but i use tornado to  decorate Flask app)
in debug mode,i get some data:

but when i enter json.JSONDecoder.raw_decode() function and print decode string,it shows:

and then i search request which shown in stack,i found in app.py line 1935 and req.data still missing } at last index
this is my env:

Flask (1.1.1)
tornado (6.0.3)
Python (3.6)
Werkzeug (1.0.0)


Mention of Arcadia

Hi, why was there a mention of Arcadia and guides for creating a ticket in contrib: https://github.com/ydb-platform/ydb/tree/main/contrib?

Commit 06e5c21a835c0e923506c4ff27929f34e00761c2 has removed the extra files related to Arcadia


Added redirect for overview page

Docs Build status updates of commit e070c2a:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

.openpublishing.redirection.json
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel