Simplify configen

This PR makes significant changes to configen in order to simplify it. Below is an explanation:
Motivation
There are a couple of reasons that motivated me to rewrite configen:

configen takes a lot of time to set up in a project. It's also a bit complicated for a beginner to learn how it works - example: it took me nearly an hour to learn how to set it up for my project at TAB.
The use of an external build system seems unnecessary to me when you can add the same command to a pre-action run script to the build step in each scheme.
configen takes on a lot of heavy lifting to ensure the variables defined in the plist files correctly map to the variables defined in the mapping file. This is unnecessary work that can actually be delegated to Xcode.
When creating the plist and .map file in Xcode, you do not get any real-time feedback on errors or mistakes. You will only get that when building the project (and you'll have to dig into the build log to find the error).
You're restricted to Foundation types - you cannot use a non-Foundation type. You also cannot use Optionals - you have to set the value to nil (which gets wrapped in quotes) or 0 or some other value in the plist to get around it.

Since only Foundation types are supported, you cannot use, for example, an enum case to specify the OSLogType when calling the os_log function.
In some cases, you will need to perform a check on the value of a variable if you set it to nil or 0 or some other value in a particular environment plist file. It would be nicer if you had a true optional variable, so you can make use of if/guard let or optional chaining. This would be better than checking for some hard-coded value.

It feels like a compiler (taking code in a source language i.e. plist (xml) + .map (swift-like) & emitting code in a target language i.e. swift/objc) but doesn't do the job in a robust way.

Solution
My solution to the issues is to rewrite configen from scratch and solve the problems in a more simple way:

Get rid of the mapping file: Use a Swift protocol to ensure all environment configuration files have the same variables.
Get rid of the plist file: Use a Swift struct that conforms to the protocol and defines the values for the variables for each environment.

Using a Swift protocol and struct feels a lot more familiar and easier to work with while offering the necessary safeguards. For example, if the environment configuration struct does not properly conform to the protocol, then an error in the source editor will appear in real-time. Same with if an incorrect value (i.e. value of different type) is assigned to a variable.
By using a protocol, the compiler will enforce, in real-time, that all the environment configuration files have the same variables and that values are assigned to all of them. It is a much better way to ensure consistency across environment configuration files and also allows you to take advantage of Swift features directly (example - you can have truly optional variables).
There is no longer a need to use plist and custom mapping files, when you can take advantage of the language features to achieve the same goal.

Re-implement code generation: Instead of having everything hard-coded, a better way is to traverse the AST (Abstract Syntax Tree) of our environment configuration struct and make the necessary changes. This can be done by using the open source SwiftSyntax framework, which is built on top of libSyntax and is used in Xcode's Swift migration tool. This is an official Apple framework, built on top of a library that is used by the compiler and hence is well suited for our needs.

Because of the way the protocol and the struct is binded, it's actually a lot simpler to generate the final output struct. The only changes required is to remove the protocol conformance, rename the struct's identifier (to the user supplied name) and add a private initializer to prevent anyone from accidentally creating an instance of the struct (this is because all the variables are going to be static lets). This can all be done by traversing the AST and making the above transformations. The end result is the same input configuration struct, but slightly altered for use in our app.
Some other small changes include using Swift Package Manager to manage dependencies, making the code a little more Swifty, adding documentation, etc.
Result
It is a lot easier to set up and use configen in a project. The use of protocols makes creating environment configuration files much simpler and provides safeguards to ensure that the files have the same key-value pairs, while also making it easier for the user to create those files (i.e. allowing the user to quickly insert the missing variables into the file using suggestions and code completion and receiving real-time, compiler-enforced feedback on errors and mistakes).
configen is now faster as well because it is no longer performing a lot of unnecessary parsing and code generation. Using a simple pre-action run script in each scheme saves a lot of time as well compared to going through the steps to create an external build system and integrating it with each scheme.
Notes
There are breaking changes (!!!) and as a result, configen is not fully backwards compatible:

Plist and map files are no longer supported and is replaced by protocols and structs. However, it's relatively simple to migrate from plist/maps to protocol/structs and can be done in a short amount of time. Perhaps I can write a migration tool that transforms the plist+map to protocol and struct.

Objective-C support has been dropped.

A small change will be required to the command line arguments, as you only need to pass the input environment configuration file, the name of the output struct and the name of the output folder (only 3 arguments compared to 5 before).

No changes will be required in the application code (as long as you pass the same output struct name).

Please refer to the README and the example project to understand how everything works.

@Utsira I think we could remove the *.xcodeproj file (put it in the gitignore), because it will be regenerated when running the SPM commands. People who want the binaries can always download it from the Releases section, so I don't think there will ever be a need to clone the repo and compile the project (unless you're submitting a change), but yeah, we could definitely have a script that runs all the necessary commands for us.
#!/bin/bash

swift package clean
swift package update
swift package generate-xcodeproj
swift build -c debug

I'm not a TABer but I work with TAB at Tesco which uses Configen in the way described by @samdods  here. So it's not the most basic usage of Configen, with multiples modules declaring properties they need to be configured with, and then needing to pass the Config types to the modules so they can get the configured values. We also extend the Config type with values that are need to be created at runtime, or are common between all environments.
I've just switched the project (on branch chore/configen-simple for those with access) to using your branch of Configen, and while it was pretty easy to switch one plist/map to struct/protocol I don't think I'd want to switch all 13 environments over (even with Xcode 10's multi cursor support) so I think that conversion tool would be needed :)
I did note some things:

using enums instead of structs would mean that the private init isn't needed.
making the environment structs private (so that the problem Ben showed above doesn't happen) makes the final output struct also private. Replacing line 48 of FileRewriter.swift with the code below (or something better, I've not used SwiftSyntax before) fixes it.
It might be good to enforce that the input structs are private*
I'm not sure why you want to remove the conformance to the protocol in the final output struct.

    var nodeModifiers = node.modifiers
    if let privateModifierIndex = node.modifiers?.firstIndex(where: { $0.name.tokenKind == TokenKind.privateKeyword }) {
      nodeModifiers = node.modifiers?.removing(childAt: privateModifierIndex)
    }
    return node.withIdentifier(newIdentifier).withInheritanceClause(nil).withMembers(newMembersList).withModifiers(nodeModifiers)

*We recently switched to using the Scheme pre build action way (IIRC, we found Xcode 10 was building the external build system target in parallel with the main app, even after turning off parallelize build). The one problem with that was that you can't fail the build from the pre-action step if Configen fails (eg if enforcing that input structs are private). I got round this by printing an #error() to the output Config.swift in the pre-action build script. eg:
configName=Config
configDir="$SRCROOT/$project/Config"
configen --config-path "$configDir/Settings/Config-$env.swift" --struct-name $configName --output-directory "$configDir" > "$configDir/build-config.log" 2>&1
if [ $? -ne 0 ]; then
  echo -e "#error(\"build-config.sh failed, output is in $configDir/build-config.log\")" > "$configDir/$configName.swift"
fi

Thanks for the feedback @Jon889 :)

using enums instead of structs would mean that the private init isn't needed.

That's actually a good idea! It would also mean that you would have to use config enums instead of config structs. Or would you prefer structs be converted into an enum, instead of having the user create enums in the first place? We can just use a class as well.

making the environment structs private (so that the problem Ben showed above doesn't happen) makes the final output struct also private. Replacing line 48 of FileRewriter.swift with the code below (or something better, I've not used SwiftSyntax before) fixes it.

Thanks, I'll fix that!

It might be good to enforce that the input structs are private*

Hmm, can do!

I'm not sure why you want to remove the conformance to the protocol in the final output struct.

This is because at that point, the protocol's job is over. Its there to ensure that all config files contain the declared variables and that those variables have values assigned to them (unless optional). Since the protocol guarantees that for us, we can be sure that the generated config file will have the variables we need (and that values will be assigned to them, unless the values are optional).

I can go into more detail about why this would be helpful on our project but I don't want to clutter this thread. The summary is that it allows the protocol that each environment class/struct inherits from be composed from multiple protocols ie typealias ConfigProtocol = AppConfig & ModelConfig & ProductConfig // & etc, and that each environment's class can inherit from a base class containing the config properties that are the same across all environments or generated at runtime.

Ah okay, makes sense, I'll make it a class!

Thanks for the feedback @bengilroy!

It seems very documentation heavy – do we need all the documentation?

I added a lot of docs to help understand what's going on at a glance (thought it would be helpful for someone new). I guess the documentation is a little more verbose than it should be!

Dropping Obj-C Support

I looked at the TAB Engineering Best Practices google doc and all current projects use Swift. Perhaps there might be projects that are still on Objective-C and use configen, but they could still use the old release of configen and not migrate to the new one.

Seems like the indentation for the private init() on AppConfig uses tabs but the rest use spaces – is this intentional?

Whoops, I should replace that with spaces. The issue would be figuring out 'how many spaces?', but I'll figure out a way!

Where documentation is used, it seems do be divided into public/private using mark comments – but in most cases I saw we weren't actually using public it was defaulting to internal? This is just a minor technicality though.

You're right, I'll fix the MARK comments.

Some doc comments have full stops at the end of sentences, but some don't.

Will fix!

That's actually a good idea! It would also mean that you would have to use config enums instead of config structs. Or would you prefer structs be converted into an enum, instead of having the user create enums in the first place? We can just use a class as well.

Thanks for the replies :) For simple usage I think enum is the best as an instance can't be created, but class allows more flexibility, so allowing both should be ok. I'm not sure what would be best to do if the inputs are structs, perhaps just accept all three and trust the user has their reasons for using it that way.

This is because at that point, the protocol's job is over. Its there to ensure that all config files contain the declared variables and that those variables have values assigned to them (unless optional). Since the protocol guarantees that for us, we can be sure that the generated config file will have the variables we need (and that values will be assigned to them, unless the values are optional).

I don't think there is any harm in letting the output conform to the protocol, as a minor point it would confirm that configen has done it's job correctly. But really it will be useful when the protocol is composed of other protocols. eg:
typealias ConfigProtocol = ModelConfig & ProductConfig

private class DevConfig: ConfigProtocol {}

class AppConfig: ConfigProtocol {} //Generated by Configen

func setup(with: ModelConfig.Type) {}

setup(with: AppConfig.self)

Without the generated output class also conforming to the protocol it would not be possible to do the final line.

For simple usage I think enum is the best as an instance can't be created, but class allows more flexibility, so allowing both should be ok. I'm not sure what would be best to do if the inputs are structs, perhaps just accept all three and trust the user has their reasons for using it that way.
Okay, so basically the output type would be the same as input? So if you created the configs as enums, then the output would also be an enum? This could probably be a feature behind a flag (--match-input-type).

I don't think there is any harm in letting the output conform to the protocol, as a minor point it would confirm that configen has done it's job correctly. But really it will be useful when the protocol is composed of other protocols. eg:

