Add grapheme cluster support to String

Implements Unicode Text Segmentation according to Unicode Standard Annex #29 (Unicode version 13.0.0) to determine the grapheme cluster boundaries of unicode text.
Moving naqvis/uni_text_seg shard to standard library.
https://forum.crystal-lang.org/t/unicode-text-segmentation-grapheme-clusters/3274

Thanks for all review comments! However, I'd ask to restrict discussion on the general API design first. We can worry about type annotations, typos and implementation details later in the process of polishing up this PR. ✌

Ah sorry!  I assumed it was already discussed ahead of time.

Thank you all for reviews and suggestions. I've already (but haven't pushed yet to this PR)

Fixed Typos
Added Type Annotations
Added script to auto-generate the Properties data

I will wait for further review and suggestions on API design, before I proceed with pushing above cited changes.
For people interested to see or use, you can see the above changes to original shard naqvis/uni_text_seg

This is really great, thanks for adding it to the stdlib.
We should probably dive a bit deeper into an optimal representation of a grapheme cluster. This is tightly related to how the API is used. So I'm not entirely sure about that.
I would expect that typical use cases treat single graphemes as a character-oriented value. Then String might actually be a more appropriate representation than an array of codepoints. Julia's Unicode implementation and the Rust crate unicode-segmentation represent graphemes as strings, for example.
Considering that in many typical use cases the vast majority of graphemes consists of just a single codepoint, this offers room for optimization. A single-codepoint grapheme could be represented as a Char, thus creating a union String | Char (as originally suggested in https://github.com/crystal-lang/crystal/pull/10721/files#r634603666).
A different optimization strategy could be to use a string pool to represent common graphemes. I think I like that more, because it's entirely abstracted away and does not add complexity to the API. Still just a rough idea, though (the good part of this optimization is that it can be delayed as it does not affect the API).
I'm also questioning the dedicated Cluster type itself. It combines the grapheme representation with the position in the original string. I don't think this is necessary. When iterating the characters of a string (#each_char), the position is not part of the character. If you need the position, you can use #each_char_with_index. I prefer this design for graphemes as well, such that a single grapheme has no connection to the original string. Then two equivalent graphemes from different original strings have identical memory representation.
So... if Cluster just wraps a single String property, there is little reason to actually have it as a separate type. We can just use String directly. Of course, a dedicated type adds a bit more type rigidity. But I don't think that's very useful. A grapheme cluster consists of a sequence of codepoints and the best data type to represent that is String. The only semantic difference between a string representing a grapheme and any other string is that the former definitely does not contain more than one grapheme.
A somewhat related comparison could be String#each_line it returns String and we can be sure that a string representing a line does not contain more than one line. But that does not warrant a separate data type Line.
So, combining that all, I propose the most basic interface should be String#each_grapheme(& : String ->) (plus extensions like iterator, *_with_index etc.).

Thank you Straight-shoota and totally agree that there is a strong need of deeper dive into the design of API and i'll be more than pleased to participate in such discussions and/or suggestions.
Just to clarify: initial intention of having Cluster struct was to provide more details to the user, current struct provides:

codepoints
string representation
byte indexes of grapheme in original string

... and the Rust crate unicode-segmentation represent graphemes as strings, for example.

Rust implementation also provides grapheme_indices which returns an iterator over grapheme cluster and their respective bytes offset.

I'm also questioning the dedicated Cluster type itself. It combines the grapheme representation with the position in the original string. I don't think this is necessary. When iterating the characters of a string (#each_char), the position is not part of the character. If you need the position, you can use #each_char_with_index. I prefer this design for graphemes as well, such that a single grapheme has no connection to the original string. Then two equivalent graphemes from different original strings have identical memory representation.

Would quote Unicode Anex#29 to explain Grapheme cluster

.. To avoid ambiguity with the computer use of the term character, this is called a user-perceived character. For example, “G” + grave-accent is a user-perceived character: users think of it as a single character, yet is actually represented by two Unicode code points. These user-perceived characters are approximated by what is called a grapheme cluster, which can be determined programmatically.  So we can't simply rely on each_char or char_with_index to determine grapheme cluster.

Just an example: "🧙♂💈" is two grapheme cluster but
"🧙♂💈".chars # => ['🧙', '', '♂', '', '💈']

# OR
"🧙♂💈".each_char_with_index do |c,i|
  pp "c: #{c}, i: #{i}"
end

Rust implementation also provides grapheme_indices which returns an iterator over grapheme cluster and their respective bytes offset.

Yes, the equivalent would be the #each_grapheme_with_index method I mentioned.
I'm pretty sure I grasp the concept of graphemes vs. characters. I just mentioned each_char etc. for comparison, because it's actually pretty similar with regard to the relation between character/grapheme and the byte position. I.e. the Char type does not have a position property, because each Char instance is independent of any string. A type representing a grapheme IMO should be equally independent and not have a position property either.

If we follow String's conventions, String::Grapheme::Graphemes should mirror Char::Reader's API and all access to positional information should be done through that type exclusively. Also it should be a class.
Is it possible to avoid iterating through the entire string on construction of a Graphemes?

Is it possible to avoid iterating through the entire string on construction of a Graphemes?

Yes, that should certainly work. But that's already digging into implementation details. Let's focus on the grand scheme for now.

O(1) iterator construction is a natural non-functional requirement to ask for; if that's not possible, IMO the standard library should not offer an iterator API at all.
I looked at the code briefly and I believe String::Grapheme::Graphemes could itself depend on Char::Reader. Doing so also offers the possibility to start grapheme cluster iteration in the middle of a string.

Based on previous discussions, comments and suggestions I'm thinking of something like
Option 1  - Integrate with String
Pros

Natural to user of the String As it follows the same set of API which String offers for Char
Make Graphemes a first class citizen of String

Cons

Bloat String API

API
def graphemes : Array(Char | String)
def each_grapheme(& : (Char | String) -> Nil) : Nil
def each_grapheme : Iterator(Char | String)
def each_grapheme_with_index(offset = 0, & : {Char | String, Int32} -> Nil) : Nil

Option 2  - Add Char::GraphemeReader
Pros

Don't bloat String API
Separate API

Cons

Make Graphemes  2nd class citizen as user would have to separately instantiate instance

API
API similar to Char::Reader https://crystal-lang.org/api/1.0.0/Char/Reader.html

Any thoughts?

I'm not even sure both options are mutually exclusive. A similar API exists for characters as well: #chars, #each_char, #each_char_with_index (like Option 1). CharReader serves as a basis for those implementations, and it can also be used separately (like Option 2).
That being said, I definitely want the methods from Option 1. This is not bloating up the API, it's just adding useful features. And it does it in an approachable way.
Whether we need a separate GraphemeReader type may be up for debate. Sure, we're gonna need an iterator type, but that could be private with Iterator(String) as the external interface.
CharReader offers high flexibility for reading in a string (jumping around, going backwards etc.) which is mostly useful for parsing purposes. I don't think that's tremendously useful for graphemes. In any case, this could be added later if a need arises. So I'd go with Option 1 only for now.

Thanks stratigh-shoota

I'm not even sure both options are mutually exclusive. A similar API exists for characters as well: #chars, #each_char, #each_char_with_index (like Option 1). CharReader serves as a basis for those implementations, and it can also be used separately (like Option 2).

Yes true. But instead of having both APIs (String API using GraphemeReader), I was thinking of just having one set of API and have user use that when needed (so the choice of exclusive option was given). For sure we could have Option 3 (Option1 + Option2), but totally agree that having Char::Reader like api at this stage won't be much beneficial, but should the need arise in future, that could be added.
Now we have some kind of tentative understanding and/or how the API should be like, can we have also have a quick discussion on eager vs lazy processing of String for grapheme clusters?

we should probably not keep a reference to the original string. Imagine reading a huge string from a file and keeping the first grapheme. The grapheme will point back to the string so it will never be GCed. So in my mind a grapheme must be an independent entity.

Per Ary initial comment, he is against (or he recommends not to do so) keeping a reference to original string, so this will rule out lazy treatment of string. And this is how code submitted to this PR is handling that.
But HertzDevil is suggesting against eager treatment.

Is it possible to avoid iterating through the entire string on construction of a Graphemes?

The iterator should definitely be lazy, there should be no doubt about that. All iterators work like that. This obviously means the iterator needs a reference to the original string. But once iteration is finished, it gets released. This approach allows much flexibility: If you want to get rid of the original string ASAP, you can collect the iterator into an array and the original resource can be released while iterating that.

Yes, and PR pushed implementation is providing the iterator (Grapheme::Graphemes is Iterator), and it is storing the code points of original string (instead of keeping the reference to original string) and perform lazy determination of graphemes on iterator#next. So pushed code is doing lazy determination, but question was on whether to keep reference to original string or not.
If we agree that Grapheme::Graphemes can keep a reference to original string, then class itself doesn't need to keep anything else other than reference to original string.
I will make changes and pushed modified code to this PR for further review and discussion.

The current implementation in this PR is not lazy because it iterates the string on initialization. And the resulting intermediary array of codepoints occupies additional memory and even more than the original string.

If we agree that Grapheme::Graphemes can keep a reference to original string, then class itself doesn't need to keep anything else other than reference to original string.

Yes, it definitely should do that. It should iterate the original string on iteration. And probably use a CharReader for that.

Pushed following changes to this PR.

Added scripts to generate Properties data
Added Type annotations to API
Fixed Typos
API in Option 1

I've removed each_grapheme_with_index as it's confusing to user if we just increment the counter by 1 (follow the same each_char_with_index is doing), also I had thought of providing the Char::Reader#pos as the index, but found that might be confusing to its user.

Thanks.
As mentioned above, I'm actually leaning more towards using only String to represent graphemes, even single-codepoint ones. We could use more comments on this, though.

Thank you straight-shoota. I also prefer String, but switched to Union based on my understanding of Ary initial comments on union types 😄
For sure will keep this open for further comments and/or suggestions.

Sorry, I didn't have more time to review this.
But to be clear, I don't think we should return Char | String. We should have a struct Grapheme that internally is represented as either a Char or a String. It has a to_s(io : IO) and so on, so if you don't need a string representation of the grapheme the underlying representation can be kept as Char.
In fact, a Grapheme can probably consist of one, two or multiple chars, so the underlying representation could even be Char | {Char, Char} | String if needed. It doesn't matter. What matters is not exposing the underlying representation, and instead always return an opaque Grapheme type.

Swift has a Character type that represents a grapheme: https://developer.apple.com/documentation/swift/character
Note that the underlying representation is never revealed.

Yeah, if we use a separate data type to encapsulate the representation, an internal union type works well.
I kind of like the simplicity of just using String - no union, no special type. This approach is used in other implementations as mentioned before (https://github.com/crystal-lang/crystal/pull/10721#issuecomment-844250987). So it certainly works.
A Grapheme type promises a performance benefit because it requires way less memory allocations in typical applications. And I suppose that common use cases don't need the individual graphemes as isolated strings.

Yes, that was my reasoning too. If you have a string like "hello world" and you ask for its grapehems, you end up with one string per char, which is a waste of memory. I guess in most cases a grapheme will be exactly one Char and so on the example above there would be no memory al locations when traversing those graphemes.

Thank you Ary and Straight-shoota

What matters is not exposing the underlying representation, and instead always return an opaque Grapheme type.

The very first push were doing things in a way which Ary suggested. So I've added Grapheme::Cluster struct which will be returned and it has overriden to_s(io: IO) method which will write the String representation of cluster to IO.

Okay, sounds good. Let's keep going with that.
I'm wondering, why is it called Cluster? IMO Grapheme would be a more obvious name.
Now, the point of that type is to wrap a Char | String value. That should be used in stead of an array of chars. As mentioned before, I think the pos property should go to make every instance independent of the original string.
Regarding the actual implementation: In my experience, it is much easier to reason about a yielding iteration method than an iterator class which spreads the entire algorithm between individual method calls and shared status. So I would urge you to focus on that first, i.e. an implementation of each_grapheme(& : Grapheme::Cluster -> Nil) not based on the iterator type. I think that could help a lot while going forward. The iterator can be left out for now. We'll get there later.

I'm wondering, why is it called Cluster? IMO Grapheme would be a more obvious name.

Unicode call them Grapheme Cluster. Since code is located under String::Grapheme namespace, so it make more sense to call it Cluster thus reading as Grapheme::Cluster.

Now, the point of that type is to wrap a Char | String value. That should be used in stead of an array of chars. As mentioned before, I think the pos property should go to make every instance independent of the original string.

I don't understand why internal representation is causing an argument here? Or what extra benefit it will have to stick to Char | String for internal representation of identified grapheme clusters?

Regarding the actual implementation: In my experience, it is much easier to reason about a yielding iteration method than an iterator class which spreads the entire algorithm between individual method calls and shared status. So I would urge you to focus on that first, i.e. an implementation of each_grapheme(& : Grapheme::Cluster -> Nil) not based on the iterator type. I think that could help a lot while going forward. The iterator can be left out for now. We'll get there later.

In the very beginning it was suggested that, code should follow the existing String API and that's how each_char methods of String are implemented.
IMHO it will make much more sense if we can first get to a conclusion on how core team is expecting the implementation to be to meet the required standard . This will save core team and myself whole lot of effort.

I don't understand why internal representation is causing an argument here?

The internal representation is the entire point of having a dedicated data type. That allows to transparently use a union of Char | String for the purpose of avoiding a lot of unnecessary heap allocations. If that wasn't the intention, we wouldn't use a separate type, but just String to represent a grapheme.

Or what extra benefit it will have to stick to Char | String for internal representation

The benefit is that Char does not allocate heap memory, thus it's way more efficient than String for single-codepoint graphemes (which is the vast majority in typical use cases).
Now, we certainly don't need to focus too much on the performance optimization for the first iteration, but at least the basics should be set. That means, the internal value should at least be String, not an array of characters. Char can be added later to the union type, but String is the most basic type to represent a grapheme consisting of an arbitrary number of codepoints.

In the very beginning it was suggested that, code should follow the existing String API and that's how each_char methods of String are implemented.

#each_char is probably a bad role model for this. It's not based on an iterator, though. It uses Char::Reader, which is not an iterator and stack allocated.
I want to be clear: It's not required that you implement the yielding method in the manner I described. I would happily accept a solid implementation based on an iterator, and the yielding variant can be added later. The current iterator implementation is complex and hard to follow. I believe it would be much easier to understand and thus review the algorithm, if it was implemented in a yielding method. Thus, I recommend to follow my suggestion.

Thanks Straight-shoota.
Made changes as below:

Changed internal represtation to Char | String
Removed pos getter
Moved Iterator to a separate class
Changed each_grapheme method implementation to use yielding iteration instead of relying on Iterator.
each_grapheme Iterator method returns the Grapheme::GraphemeIterator instead instead.

Please help to review and suggest what further changes need to be made.

I believe there may be some communication difficulties. I'm not sure what I can do to help it, but I'll try to be more explicit. Let me now if you have any idea how I can improve that.
My suggestion was not just about avoiding a class that implements Iterator. I would like to have the entire iteration logic for #each_grapheme in the method itself, not iterating over a sequence of next calls. That's essentially the same as the iterator approach, just that it's not technically an Iterator.
I was thinking about something like this:
def each_grapheme(& : Grapheme -> Nil) : Nil
  reader = Char::Reader.new(self)
  state = Grapheme::State::Any
  last_char = reader.next_char
  last_boundary = 0
  reader.each do |char|
    state, boundary = Grapheme.process_transition(state, last_char, char)
    last_char = char

    if boundary
      index = reader.pos
      # using only String here for simplicity, the Char optimization can follow
      yield Grapheme.new(byte_slice(last_boundary, index - last_boundary))

      last_boundary = index
    end
  end

  yield Grapheme.new(byte_slice(last_boundary, bytesize - last_boundary))
end

(Disclaimer: This implementation is probably not production ready and requires some refinements, but it serves as illustration of the concept I have in mind.)
process_transition would implement the transition logic from move_next.
I think this code is more concise and easier to follow than the state-based Graphemes iterator. It helps a lot for understanding what's going on, when you don't already know how the algorithm works.
Do you see what I mean?
The iterator implementation can likewise rely on process_transition, and should become relatively lightweight by that.

I believe there may be some communication difficulties. I'm not sure what I can do to help it, but I'll try to be more explicit.

I don’t believe it’s communication issue but its more on you are expecting the code to meet your already perceived solution.
That being said, I don’t believe two people can produce same code for same problem. So let’s stop this conversation here. I’ll rather have this PR closed or cancelled.
Appreciate all the reviews and suggestions.

If you believe that's my expectation here, then I'm pretty sure there is communication issue. I don't expect the code to look like I would write it. I'm happy to accept any alternative solution. I would actually be happy about learning a new approach 🙇
But I need to understand the code, before I can approve it. And I want others to be able to understand it. That means it needs to readable and of high quality.
I think that's hard to accomplish with the approach you proposed. That's why I suggested an alternative, which in my experience can lead to a better solution that's easier to understand. You don't have to follow that. My intention was just to provide helping advice to get this PR improved for being accepted.
I'm sorry if my comments lead you to the impression I'm imposing anything on you.
I understand I you don't want to continue on this. That's totally fine.
However, I would be happy if you did. I will keep out of this discussion unless asked for comment.

Thank you Straight-shoota, but I don't believe it make more sense for me to continue with this PR. So I will take the liberty to have it closed with this final comment.

@naqvis, let me intercede even if late. I understand your frustration. To me, the distinction of where is the logic of the iteration is not essential: the majority of the logic goes in the unavoidable move_next function. What is really crucial is the API, and I think we are more or less on the same page there. The implementation details are something we can work with with time.
So, will it be possible for you to reconsider re-opening this PR? I won't ask you to any further changes to the code. If we find we need to fix something, then we'll take care of that ourselves. :pray:

If we find we need to fix something, then we'll take care of that ourselves.

This is a great comment. In the Ruby community I've seen some PRs being merged, and immediately after the authors made changes to the code to match their style and wished. I believe we should start doing that, because it removes the burden off PR authors to keep doing more and more changes, many of which happen without a total consensus.

It'd be great to have PRs over PRs. But there is something similar we can try.

Thank you @beta-ziliani and appreciate your comments. I'm not against code changes and/or refactoring,  and will be more than happy to make changes to meet the standard of stdlib.

Thanks a lot @naqvis ! I only have two nitpicks to note:

Start each comment with Uppercase.
Fix the doc in each_grapheme : Iterator(...), which does not correspond to the function.

Thank you  @beta-ziliani  and @Sija  for review and suggestions. I've made suggested changes and pushed code to this PR.

Hey where do we stand on this PR? Would love to see this happen and thanks for everyone's effort on it.

Regarding names, it seems there's:

String::Grapheme
String::Grapheme::Cluster
String::Graphemes
String::GraphemeIterator (hidden)

I think it's a bit confusing that Grapheme is not a grapheme. Plus there's Grapheme which is publicly exposed but then only method it has is next. Then there's GraphemeIterator which is essentially a very thing wrapper around Graphemes.
I propose we use these names:

Grapheme: replaces String::Grapheme::Cluster (note that this also goes into the top level... why a Grapheme is nested inside String? Are there other kind of graphemes out there?)

That's it! There's no need to expose String::Graphemes because its API is the same as the iterator's one.


Dynamic linking

So, I want to use the native xcb library only because it allows me to return a raw-window-handle but I want to avoid dynamic link against libxcb for environments where there is not xcb but Wayland

Okay... so?
If you want to decide about this at compile time, you'll have to make your dependency on x11rb optional and only enable it when libxcb.so is available. When you want to decide about this at runtime... then I don't know how this should be done. Suggestions?
(Slightly unrelated, but... are there any environments were Wayland is available, but libxcb.so is not? This seems a bit unrealistic to me.)

You can use dlopen and dlsym to get a pointer to the functions at runtime time, you can store it in lazy_static if you want


[Snyk] Security upgrade vue from 2.6.14 to 3.0.0

Snyk has created this PR to fix one or more vulnerable packages in the `npm` dependencies of this project.
Changes included in this PR

Changes to the following files to upgrade the vulnerable dependencies to a fixed version:

dashboard/package.json
dashboard/package-lock.json

Vulnerabilities that will be fixed
With an upgrade:

Severity
Priority Score (*)
Issue
Breaking Change
Exploit Maturity

498/1000  Why? Proof of Concept exploit, Recently disclosed, Has a fix available, CVSS 2.1
Regular Expression Denial of Service (ReDoS) SNYK-JS-VUE-8219889
Yes
Proof of Concept

(*) Note that the real score may have changed since the PR was raised.
Check the changes in this PR to ensure they won't cause issues with your project.

Note: You are seeing this because you or someone else with access to this repository has authorized Snyk to open fix PRs.
For more information:
🧐 View latest project report
🛠 Adjust project settings
📚 Read more about Snyk's upgrade and patch logic

Learn how to fix vulnerabilities with free interactive lessons:
🦉 Regular Expression Denial of Service (ReDoS)

superseded by #397


Support overlays to configurations

Describe the problem/challenge you have
It should be possible to customize on top of a standard package config.
Describe the solution you'd like
21. As a user, I want to provide some customization to an existing package (i.e. provide a user provided overlay) so that I can customize some package behaviour.
Anything else you would like to add:
Vote on this request
This is an invitation to the community to vote on issues, to help us prioritize our backlog. Use the "smiley face" up to the right of this comment to vote.
👍 "I would like to see this addressed as soon as possible"
👎 "There are other more important things to focus on right now"
We are also happy to receive and review Pull Requests if you want to help working on this issue.

@qnetter is this for providing overlays to the PackageInstall to customize the underlying software, or providing overlays that will actually change the Package definition?

@jorgemoralespou can you qualify this?

Yes, this is to provide overlays to a PackageInstall to further customize the underlying software.
In kapp-controller this is already tracked: https://github.com/vmware-tanzu/carvel-kapp-controller/issues/123 and AFAIK is implemented, although not documented anywhere. Solution is described here: https://github.com/vmware-tanzu/carvel-kapp-controller/issues/123#issuecomment-848084192
I have tested this from kapp-controller side some weeks back and it works.

Ok, I will update this issue to be a docs issue and we can use this to track writing the docs.

The current thinking is to incrementally improve the docs. We should extract this example to a separate page and consider enhancing the example.


cargo build failed

ubuntu X64 and centos X64 on win10 vmware
rustc 1.10.0-nightly (8492b6aa4 2016-05-14)
error:failed to run custom build command for openssl-sys-extras v0.7.11
details : Process didn't exit successfully: /usr/gitplace/sapper/examples/basic/target/debug/build/openssl-sys-extras-581243db77f2742c/build-script-build (exit code: 101)
--- stdout
TARGET = Some("x86_64-unknown-linux-gnu")
OPT_LEVEL = Some("0")
PROFILE = Some("debug")
TARGET = Some("x86_64-unknown-linux-gnu")
debug=true opt-level=0
HOST = Some("x86_64-unknown-linux-gnu")
TARGET = Some("x86_64-unknown-linux-gnu")
TARGET = Some("x86_64-unknown-linux-gnu")
HOST = Some("x86_64-unknown-linux-gnu")
CC_x86_64-unknown-linux-gnu = None
CC_x86_64_unknown_linux_gnu = None
HOST_CC = None
CC = None
HOST = Some("x86_64-unknown-linux-gnu")
TARGET = Some("x86_64-unknown-linux-gnu")
HOST = Some("x86_64-unknown-linux-gnu")
CFLAGS_x86_64-unknown-linux-gnu = None
CFLAGS_x86_64_unknown_linux_gnu = None
HOST_CFLAGS = None
CFLAGS = None
running: "cc" "-O0" "-ffunction-sections" "-fdata-sections" "-g" "-m64" "-fPIC" "-o" "/usr/gitplace/sapper/examples/basic/target/debug/build/openssl-sys-extras-581243db77f2742c/out/src/openssl_shim.o" "-c" "src/openssl_shim.c"
ExitStatus(ExitStatus(256))
command did not execute successfully, got: exit code: 1
--- stderr
src/openssl_shim.c:1:26: fatal error: openssl/hmac.h: No such file or directory
#include <openssl/hmac.h>
^
compilation terminated.
thread '' panicked at 'explicit panic', /root/.cargo/registry/src/github.com-1ecc6299db9ec823/gcc-0.3.28/src/lib.rs:840
note: Run with RUST_BACKTRACE=1 for a backtrace.

--- stderr
src/openssl_shim.c:1:26: fatal error: openssl/hmac.h: No such file or directory
#include
^
compilation terminated.
thread '

I met it too, but I after cargo update, it resolved. And did you install libssl-dev on ubuntu?

Hi,Mike,I managed to run it in my ubuntu ,thanks!

nice


Analytics Support

Hi (again)!
I added analytics support to my forked version of the theme which only involved the addition of a few (3) lines. Would you be open to adding this to the repository, along with a short explanation of setup for users? I'm happy to make the change. 😄

Hi !
Are you talking about google analytics ? I'm not so enthusiastic to implement them because I find their javascript really big and long to load, and I want to keep a lightweight version for an instant loading blog.
If you have arguments for analytics and a way to enable/disable it without disrupting the way the theme is working right now, I will be happy to add it !
Thanks you !

Yes to google analytics. I don't know how much "heavier" conditional Hugo statements make the site, but on my fork I currently add the script conditionally if a "googleanalytics" parameter is set. So  all the end-user has to do is add something like: googleanalytics="UA-123-45" to their config parameters. In footer scripts, I added an "isset" check to load the script, which doesn't need to be fully copied into the theme since it's neatly enabled internally.
Again, I'm pretty unfamiliar with the overhead of these sorts of checks, but I assume it doesn't matter in the rendered product because the analytics script would just be totally absent if the user doesn't use it. So the experience shouldn't change, if I'm correct. :dromedary_camel:

Okey let's do it ! I will see the load on client side for tests purposes. I kind of don't like the way I send users infos to Google, but this is a choice of every blog owner.
If you can do a pull request I will test it ! Thanks !


Think about the case if karaoke sprite text contains same time-tag index with different time?

Notice that not deal with this issue before.
Because already filter the duplicated time-tag in the karaoke project.

Guess this issue can be closed.


Compatibility of FC layers with Deconv Layers

Is any way to connect an Affine layer to a Deconv layer? Like though a reshape layer or something? There seems to be issues with Affine layers not having a third dimension.
Thanks!

Can you elaborate a bit what your use case it? Typically a deconv layer would take a feature map with some spatial dimension, and convolve that feature map with a filter. As you noticed, the affine layer has no concept of spatial dimensions in neon.
In cases where we want to treat an affine layer as a convolutional layer with a spatial feature map of 1x1 pixels and the number of channels equal to the number of units in the layer, we do just that, make it a convolutional layer with feature map size 1x1. Would that work for your application?

Urs,
I am making a convolutional autoencoder, where I have alternating conv and maxpool layers connected to a few FC layers and then those FC layers are upsampled with deconv layers. I wanted to have the FC layers, so I could have a learned feature vector that I could analyze.
Great point about the 1x1xK feature map being equivalent to the output of connecting the last maxpool feature map to a FC layer of size K. I will implement that.
Thank you for your help,
Evan

Closing this as it looks like Urs' 1x1 convolution suggestion should meet your needs.  Feel free to re-open if this isn't the case.


Raspberry pi and arduino communicate with hdlc protocol

I have found an hdlc lib for arduino from @jarkko-hautakorpi. I want use this python-hdlc-controller on PC/Raspbery pi  and Arduhdlc on Arduino,  could it work together?
https://github.com/jarkko-hautakorpi/Arduhdlc
Thanks!

Hi @JCStarry and thank you for your interest in this project.
The library made by @jarkko-hautakorpi only implements the framing and error checking mechanisms of the HDLC specification and not the sequence number, the acknowledgement frames, etc. It is consequently incompatible with this HDLC controller.
If you want to use a more complete HDLC implementation (and so compatible with this controller), I recommend you use either yahdlc (C) or hdlcpp (C++).


Add RWProperties test case.

Current coverage is 33.03% (diff: 100%)

Merging #27 into master will not change coverage

@@             master        #27   diff @@
==========================================
  Files            21         21
  Lines           669        669
  Methods         646        646
  Messages          0          0
  Branches         23         23
==========================================
  Hits            221        221
  Misses          448        448
  Partials          0          0

Powered by Codecov. Last update aa070db...2452280


Amend step 4

Please reword this:
4. Reboot the server.
to:
4. Reboot the Windows system(s) connecting to the existing SMB share

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: bc5f53d2-1808-428e-acd2-3c0dd63be3c6
Version Independent ID: 8f37b6eb-c9c0-ba3f-e75f-1748b54bf3b7
Content: Enable Continuous Availability on existing Azure NetApp Files SMB volumes
Content Source: articles/azure-netapp-files/enable-continuous-availability-existing-SMB.md
Service: azure-netapp-files
GitHub Login: @b-juche
Microsoft Alias: b-juche

@gvanteylingen Thanks for the question! We are investigating and will update you shortly.

Thanks @gvanteylingen -- Being fixed in PR#173797
https://github.com/MicrosoftDocs/azure-docs-pr/pull/173797
Posting 9/28/21

#please-close


Image now implements gd’s gdImageTrueColorToPalette() method

This is handy for a project I’m working on. But, I’m sure it’ll be handy for others in the future. GIFs and PNGs can have index color palettes.

Addresses https://github.com/twostraws/SwiftGD/issues/22

@twostraws Any interest in this?

Thank you very much – merged!


Added functionality for multiple BF accounts.

Combines open trades and stats from all accounts together into the one dashboard view.

Looks good to me . :)


Filter whole granules during query

Moves column metadata up into the Granule layer. We maintain a list of min/max values for each column stored in a Granule. Then when iterating we can use the filter expr to determine if there's any valid data in the Granule, and skip reading it entirely if there isn't.

@brancz could use some eyes on how I'm using the filterexpr, because it's awful and I hate it, and there's got to be a better way.

Very nice improvements. Are those metrics supposed to be gone?

Very nice improvements. Are those metrics supposed to be gone?

What metrics?


Adds recipe for salt and hash a password using ring crate

Adds recipe for #288

Slightly changes the wording on the example (explicitly mentioning PBKDF2)
Uses PBKDF2 key derivation function
Verifies password with hash

cc #213
fixes #288

Excellent feedback as always. Just want to run everything through rustfmt and I'll update the PR.

One other thing I wanted to run by you was the formatting on some of the function calls to derive/verify. Rustfmt reformatted two of them into the argument column formatting seen in the example (for consistency I added the third). I like this formatting but it makes the example a bit longer in terms of line count. I'm happy to flatten things out if you prefer!

Thanks @j-haj ! That is very fine work!

@j-haj thank you for the work on this and all that contributed like @budziq. I'm a humble consumer of this example and wanted to know if someone would be able to help me with what I feel would be a common use case that would leverage this code, which is: persisting the salt and hashed password in a database. In this example, the salt is a byte array. Would there be an easy way to convert this to a String to store in say, a database field as text then when "verifying" the password, convert it back to the byte array salt from that String?

@j-haj thank you for the work on this and all that contributed like @budziq. I'm a humble consumer of this example and wanted to know if someone would be able to help me with what I feel would be a common use case that would leverage this code, which is: persisting the salt and hashed password in a database. In this example, the salt is a byte array. Would there be an easy way to convert this to a String to store in say, a database field as text then when "verifying" the password, convert it back to the byte array salt from that String?

@seenickcode I don't know that it requires its own example. The following should do the trick:
// buf: Vec<u8>
let salt = String::from_utf8_lossy(&buf);

@seenickcode I don't know that it requires its own example. The following should do the trick:
// buf: Vec<u8>
let salt = String::from_utf8_lossy(&buf);


Bridge overlay: Unify overlay modal to reduce code duplications

With https://github.com/keptn/keptn/pull/6958 a new popup modal was introduced that works as a DateTime picker.
In the Bridge there is already the secret/data variable selection available as a popup modal.
With the introduction of the DateTime picker, code duplications were introduced, as the modals are opened basically the same way. For this PR, the duplications were already reduced by introducing an OverlayService that handles the common steps used for both modals.
The next step would be to unify it completely, and handle it in a similar manner to Angular Material dialog:
https://material.angular.io/components/dialog/overview
The solution would be to programmatically open the modal from the controller and pass the desired component and data to the component. This means discarding the directives.
The two components that are created as modals:

ktb-tree-list-select.component.ts
ktb-datetime-picker.component.ts

❓As we have Material as a dependency, would it make sense to directly use the dialog? But Material is strict in design and I don't know if it is possible to have the origin set to a button. I think the better approach is really to build our own solution that fits Keptn better.
Acceptance Criteria

[ ] Borrow the idea from material-ui to simplify our codebase
[ ] Replace all popups with the new overlay implementation
[ ] Sonarcloud warnings disappear

DoD

[ ] Unit tests
[ ] UI tests should not fail

This was already fixed by #8077, although the implementation is slightly different as described above.


Update to latest SDK, CPPWinRT and Win2D

Replace deprecated from_abi with get_self

@tonuv please can you take a look?


Data save delay

What's the time interval for the data save delay? (Minutes/Hours/Days/Etc..)

Seconds


[MODAUD-144]-Added test to retrieve Order & Order_Line Change events

Purpose
Describe the purpose of the pull request.
Approach
How does this change fulfill the purpose?
TODOS and Open Questions

[ ] Use GitHub checklists. When solved, check the box and explain the answer.

Learning
Describe the research stage. Add links to blog posts, patterns, libraries or addons used to solve this problem.


Removing logging from bf-rollups-delay.py

Hi all, I attempted to run bf-rollups-delay.py on the db node and couldn't because @GeorgeJahad already wrote the file and I was locked out of writing to it.
Looked like the logging was pretty basic and thought it might be best just to get rid of it.  Let me know what you all think.

Why remove if it's not broken?

@shintasmith - it is broken in that the logging only writes to one location, and if you can't write to it the whole tool fails.  There is other ways of fixing it, but this looked reasonable enough.  I'm fine with updating the logging to be more flexible.

Can we try configuring logging using a separate file? This link has a simple example. https://docs.python.org/2/howto/logging.html#configuring-logging


Browser Error: TimeoutError: waiting for selector #user failed: timeout 30000ms exceeded

Getting this fancy new error when the container runs, and it's happening right after Xfinity forced another password reset. On resetting the password and running the latest, it fails to update and gives
Browser Error: TimeoutError: waiting for selector #user failed: timeout 30000ms exceeded
And I'm now newly unable to access the password reset site (or any login.xfinity.com page including oath.xfinity.com) from my WAN IP. If I connect on my phone with mobile data or using a VPN, it works correctly.
This is one heck of a game of cat and mouse Xfinity is playing, and them restricting my ability to log into my account at all (to check email, to pay my bill -- anything) might be what makes me pull the plug on this, as useful as it is.

I am having this same issue, think I may have poked it too many times in the first x mins when I was struggling to get HA to detect the mqtt so I restarted the container a bunch.  Going to leave it a day to see if I get un-blocked, interestingly doesn't affect my ability to logon to xfinity though Chrome/UI (login.xfinity.com) like the previous poster.
Just figure I would leave a note here so if others get the same issue.  Will post back to let folks know if I get unblocked.


Update to rds2cpp v1.1.0

This should fix some weird igraph-related issues and also improve performance.

already done


[Network] az network security-partner: support security partner provider

Description
new commands. az network security-partner CRUD
fix #13075
Testing Guide

History Notes

[Component Name 1] BREAKING CHANGE: az command a: Make some customer-facing breaking change.
[Component Name 2] az command b: Add some customer-facing feature.

This checklist is used to make sure that common guidelines for a pull request are followed.

[ ] The PR title and description has followed the guideline in Submitting Pull Requests.

[ ] I adhere to the Command Guidelines.

CI failed


feat: return results on async requests

name: "Pull request"
about: A new pull request
New Pull Request
Checklist

[x] I am not disclosing a vulnerability.
[x] My code is conform the code style
[x] I have made corresponding changes to the documentation
[x] I have updated Typescript definitions when needed

Issue Description

Related issue: https://github.com/MoralisWeb3/react-moralis/issues/155
Solution Description
Return resolved values on async requests where this was not the case

:tada: This PR is included in version 1.3.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


User profile information form

When a new user comes to our website, and logins via Github, we redirect them to /goto which then decides where the user was before the login process began, and should take them back there. Currently, /goto always drops the user back to the www site
Upon login via Github for a new user, we create a temporary id for them, we want to change this into an RDS username with certain rules

Starts with users's first name
No special characters, except hyphens
No funky unprofessional words in the username
Avoid numbers

We want to create a page with a form where a new user can select a username, and fill out or correct their first name, last name, YoE, Company, etc (We can pull in the initial name from Github during login)
We need to create this page to allow new users to sign up to our platform

Regex mis-validates username
Database setup possibly incomplete.
Failure at acquiring desired output when making api calls despite cookie being present.


React to Activity changes

This is a binary breaking change https://github.com/dotnet/corefx/commit/edc88b0fe55278ee43c821ab05707d8bb0befded. I just want to make sure we track the issue because I found it testing out https://github.com/aspnet/AspNetCore/issues/9491
It leads to this error (which is conveniently swallowed by the activity type https://github.com/dotnet/corefx/blob/eaa0079941923b4f903344130315f4cd332b84fe/src/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Activity.cs#L727-L738)
cc @dougbu @JunTaoLuo for awareness. This should fix itself when we get new dependencies.

This works now

Verified in 3.0.0-preview7.19326.6


Space age values

fixes: #48

Changes based of: https://github.com/wube/factorio-data/compare/1.1.110...2.0.8

I havent commented all @param values because i cant find any resources on them ATM

I believe the lint error for versions is not a str in the ci is related to the version in chart.yaml I believe it should be 2.0.0 not 2.0

hm.
server startet but still "rcon connection refused"

1.191 Info CommandLineMultiplayer.cpp:288: Maximum segment size = 100; minimum segment size = 25; maximum-segment-size peer count = 10; minimum-segment-size peer count = 20

dunno how i can debug / help here...

Based on what I can see the rcon port is 27015 but the test that it is running is trying to hit 30100
I am assuming they changed the file for the rcon configuration as well.
/bin/sh
      -ec
      RCONPW="$(cat /rconpw/rconpw)"
      ./rcon -a factorio-server-charts-n9ekxcwrpb-rcon:30100 -p $RCONPW -t rcon -T 180s /s Test

works on my machine. 🥇
# nc -v <IP_ADDRESS> 30100
Ncat: Version 7.92 ( https://nmap.org/ncat )
Ncat: Connected to <IP_ADDRESS>:30100.

log:

3715.829 Info RemoteCommandProcessor.cpp:248: New RCON connection from IP ADDR:({X.X:X:X:34954})

my rcon config is basically the values.yml default.
rcon:
  external: true
  type: LoadBalancer
  port: 30100
  passwordSecret: factorio-rcon-password

only updated whats within this PR...
# k get svc factorio-server-factorio-server-charts-rcon
NAME                                          TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)           AGE
factorio-server-factorio-server-charts-rcon   LoadBalancer   <IP_ADDRESS>   <IP_ADDRESS>   30100:31365/TCP   74m

# k describe svc factorio-server-factorio-server-charts-rcon
Name:                     factorio-server-factorio-server-charts-rcon
Namespace:                factorio
Labels:                   app=factorio-server-factorio-server-charts
                          app.kubernetes.io/managed-by=Helm
                          chart=factorio-server-charts-1.2.5
                          heritage=Helm
                          release=factorio-server
Annotations:              field.cattle.io/publicEndpoints:
                            [{"addresses":["<IP_ADDRESS>"],"port":30100,"protocol":"TCP","serviceName":"factorio:factorio-server-factorio-server-charts-rcon","allNodes...
                          meta.helm.sh/release-name: factorio-server
                          meta.helm.sh/release-namespace: factorio
Selector:                 app=factorio-server-factorio-server-charts
Type:                     LoadBalancer
IP Family Policy:         SingleStack
IP Families:              IPv4
IP:                       <IP_ADDRESS>
IPs:                      <IP_ADDRESS>
LoadBalancer Ingress:     <IP_ADDRESS>
Port:                     rcon  30100/TCP
TargetPort:               27015/TCP
NodePort:                 rcon  31365/TCP
Endpoints:                <IP_ADDRESS>:27015
Session Affinity:         None
External Traffic Policy:  Cluster
Events:                   <none>

ill see what i can find later. it got early today. :)

it actually worked for me.... pipeline succeeded.
see: https://github.com/Kariton/factorio-server-charts/pull/1
can you please rerun yours?

Very strange, I ran it twice and first time it failed second time it worked.

Release seems to fail on the main branch now, could you run it again? 😛

needed to update the pat for publishing releases its there now.


Way to use Es6 imports

I am thinking about using Phonon Framework for my cordova application in react. Is there a way to include Phonon using Es6 imports?

Hi @arush0311,
import phonon from 'path/to/phonon'` should work.


fakenet-ng.python.fireeye Install Error

Bug Description
When attempting to install the fakenet-ng.python.fireeye package from Chocolatey, I receive this error: ERROR: The term 'New-InstallLog' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again
Here is my Chocolatey log relating to this install:
fakenet-ng.python.fireeye Install Log.txt
Steps To Reproduce

Run the following command in an elevated PowerShell prompt:
cinst -y fakenet-ng.python.fireeye

Screenshots

Version

OS: Windows 10 Version 2004 Build 19041.508
$Env:FEVM_PROFILE: Commando_Default

@syth3 We just pushed a fix for this issue. Please update common.fireeye package and try to install again by executing the following commands:
cup -y common.fireeye
cinst -y fakenet-ng.python.fireeye

Thanks for the update! It now installs properly. It does spit out this warning, however. I'm not sure if this is an issue or not.


hx-post posting form inside a bootstrap modal

Hi there,
Thank you for providing such a great library.
I noticed when I try and use a form inside a bootstrap model, the hx-post doesn't work?
<form hx-post="/hello">
   <button class="btn btn-primary" type="submit">hello</button>
   @Html.HtmxAntiforgeryScript()
</form>

It tries to post the original page rather than the modal dialog form. Is there some special scripting I need to do?
This is an example of something I'm trying to achieve
https://blog.benoitblanchon.fr/django-htmx-modal-form/
Any exmaple or idea on how to fix this?

Assuming the html is loaded after the DOM is rendered, you probably need to call htmx.process(modalElement).
https://htmx.org/api/#process

Assuming the html is loaded after the DOM is rendered, you probably need to call htmx.process(modalElement). https://htmx.org/api/#process

Thank you didn't know that existed. Wonder if this port has something similar?

I don't think that it does. @khalidabuhakmeh do you have a better way?

I can try to put together a working sample tomorrow, but from my memory html coming back is processed by default.

I don't think that it does. @khalidabuhakmeh do you have a better way?

I used the htmx.process() and it seemed to work
I used it in the following way to load the bs modal by default. It's an old pattern I used to use with asp.net mvc
function initializeModal() {
            var modals = document.querySelectorAll('.modal-bootstrap');
            modals.forEach(function (modal) {
                modal.addEventListener('loaded.bs.modal', function () { });
                modal.addEventListener('hidden.bs.modal', function () {
                    modal.removeAttribute('data-bs-backdrop');
                    modal.removeAttribute('data-bs-keyboard');
                });

                modal.addEventListener('show.bs.modal', function (event) {
                    var modalContent = modal.querySelector('.modal-content');
                    modalContent.innerHTML = '';

                    fetch(event.relatedTarget.href, {
                        headers: {
                            'X-Requested-With': 'XMLHttpRequest'
                        }
                    }).then(function (response) {
                        return response.text();
                    }).then(function (html) {
                        modalContent.innerHTML = html;

                        if (window.htmx) {
                            htmx.process(modal);
                        }
                    });
                });
            });
        }

@khalidabuhakmeh Thank you so much for the sample. I'm liking your way something I didn't consider before htmx. Thanks for sharing

@dotnetshadow 👋 Hi again. I updated the sample to use Bootstrap JavaScript to give you full access to all the Bootstrap intended behaviors.
The trick with HTMX is you can return <script></script> elements that will execute immediately. This allows you to pass the initialization script necessary for modals.
Since the HTML and Script pass through HTMX's request/response pipeline, you get a processed modal. Give it a try. It's pretty sweet.
I'm writing a blog post about it :)

@khalidabuhakmeh Oh wow great work, I look forward to trying it out. Thanks for your awesome work!

No worries. Glad you're trying out the library and enjoying it. Cheers.

Would you know how to prevent the submit to occur so validation occurs?


[FLINK-12834][table-planner-blink] Support CharType and BinaryType

What is the purpose of the change
1.Now we use LogicalType VarcharType to support calcite char type.
2.Subsequent TableApi also generates LogicalType's CharType.
We need real support CharType in internal code gen and computation.
Verifying this change
ut
Does this pull request potentially affect one of the following parts:

Dependencies (does it add or upgrade a dependency): (no)
The public API, i.e., is any changed class annotated with @Public(Evolving): (no)
The serializers: (no)
The runtime per-record code paths (performance sensitive): (no)
Anything that affects deployment or recovery: JobManager (and its components), Checkpointing, Yarn/Mesos, ZooKeeper: (no)
The S3 file system connector: (no)

Documentation

Does this pull request introduce a new feature? (no)

This PR not resolve https://issues.apache.org/jira/browse/FLINK-10257 , Incorrect CHAR type support still remain...

LGTM
wait until travis pass

@flinkbot approve all


suggested improvements t- more efficient and more pythonic

These 2 functions could be significantly improved.

instead of returning a list with one dict entry each, just return a single dictionary with all the entries
i used the following to quickly convert them into a proper dict
d = {}
for r in parsedAddress:
key = list(r.keys())[0]
value = list(r.values())[0]
d[key] = value

use     text = re.sub('[àáâãăäāå]', '', text)  it will be much faster

And where are the other functions from the library ?
def stringToJSON(string):
if not string in ['{}']:
string = string.replace('{  ', '')
string = string.replace('}', '')
string = string.replace('"', '')
string = string.split(",  ")
stringList = [i.split(': ') for i in string]
outDictList = []
for i in stringList:
outDictList.append({i[0]: i[1].rstrip().lstrip()})
return outDictList
else:
return {}
def removeSpeacialChars(address):
b = {'≈': '', '≠': '', '>': '', '<': '', '+': '', '≥': '', '≤': '', '±': '', '*': '', '÷': '', '√': '',
'°': '', '⊥': '', '~': '', 'Δ': '', 'π': '', '≡': '', '≜': '', '∝': '', '∞': '', '≪': '', '≫': '',
'⌈': '', '⌉': '', '⌋': '', '⌊': '', '∑': '', '∏': '', 'γ': '', 'φ': '', '⊃': '', '⋂': '', '⋃': '',
'μ': '', 'σ': '', 'ρ': '', 'λ': '', 'χ': '', '⊄': '', '⊆': '', '⊂': '', '⊇': '', '⊅': '', '⊖': '',
'∈': '', '∉': '', '⊕': '', '⇒': '', '⇔': '', '↔': '', '∀': '', '∃': '', '∄': '', '∴': '', '∵': '',
'ε': '', '∫': '', '∮': '', '∯': '', '∰': '', 'δ': '', 'ψ': '', 'Θ': '', 'θ': '', 'α': '', 'β': '',
'ζ': '', 'η': '', 'ι': '', 'κ': '', 'ξ': '', 'τ': '', 'ω': '', '∇': ''}
for x, y in b.items():
address = address.replace(x, y)
return address

Also you should dump the re-amble the exe gives and some how after a few hundred calls the buffer contains more then it should. and it starts pulling the response from the address provided a few entries go.  Not sure if the exe is providing multiple answers and this is causing the problem perhaps.

also when initializing, you should allow the called to set the folder where the library is kept, not use the hard coded one you used.

Dear Quentin,
Really appreciate your contribution. Apologies for the late response.  I
feel like you should be a contributor to this project. I can add you to the
repo and you can create a branch and work on the changes you suggested and
do a PR, we can review that and merge it to the main. I feel
your contribution should be showcased. Let me know what you think if not I
will look after the changes you suggested.
Thanks & Regards,
Tamil Selvan AV
AI/ML Engineer
Greater Manchester, United Kingdom
LinkedIn: https://www.linkedin.com/in/selva221724/
On Tue, Mar 21, 2023 at 12:49 AM Quentin Sarafinchan <
@.***> wrote:

also when initializing, you should allow the called to set the folder
where the library is kept, not use the hard coded one you used.
—
Reply to this email directly, view it on GitHub
https://github.com/selva221724/pypostalwin/issues/7#issuecomment-1477136960,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ACD5KDOHYPOLHQO3KHM76ETW5D3KRANCNFSM6AAAAAAV73E3VM
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>

I have never done a pull, but sure I can upload my changes.  Note I
deliberately broke your return it will return a dict instead of a list
Cheers,
Quentin J Sarafinchan, B.Sc.
On Fri, Mar 24, 2023, 08:14 Tamil Selvan @.***> wrote:

Dear Quentin,
Really appreciate your contribution. Apologies for the late response. I
feel like you should be a contributor to this project. I can add you to the
repo and you can create a branch and work on the changes you suggested and
do a PR, we can review that and merge it to the main. I feel
your contribution should be showcased. Let me know what you think if not I
will look after the changes you suggested.
Thanks & Regards,
Tamil Selvan AV
AI/ML Engineer
Greater Manchester, United Kingdom
LinkedIn: https://www.linkedin.com/in/selva221724/
On Tue, Mar 21, 2023 at 12:49 AM Quentin Sarafinchan <
@.***> wrote:

also when initializing, you should allow the called to set the folder
where the library is kept, not use the hard coded one you used.
—
Reply to this email directly, view it on GitHub
<
https://github.com/selva221724/pypostalwin/issues/7#issuecomment-1477136960
,
or unsubscribe
<
https://github.com/notifications/unsubscribe-auth/ACD5KDOHYPOLHQO3KHM76ETW5D3KRANCNFSM6AAAAAAV73E3VM
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>

—
Reply to this email directly, view it on GitHub
https://github.com/selva221724/pypostalwin/issues/7#issuecomment-1482779556,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ACBDQ7FM6FDWPXLCZ33SDSLW5WM5DANCNFSM6AAAAAAV73E3VM
.
You are receiving this because you authored the thread.Message ID:
@.***>

actually, there is a problem in my friend, libpostal do return the same
keys multiple times, like road: "1st road" , and road: " main road", so
what happens is, the dict type will remove any one of these since I kept
the list from the exe to read and then convert into dict for the users.
On Sat, Mar 25, 2023 at 2:02 AM Quentin Sarafinchan <
@.***> wrote:

I have never done a pull, but sure I can upload my changes. Note I
deliberately broke your return it will return a dict instead of a list
Cheers,
Quentin J Sarafinchan, B.Sc.
On Fri, Mar 24, 2023, 08:14 Tamil Selvan @.***> wrote:

Dear Quentin,
Really appreciate your contribution. Apologies for the late response. I
feel like you should be a contributor to this project. I can add you to
the
repo and you can create a branch and work on the changes you suggested
and
do a PR, we can review that and merge it to the main. I feel
your contribution should be showcased. Let me know what you think if not
I
will look after the changes you suggested.
Thanks & Regards,
Tamil Selvan AV
AI/ML Engineer
Greater Manchester, United Kingdom
LinkedIn: https://www.linkedin.com/in/selva221724/
On Tue, Mar 21, 2023 at 12:49 AM Quentin Sarafinchan <
@.***> wrote:

also when initializing, you should allow the called to set the folder
where the library is kept, not use the hard coded one you used.
—
Reply to this email directly, view it on GitHub
<

https://github.com/selva221724/pypostalwin/issues/7#issuecomment-1477136960

,
or unsubscribe
<

https://github.com/notifications/unsubscribe-auth/ACD5KDOHYPOLHQO3KHM76ETW5D3KRANCNFSM6AAAAAAV73E3VM

.
You are receiving this because you are subscribed to this
thread.Message
ID: @.***>

—
Reply to this email directly, view it on GitHub
<
https://github.com/selva221724/pypostalwin/issues/7#issuecomment-1482779556
,
or unsubscribe
<
https://github.com/notifications/unsubscribe-auth/ACBDQ7FM6FDWPXLCZ33SDSLW5WM5DANCNFSM6AAAAAAV73E3VM
.
You are receiving this because you authored the thread.Message ID:
@.***>

—
Reply to this email directly, view it on GitHub
https://github.com/selva221724/pypostalwin/issues/7#issuecomment-1483679266,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ACD5KDLRLIPVLA574QPXBB3W5ZG3FANCNFSM6AAAAAAV73E3VM
.
You are receiving this because you commented.Message ID:
@.***>

Hmmmmm...... Do you have an example address or 3 that I can test that
with?
Cheers,
Quentin J Sarafinchan, B.Sc.
On Fri, Mar 24, 2023, 21:21 Tamil Selvan @.***> wrote:

actually, there is a problem in my friend, libpostal do return the same
keys multiple times, like road: "1st road" , and road: " main road", so
what happens is, the dict type will remove any one of these since I kept
the list from the exe to read and then convert into dict for the users.
On Sat, Mar 25, 2023 at 2:02 AM Quentin Sarafinchan <
@.***> wrote:

I have never done a pull, but sure I can upload my changes. Note I
deliberately broke your return it will return a dict instead of a list
Cheers,
Quentin J Sarafinchan, B.Sc.
On Fri, Mar 24, 2023, 08:14 Tamil Selvan @.***> wrote:

Dear Quentin,
Really appreciate your contribution. Apologies for the late response. I
feel like you should be a contributor to this project. I can add you to
the
repo and you can create a branch and work on the changes you suggested
and
do a PR, we can review that and merge it to the main. I feel
your contribution should be showcased. Let me know what you think if
not
I
will look after the changes you suggested.
Thanks & Regards,
Tamil Selvan AV
AI/ML Engineer
Greater Manchester, United Kingdom
LinkedIn: https://www.linkedin.com/in/selva221724/
On Tue, Mar 21, 2023 at 12:49 AM Quentin Sarafinchan <
@.***> wrote:

also when initializing, you should allow the called to set the folder
where the library is kept, not use the hard coded one you used.
—
Reply to this email directly, view it on GitHub
<

https://github.com/selva221724/pypostalwin/issues/7#issuecomment-1477136960

,
or unsubscribe
<

https://github.com/notifications/unsubscribe-auth/ACD5KDOHYPOLHQO3KHM76ETW5D3KRANCNFSM6AAAAAAV73E3VM

.
You are receiving this because you are subscribed to this
thread.Message
ID: @.***>

—
Reply to this email directly, view it on GitHub
<

https://github.com/selva221724/pypostalwin/issues/7#issuecomment-1482779556

,
or unsubscribe
<

https://github.com/notifications/unsubscribe-auth/ACBDQ7FM6FDWPXLCZ33SDSLW5WM5DANCNFSM6AAAAAAV73E3VM

.
You are receiving this because you authored the thread.Message ID:
@.***>

—
Reply to this email directly, view it on GitHub
<
https://github.com/selva221724/pypostalwin/issues/7#issuecomment-1483679266
,
or unsubscribe
<
https://github.com/notifications/unsubscribe-auth/ACD5KDLRLIPVLA574QPXBB3W5ZG3FANCNFSM6AAAAAAV73E3VM
.
You are receiving this because you commented.Message ID:
@.***>

—
Reply to this email directly, view it on GitHub
https://github.com/selva221724/pypostalwin/issues/7#issuecomment-1483685024,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ACBDQ7FLL6QFPOTOKSJ5TVDW5ZJCPANCNFSM6AAAAAAV73E3VM
.
You are receiving this because you authored the thread.Message ID:
@.***>

Given most tags have singles using a base of a dict still makes sense.  If
only one value then address[city] would be a str else if multiple then it
would be a list... Address[city][0] .....
Cheers,
Quentin J Sarafinchan, B.Sc.
On Fri, Mar 24, 2023, 21:21 Tamil Selvan @.***> wrote:

actually, there is a problem in my friend, libpostal do return the same
keys multiple times, like road: "1st road" , and road: " main road", so
what happens is, the dict type will remove any one of these since I kept
the list from the exe to read and then convert into dict for the users.
On Sat, Mar 25, 2023 at 2:02 AM Quentin Sarafinchan <
@.***> wrote:

I have never done a pull, but sure I can upload my changes. Note I
deliberately broke your return it will return a dict instead of a list
Cheers,
Quentin J Sarafinchan, B.Sc.
On Fri, Mar 24, 2023, 08:14 Tamil Selvan @.***> wrote:

Dear Quentin,
Really appreciate your contribution. Apologies for the late response. I
feel like you should be a contributor to this project. I can add you to
the
repo and you can create a branch and work on the changes you suggested
and
do a PR, we can review that and merge it to the main. I feel
your contribution should be showcased. Let me know what you think if
not
I
will look after the changes you suggested.
Thanks & Regards,
Tamil Selvan AV
AI/ML Engineer
Greater Manchester, United Kingdom
LinkedIn: https://www.linkedin.com/in/selva221724/
On Tue, Mar 21, 2023 at 12:49 AM Quentin Sarafinchan <
@.***> wrote:

also when initializing, you should allow the called to set the folder
where the library is kept, not use the hard coded one you used.
—
Reply to this email directly, view it on GitHub
<

https://github.com/selva221724/pypostalwin/issues/7#issuecomment-1477136960

,
or unsubscribe
<

https://github.com/notifications/unsubscribe-auth/ACD5KDOHYPOLHQO3KHM76ETW5D3KRANCNFSM6AAAAAAV73E3VM

.
You are receiving this because you are subscribed to this
thread.Message
ID: @.***>

—
Reply to this email directly, view it on GitHub
<

https://github.com/selva221724/pypostalwin/issues/7#issuecomment-1482779556

,
or unsubscribe
<

https://github.com/notifications/unsubscribe-auth/ACBDQ7FM6FDWPXLCZ33SDSLW5WM5DANCNFSM6AAAAAAV73E3VM

.
You are receiving this because you authored the thread.Message ID:
@.***>

—
Reply to this email directly, view it on GitHub
<
https://github.com/selva221724/pypostalwin/issues/7#issuecomment-1483679266
,
or unsubscribe
<
https://github.com/notifications/unsubscribe-auth/ACD5KDLRLIPVLA574QPXBB3W5ZG3FANCNFSM6AAAAAAV73E3VM
.
You are receiving this because you commented.Message ID:
@.***>

—
Reply to this email directly, view it on GitHub
https://github.com/selva221724/pypostalwin/issues/7#issuecomment-1483685024,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ACBDQ7FLL6QFPOTOKSJ5TVDW5ZJCPANCNFSM6AAAAAAV73E3VM
.
You are receiving this because you authored the thread.Message ID:
@.***>


fixes issue 314 creating error 404 page for website

issue #314 fixed. error 404 page works fine now.

@Navdeepsingh4298 can u please attach the ss of the work done.
Like how it looked earlier and how it is looking now. It becomes convient for the mentors to review.
Thanks

Before this commit it was like this

now it looks like this

@Navdeepsingh4298 can u please attach the ss of the work done.
Like how it looked earlier and how it is looking now. It becomes convient for the mentors to review.
Thanks

I've commented, have a look now. Is this fine?

@Navdeepsingh4298 instead of 0 can you use loader as it was shown in the template and second thing there is no requirement of go back button just one button at tge center to go home

Before this commit it was like this

now it looks like this

@Navdeepsingh4298 Also can you share the URL at which it's showing 404.
Try these URLs /profile, /, /home, /abcd
And let us know that for which url, the 404 appears or how it is

Before changes or in live website it shows like this
while accessing "/profile" it redirects to "/signin" after sometime and "/" is also redirecting to "/signin"

After changes
while accessing "/profile" it redirects to "/signin" and "/" is also redirecting to "/signin"

while accessing "/home" and "/abcd" it redirects to error 404 page. or even trying to access any random page which is not mentioned in switch case that will redirected to error 404 page.

Perfect working @Navdeepsingh4298
Nice work!!!
The issue is resolved 👍🏻
Just make the changes requested by @ChitvanRamani22 Mam.
And then it's ready for merge

Perfect working @Navdeepsingh4298
Nice work!!!
The issue is resolved 👍🏻
Just make the changes requested by @ChitvanRamani22 Mam.
And then it's ready for merge

should i commit now?

Yes sure.
Go ahead

actually i've done requested changes.
changed 0 with loader
and remove other button to go back, now here is just one button to go home

ok

Yeah @Navdeepsingh4298 as u have made the requested changes you can commit them now.

i've commited

@Navdeepsingh4298 amazing !!
Keep contributing🥳


Issue1195

Adding support for image specific tags @b2d-only, @centos-only and @rhel-only.

Will check this ASAP.
--
Gerard Braad | http://gbraad.nl
[ Doing Open Source Matters ]


Add tip for selecting a subset of subscribers in release window

Regarding #19. Adds some small text indicating that a subset of the subscriber list can be selected and how.


Fix typo in doc heading

applicaiton -> application

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

the file change doesn't correct a typo mistake


Invoke-WebRequest and Invoke-RestMethod should honor HTTP_Proxy and HTTPS_proxy env vars

The Unix way to specify proxy seems to be via HTTP_Proxy and HTTPS_Proxy env vars

The Windows way is to honour the system proxy in control panel -> internet options -> connections -> LAN settings.

The Windows way should already been honored by .Net on Windows

@SteveL-MSFT Shouldn't the *nix way be honored by .NET as well?

@joeyaiello yes, looks like CoreFx supports whatever libcurl supports (https://github.com/dotnet/corefx/issues/11757) so we may just need to also document this

Invoke-RestMethod was not using my system proxy today (PS5, Win7) I had to use the -Proxy parameter.

As far as I can tell, the web cmdlets never used the system proxy on Windows so having them suddenly start using the system proxy would be a breaking change.  Need someone to do a bit more research on this so we don't have a breaking change.

If you have a system proxy (or, more likely a .pac) then all your internet traffic is going through those rules anyway. That is, according to the .pac, it will use a proxy or not as appropriate. To be clear: when I say PowerShell should respect the proxy I don't mean it should use a fixed proxy host, it should respect how the system is configured to use, or not, a proxy. Used properly, I can't see how it would break things: anything you can't access by respecting the proxy, you can't access in Chrome, IE etc.

Ran into a similar issue and ended up defining $env:HTTP_PROXY and $env:HTTPS_PROXY with the URL of http://:@:.  This seems to be a quick workaround, at least on my CentOS test box.

as native curl and wget is coming to windows, I dont see the behavior of iwr will be changed at all:
curl an wget will honor the unix way, am I right?

@jakara I will consider possibly adding support for this in iwr and irm for the 6.2.0 release, it's a bit too late in the cycle for 6.1.0.
In the mean time this is a kind of work around that works cross platform:
$PSDefaultParameterValues["invoke-webrequest:proxy"] = $env:http_proxy

Add that to your profile or in the initialization of your scripts.

Just to clarify, given that the variable names in this issue's title used mixed case: on Unix-like platforms, where case matters, these variables are commonly lowercase (http_proxy, https_proxy).

This was implemented in .Net 3+ in new HttpClient.

@sdwheeler Was this already documented for the web cmdlets?

@iSazonov Yes, this is documented.


🩹 Issue 74: fix deprecation warning

Node.js 12 actions are deprecated
For more information see:
https://github.blog/changelog/2022-09-22-github-actions-all-actions-will-begin-running-on-node16-instead-of-node12/.

Please update the following actions to use Node.js 16: actions/checkout@v2
Using version v3, latest or master: actions/checkout#689

This PR fixes issue #74

See before:
https://github.com/thomasmerz/productive-box/actions/runs/3688153259 ❌
And after:
https://github.com/thomasmerz/productive-box/actions/runs/3688200460 🟩 🚧

Those change has already been done by other PRs.
Thank you for your contribution and I hope you will consider submitting a new pull request in the future.

@maxam2017

Those change has already been done by other PRs. Thank you for your contribution and I hope you will consider submitting a new pull request in the future.

Great, it's totally ok for me, that you used my issue/PR as an impuls to fix it yourself 👍🏼
But you're still using and old version of peter-evans/repository-dispatch@v1 which still uses Node 12. Please update this to v2, too.

And why are all my "Update gist" GH actions failing since you merged your PR? 🤔


Have a contribute.md

to explain how to make a test https://github.com/andrewrk/mineflayer/issues/239#issuecomment-87506334
to explain how to create a third party plugin https://github.com/andrewrk/mineflayer#third-party-plugins
Error handling : If function takes a callback, NEVER throw in that function.
other stuff ?

use cb(new Error("thing")) and not throw new Error("thing") because we don't want to crash the bot in mineflayer, even if something fails.


Error: Expected lua number

Hey, I recently decided to try out this plugin and noticed that when running the following command:lua require("hologram").add_image(0, "/tmp/test.png", 5, 5) I get this error:
E5108: Error executing lua ...e/pack/packer/start/hologram.nvim/lua/hologram/image.lua:20: Expected lua number
stack traceback:
        [C]: in function 'nvim_buf_set_extmark'
        ...e/pack/packer/start/hologram.nvim/lua/hologram/image.lua:20: in function 'new'
        ...te/pack/packer/start/hologram.nvim/lua/hologram/init.lua:120: in function 'add_image'
        [string ":lua"]:1: in main chunk

After scouring the code, I  noticed something in this snippet:
function Image:new(opts)
    opts = opts or {}

    local cur_row, cur_col = unpack(vim.api.nvim_win_get_cursor(0))
    opts.row = opts.row or cur_row
    opts.col = opts.col or cur_col

    local buf = vim.api.nvim_get_current_buf()
    local ext = vim.api.nvim_buf_set_extmark(buf, vim.g.hologram_extmark_ns, opts.row, opts.col, {})

    local obj = setmetatable({
        id = buf*100 + ext,
        source = opts.source
    }, self)

    obj:identify()

    return obj
end

Here, no fallback value is set for vim.g.hologram_extmark_ns, so if the user hasn't defined it, it returns nil, which the nvim api does not like. I'm not really sure what extmark_ns really does so I'm not submitting a pull request, but hopefully this issue should be easy to fix :)
Nvim version info:
NVIM v0.6.1
Build type: Release
LuaJIT 2.0.5
Features: +acl +iconv +tui

I think your configuration didn't call  require'hologram'.setup() before hand, so if you are packer user , can you try to use the code below (and :PackerComple)?
  use {'edluffy/hologram.nvim',
      config = function()
          require'hologram'.setup {}
          local function map(input, output)
              vim.api.nvim_set_keymap('n', input, output, { noremap = true, silent = false})
          end
          function Fft()
              local my_image = require('hologram.image'):new({ source="/Users/.../something.png", row=2,col=5})
              my_image:transmit()
          end
          map('<space>lf', ":lua Fft()<cr>")
      end,
  }

If you get line value outside range error, fill the file with space.

Thanks for the help! Adding the setup function fixes it. Initially didn't have it due to it not being mentioned in the README

Sorry, still didn't quite understand. my settings is you minimal
local my_image = require('hologram.image'):new({
        source = '/Users/.../Documents/Chun-Li.jpeg',
        row = 11,
        col = 0,
    })

And I opened a file will 200 lines, which is obviously more than 11 rows. But I still get this error.

Sorry, still didn't quite understand. my settings is your minimal
local my_image = require('hologram.image'):new({
        source = '/Users/./Documents/Chun-Li.jpeg',
        row = 11,
        col = 0,
    })

I opened a file

The buffer must be filled with aviturarry words
Can you fill the file that you want to show the picture on with any 11 words.
l

Only PNG file format is supported right now so that is probably why

you mean I have to fill it with printable characters?
No
I filled my file with 100 x 100 spaces, still not able to display the image.
My solution may not work or there is another problem on your environment.

It works fine for me. What OS are you using and what version of Kitty do you have installed?

I am using macOS Monterey, and I just installed kitty on my machine (never used it before), so I guess it's the latest version 0.25.2.


Reduce amount of disk size consumed by FTS index

Description
FTS index used for VM searching is consuming too much disk size.

Progress Status

[ ] Branch created
[ ] Code committed to development branch
[ ] Testing - QA
[ ] Documentation
[ ] Release notes - resolved issues, compatibility, known issues
[ ] Code committed to upstream release/hotfix branches
[ ] Documentation committed to upstream release/hotfix branches

As a work around, we can remove and add the indexes to delete the files and recreate them. For me, it did not work when doing so in a single ALTER command:
mysql -u opennebula opennebula <EOF
alter table vm_pool drop index ftidx;
alter table vm_pool add fulltext index ftidx (search_token);
EOF

Code its now in one-5.8 and master.
Documentation needs update to include a note on DB maintenance.


Running the app when yarn is not installed fails

I've recently pulled the update to Ruby 2.6.1 on this project, and have now started encountering the following error when attempting to run the app:
$ bundle exec rails s
=> Booting Puma
=> Rails 5.2.2 application starting in development
=> Run `rails server -h` for more startup options

========================================
  Your Yarn packages are out of date!
  Please run `yarn install` to update.
========================================

To disable this check, please add `config.webpacker.check_yarn_integrity = false`
to your Rails development config file (config/environments/development.rb).

yarn check v1.13.0
error Couldn't find an integrity file
error Found 1 errors.
info Visit https://yarnpkg.com/en/docs/cli/check for documentation about this command.

Exiting

I have npm installed, but not yarn. Even after installing yarn, I see the same issue. It seems that the app is now looking for a yarn "integrity file".
I think either this file should be committed to the repo, or the requirement for yarn should be loosened to allow for install via npm.

Expected behavior
I expect the app to run when I give the command to run it.
Actual behavior
The app displays an error message about not having yarn installed and fails to run.
Steps to reproduce the problem

Find a system with node and npm installed, but not yarn.
Clone the project and bundle install
Setup the database per the docs in README
Run the app with bundle exec rails s

Can someone more familiar with JS management chime in here? Is it possible to maintain package.json via either npm or yarn on the same app?
We now have a check in bin/update that looks for yarn, and I believe it's mentioned in README.md now as well?

I did not have yarn installed on my machine, installing it installed node 12 and the latest yarn (1.15.2), and I had similar problems:
$ bundle exec rails db:setup
W, [2019-05-02T11:27:29.636219 #70336]  WARN -- Skylight: [SKYLIGHT] [3.1.2] Running Skylight in development mode. No data will be reported until you deploy your app.
(To disable this message for all local apps, run `skylight disable_dev_warning`.)

========================================
  Your Yarn packages are out of date!
  Please run `yarn install` to update.
========================================

To disable this check, please add `config.webpacker.check_yarn_integrity = false`
to your Rails development config file (config/environments/development.rb).

yarn check v1.15.2
error Couldn't find an integrity file
error Found 1 errors.
info Visit https://yarnpkg.com/en/docs/cli/check for documentation about this command.

Running yarn install then failed with numerous errors.
I was able to (with some trial and error) revert node to version 10.15.3 and yarn 1.6.0, and then the yarn install command worked. Then bundle exec rails db:setup worked.

Is this a yarn versioning issue?

The trial and error involved: brew uninstall yarn, brew uninstall node. I installed the yarn version manager from homebrew, but that re-installed node 12, so I had to re-un-install node. Then install node 10: brew install node@10. yvm was still working after that thankfully, then I was able to yvm install 1.6.0. I'm sure there's a more elegant way through all of that, and it's even possible this should all work with the latest versions of node and yarn and I just made a mistake, but leaving all of these bread crumbs here in case someone can make a loaf with it.

Is this a yarn versioning issue?

It was at least a node version issue. I'm not sure if the version of yarn mattered, as I worked to get both set to versions that @seanmarcia mentioned should work. And so far they have.

@chrismo Do you have any suggestions on a better way to configure this? I'm less familiar with JS like this, and am not clear on the current best practices for this.

I think it's just a node 12 problem. We actually saw this locally in our app today. nvm can be a helpful tool to handle multiple node versions, but ... I'm very unfamiliar with this stuff too.

@chrismo Thanks for updating the README -- I'm going to mark this one closed for now until we can learn more about it later.


[ZEPPELIN-1984] Zeppelin Server doesn't catch all exceptions when launching interpreter.sh

https://issues.apache.org/jira/browse/ZEPPELIN-1984

DEBUG [2017-01-20 13:56:37,688] ({Exec Stream Pumper} RemoteInterpreterManagedProcess.java[processLine]:189) - /opt/zeppelin/zeppelin-active/bin/interpreter.sh: line 207: return: can only `return' from a function or sourced script
INFO [2017-01-20 13:56:37,690] ({Exec Default Executor} RemoteInterpreterManagedProcess.java[onProcessComplete]:164) - Interpreter process exited 0

So return 1 outside of function is not correct and gets ignored by shell interpreters, also it causes
Zeppelin to not catch situations when interpreter hasn't started, as shown in ZEPPELIN-1984.
As you can see Zeppelin got exit status of interpreter.sh as 0 when it had to be 1 (error). Zeppelin then starts a loop to try to connect interpreter process, and fails half a minute later with connection refused
What is this PR for?
Fix for https://issues.apache.org/jira/browse/ZEPPELIN-1984
What type of PR is it?
Bug Fix
Todos

[ ] - Task

What is the Jira issue?
https://issues.apache.org/jira/browse/ZEPPELIN-1984
How should this be tested?
On example of Spark interpreter, remove keytab file and keep --keytab reference to it in SPARK_SUBMIT_OPTIONS. Try to use Spark interpreter. spark-submit will fail with Exception in thread "main" org.apache.spark.SparkException: Keytab file: /home/someuser/.kt does not exist but Zeppelin (around RemoteInterpreterManagedProcess.java ) wouldn't capture this problem (or many other problems starting interpreter process as indicated here )
This fix for ZEPPELIN-1984 would allow for error to be captured by RemoteInterpreterManagedProcess.java.
A future improvement could be made, to carry forward exception from interpreter to RemoteInterpreterManagedProcess.java so end user could clearly see what's the problem, not just that the interpreter could not be started.
Questions:

Does the licenses files need update?
No
Is there breaking changes for older versions?
No
Does this needs documentation?
No

I've tested Zeppelin with this one-line 42b02bd
commit change and now RemoteInterpreterManagedProcess.java correctly gets return code as 1, notice Process exited with an error: 1

INFO [2017-01-20 15:31:06,710] ({Exec Default Executor} RemoteInterpreterManagedProcess.java[onProcessFailed]:171) - Interpreter process failed {}
org.apache.commons.exec.ExecuteException: Process exited with an error: 1 (Exit value: 1)
at org.apache.commons.exec.DefaultExecutor.executeInternal(DefaultExecutor.java:404)
at org.apache.commons.exec.DefaultExecutor.access$200(DefaultExecutor.java:48)
at org.apache.commons.exec.DefaultExecutor$1.run(DefaultExecutor.java:200)
at java.lang.Thread.run(Thread.java:745)
DEBUG [2017-01-20 15:31:07,070] ({pool-2-thread-2} RemoteInterpreterUtils.java[checkIfRemoteEndpointAccessible]:53) - Remote endpoint 'localhost:3044' is not accessible (might be initializing): Connection refuse
d
DEBUG [2017-01-20 15:31:07,570] ({pool-2-thread-2} RemoteInterpreterUtils.java[checkIfRemoteEndpointAccessible]:53) - Remote endpoint 'localhost:3044' is not accessible (might be initializing): Connection refuse
d
... (connect attempts loop continues until timeout reached)

but still you see that RemoteInterpreterManagedProcess.java is still falling into connect attempts loop. So RemoteInterpreterManagedProcess.java ignores return code 1 (signaled from interpreter.sh as exit code that interpreter hasn't started). Will need somebody's help to add this logic too.
Another possible improvement is that RemoteInterpreterManagedProcess could also catch root cause from logger, as you can see it does show up in the log:

DEBUG [2017-01-20 15:31:06,685] ({Exec Stream Pumper} RemoteInterpreterManagedProcess.java[processLine]:189) - Exception in thread "main" org.apache.spark.SparkException: Keytab file: /home/someuser/.kt does not
exist

So then end-users wouldn't have to enable debugging to understand why interpreter isn't starting.

Change LGTM. Recently there were some fixes for CI.
@Tagar Could you rebase this PR and see if CI build goes green?
And i implemented propagating actual cause to front-end at https://github.com/apache/zeppelin/pull/1931. @Tagar Could you try if it shows proper error on the notebook in your case?

@Leemoonsoo  I rebased this PR and it went green. Thanks!

@Tagar thanks, merge to master if no further discussion.


correct manual/advance Transferring TFT between Stellar and TF Chain

some info might be outdated and incorrect, reported by support team.
https://library.threefold.me/info/manual/#/manual__grid3_stellar_tfchain_bridge
for example: transfer will not work without a memo. but not mentioned on it. but in general pls check the page if its still relevant, update if old. thank you

done on https://library.threefold.me/info/manual/#/manual__grid3_stellar_tfchain_bridge


Connect LSP-client to already running server via TCP

Suggestion:
Allow to specify "tcp_port" in the configs and drop the "command" property, so that the client simply connects to a LSP-server already running locally.
Starting point:
https://github.com/tomv564/LSP/blob/b2527a3c5fc26eeb0d4c9c8bd431821cffbb6201/plugin/core/main.py#L214

This should be working in master (not yet released), where this path should be entered if  "command" is omitted / empty in the client config.
https://github.com/tomv564/LSP/blob/0a2806da34c8c0a512e8ddfb937bd5a74b009fce/plugin/core/sessions.py#L38


fatal: could not read from the remote repository

Hi, I have this issue, probably because I was not sure what to do with the yes/no/fingerprint option after trying to clone the git repository. What should I do to fix this so it installs?
(base) C:\Users\Me>git clone git@github.com:lfranke/TRIPS.git
Cloning into 'TRIPS'...
The authenticity of host 'github.com (<IP_ADDRESS>)' can't be established.
ED25519 key fingerprint is SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? fingerprint
Please type 'yes', 'no' or the fingerprint: SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU
Warning: Permanently added 'github.com' (ED25519) to the list of known hosts.
<EMAIL_ADDRESS>Permission denied (publickey).
fatal: Could not read from remote repository.

git clone https://github.com/lfranke/TRIPS.git

perfect - that worked!

Kindly please close the issue


Test code on different machines

There is an issue with Gurobi on Mac. Doublecheck version on python, gurobipy and gurobi licence

Works on Linux machines, Rocky Linux 8.9 for the cluster runs, and Ubuntu 22.04.2 LTS for local runs.


Update float-and-real-transact-sql.md

Changed 0.0000000000000000050000000000000005 to 0.000000000000000005

@renjieliu : Thanks for your contribution! The author(s) have been notified to review your proposed change.

#label:"aq-pr-triaged"


Malware

https://www.virustotal.com/gui/file/0b43ffc681ad93370b77212a7451a23ca4490ff2753c42c17a3283dfcbd8025b
0.26 Release tests positive for 43/65 of VirusTotal's checks...

False positive or just a fake report


Update dependencies that libraries.io consider "out of date"

Relates to #2830, #3254, #5855
Closes #6264

I think I might have preferred this had been broken up across a couple PR's (meltano core impacting vs API impacting) so that a rollback in case of an issue was a bit easier and so that skimming the commit history was a bit more obvious. We should just keep an eye out for reports of flakey-ness in the UI/API in the near term.

@pandemicsyn My apologies. I wasn't aware of the lack of test coverage there. Do we have tickets to track the improvement/addition of tests in this area?

I think I might have preferred this had been broken up across a couple PR's (meltano core impacting vs API impacting) so that a rollback in case of an issue was a bit easier and so that skimming the commit history was a bit more obvious. We should just keep an eye out for reports of flakey-ness in the UI/API in the near term.

@pandemicsyn My apologies. I wasn't aware of the lack of test coverage there. Do we have tickets to track the improvement/addition of tests in this area?

Yea, can't find it at the moment but sometime last year I snagged a coverage report that outlined where our gaps where. Theoretically, the API is also in maintenance-only mode pending us reworking the whole thing: https://github.com/meltano/meltano/blob/main/docs/adr/0005-use-fastapi-to-develop-v2-of-api.md#consequences

Yea, can't find it at the moment but sometime last year I snagged a coverage report that outlined where our gaps where.

A found it - https://gitlab.com/meltano/meltano/-/issues/2959

Converted to draft until #6280 is addressed (in a different PR that I will open). Thanks @dingobar!

:shipit:

:shipit:

I had intended to wait for another approval, but you make a compelling argument :slightly_smiling_face:


[Intel MKL] Fixing a bug in Convolution+Add fusion

This PR fixes a bug in conv+add fusion by correctly copying input tensor(summand) to output tensor for proper in-place computation.

Thank you for the comments. I have fixed the issues.


[FEAT] Add sigint to shoutdown program

Before the testing I realized I need a way to shout down our server.
@leske42 the signal master it's time to teach us how to handle the signal gracefully XD

@leske42 Updated the condition

@leske42 Idk what I was thinking....


chore: Use rust-toolchain.toml for better toolchain support

Which issue does this PR close?

Closes https://github.com/apache/datafusion-comet/issues/698.
Rationale for this change

As mentioned in issue.
What changes are included in this PR?

Replace rust-toolchain
How are these changes tested?

In every build.

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

Project coverage is 33.56%. Comparing base (1d33828) to head (e187fae).

Additional details and impacted files
@@             Coverage Diff              @@
##               main     #699      +/-   ##
============================================
- Coverage     33.62%   33.56%   -0.06%
  Complexity      827      827
============================================
  Files           110      110
  Lines         42555    42601      +46
  Branches       9356     9347       -9
============================================
- Hits          14307    14297      -10
- Misses        25293    25352      +59
+ Partials       2955     2952       -3

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


Data view verbosity header

Adds handling of a 'verbose' boolean on the data view data retrieval calls, such that verbose = false will append an accept-verbosity: non-verbose header. This should not be a breaking change since all existing call routes should map to the new route with verbose = true, which was (and is) the default.

elected to not implement an entirely new system of header handling like the python library, but instead simply accrue a bit of tech debt for now.

Should we use 'Data Hub' instead of 'OCS' for the added code/text?

yes to Data Hub


docs / configuration

https://the-control-group.github.io/voyager/docs/v0.10/#getting-started-configuration
says

With a new install of voyager you will have a new configuration file located inside at config/app.php

where it probably should say config/voyager.php

Did you run this command to force Voyager publishing the configuration file?
If you migrate from 0.9 to 0.10 run this command
php artisan vendor:publish --provider="TCG\Voyager\VoyagerServiceProvider" --force
Or if you are fresh install run this command
php artisan vendor:publish --tag=voyager_assets --force

this is just an issue in the docs - everything working fine.
please read again - it's about the sentence quoted.. ;)

@drahdiwaberl, if you'd like to open a PR for this, I'm more than happy to let you have credit for the commit!

thanks for the heads up @fletch3555, didn't realize the docs were in the repo either..
still new to all this git-stuff.. forked, edited, commited in my fork - but how to create a PR over here now? when i click "new PR" i can only compare.. :(
that's my commit fwiw: e86daef23dd405af1efd7e2e332c785c4d720855

ok.. got it.. kind of.. ;)

Perfect, thanks!  It's been merged


AJ-1074 - Have WDS manage certain config variables on its own vs getting them from Leo

I choose to use Spring Profiles since it is built in functionality that provides easy configuration per profile. The main change that we will need in Leo is for Leo to provide the profile name using the following env variable "spring_profiles_active". Based on that value WDS will first load the default application.yaml and then the specific profile (specific profile will overwrite any values application already defined, for example in local profile I am setting workspace_id)
I created 4 new profiles:

local (should be nice since now we only need to set 1 env variable to run locally, this profile will care of the rest)
dev
prod
bee

Will need to make change in Leo to exclude all the values moved to profile and instead set the spring_profiles_active for WDS and provide a BEE name when one is present.
Reminder:
PRs merged into main will not automatically generate a PR in https://github.com/broadinstitute/terra-helmfile to update the WDS image deployed to kubernetes - this action will need to be triggered manually by running the following github action: https://github.com/DataBiosphere/terra-workspace-data-service/actions/workflows/tag.yml. Dont forget to provide a Jira Id when triggering the manual action, if no Jira ID is provided the action will not fully succeed.
After you manually trigger the github action (and it completes with no errors), you must go to the terra-helmfile repo and verify that this generated a PR that merged successfully.
The terra-helmfile PR merge will then generate a PR in leonardo.  This will automerge if all tests pass, but if jenkins tests fail it will not; be sure to watch it to ensure it merges. To trigger jenkins retest simply comment on PR with "jenkins retest".

This is gonna be so great!  Thanks for working on this.  I like the changes in general but agree with @calypsomatic's observation that the TDR URL might need to be updated.  Approving under the assumption that you'll work that out :)

A few comments inline - overall I like this approach and am so glad to see it happening.
We should review everything Leo sends and see if anything else can move over - for instance, the instrumentationEnabled value.
A kinda pedantic note: I don't think that Leo should know anything about WDS's Spring profiles. Leo should just send an "env" specification of prod, bee, dev, etc. …. then it's up to WDS and WDS's Helm chart to translate the "env" into a profile. This gives use more freedom in the future to interpret Leo's "env" in different ways.

do we actually use instrumentationEnabled? I cant seem to find it referenced anywhere in terra-helm.

do we actually use instrumentationEnabled? I cant seem to find it referenced anywhere in terra-helm.

I think you're right. From memory, we had problems coordinating delivery of the instrumentationEnabled out of Leo, so we bypassed it and did our own thing, detecting the environment based on the Sam url and turning Sentry on/off condition on the environment: https://github.com/DataBiosphere/terra-workspace-data-service/blob/ff233679c956e4d35ebd24c9ee875903d017efb5/service/src/main/java/org/databiosphere/workspacedataservice/SentryInitializer.java#L52
So, we could revisit instrumentationEnabled and use that instead of our environment-detection, or just remove it