That's true, perhaps I can add a flag to configen to keep the inheritance clauses intact (--keep-inheritance-clauses)? Some people may put all the config related files in EXCLUDED_SOURCE_FILE_NAMES in Xcode. I was talking to @KaneCheshire and he mentioned that the project he's working on does not allow the config files to be compiled with the production build, so those files will be added to EXCLUDED_SOURCE_FILE_NAMES in Xcode and thus you will no longer be able to make use of the config protocol, unless you skip the protocol file and put the rest. Also, I think the code would look cleaner without the inheritance clause!

Also, btw, Configen supports any custom types, such as enum (explained in the README), and this also means it supports optionals (if defined as optional in the mapping file) and as far as i remember, the nil doesn't get added in quote (although i need to check)

@Jon889 i don't think you'd want to subclass, you should be able to achieve what you need by conforming to multiple protocols.

i just confirmed optionals are supported as per the README documentation and custom types are supported as per docs and also shown in the example project.

although i think going with optionals kinda goes against the purpose of Configen. the intention is to avoid runtime checks on whether you have the config setup. the project i work on has 30 config parameters and i haven't yet found a need for optionals.

@theblixguy i really commend the effort you've put into rewriting this 👍👍 but would be really good to beat this kind of thing up beforehand in future. i'm just thinking of saving you a lot of effort 😄
one major disadvantage of this new approach is that all the config files are part of the target, even those that won't be used when the project builds. this means that you'll have production URLs and keys released with your test app and vice versa. not a big problem as far as i'm concerned, but it's definitely something that a penetration testing company would pick up on and as such it's something a project stakeholder would likely oppose. so it's best to make sure each of the env files are not part of the target, like so:

i definitely think this is a great solution to the same problem, but i don't think it's necessary to have a command line utility to achieve the result. i think going with an enum would be the nicest solution (although perhaps i'm missing something about what @Jon889 was saying). and i think you can simply copy the necessary file into place, overwriting the actual file that will be built, i.e. the one file that is part of the target. you'll then know at build-time whether or not your config conforms to the requirements.

Thanks for the feedback @samdods, really appreciate it 🙂

I see, not sure why I couldn't get an optional to work before. I just tried it out again and it works! Although you do have to explicitly assign it to nil in the plist file even if it's an optional, otherwise it ends up emitting static let variableName: variableType? = instead of just static let variableName: variableType?. I think it's more to do with the value, because all config files will have the same variables, but perhaps in a certain environment, you have no need for one, so it's just nicer to assign it nothing rather than assign it some random value like "this is nil". A runtime check might still be required in either case if the thing you're passing the value to does not accept nils or garbage values.
Custom types are supported, but not any type. This is because configen doesn't have a way to figure out where a type comes from, in order to insert the necessary imports. For example, if you use the OSLogType type in the mapping file and provide a value in the plist, the code will successfully be generated, but the app won't compile as the config file will be missing the import for os. You can get around it by creating your own enum as a wrapper around OSLogType and mapping your cases to its cases but that's just extra work. This is just an example, but basically you’re restricted to Foundation types only at the moment.
The files are a part of the target, however there’s two workarounds for it if you don’t want it compiled - you can remove the files from the target once you’ve set up all your configs (or never include them in the first place, but then you lose on compiler warnings/errors) or you can add them to EXCLUDED_SOURCE_FILE_NAMES. I think either of those should solve the issue?

The main goal is to simplify everything and give the user the freedom to do what they want with the config files, while enforcing some common sense rules. I agree that with this approach, configen’s role has been diminished to simply copying the files over (although it still has to make the necessary transformations, so it’s not a case of simple copy and paste). The feedback I got from Jon suggested I do some of my own rules, such as enforcing that the inputs are private and one of my own ideas was to enforce that all variables are declared as static & let, so I believe there’s still some responsibilities in configen’s shoulders, although not as much as before 🙂

regarding the restriction to Foundation types and your own custom types, that's a good point.
regarding nil values, see my comment above about defeating the point of Configen.
regarding removing the files from the target, you say it loses the benefit of compiler warnings/errors, but it doesn't. you might not have the benefit of checking the code as you write it, but you will still get the compiler warnings/errors at build time, which is the whole point of Configen. but the advantage of removing the test keys from the production app and vice versa massively outweighs getting warnings/errors as you write, given this is a file you'll modify relatively rarely.
but i don't understand the responsibility of Configen as you've rewritten it. it really should be as simple as copying the files over. if you've setup your protocol properly, declaring the requirements for static and { get } properties, then the conforming type for each environment will have to meet these requirements.
i also advise not to make such radical changes to an open source utility that's (hopefully!) used on projects outside of TAB.
it's more than just a breaking change, it's a completely new tool, so i think it would be better suited to a new project.
definitely a good discussion going on here, so i don't want this to come across like i discourage this type of beat up 😄 we might even change our project setup to go with this approach...
but i wouldn't rely on a command line utility to do something i can do in one line of a shell script.

as an aside, one of the benefits of Configen is that reading config from a Plist makes it more accessible to non Swift developers, both technical people and non-technical people alike. this might include technical stakeholders that don't wish to review Swift code in order to review environment settings. this is a small benefit and might seem trivial, but it's actually the reason this tool was created in the first place. otherwise i would have taken your approach and copied the files over using a single line of shell script.

I see, those are definitely valid points, especially that people would find it easier to read plists rather than swift code and that my changes would have an effect on people outside of TAB.
Thanks for all the feedback on this, as I learned some new things 😄 I think close the PR now, unless there's any changes that needs to be made.


Drawing a paragraph with a gradient fill style on canvas results in incorrect gradient positioning

A change that was introduced a few days ago in libtxt changed the way a paragraph with a gradient is drawn on a canvas, e.g.:
final colors = [
  Color(0xffff0000), Color(0xffffff00), Color(0xff00ff00),
  Color(0xff00ffff), Color(0xff0000ff), Color(0xffff00ff), Color(0xffff0000),
];
final colorStops = [0 / 6, 1 / 6, 2 / 6, 3 / 6, 4 / 6, 5 / 6, 6 / 6];
final gradient = new ui.Gradient.linear(
  Offset(0.0, 0.0),
  Offset(0.0, size.height),
  colors,
  colorStops,
);
final gradientPaint = new Paint()..shader = gradient;

final paragraphStyle = new ui.ParagraphStyle(
  fontSize: 60.0,
  textAlign: TextAlign.center,
);
final paragraphBuilder = new ui.ParagraphBuilder(paragraphStyle)
  ..pushStyle(new ui.TextStyle(foreground: gradientPaint))
  ..addText('TEST');
final paragraph = paragraphBuilder.build();
paragraph.layout(new ui.ParagraphConstraints(width: size.width / 2));

final offset1 = new Offset(size.width * 0.5, size.height * 0.33);
canvas.drawParagraph(paragraph, offset1);

Usually, when you draw a path, shape or text with a gradient paint (without using Canvas.translate), the gradient is positioned absolutely in the canvas. That behavior is consistent with other canvas implementations (Android, HTML5).
A few days ago, @GaryQian introduced a change in libtxt: Now the canvas->translate method is used to position the paragraph in the canvas. A side effect is that the gradient origin is also translated, so now it is positioned relative to the text. This is the relevant code:
https://github.com/flutter/engine/blob/975d4ead668c8a5e8abe5b0a69a6f7f3e4984579/third_party/txt/src/txt/paragraph.cc#L874-L883
That change makes it impossible to draw a paragraph with an absolutely positioned gradient without reconstructing the shader. There is no way to revert the canvas->translate call.
Here is a comparison the behavior on Android and Flutter, with example projects:

Android:
Flutter:

Example Project
Example Project

More info/discussion can be found here and here
@dnfield @Hixie

One correction here:
The patch by @GaryQian was from almost a year ago, and had a comment that it fixed text placement.  I started experimenting with reverting that piece but haven't gotten far yet.

cc @jason-simmons


A Well Designed Analog Clock added (Issue Number 33)

Added this analogue clock in projects folder. Made using HTML, CSS and JS.
Issue number 33

Make it responsive

I have solved the responsiveness issue. Please go through it.


[SpeedDialAction] Convert to function component

[x] I have followed (at least) the PR section of the contributing guide.

@joshwooding This is the least used component of the library. If would be more valuable to migrate the core components first.

@joshwooding This is the least used component of the library. If would be even more valuable to migrate the core components first.

It’s just one I’ve already done, I’ve still got a backlog I need to open PRs for just chose a random order. I’ll focus on the core and hold off on fixing this PR.

For the context, we have to migrate them all, but I was wondering if we couldn't kill the Speed Dial component to work on more valuable ones.

@joshwooding I think that we should close the pull request. I had a look at the test fail, it's not obvious what's wrong. I would rather wait and see the usage adoption of the component.


Consider switching Option.match parameter order?

This is only a matter of personal preference, but here's my reasoning:
You routinely handle Eithers first with onLeft, then onRight. In other words, you handle the error first, which is fine.
For Options however, you handle the Some value before the None value. In other words, you handle the "error" last.
I understand this would mean a lot of refactoring for a lot of people, but I think this is more intuitive on the long-term.

Even though this is a breaking change, it can't fail silently, and that's a good thing.


swagger setup.. UI not working

Can people look at this please?
@Kirei-Nan could you look at this and confirm we are not working on the same thing?

You can try to delete the poetry.lock file and regenerate it:
rm poetry.lock
poetry lock

I notice that your pyproject.toml specifies certain version dependencies, such as:

Flask = "^3.0.3"
flask-sqlalchemy = "3.1.1"
psycopg = "^3.1.19"

However, the poetry.lock file shows different versions, which may be causing the conflict.


Set initial date value

Hi,
I need to show the daterangepicker with one of the options selected by default. Can you please let me know how this can be achieved? I see only one '@Input' for options in your component. I really need to set the initial value, otherwise need to  create custom. Please let me know.
Thanks.

You can pass in startDate and endDate in the options object
<input  daterangepicker [options]="{startDate:'2017/01/02', endDate:'2017/01/20' }" >

Note that if you want the dates displayed in say inputs value you will need to bind to a variable using ngModel.
See this link for a list of all available options http://www.daterangepicker.com/#options

Doesn't seem to work when I give both ranges, start & endDates in the options of a datepicker.
this.dateUpdatedOptions = { ranges: {               'Today': [moment(), moment()],               'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],               'Last 7 Days': [moment().subtract(6, 'days'), moment()],               'Last 30 Days': [moment().subtract(29, 'days'), moment()],               'This Month': [moment().startOf('month'), moment().endOf('month')],               'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')]             },           startDate : moment().subtract(1, 'days'),           endDate : moment().subtract(1, 'days')          };
Something like this doesn't set the initial value.

Please provide a full sample of your usage (with both ts and html template file is separate) or provide a link to a git repo.

@priyaponni were you able to solve this ?? How to set both dates ??

@VijetaH What are you trying to achieve I see if I can help?

I am not able to set default dates using this :
private dateoptions = {
endDate:<PHONE_NUMBER>000,
startDate:<PHONE_NUMBER>000
};

You can't simply pass a number to the properties. The property expects a valid date object or date string matching the passed locale. You can try and use moment.js to parse your timestamps to dates


Update links to match new owner of repo

Thanks for catching this! These changes are already included in the next release, which includes the elastic2.x support (which will be arriving any day now). Thank you for your contribution!


Debug command "step over/into" fails with wait until statement

run the program below in debug mode. Use the step command. The wait until won't terminate. The drive command seems to be aborted. Running in the frozen state to the next breakpoint doesn't work.
At least, stopping and starting the simulator allows to continue working.
Expected behavior
If the step command hits an wait, the debugger should execute that wait until the (or one of the) wait conditions become true, and then finish. The stmt after the wait or the first stmt list in the wait should be highlighted and the debugger should wait for the next command.

not reproducable anymore


Merge pull request #1 from madskristensen/master

Updating my fork to base

I don't understand this PR

Sorry hit the wrong option when I was try to update my forked report from your base.
Sent via the Samsung Galaxy S22 Ultra 5G, an AT&T 5G smartphone
Get Outlook for Androidhttps://aka.ms/AAb9ysg

From: Mads Kristensen @.>
Sent: Sunday, October 9, 2022 1:27:49 PM
To: madskristensen/RainbowBraces @.>
Cc: Danny McNaught @.>; Author @.>
Subject: Re: [madskristensen/RainbowBraces] Merge pull request #1 from madskristensen/master (PR #34)
I don't understand this PR
—
Reply to this email directly, view it on GitHubhttps://github.com/madskristensen/RainbowBraces/pull/34#issuecomment-1272589887, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AQCSP6SM5DHIKQIM2FPKK6DWCL6BLANCNFSM6AAAAAARAOIL5I.
You are receiving this because you authored the thread.Message ID: @.***>


[oree-834] Resolving sdk.authorize() promise

SDK part of the fix for a bug of authorization promise not being resolved after the OAuth compeltes

@honeydripper  Tests are added - please review them

@palootcenas-outreach is there anything else you suggest changing in order to approve the PR?


When looking at a Path, I see gradebook for another path

If I go to path "A" and refresh the gradebook, then I go to path "B", I see the gradebook for path "A" still. I can refresh on path "B" and see that gradebook, but if I then go back to path "A" I still see the gradebook for path "B".
There are lots of ways to handle this... I'm open to suggestions!

Simply display what path the current gradebook is for
Only display the gradebook for the path you are looking at

We have two routes here, store gradebooks by path ID, and have a bit more complex data structure in local storage. Or we can just inform the user that need to hit refresh grades.
Pros
Storing by ID could let us let the user know how old the gradebook is?
Cons
Complexity is bad
Or both?


Vulnerabilities showing up across all AngularJS Samples

Description:
Some vulnerabilities are showing up in all AngularJS Samples.

Fixed in https://github.com/auth0-samples/auth0-angularjs-samples/pull/56


Is there any probability to develop syops for spikingjelly>=<IP_ADDRESS>? Thanks!

We are working on upgrading the syops-counter to be compatible with spikingjelly>=<IP_ADDRESS>. We appreciate your patience and interest in our project.

Hi! The README says SyOPs requires SpikingJelly <= <IP_ADDRESS>.12, I notice that in SpikingJelly <= <IP_ADDRESS>.12 spikingjelly.activation_based is called spikingjelly.clock_driven but in the example spikingjelly.activation_based is used. I think that is somewhat confusing and I hope you can clarify it. Thanks.

Hi! The README says SyOPs requires SpikingJelly <= <IP_ADDRESS>.12, I notice that in SpikingJelly <= <IP_ADDRESS>.12 spikingjelly.activation_based is called spikingjelly.clock_driven but in the example spikingjelly.activation_based is used. I think that is somewhat confusing and I hope you can clarify it. Thanks.

Same question, have you solved yet?

I just used spikingjelly.clock_driven instead. In their source code:
try:
    from spikingjelly.clock_driven.neuron import MultiStepIFNode, MultiStepLIFNode, IFNode, LIFNode, MultiStepParametricLIFNode, ParametricLIFNode
except:
    from spikingjelly.activation_based.neuron import MultiStepIFNode, MultiStepLIFNode, IFNode, LIFNode, MultiStepParametricLIFNode, ParametricLIFNode

I think the developers were to make SyOPs compatible with higher versions of SpikingJelly but for some reason they haven't implemented it. In SpikingJelly >= <IP_ADDRESS>.14 the multi-step node classes don't exist any more, so SyOPs must be rewritten to be compatible with SJ's multi-step mode.


blocking sim DHT can timeout connections

the sim dht blocks the main thread to get results which can timeout the alive intervals for connections (leading to them getting closed.) This is one way to fail

This can make tests fail when there's nothing wrong with them.


[LOC] Not fixed #1894 (en-us is fiexd, but ja-jp is not fixed.)

Not fixed #1894 (en-us is fiexd, but ja-jp is not fixed.)
en-us:https://docs.microsoft.com/en-us/microsoftteams/enable-features-office-365

ja-jp:https://docs.microsoft.com/ja-jp/microsoftteams/enable-features-office-365

ドキュメントの詳細
⚠ このセクションを編集しないでください。 docs.microsoft.com で必須です ➟ GitHub の問題のリンク。

ID: 2c9b7f77-061d-a224-ff1c-8d3e15d21221
Version Independent ID: 00fa9550-c4c4-3398-ffbb-271cc724048f
Content: 組織の Microsoft Teams の設定を管理する
Content Source: Teams/enable-features-office-365.md
Service: msteams
GitHub Login: @LolaJacobsen
Microsoft Alias: lolaj

@officeglobal Hi could you please aid with this issue? Thanks!
@officedocsbot assign @scanum
@officedocsbot assign @officeglobal

INTL is being updated according to fixed source

@hyoshioka0128 , @scanum topic has been updated and published live

@OfficeGlobal Thanks. fixed. Close #2496

@hyoshioka0128 Thank you for submitting feedback. We understand that this issue has been resolved.
Please feel free to re-open this issue if there is a specific area of the docs that we can improve or make better. Thank you.

@officedocsbot close


[Simplify test] remove unnecessary tests for ExampleCoding issue

All tests for this issue has been removed now!

Remove Codingutils too and I will add it in another PR


Better dart handling - but still not perfect dart handling

With this PR, wherever accessories today are LGR + Thumb Ring + ???, instead we will opt for the everfull dart holder.
When it's equipped, we will aim for bullseye or, absent bullseye (ie you have everything looks red), monsterPart1. This lets us level up dart perks over the course of the run, such that when the ELR from the legendary pizza runs out we have effective, efficient bullseyes.
This also fills in the accessories for the Ed fight to avoid Darts (less than perfect) to avoid a mafia bug with chained fights + dart level up. Eventually this bug will be resolved.
Opportunities:

Bullseye filtering - there's no reason to use it against dirty thieving brigands, for instance.
ButtStuff - we still don't use buttshot, even when we have it.
Everfull as 55% meat% - we regularly get to dart level 11, but do not do torso/etc. shot to take advantage.

Note: I included the profit maximizing familiar into this one, but left that PR open so it can be removed if necessary/desired.
I reverted the control to fix for KOL issue with Darts at Ed as CDM fixed the issue.
I added Apriling Band Helm intrinsics to several locations, to boost food/booze% and/or +com/-com where appropriate.
Still not included: Buttshot, Torsoshot (yet), apriiling instruments.

We probably want a task in misc.ts to grab the tuba as well. I guess we want to leave the other instrument for garbo to grab the saxophone?

We probably want a task in misc.ts to grab the tuba as well. I guess we want to leave the other instrument for garbo to grab the saxophone?

There's a Guy (tm) for whom 3 NC forcers beats 3 more embezzlers, from whom piccolo is worthless, etc. I created a pref with these updates to NOT grab tuba if the pref is on to let that guy use Tuba if they want.
If we're going to acquire Tuba (which you're right we should) we need to create an opt out is my thinking.


feat: Add allowed_instance_types to instance_requirements (#265)

#265

I've tested this a bit locally.
Terraform plan with the following combinations:
1
allowed_instance_types = ["c6in.xlarge"]

=> works

2
excluded_instance_types = ["c6in.xlarge"]

=> works

3
<none>

=> works

4
allowed_instance_types = ["c6in.xlarge"]
excluded_instance_types = ["c6in.xlarge"]

=>
Planning failed. Terraform encountered an error while generating this plan.
Error: Conflicting configuration arguments
"instance_requirements.0.allowed_instance_types": conflicts with instance_requirements.0.excluded_instance_types
Error: Conflicting configuration arguments
"instance_requirements.0.excluded_instance_types": conflicts with instance_requirements.0.allowed_instance_types

I see there is an issue template that for some reason I didn't see when creating this :)
Will update the description accordingly

@antonbabenko , ready for review

the min required AWS provider version throughout will need to be raised to 5.45 to support this

Thank you @bryantbiggs
I had to go with 5.46 here to cater for the min version needed on https://registry.terraform.io/modules/terraform-aws-modules/alb/aws/9.9.0.
Basically, I can't use 5.45 here without also constraining the ALB module in the example to <9.9.0
Happy to do that if you think its worth it

The min version is to declare the modules minimum requirements - it doesn't mean you can pin to this exact version in an example because the use of other resources/modules in an example may require a higher version. It is just a lower bound pin to declare the minimum requirements for the module itself; Terraform will use this when resolving the version requirements in conjunction with other modules and user defined version requirements

@bryantbiggs thank you, should be sorted now

This PR is included in version 7.5.0 :tada:


Fix redundant tile loading in MBXRasterTileRenderer

Reported in #167 and fix written by Craig Hunter (@s219).
[MBXRasterTileRenderer canDrawMapRect:zoomScale:] was requesting tiles for each sliced 256px quadrant (the slices exist as a workaround, per https://github.com/mapbox/mbxmapkit/pull/136#issuecomment-70152488), when it should have only been requesting a single 512px tile from the v4 API.
This also apparently lessens the frequency of VectorKit crashes (#153), but they still happen occasionally after ~10 minutes of panning/zooming.
Fixes #163, #167.
/cc @incanus

@friedbunny @incanus We've had an issue where CPU spins over 150% with the map sitting still and apparently caused by enumerateKeysAndObjectsUsingBlock. This commit seems to fix it and I was wondering when it will be merged.
Thanks!

If this is looking good for you @frowing, I'll merge it to master now but we won't be rolling an official build anytime soon as we're focusing on the GL toolkit.


CDVPlugin class WKWebViewXHRFix (pluginName: wkwebviewxhrfix) does not exist.

Hell
I tried to use your plugin by simply doing the following steps:
cordova create meh
cd meh
cordova plugin add
cordova plugin add cordova-plugin-wkwebview-engine
cordova plugin add https://github.com/TheMattRay/cordova-plugin-wkwebviewxhrfix

...

open platforms/ios/HelloCordova.xcodeproj

set the Team etc. and run it ..
Starting the "App" I get the Following output on the Console:
2017-06-07 12:42:39.503145+0200 HelloCordova[1100:213448] Apache Cordova native platform version 4.4.0 is starting.
2017-06-07 12:42:39.504039+0200 HelloCordova[1100:213448] Multi-tasking -> Device: YES, App: YES
2017-06-07 12:42:39.510696+0200 HelloCordova[1100:213448]
Started backup to iCloud! Please be careful.
Your application might be rejected by Apple if you store too much data.
For more information please read "iOS Data Storage Guidelines" at:
https://developer.apple.com/icloud/documentation/data-storage/
To disable web storage backup to iCloud, set the BackupWebStorage preference to "local" in the Cordova config.xml file
2017-06-07 12:42:39.582128+0200 HelloCordova[1100:213448] Could not signal service com.apple.WebKit.WebContent: 113: Could not find specified service
2017-06-07 12:42:39.583733+0200 HelloCordova[1100:213448] Could not signal service com.apple.WebKit.Networking: 113: Could not find specified service
2017-06-07 12:42:39.584235+0200 HelloCordova[1100:213448] CDVWKWebViewEngine will reload WKWebView if required on resume
2017-06-07 12:42:39.584301+0200 HelloCordova[1100:213448] Using WKWebView
2017-06-07 12:42:39.585179+0200 HelloCordova[1100:213448] [CDVTimer][handleopenurl] 0.101030ms
2017-06-07 12:42:39.587276+0200 HelloCordova[1100:213448] [CDVTimer][intentandnavigationfilter] 2.018988ms
2017-06-07 12:42:39.587426+0200 HelloCordova[1100:213448] [CDVTimer][gesturehandler] 0.082016ms
2017-06-07 12:42:39.587475+0200 HelloCordova[1100:213448] CDVPlugin class WKWebViewXHRFix (pluginName: wkwebviewxhrfix) does not exist.
2017-06-07 12:42:39.587504+0200 HelloCordova[1100:213448] [CDVTimer][wkwebviewxhrfix] 0.036955ms
2017-06-07 12:42:39.587538+0200 HelloCordova[1100:213448] [CDVTimer][TotalPluginStartup] 2.490997ms

Any Ideas ?
Would it suffice to simply put the lines:
@try {
           [configuration.preferences setValue:@TRUE forKey:@"allowFileAccessFromFileURLs"];
       }
       @catch (NSException *exception) {}

       @try {
           [configuration setValue:@TRUE forKey:@"allowUniversalAccessFromFileURLs"];
       }
       @catch (NSException *exception) {}

in CDVWKWebViewEngine.m after
configuration.allowsInlineMediaPlayback = [settings cordovaBoolSettingForKey:@"AllowInlineMediaPlayback" defaultValue:NO];

Just asking - did you perform a build using cordova build ios?

Yes =)

same here, same error but only on ios9, ios10 is ok
is it related to => http://stackoverflow.com.mevn.net/questions/44841134/cordova-wkwebview-issue-in-ios-9-but-not-ios10?rq=1 ?

The problem persists in iOS 9 and iOS 10.
Another question, this access to the [configuration.preferences setValue: @TRUE forKey: @ "allowFileAccessFromFileURLs" attributes;  is approved
by apple when the application is released in the store?
The category runs perfect, but the exception the console log!! And question by apple guide lines security..
Thanks in advanced!!

I'm having the same issue , any updates here @litoarias @pvdyck

latest version solved the issues ( local xhr ) => https://forum.ionicframework.com/t/wkwebview-v3-0-0/82814/14

Me as well- judging by this thread, might have been fixed but seems to have cropped up again.

Hi there, any solution on this problem. We are also having this issue.

Having the same issue..

Same error message in the Xcode console:
"CDVPlugin class WKWebViewXHRFix (pluginName: wkwebviewxhrfix) does not exist"
But local XHR works well... Should we take care of this message?

Same issue here and it makes my app not working in the simulator but works on device

Feel free to submit a PR

@mrayonnaise would if I knew what to fix

That’s fair! Didn’t mean that as snide as it may have come across. I will
take a long-overdue look later today.
On Sun, Nov 17, 2019 at 8:19 AM Eric<EMAIL_ADDRESS>wrote:

@mrayonnaise https://github.com/mrayonnaise would if I knew what to fix
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/TheMattRay/cordova-plugin-wkwebviewxhrfix/issues/2?email_source=notifications&email_token=AAHRYNTCEMD5VIJQFLK54GLQUFAGPA5CNFSM4DOKDIM2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEEILYUY#issuecomment-554744915,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAHRYNVKU7I55HSPLDSTBLTQUFAGPANCNFSM4DOKDIMQ
.

Only thing I see is WKWebViewXHRFix vs CDVWKWebViewXHRFix in plugin.xml in feature. Testing now.

So far I've removed your plugin and added the code directly to cordova-plugin-wkwebview-engine to see the result.
The error in the log is gone but for me the result stays the same, the app works when tested with a real device but it does not when tested with the simulator (files aren't loaded). Not sure where go to from here...
Also note that I'm using<EMAIL_ADDRESS>

Ok I've found my problem, It refuses to load a sound file we have "click.mp3" but this only affects the simulator. So I'm kind of hijacking this thread I apologize cause I'm mixing 2 issues:
1- Your plugin works but generates an error in the log about CDVPlugin not found
2- Loading .mp3 files from the www folder does not work for some reason in the simulator

No worries - you’re trying to get this working so I don’t blame you.
On Sun, Nov 17, 2019 at 3:14 PM Eric<EMAIL_ADDRESS>wrote:

Ok I've found my problem, It refuses to load a sound file we have
"click.mp3" but this only affects the simulator. So I'm kind of hijacking
this thread I apologize cause I'm mixing 2 issues:
1- Your plugin works but generates an error in the log about CDVPlugin not
found
2- Loading .mp3 files from the www folder does not work for some reason in
the simulator
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/TheMattRay/cordova-plugin-wkwebviewxhrfix/issues/2?email_source=notifications&email_token=AAHRYNWNYOQMRKDJEKZOL4TQUGQZ7A5CNFSM4DOKDIM2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEEIUX2I#issuecomment-554781673,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAHRYNXUTFKZ232QCBYW4YTQUGQZ7ANCNFSM4DOKDIMQ
.

I had the same issue and solved it installing : cordova plugin add cordova-plugin-wkwebview-engine. Apparently this plugin needs to be installed for the fix to work.
Dont't forget to add ALL this in your config:

..........[other code]

I had the same issue and solved it installing : cordova plugin add cordova-plugin-wkwebview-engine. Apparently this plugin needs to be installed for the fix to work.
Dont't forget to add ALL this in your config:

..........[other code]
    <feature name="CDVWKWebViewEngine">
        <param name="ios-package" value="CDVWKWebViewEngine" />
    </feature>
    <preference name="CordovaWebViewEngine" value="CDVWKWebViewEngine" />
    <preference name="WKWebViewOnly" value="true" />
</platform>

I'm still getting this. Has anyone figured out a resolution?

https://github.com/globules-io/cordova-plugin-ios-xhr


Help with room "rejoin"

Hi everyone!
Thanks for this great job.
I'm using it to handle socket.io with multiple kubernetes pods and it works good. I just can't figure out a way to rejoin a socket to rooms in another pod when the pod where it is connected dies.
I've searched on closed issues and looks like "remoteJoin" is the way to go, but nothing changed after implementing this.
When a pod dies, I see my "Client connected" console long on the reaming pod, but I want to rejoin it to all rooms that it was joined on died pod.

Just found that it's better to be handled client side: https://stackoverflow.com/questions/37461495/socket-io-rejoin-rooms-on-reconnect


Add support for PHP 8

Fixes #66

So yes, I know StyleCI is complaining. Development on 4.0 is still (very slowly) happening in master, which will hopefully fix everything.

FWIW I manually tested this (composer update && phpunit and composer update --prefer-lowest && phpunit), and it worked fine on PHP 8. If there's any problems, I'll gladly hear from you in a new issue. 😄


OAK-9757 : increased node name limit for mongo 4.2 version

Idea: Move (or copy) the util functions to the DocumentStore API, where they have access to metadata.

@reschke That's a good idea to move util function to DocumentStore and that would help us avoiding in calling metadata multiple times.
Let me make changes and raise the PR again, but I doubt that would restrict the code changes to less file since most of the changes are in tests cases and the changes are to pass the parameters to utils class.

I suggest we take a slightly different approach. To me it feels wrong that Utils.isLongPath() is currently responsible for detecting when a node name is too long. I think this is the reason why so many other code changes are necessary. E.g. the method is then used in Utils.getIdFromPath(), which in turn is used in many places. But in many cases the check for the node name length is not actually needed. I my view it would be better if the node name length check is moved out of Utils.isLongPath() to a place were it is really needed. That is, when a new node is added through the DocumentNodeStore or created with an UpdateOp on the DocumentStore.

Also note that checks fails because two new files for classes MongoVersion and MongoVersionTest do not have a license header.

@mreutegg

To me it feels wrong that Utils.isLongPath() is currently responsible for detecting when a node name is too long

Yes, I think it should be other way  around i.e. node name too long should check whether path is long or not.
I think, we should move out the logic to check node name too long to a separate method and call Utils.isLongPath() from it since node name too long make sense only for long paths.
/*** The maximum size a node name, in bytes. This is only a problem for long path.*/            int NODE_NAME_LIMIT = Integer.getInteger("oak.nodeNameLimit", 150);
As mentioned by you, we should move whole logic for node name too long here https://github.com/apache/jackrabbit-oak/blob/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeState.java#L417 and then we should be able to reduce the number of changed files significantly.


Add number of forecasts

Is your feature request related to a problem? Please describe.
The number of forecasts displayed depends on the size of the screen, therefore the information changes depending on where it is viewed from, which makes it difficult to adjust it to the size and distribution of other components.

Describe the solution you'd like
A parameter could be added in the header that allows limiting the maximum number of forecasts to be displayed
number_of_forecasts: 5
Additional context
You can see within other projects that also use a similar parameter like bramkragten/weather-card or decompil3d/lovelace-hourly-weather

Thanks for implementing this!
The wind forecast labels don't seem to be adjusting to an increased number of forecasts and become misaligned and fall outside the card (I've tried reducing the font size but it is the padding that is the problem).

Yes, this is a very nice feature!
I noted similar issue when specifying larger counts.  I wondered if could also stack the direction and the speed vertically to help.

Please don't limit to the auto numbe (though it looks like you edited your message). It's very useful to display 8 or even 24 houre at a time and the chart works very well. If you don't want to fix overlapping icons/wind text maybe just disable those features if the number is too big (or just leave it as the user's problem for now).
The forecast icons work OK up to about 12 hours on a mobile screen, for 24 hours I have disabled the icons as there's no way that's going to fit sensibly but the chart works nicely (it even displays every second temperature number and time to fit properly). I'll live without the wind speed for now, I might try making the scaling more dynamic at some point.


Port TFL operator GATHER to TFLM

PR4 for issue #45196. This PR aims to finish porting GATHER from TFL to TFLM.
Notes:

For input/output tensors, only data types float and int8_t are supported;
For position tensors, only data types int32_t and int64_t are supported; (update March 15: int64_t caused TFLite Micro Internal CI build to fail, so it has been removed)
The reference implementation in lite/kernels/internal/reference/gather.h was not used, due to the mismatched data type between members of TfLiteGatherParams and of GatherParams;
While this PR was under development, the lite kernel Gather added code to handle batch_dims; that change has not been incorporated into the micro kernel (update March 16: the support for batch_dims has been added into the TFLM Gather).

As of April 5th, this PR has passed all checks. It has been approved, but it does not have the "ready to pull" label. Is there anything still missing?

@rsun-bdti  Can you please resolve conflicts? Thanks!

I don't know why, but this PR just can't get merged into the master for two months. Closing it now to start over.


Refactor verify_named_matchset* to remove duplicate between names and values versions

Use a flag function like:
vhas_matchset_within(v, ref_set)

if its not broken don't fix it.


Continue Button Crashes on Client 1.17 Launch

Crash Report Below:
continuebutton-crash-2021-06-19_22.53.56-client.txt

Fixed on version 1.0.4


Multiple x-axis

Hi,
I'd like to suggest a feature that allows you to have multiple x-axis in horizontal bar chart.
Is there any option to do this right now?
Thanks for your time.

Hi @kreejzak
Unfortunately, multiple x-axes in a bar chart are not supported currently. Also, they are not being considered to be added in the near future.
Thank you for your suggestion.

Is there a feature for multiple X-axis in general? I did search the Docu and tried a bit but I am not able to actually get a second or more x-axis. Is it supported and if so, how do I manage to get it working ?

@rmky As said in the previous comment, multiple x-axes are not supported currently.

Thanks for the fast reply. Wanted to be sure as you explicitly mentioned it for bar charts, so I thought it maybe is for other chart types. Thanks for the answer.

did you add it now?

how about multiple X-axis ?  only want show total in x top

in the area chart of reactApex i want data on X-axis should be diff color for eg jan to june blue color and then june to dec in red color is that possible pls tell how to do that .


Issue setting up GPU Mining

I have been trying to set Sia up again to GPU mine (I have done it before on the beta version).  I have Sia UI version 1.3.0 and 1.1 of the miner (Windows 8.1, 64 bit).  I am kind of ignorant when it comes to setting up the folders properly, so I just copied and pasted the extracted Sia miner files into a "Miner" folder in "E:\Programs\Sia\Sia-UI-v1.3.0-win32-x64\resources\app\plugins" (note that E is not my primary operating system drive).
When I run the UI, it loads my wallet and synchronizes the block chain fine.  I cannot find a miner tab like I did before and when I try "miner run" I get the "Could not start miner: API call not recognized: /miner/start" error.  I've tried following this fix post, but when I run the "miner start" command in the Sia terminal again in step 4, I get the same "Could not start miner: API call not recognized: /miner/start" error.  Although I probably should not expect it to work, I've tried step 5 after that, and the resulting command prompt window seems stuck at "initializing..."
What can I change to make the Sia GPU miner work?  Thank you for your attention with this issue.

You need to run siad with the miner module enabled. In previous versions it was enabled by default, but now you must specify siad -M cgtwm to run the miner. Refer to siad modules for more info.

My bad, I overlooked the options in the command in the instructions; it works.  Although I had originally thought it would be a one time fix to set the UI up for mining, but it seems I will need to directly start Siad according to the instructions each time I intend to start Sia again for mining.  Is it possible to have the Sia UI remember that it has a miner plugin?  Thank you for your quick response.

It should be possible to configure that, but there's an open issue that suggests otherwise. We're looking into it.

Ah, OK.  Since I'm able to run the GPU miner now I will close this issue, but I'm interested to see if it is possible to make it built-in like before.  Thanks again for your help.


ospShutdown results in EXC_BAD_ACCESS

The following code will crash
ospInit(&argc, argv);
ospDeviceSetErrorFunc(ospGetCurrentDevice(), [](OSPError, const char*){});
ospShutdown();

Hey @StasJ , the value returned by ospGetCurrentDevice() is actually a refcounted object, so when you call ospShutdown() and quit your program has a dangling reference to the device. Check out the example app's setup for setting the error functions and callbacks for how to do this: https://github.com/ospray/ospray/blob/master/apps/ospExamples/example_common.h#L12-L48 . In short, you'll want to hang onto the handle returned by ospGetCurrentDevice and then release it when you're done. So here you'd want to do:
ospInit(&argc, argv);
OSPDevice handle = ospGetCurrentDevice();
ospDeviceSetErrorFunc(handle, [](OSPError, const char*){});
ospRelease(handle);
ospShutdown()

Though actually, since the object is refcounted internally I'd expect it to be cleaned up ok in the local rendering case. So the crash may be actually related to https://github.com/ospray/ospray/issues/441 as well, which will have a similar effect of leaving the device dangling by not calling ospShutdown

With ospDeviceRelease(deviceHandle) the crash is prevented. Or better using cpp-wrappers cpp::Device::current() instead ospGetCurrentDevice() , which automatically releases the device.


Upgrade TSServer to version 2.0.7

VSCode Version: 1.8.0-Insider

Marking as verified. We are now even on 2.1.x


feat: enable self signed JWT for http

The codecov seems to have some calculation problem. Only 2 files are affected, one coverage stays 100% and the other increases by 0.02%.


config: esp32:  configurable UART FIFO thresholds

Introduce Kconfig options to define both the RX and TX FIFO thresholds for the ESP32 UART, enabling configurability while maintaining a default value of 1. fixes #74311

Hi @OmerGozderesi Thanks for your work! Please note, the previously used default values were
#define UART_TX_FIFO_THRESH 0x1
#define UART_RX_FIFO_THRESH 0x16

You should leave them in the newly created configs as it was before.

Also, please squash those commits changing the same file together.

updated, thanks again for reviews

@marekmatej @sylvioalves please review


Make it easier to detach and delete volume

Feature Request
Is your feature request related to a problem? Please describe.
In one scenario, when I run volume.detach(), I want to run volume.delete() afterwards. However, because the detach job is async in the background, my script has to wait for an unknown amount of time before it can successfully call volume.delete()
Describe the solution you'd like
Alternative 1: Make a new function that covers my use case: volume.detach_and_delete()
Alternative 2: Add an option to volume.detach that makes it block until the detach action is actually completed in the backend. It could look like this, for example:
volume.detach(block_until_done=True)
Describe alternatives you've considered
I could write a custom for loop like this in my script, but that's not code I want to have in my script. I would really prefer that the hcloud takes care of this.
def is_volume_detached_from_server(volume, server):
    # Implement code that gets the updated volume object or server object
    # and checks whether or not the given volume is still attached to the server
    return True | False

server = ...
volume.detach()

for i in range(50):
    if i == 49:
        raise Exception("Timeout")
    if is_volume_detached_from_server(volume, server):
        break
    else:
        time.sleep(5)
        continue

volume.delete()

Teachability, Documentation, Adoption, Migration Strategy
Migration strategy: None needed, since the requested change(s) would be backwards-compatible

We already have a function for waiting on the action success.
Sample:
volume.detach().wait_until_finished()

https://hcloud-python.readthedocs.io/en/latest/api.clients.actions.html#hcloud.actions.client.BoundAction.wait_until_finished
So you don't have to implement this for yourself.

Thanks


How to install this project on a debian or rockylinux server, is there a detailed procedure?

How to deploy a server like debian or rockylinux, is there a detailed procedure?

Deploying it now can be a bit tricky, you need to deploy a Deeptrain Unified Account Management and get the WeChat and Alipay Enterprise Payment APIs

This is deeptrain

We are planning to implement all in one and deploy it in an easy way, such as supporting docker-compose installations etc.

thank you very much

we support all in one now.


Fix action payload fields being overwritten

Coverage increased (+0.001%) to 99.752% when pulling e76660cab8d2739a207827bf9f6649d955354612 on bugfix/action-fields-overwrite into 6a43410a2078c406f364f344e7fc06539051f5df on master.


Enhancement: Recreating deployment pipeline shows already exists error without proper information

📜 Description
If a user has created a cd pipeline on gitOps and deleted it. Sometimes they are shown with the error that the app already exists(on argocd).
👟 Reproduction steps

Create a cd pipeline using gitOps mode.
Block deletion of resource from backend.,
Delete the pipeline.

👍 Expected behavior
The user should be informed with an more elaborate message.
👎 Actual Behavior
Confusing message is shown which confuses user.
☸ Kubernetes version
1.22
Cloud provider

🌍 Browser
Chrome
🧱 Your Environment
No response
✅ Proposed Solution
No response
👀 Have you spent some time to check if this issue has been raised before?

[X] I checked and didn't find any similar issue

🏢 Have you read the Code of Conduct?

[X] I have read the Code of Conduct

Issue : In cases where deletion get stuck, the argo app is not actually deleted but it is deleted at devtron side. This causes error when user tries to recreate the pipeline.
Proposal:

Introduce a new status like Deletion in progress which shows the status of deletion.
Introduce an informer which deletes the pipeline from devtron after successful deletion at argocd/k8s side.
Add a backup mechanism(maybe a cronJob) if informer fails to delete the pipeline when it should.

fixed in https://github.com/devtron-labs/devtron/pull/2950


prange generates internal numba exception when using ndarray.flat

Accessing an array with ndarray.flat in a numba.prange loop causes an internal Numba error.  Here is a minimal example that demonstrates the exception:
import numba
import numpy as np
import os
os.environ['NUMBA_DEBUG_ARRAY_OPT_STATS'] = '1'

@numba.njit(parallel=False)
def serial(A):
    A = A.flat
    N = len(A)
    for i in numba.prange(N):
        if A[i] >= 5:
            A[i] += 10

@numba.njit(parallel=True)
def parallel(A):
    A = A.flat
    N = len(A)
    for i in numba.prange(N):
        if A[i] >= 5:
            A[i] += 10

print('Serial:')
A = np.arange(10)
serial(A)
print(A)

print('\nParallel:')
A = np.arange(10)
parallel(A)
print(A)

and the output:
Serial:
[ 0  1  2  3  4 15 16 17 18 19]

Parallel:
Parallel for-loop #0 is produced from pattern '('prange', 'user')' at <ipython-input-1-f9ca7dd40116> (18)
After fusion, function parallel has 1 parallel for-loop(s) #set([0]).

---------------------------------------------------------------------------
LoweringError                             Traceback (most recent call last)
<ipython-input-1-f9ca7dd40116> in <module>()
     27 print('\nParallel:')
     28 A = np.arange(10)
---> 29 parallel(A)
     30 print(A)

/home/lgarrison/anaconda2/lib/python2.7/site-packages/numba/dispatcher.pyc in _compile_for_args(self, *args, **kws)
    358                     e.patch_message(''.join(e.args) + help_msg)
    359             # ignore the FULL_TRACEBACKS config, this needs reporting!
--> 360             raise e
    361
    362     def inspect_llvm(self, signature=None):

LoweringError: Failed at nopython (nopython mode backend)
Failed at nopython (nopython mode backend)
expecting {{i8*, i8*, i64, i64, i64*, [1 x i64], [1 x i64]}, i64, i64*} but got i8*

File "<ipython-input-1-f9ca7dd40116>", line 18:
def parallel(A):
    <source elided>
    N = len(A)
    for i in numba.prange(N):
    ^
[1] During: lowering "id=0[LoopNest(index_variable = parfor_index.2, range = (0, $N.4, 1))]{40: <ir.Block at <ipython-input-1-f9ca7dd40116> (18)>, 81: <ir.Block at <ipython-input-1-f9ca7dd40116> (18)>, 59: <ir.Block at <ipython-input-1-f9ca7dd40116> (19)>}Var(parfor_index.2, <ipython-input-1-f9ca7dd40116> (18))" at <ipython-input-1-f9ca7dd40116> (18)
-------------------------------------------------------------------------------
This should not have happened, a problem has occurred in Numba's internals.

Please report the error message and traceback, along with a minimal reproducer
at: https://github.com/numba/numba/issues/new

If you need help writing a minimal reproducer please see:
http://matthewrocklin.com/blog/work/2018/02/28/minimal-bug-reports

If more help is needed please feel free to speak to the Numba core developers
directly at: https://gitter.im/numba/numba

Thanks in advance for your help in improving Numba!

The if statement appears necessary to cause the exception.  Without the if, the jit succeeds (issuing only a warning), but produces incorrect results (no modification to the input).
Keeping the if and using ndarray.reshape(-1) instead of ndarray.flat silently produces incorrect results (no warnings or errors issued).  So perhaps that's the most worrisome failure mode!  ndarray.ravel() looks okay in all cases.

Thanks for the report. I can reproduce. @DrTodd13 will take a look.

@stuartarchibald Is the following expected to work?
@numba.njit(parallel=False)
def serial_internal(A):
    N = len(A)
    for i in numba.prange(N):
        if A[i] >= 5:
            A[i] += 10

@numba.njit(parallel=False)
def serial(A):
    serial_internal(A.flat)

For me, this non-ParallelAccelerator example seems to generate the same error that ParallelAccelerator has with the original code, which isn't surprising because ParallelAccelerator does this sort of function division.
There was a ParallelAccelerator bug as well that I at a minimum created a work-around for but still generated this same error.

@DrTodd13 looks like this is a bug for @njit not just ParallelAccelerator. Thanks for looking. Removing ParallelAccelerator label.
@lgarrison I'm editing the ticket title to reflect the discovered underlying issue.
Minimal reproducer:
from numba import njit
import numpy as np

@njit
def bar(A):
    return A[0]

@njit
def foo(A):
    return bar(A.flat)

foo(np.arange(10))

gives this:
numba.errors.InternalError: Failed at nopython (nopython mode backend)
expecting {{i8*, i8*, i64, i64, i64*, [1 x i64], [1 x i64]}, i64, i64*} but got i8*
[1] During: resolving callee type: type(CPUDispatcher(<function bar at 0x7f102fd17ea0>))
[2] During: typing of call at foo.py (10)

--%<----------------------------------------------------------------------------

File "foo.py", line 10:
def foo(A):
    return bar(A.flat)

@stuartarchibald ParallelAccelerator does have an issue, which is alias analysis not understanding A.flat and is solved in #2963.

@ehsantn thanks, and thanks for the fix in #2963. I saw that go in and figured this can track the @njit issue which prevents both from working?

Sure.

Thanks!  Does this also fix the problem with reshape(-1)?  In my reproducer, if you replace A.flat with A.reshape(-1), the input remains unmodified in the parallel case (but no errors).

@lgarrison Yes, #2963 will support reshape in general.

I don't think #2963 fixed this issue.  Running @stuartarchibald's reproducer gives me the same results.
I'm on Numba version 0.39.0dev0+139.gf9089c2dc (i.e. master).

@lgarrison thanks for checking back on this. The issue with Parallel Accelerator (alias analysis missing support for ndarray.flat) is fixed in #2963, but the underlying issue in the compiler core is not. To avoid confusion I've opened https://github.com/numba/numba/issues/3015 to track the specific compiler problem and I'm closing this ticket.


Can't download fonts anymore

I have used fontello for years but as of yesterday I can't seem to download the font set anymore. It is showing an alert with "Communication problems. Please try again later."

Seems to work as expected. Could you retry (or ctrl+F5 and retry)?

Still not working for me, see screenshot:

Could you ping/traceroute fontello.com? Seems network issue at your side.

Seems ok:

It might be an issue with Sophos firewall/proxy but I never had this issue before. Disabling does not seem to resolve it though...

I've restarted server for sure. Works for me, and worked before. Try another browser/computer/provider.

I have tried all other browsers too, to no avail. I will test in another environment soon and get back to you. Thanks for your help so far.

was indeed an issue with the firewall. confirmed is not a bug.


[CSV Data Module] Allow empty strings to represent nil values through user configurations

Allow empty strings to represent nil values through user configurations

Fixed with https://github.com/ballerina-platform/module-ballerina-data.csv/pull/23


Update facility details API

Overview
The embedded map feature supports a contributor showing additional
fields they have added that are not visible on OAR. When a contributor
id and embed=1 are passed to the facility details API, an array of
additional fields, as defined by that contributor's embedded map
settings, are returned with the facility details.
Connects #1218
Demo

Notes
We previously discussed the format of the fields being: { "label": "Test Field", "value": "1234" } This works well when the contributor has only submitted the facility once; however, in some cases contributors submit a facility multiple times, which can result in multiple available values for a field.
Currently, instead, all of the available values for the field are returned as an array { "label": "Test Field", "value": ["1234", "abc"] }. This seemed like the most honest presentation of the available data, but other options would be to only use the most recently submitted FacilityListItem for the facility (regardless of whether the submission includes all of the fields in question), or to use the most recently submitted FacilityListItem where the field is present for each field.
Testing Instructions

Run vagrant ssh and ./scripts/test.

[ ] All tests should pass.

Sign in and submit a facility by API with custom fields. Ensure that it has been matched or created.
Submit a facility via list.
Manually add the custom fields as EmbedFields for the account you're signed into, ensuring they are set to 'visible'.
GET the details for the facilities you submitted, passing embed=1 and your contributor id as query params.
http://localhost:6543/api/facilities/{facility id}/?embed=1&contributor={id}

[ ] The contributor fields should be provided.
[ ] The fields should show the display name and the provided value(s).
[ ] The fields should be in the order defined by the EmbedFields.

Checklist

[ ] fixup! commits have been squashed
[ ] CI passes after rebase
[ ] CHANGELOG.md updated with summary of features or fixes, following Keep a Changelog guidelines

Thanks for the review! Updated in 6b04a55 to use only the most recent, active item for the data. Ready for another look!

Ready for another look.


Java 8 compatibility: Add conversions for Completable Future

I'm thinking Task.fromCompletableFuture and def runAsyncAsJava: CompletableFuture, both being pretty similar to the existing Task.fromFuture and def runAsyncForJava: Future. Not sure what the best way to add new methods is without cluttering up Task and maintaining Scala.js compatibility, though.

The problem isn't only Scala.js compatibility, but compatibility with Java 6 and 7. CompletableFuture is available only starting with Java 8 and that's a problem, since Java 6 and 7 support will be maintained for as long as Scala 2.11 is in use. And that will be a long time, since Android has not been migrated to Java 8, which makes Scala 2.11 a long-term-support release.
We can only provide such support as a separate project, because we can't have such functions on the Task type or its companion object. This means a monix-java8. Which could provide extension methods ...
import monix.java8.extensions._

val task = Task.fromCompletableFuture(cf)
task.runAsync.asJava

Btw, as in the example, I wouldn't do a task.runAsyncAsJava. It would be much better to convert CancelableFuture instead of Task.
This project could then later expand its purpose to providing NIO integration, though NIO is also available for Java 7, so we could also be talking about a monix-java7.

Given that Scala 2.12 requires Java 8, this should be added for Scala 2.12 only.


anchor build fails

Trying to learn about tokens and mints but when I tried building I got
$ anchor build
BPF SDK: /Users/Sparky/.local/share/solana/install/releases/1.9.1/solana-release/bin/sdk/bpf
cargo-build-bpf child: rustup toolchain list -v
cargo-build-bpf child: cargo +bpf build --target bpfel-unknown-unknown --release
   Compiling atty v0.2.14
   Compiling termcolor v1.1.2
   Compiling getrandom v0.2.4
   Compiling addr2line v0.17.0
   Compiling failure_derive v0.1.8
   Compiling crunchy v0.1.6
   Compiling wasm-bindgen v0.2.79
   Compiling qstring v0.7.2
   Compiling uriparse v0.6.3
   Compiling semver v1.0.6
   Compiling getrandom v0.1.16
error[E0425]: cannot find function `is` in this scope
  --> /Users/Sparky/.cargo/registry/src/github.com-1ecc6299db9ec823/atty-0.2.14/src/lib.rs:98:6
   |
98 |     !is(stream)
   |      ^^ not found in this scope

error: target is not supported, for more information see: https://docs.rs/getrandom/#unsupported-targets
   --> /Users/Sparky/.cargo/registry/src/github.com-1ecc6299db9ec823/getrandom-0.2.4/src/lib.rs:230:9
    |
230 | /         compile_error!("target is not supported, for more information see: \
231 | |                         https://docs.rs/getrandom/#unsupported-targets");
    | |_________________________________________________________________________^

error[E0433]: failed to resolve: use of undeclared crate or module `imp`
   --> /Users/Sparky/.cargo/registry/src/github.com-1ecc6299db9ec823/getrandom-0.2.4/src/lib.rs:252:5
    |
252 |     imp::getrandom_inner(dest)
    |     ^^^ use of undeclared crate or module `imp`

My cargo.toml file is below in case I have some mis- matched version. I am running solana 1.9.1 and anchor 0.20.1
[package]
name = "token01"
version = "0.1.0"
description = "Created with Anchor"
edition = "2018"

[lib]
crate-type = ["cdylib", "lib"]
name = "token01"

[features]
no-entrypoint = []
no-idl = []
no-log-ix-name = []
cpi = ["no-entrypoint"]
default = []

[dependencies]
anchor-lang = "0.20.1"
anchor-spl = "0.20.1"
anchor-token = "0.3.0"
spl-token = "3.3.0"
solana-sdk = "1.9.1"

Not sure about all the error, but it looks like one error has to do with getrandom. getrandom adds abstraction to OS random primitives, and in this case it's failing to find a target that matches your system - https://github.com/rust-random/getrandom/blob/v0.2.4/src/lib.rs#L230

I had the same error before. Looks like solana-sdk couldn't be compiled into BPF. It worked for me after removed solana-sdk from my dependencies.

solana-sdk is not compiled by bpf target...


Added .gitkeep to sandbox

Hi,
Added the .gitkeep file to the sandbox so that tests can be run when clonning with no need to manually create the sandbox directory.

@nicwillemse thanks 💛 . These changes have been merged in with #15.


Retry layer

Hi,
I am not sure if it is needed or not since I am new to rabbitmq, but the base package apalis has a retry layer which doesn't work with this crate due to missing implementations. Is there any chance to support that layer or is this happening automatically on error already?

Thanks :) I am in no rush so take you time :) it was just something I observed while using the crate

Closed by https://github.com/geofmureithi/apalis-amqp/pull/14


Yukon power supply upgrade

Currently there is a space for 6xNiMH AA batteries.
Replace this with a space for two 18650 cells.
Wire these to the XT30 connector for the Yukon.
This is an upgrade - as the AA cells, while far from ideal, will power things for now.
Definition of ready
Definition of done

[x] 18650 battery box fits under robot where line follower is
[x] 18650 battery box wired correctly to Yukon
[x] Yukon power up test demonstrated
[x] If CAD changes are required, CAD Files PR is merged.

Made without CAD change (for now)


Ractive + Placeholder.js in IE < 10

Seems that we have a little bit of a collision when using both of these together. The problem is that Placeholder.js, when the field is empty, then the field is blurred, it will change the value of the field. This causes Ractive to fire observers due to the value change. Currently, I am just grabbing the placeholder value, and comparing it to newValue to skip the observer actions (and treating the placeholder value as empty/null).
Is there a more idiomatic way to solve the problem (perhaps a decorator or something)? Has anyone else run into this problem and/or have workarounds or a solution?

What I normally do in these situations where a plugin collides with Ractive functionality is to just create a component with the said functionality with just Ractive as much as possible.
What you can do is build a component that accepts value and placeholder as data, and internally has 2 inputs, one on top of the other. When the top one (the one you interact with) is blank, print the placeholder on the one underneath it. You can proxy the needed events from the input off the component manually.
Something like... this: http://jsfiddle.net/fb17mmsn/1/

Hey @paul-bjorkstrand, it's been awhile since you responded to this thread, so I'm going to mark the issue resolved. If this is not the case, please do not hesitate to reopen it at any time.


⚠ Mitsubishi has degraded performance

In 3bc7229, Mitsubishi (https://mitsubishimotorsid-mobileapp.com/app/login) experienced degraded performance:

HTTP code: 200
Response time: 18079 ms

Resolved: Mitsubishi performance has improved in c91abed after 1 minute.


Add notify action that uses OS X notification center

It uses https://github.com/alloy/terminal-notifier to show a simple notification. For example:
 after_all do |lane|
  notify "Finished driving lane #{lane}"
   reset_git_repo
 end

Looks great, thanks! :+1:


flutter_integration_test is very flaky [iOS] only

Description
https://github.com/getsentry/sentry-dart/blob/62de92771b3fa4340cc2e07bc1121f3a60a1fd79/.github/workflows/flutter_integration_test.yml#L88-L89

Run flutter test integration_test/integration_test.dart --verbose
[   +3 ms] executing: [/Users/runner/hostedtoolcache/flutter/stable-3.10.0-x64/] git -c log.showSignature=false log -n 1 --pretty=format:%H
[  +66 ms] Exit code 0 from: git -c log.showSignature=false log -n 1 --pretty=format:%H
[        ] 84a1e904f44f9b0e9c4510138010edcc653163f8
[        ] executing: [/Users/runner/hostedtoolcache/flutter/stable-3.10.0-x64/] git tag --points-at 84a1e904f44f9b0e9c4510138010edcc653163f8
[  +40 ms] Exit code 0 from: git tag --points-at 84a1e904f44f9b0e9c4510138010edcc653163f8
[        ] 3.10.0
[   +4 ms] executing: [/Users/runner/hostedtoolcache/flutter/stable-3.10.0-x64/] git rev-parse --abbrev-ref HEAD
[  +14 ms] Exit code 0 from: git rev-parse --abbrev-ref HEAD
[        ] stable
[ +112 ms] executing: [/Users/runner/hostedtoolcache/flutter/stable-3.10.0-x64/] git rev-parse --abbrev-ref --symbolic @{upstream}
[  +19 ms] Exit code 0 from: git rev-parse --abbrev-ref --symbolic @{upstream}
[        ] origin/stable
[  +37 ms] executing: [/Users/runner/hostedtoolcache/flutter/stable-3.10.0-x64/] git ls-remote --get-url origin
[  +87 ms] Exit code 0 from: git ls-remote --get-url origin
[  +91 ms] https://github.com/flutter/flutter.git
[  +24 ms] executing: sysctl hw.optional.arm64
[  +10 ms] Exit code 1 from: sysctl hw.optional.arm64
[   +1 ms] sysctl: unknown oid 'hw.optional.arm64'
[ +152 ms] Found 1 files which will be executed as Integration Tests.
[  +15 ms] Artifact Instance of 'AndroidGenSnapshotArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'FlutterWebSdk' is not required, skipping update.
[  +95 ms] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update.
[   +1 ms] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update.
[ +558 ms] executing: /Users/runner/Library/Android/sdk/platform-tools/adb devices -l
[ +145 ms] executing: sysctl hw.optional.arm64
[  +17 ms] Exit code 1 from: sysctl hw.optional.arm64
[        ] sysctl: unknown oid 'hw.optional.arm64'
[        ] executing: xcrun xcodebuild -version
[+4648 ms] Exit code 0 from: xcrun xcodebuild -version
[        ] Xcode 14.2
Build version 14C18
[   +9 ms] executing: xcrun xcdevice list --timeout 2
[   +6 ms] xcrun simctl list devices booted iOS --json
[        ] executing: xcrun simctl list devices booted iOS --json
[  +28 ms] executing: xcrun simctl list devices booted
[+1683 ms] Exit code 0 from: xcrun simctl list devices booted

Source: https://github.com/getsentry/sentry-dart/actions/runs/4979670694/jobs/8911566016?pr=1447
It works locally, its either the emulator not booting or the tests timing out.

Maybe creating and booting simulator with xcrun is more stable. https://medium.com/xcblog/simctl-control-ios-simulators-from-command-line-78b9006a20dc

The action is also using xcrun, so this might solve flakyness.
https://github.com/futureware-tech/simulator-action/blob/736249ceb5ed7916224ed6b6d3c3582fd8049deb/src/xcrun.ts#L23

Sometimes I also see this:

✅ setup sentry and render app
Error: The operation was canceled.

This means after the first test is executed, it gets stuck, and times out.

@marandaneto Can we close this?


How to generate a json file from dot file understood by sigmajs

Hi,
I would like to use the json loading feature and when I look at an example I can see that the json has the following format:
{
  "nodes": [
    {
      "key": "0.0",
      "attributes": {
        "x": 268.72385,
        "y": 91.18155,
        "size": 22.714287,
        "label": "Myriel",
        "color": "#D8482D"
      }
    },
    {
      "key": "1.0",
      "attributes": {
        "x": 296.39902,
        "y": 57.118374,
        "size": 15,
        "label": "Napoleon",
        "color": "#B30000"
      }
    },
    {
      "key": "2.0",
      "attributes": {
        "x": 248.45229,
        "y": 52.22656,
        "size": 16.714285,
        "label": "MlleBaptistine",
        "color": "#BB100A"
      }
    },
    {
      "key": "3.0",
      "attributes": {
        "x": 224.83313,
        "y": 98.01885,
        "size": 16.714285,
        "label": "MmeMagloire",
        "color": "#BB100A"
      }
    },
  ],
  "edges": [
    {
      "key": "0",
      "source": "1.0",
      "target": "0.0",
      "attributes": {
        "size": 1
      }
    },
    {
      "key": "1",
      "source": "2.0",
      "target": "0.0",
      "attributes": {
        "size": 8
      }
    },
    {
      "key": "2",
      "source": "3.0",
      "target": "0.0",
      "attributes": {
        "size": 10
      }
    },
    {
      "key": "3",
      "source": "3.0",
      "target": "2.0",
      "attributes": {
        "size": 6
      }
    }
  ]
}

However I have a dot file looking like that:
digraph {
	graph [bb="0,0,6591,3780",
		splines=false
	];
	node [label="\N"];
	{
		"A"	[height=0.5,
			label="A",
			pos="145.68,3762",
			width=3.2422];
		B	[height=0.5,
			label=B,
			pos="570.68,3690",
			width=2.1843];
		"C"	[height=0.5,
			label="C",
			pos="351.68,3618",
			width=2.3332];
		"D"	[height=0.5,
			label="D",
			pos="86.684,3618",
			width=2.4079];
	}
	...

And I have tried all the graphviz output format and I never managed to get a format like that.
Do I have to convert it manually ?

Hi, sorry I don't know if a lib that convert DOT notation to JSON exists.
Have you search on npm ?

I don't know what you want to have, so I can't answer to your question.
Personnaly, I use graphviz to make documentation (ex: to explain a graph structure), but not to display graphs with a huge number of nodes.
In fact it seems that graphviz can produce a json : https://graphviz.org/docs/outputs/json/
Then it's easy to transform this output to the one that graphology needs.
If you need help, the best location is stackoverflow, github (issues are for bugs).
Cheers.

Finally here is how I did it:
import * as Viz from '@viz-js/viz'
import * as dot from 'graphlib-dot'

// Fix for @viz-js/viz
global.atob = function(str) {
    return Buffer.from(str, 'base64').toString('binary');
}

public async getGraph(flowid: number) {
        return this.getNodesAndBacklinks(flowid)
        .then((rows) => {
            //console.table(rows);
            //... here is I build a dot graph from some database info
            return graphDotFmt;
        })
        .then((dotFmtStr) => {
            return Viz.instance().then(function(viz) {
                // From the simple dot file we ask graphviz to generate an optimized layout in dot format
                let dotLayoutFmtStr = viz.renderString(dotFmtStr, {
                    engine:'dot',
                    format: 'dot',
                });
                return dotLayoutFmtStr;
            });
        })
        .then((dotLayoutFmtStr) => {

            let output = {
                nodes: [],
                edges: [],
              };
             // Parse dot file
            let digraph = dot.read(dotLayoutFmtStr);
            for (const nodeName of digraph.nodes()) {
                //console.log('nodeName: ', nodeName);
                if (nodeName.startsWith('sg')) { continue; }

                const attrs = digraph.node(nodeName);
                let pos = attrs.pos.split(",").map(parseFloat);

                output.nodes.push({
                    key: nodeName,  // modify this if you have a specific key
                    x: pos[0],
                    y: pos[1],
                    size: 7,
                    label: attrs.label,
                    color: "#D8482D"
                });
              }

              // Populate the edges
              for (const edge of digraph.edges()) {
                output.edges.push({
                  source: edge.v,
                  target: edge.w,
                });
              }

              const jsonGraph = JSON.stringify(output, null, 2);
              return jsonGraph;
            // Save the dot layout string to a file
            //return saveToFile('output/jsonGraph.json', jsonGraph)
            //.then(() => jsonGraph);
        })
        .catch(error => {
            console.error('An error occurred:', error);
        });
    }


I hosted code on PythonAnywhere, but:

I was logged in, no problems.
I try: conn=session.connect_cloud(‘14677652’)
And then:
File "/home/marc2011/.local/lib/python3.10/site-packages/scratchattach/cloud.py", line 77, in _connect     self.websocket.connect(   File "/usr/local/lib/python3.10/site-packages/websocket/_core.py", line 244, in connect     self.sock, addrs = connect(url, self.sock_opt, proxy_info(**options),   File "/usr/local/lib/python3.10/site-packages/websocket/_http.py", line 132, in connect     sock = _tunnel(sock, hostname, port, auth)   File "/usr/local/lib/python3.10/site-packages/websocket/_http.py", line 300, in _tunnel     raise WebSocketProxyException( websocket._exceptions.WebSocketProxyException: failed CONNECT via proxy status: 403 During handling of the above exception, another exception occurred: Traceback (most recent call last):   File "/home/marc2011/.local/lib/python3.10/site-packages/scratchattach/cloud.py", line 87, in _connect     self.websocket.connect(   File "/usr/local/lib/python3.10/site-packages/websocket/_core.py", line 244, in connect     self.sock, addrs = connect(url, self.sock_opt, proxy_info(**options),   File "/usr/local/lib/python3.10/site-packages/websocket/_http.py", line 132, in connect     sock = _tunnel(sock, hostname, port, auth)   File "/usr/local/lib/python3.10/site-packages/websocket/_http.py", line 300, in _tunnel     raise WebSocketProxyException( websocket._exceptions.WebSocketProxyException: failed CONNECT via proxy status: 403 During handling of the above exception, another exception occurred: Traceback (most recent call last):   File "<stdin>", line 1, in <module>   File "/home/marc2011/.local/lib/python3.10/site-packages/scratchattach/session.py", line 363, in connect_cloud     return cloud.CloudConnection(username = self._username, session_id = self.session_id, project_id = int(project_id) )   File "/home/marc2011/.local/lib/python3.10/site-packages/scratchattach/cloud.py", line 27, in __init__     self._connect(cloud_host=cloud_host)   File "/home/marc2011/.local/lib/python3.10/site-packages/scratchattach/cloud.py", line 95, in _connect     raise(exceptions.ConnectionError) scratchattach.exceptions.ConnectionError

I can’t understand where is the problem!

Free accounts on PythonAnywhere have limited internet access so it cannot connect to websockets.
https://www.pythonanywhere.com/forums/topic/32166/
Whitelisted sites for free accounts on PythonAnywhere: https://www.pythonanywhere.com/whitelist/
For me, hosting the code on https://render.com will not give the WebSocket error.

session_id = str(re.search('"(.*)"', request.headers["Set-Cookie"]).group())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'group'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/opt/render/project/src/run.py", line 6, in
Session=s3.login("Boubou78000", Secret)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/render/project/src/.venv/lib/python3.11/site-packages/scratchattach/session.py", line 548, in login
raise exceptions.LoginFailure("Either the provided authentication data is wrong or your network is banned from Scratch.\n\nIf you're using an online IDE (like replit.com) Scratch possibly banned its IP adress. In this case, try logging in with your session id: https://github.com/TimMcCool/scratchattach/wiki#logging-in"))
scratchattach.exceptions.LoginFailure: Either the provided authentication data is wrong or your network is banned from Scratch.
If you're using an online IDE (like replit.com) Scratch possibly banned its IP adress. In this case, try logging in with your session id: https://github.com/TimMcCool/scratchattach/wiki#logging-in
Looks like Scratch banned Render too :(
freundlich,
Marc Lormelle.
Sicher versendet mit Proton Mail.
Knightbot63 @.***> schrieb am Dienstag, 20. Februar 2024 um 17:32:

Free accounts on PythonAnywhere have limited internet access so it cannot connect to websockets.
https://www.pythonanywhere.com/forums/topic/32166/
Whitelisted sites for free accounts on PythonAnywhere: https://www.pythonanywhere.com/whitelist/
For me, hosting the code on https://render.com will not give the WebSocket error.
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you authored the thread.Message ID: @.***>


Configuration directory has incorrect permissions with clean install

On a clean install on Ubuntu 16.04, the configuration directory has incorrect permissions. The init.d service previously set the appropriate permissions, but with the move to systemd, this is absent.
The error message in the logs after starting clickhouse server:
root@vagrant:~# service clickhouse-server start

root@vagrant:~# service clickhouse-server status
● clickhouse-server.service - ClickHouse Server (analytic DBMS for big data)
   Loaded: loaded (/etc/systemd/system/clickhouse-server.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2018-01-26 22:31:24 UTC; 4s ago
 Main PID: 3381 (clickhouse-serv)
    Tasks: 17
   Memory: 25.3M
      CPU: 31ms
   CGroup: /system.slice/clickhouse-server.service
           └─3381 /usr/bin/clickhouse-server --config=/etc/clickhouse-server/config.xml

Jan 26 22:31:24 vagrant clickhouse-server[3381]: Include not found: clickhouse_compression
Jan 26 22:31:24 vagrant clickhouse-server[3381]: Couldn't save preprocessed config to /etc/clickhouse-server/config-preprocessed.xml: Access to file denied: /etc/clickhouse-server/config-preprocessed.xml
Jan 26 22:31:24 vagrant clickhouse-server[3381]: Should logs to /var/log/clickhouse-server/clickhouse-server.log
Jan 26 22:31:24 vagrant clickhouse-server[3381]: Should error logs to /var/log/clickhouse-server/clickhouse-server.err.log
Jan 26 22:31:24 vagrant clickhouse-server[3381]: Include not found: networks

https://github.com/yandex/ClickHouse/pull/2443

The same error in docker
clickhouse_1  | Poco::Exception. Code: 1000, e.code() = 0, e.displayText() = Not found: http_port (version <IP_ADDRESS> (official build))
clickhouse_1  | Poco::Exception. Code: 1000, e.code() = 0, e.displayText() = Not found: path (version <IP_ADDRESS> (official build))
clickhouse_1  | Poco::Exception. Code: 1000, e.code() = 0, e.displayText() = Not found: tmp_path (version <IP_ADDRESS> (official build))
clickhouse_1  | Poco::Exception. Code: 1000, e.code() = 0, e.displayText() = Not found: user_files_path (version <IP_ADDRESS> (official build))
clickhouse_1  | Poco::Exception. Code: 1000, e.code() = 0, e.displayText() = Not found: format_schema_path (version <IP_ADDRESS> (official build))
clickhouse_1  | Couldn't save preprocessed config to /etc/clickhouse-server/config-preprocessed.xml: Access to file denied: /etc/clickhouse-server/config-preprocessed.xml
clickhouse_1  | Logging trace to /var/log/clickhouse-server/clickhouse-server.log
clickhouse_1  | Logging errors to /var/log/clickhouse-server/clickhouse-server.err.log
clickhouse_1  | Couldn't save preprocessed config to /etc/clickhouse-server/config-preprocessed.xml: Access to file denied: /etc/clickhouse-server/config-preprocessed.xml
clickhouse_1  | ClickHouse init process failed.

@filimonov Hi there I have the same problem as @631068264 with your official docker build. When I start container with additional config file, I do it like it is said in your docker instruction
docker run -d --name some-clickhouse-server --ulimit nofile=262144:262144 -p 9000:9000 -v /Users/dmitriysamsonov/py_dev/sales-receipts/config.xml:/etc/clickhouse-server/config.xml yandex/clickhouse-server

And when I go to container logs I see the next message
Poco::Exception. Code: 1000, e.code() = 0, e.displayText() = Not found: http_port (version <IP_ADDRESS> (official build))
Poco::Exception. Code: 1000, e.code() = 0, e.displayText() = Not found: path (version <IP_ADDRESS> (official build))
Poco::Exception. Code: 1000, e.code() = 0, e.displayText() = Not found: tmp_path (version <IP_ADDRESS> (official build))
Poco::Exception. Code: 1000, e.code() = 0, e.displayText() = Not found: user_files_path (version <IP_ADDRESS> (official build))
Poco::Exception. Code: 1000, e.code() = 0, e.displayText() = Not found: logger.log (version <IP_ADDRESS> (official build))
dirname: missing operand
Try 'dirname --help' for more information.
Poco::Exception. Code: 1000, e.code() = 0, e.displayText() = Not found: logger.errorlog (version <IP_ADDRESS> (official build))
dirname: missing operand
Try 'dirname --help' for more information.
Poco::Exception. Code: 1000, e.code() = 0, e.displayText() = Not found: format_schema_path (version <IP_ADDRESS> (official build))
Couldn't save preprocessed config to /etc/clickhouse-server/config-preprocessed.xml: Access to file denied: /etc/clickhouse-server/config-preprocessed.xml
Starting ClickHouse <IP_ADDRESS> with revision 54425
starting up
Couldn't save preprocessed config to /etc/clickhouse-server/config-preprocessed.xml: Access to file denied: /etc/clickhouse-server/config-preprocessed.xml
Shutting down storages.
DB::Exception: There is no profile 'default' in configuration file.
shutting down
Stop SignalListener thread

Please respond to this.


Add a LICENSE file

Amazing code!
Could you please add a LICENSE file (preferably MIT) so that I can use part of your code for a project of mine?
I will not forget to mention your name and give you credits.
Thank you so much!

MIT license was included.


Memclear

clear as much memory as possible
dump information about uncleared memory regions through EFI a variable so OS can read from it and use memmap to block these regions
generating the memmap command line for grub

I left comments on the first patch of the series. Could you please create individual patches that are each reviewable and self-contained? That way I can easier reason about how safe some of the changes are :)


Missing MonoTimer:new  as pub fn

While the function is   created in https://github.com/rust-embedded-community/tm4c-hal/blob/master/tm4c123x-hal/src/time.rs
,the function is not exposed, so also Instant cannot be obtained.
92 |     let mut mono_timer  = MonoTimer::new(cp.DWT, clocks);
   |                                      ^^^
   |                                      |
   |                                      function or associated item not found in `MonoTimer`
   |                                      help: there is a method with a similar name: `now`

Complete code : https://github.com/vortex314/tiva-rs

I haven't touched this in five years. Feel free to send a PR and maybe some people can look at it.