The mraa_platform_t type should be a struct or string, not an enum

The type mraa_platform_t that defines a platform should be designed for extensibility, by being a struct that can be defined in a per-platform header, or by being a string that can be managed via a registry within the library. Right now it's an enum, which requires recompilation of the library to extend for a new platform, can cause binary-incompatibility between builds of the library (if new cases are added within the enum), and can cause conflicts between forks of the library (if multiple forks add a new case to the enum with the same value for different purposes).
For example, I might have a Numato Labs USB GPIO device, and I might consider extending libmraa to work with it. However, in addition to implementing that support in general, I'd also have to add an entry to mraa_platform_t for it. If I had done so prior to Raspberry Pi support, I might have decided my device is element 5 — and then Raspberry Pi would have also been added at element 5, causing a conflict.

Yes, I think in principle this isn't a bad idea. Some care will need to be taken as to not break any existing usages of the API.some negative feelings.
As platforms should now already define a string within there board configuration, I see less of a need for this.
Perhaps @arfoll will have stronger feelings for keeping this practice around.

Even if the existing API needs to be kept, it (and the enum) can be marked __attribute__((deprecated)) (for compilers that support it, eg modern cc and clang) and implemented as indices into the registration table for binary compatibility. Existing code would still work, new code would be discouraged from using the old API, and new platforms wouldn't add to the problem by defining their own enum value.

My suggestion would be to keep mraa_platform_t as it is, custom platforms would regsiter as MRAA_CUSTOM_PLATFORM and then use the platform name to indentify themselves. It's also a good way to check we're running on something user defined.

Since these are enums right now, there's a constant generated in the binary that invokes the library, not a symbol that's looked up by the dynamic loader.


Add colors to slices/git_status

This patch will set colors in the git status slice as follows:

Can you help me?
I can't get git_status  correctly, do you know why?

You are in a Git repo, right?
Can you provide more information to understand the problem?

hmm, is there a simpler way to place color highlights on a per slice bases? say a user defined method.
like for example
    let g:promptline_preset = {
            \'a'     : [ ${wrap}32${end_wrap} promptline#slices#jobs(),
                       \ promptline#slices#python_virtualenv(),
                       \ '$USER' ],
            \'b'     : [ promptline#slices#cwd() ],
            \'c'     : [ promptline#slices#vcs_branch(),
                       \ promptline#slices#git_status(),
                       \ '${wrap}32${end_wrap} $(git rev-parse --short HEAD 2>/dev/null)'],
            \'warn'  : [ promptline#slices#last_exit_code() ],
            \'x'     : ['%*'],
            \'z'     : [ promptline#slices#host() ]}

oh it does work!

I would think that something like this would work and it does, except that the wrap doesn't actually change the color of the text as expected, Would expet this to work because it works with
${wrap}35${end_wrap}%*
\ '$(temp=$(git rev-parse --short HEAD 2>/dev/null) && [ ! -z '$temp' ]
   \  && echo \\\${wrap}32\\\${end_wrap}$temp; unset temp || echo )'


channel update, role update.

I'll make a note of this for the rewrite!

Clone of #4, planned for the rewrite


The extension has stopped working on TFS version 16 since the latest update

Team Calendar by Microsoft DevLabs failed to load.

Bump

Has stopped working for TFS 2018 as well

TFS18 here, not working either. Please revert change or help correct. There are no traces available we can provide other than "Team Calendar by Microsoft DevLabs failed to load"

Hi! we are working on it.

All, we decided to revert the latest change to resolve the issue it caused for Azure DevOps 2018 and 2019. Can you check that the Calendar look ok for you again with the 2.0.22 version?

^ It's still not working. Do we have to uninstall and reinstall?

Please do, we tried that and for us it's loading as expected. Which Azure DevOps/TFS version are you running?

If I uninstall, will I lose existing entries in the calendar?
Microsoft Visual Studio Team Foundation Server
Version 16.131.28601.4

The uninstall/reinstall did not work for us unfortunately.  Thank you for continuing to work on this.

For testing purposes I installed it fresh in a new collection. After seeing it's working fine I went to check the previous impacted collection. To my (good) surprise the calendar function was also corrected in the other collections. I'm on TFS2018.

Thanks @raygarcia-01 for confirming. Closing the issue based on this confirmation.


Equivalent not retrieving correctly

Hello!
Maybe I'm misunderstanding how to use Equivalent correctly but the following fails and I'm not sure why:
#[test]
fn test_cache_key() {
  #[derive(Debug, Clone, Hash, PartialEq, Eq)]
  struct MyKey(u64, u8);
  impl Equivalent<u64> for MyKey {
    fn equivalent(&self, other: &u64) -> bool {
      self.0 == *other
    }
  }
  impl Equivalent<MyKey> for u64 {
    fn equivalent(&self, other: &MyKey) -> bool {
      *self == other.0
    }
  }
  impl Equivalent<u8> for MyKey {
    fn equivalent(&self, other: &u8) -> bool {
      self.1 == *other
    }
  }
  impl Equivalent<MyKey> for u8 {
    fn equivalent(&self, other: &MyKey) -> bool {
      *self == other.1
    }
  }

  let cache = Cache::new(10);
  let key = MyKey(1, 2);
  let value = "hello".to_string();
  cache.insert(key.clone(), value.clone());
  assert_eq!(cache.get(&1u64), Some(value));
}

Fails with:

assertion left == right failed
left: None
right: Some("hello")

For X and Y to be equivalent their hash must also match. Similar to "abc" as str and abc as String.

Ah ok. I guess i can't do what I wanted and have two different ways of retrieving an entry.
Thanks!


ImportError: cannot import name frombuffer_empty

I get the following import error with scikit-learn==0.19.0.
Traceback (most recent call last):
  File "test.py", line 1, in <module>
    from auto_ml import Predictor
  File "/home/jdoepke/Development/auto_ml_test/venv/lib/python2.7/site-packages/auto_ml/__init__.py", line 6, in <module>
    from auto_ml.predictor import Predictor
  File "/home/jdoepke/Development/auto_ml_test/venv/lib/python2.7/site-packages/auto_ml/predictor.py", line 32, in <module>
    from auto_ml import DataFrameVectorizer
  File "/home/jdoepke/Development/auto_ml_test/venv/lib/python2.7/site-packages/auto_ml/DataFrameVectorizer.py", line 11, in <module>
    from sklearn.utils.fixes import frombuffer_empty
ImportError: cannot import name frombuffer_empty

It looks like they've dropped this function along with support fornumpy<1.8.

oh sweet! i didn't realize they'd cut a new release.
bummer that they cut that function without a deprecation warning.
i'll see if i can fix this up today. thanks for letting me know! in the meantime, everything should work fine on scikit-learn==0.18.2 as a workaround.
out of curiosity, what was your favorite part of the new release?

This is still not fixed :(  when will this be fixed? Cheers.

@omarcr yeah, it ended up being a more involved fix than i expected, because a couple other libraries also chose that week to release their own new versions that broke existing codebases. then i left for the desert for vacation for a while without internet access :)
it's fixed now, and available on pypi as version 2.6.0!


Update API guide

Forgot to update the API guide following changes in #287 #304
This resolves #316

Testing it out; everything seems to work except renewing tokens.  I had an implementation of renew requests that worked in the last version, but now when attempting to renew, I get a 500 error and this text in the phx.server:
[info] POST /api/v1/session/renew
[debug] Processing with SpadesWeb.API.V1.SessionController.renew/2
  Parameters: %{}
  Pipelines: [:api]
[debug] QUERY OK source="users" db=0.3ms
SELECT u0."id", u0."unconfirmed_email", u0."email_confirmed_at", u0."email_confirmation_token", u0."password_hash", u0."email", u0."alias", u0."inserted_at", u0."updated_at" FROM "users" AS u0 WHERE (u0."id" = $1) [25]
test: "Inside Create"
[info] Sent 500 in 10ms
[error] #PID<0.1709.0> running SpadesWeb.Endpoint (connection #PID<0.1708.0>, stream id 1) terminated
Server: localhost:4000 (http)
Request: POST /api/v1/session/renew
** (exit) an exception was raised:
    ** (FunctionClauseError) no function clause matching in Plug.Conn.put_private/3
        (plug) lib/plug/conn.ex:333: Plug.Conn.put_private(:ok, :api_auth_token, "c81a6832-2972-4f67-8850-ec096f58b759")
        (spades) lib/spades_web/api_auth_plug.ex:34: SpadesWeb.APIAuthPlug.create/3
        (spades) lib/spades_web/controllers/api/v1/session_controller.ex:34: SpadesWeb.API.V1.SessionController.renew/2
        (spades) lib/spades_web/controllers/api/v1/session_controller.ex:1: SpadesWeb.API.V1.SessionController.action/2
        (spades) lib/spades_web/controllers/api/v1/session_controller.ex:1: SpadesWeb.API.V1.SessionController.phoenix_controller_pipeline/2
        (phoenix) lib/phoenix/router.ex:288: Phoenix.Router.__call__/2
        (spades) lib/spades_web/endpoint.ex:1: SpadesWeb.Endpoint.plug_builder_call/2
        (spades) lib/plug/debugger.ex:122: SpadesWeb.Endpoint."call (overridable 3)"/2
        (spades) lib/spades_web/endpoint.ex:1: SpadesWeb.Endpoint.call/2
        (phoenix) lib/phoenix/endpoint/cowboy2_handler.ex:42: Phoenix.Endpoint.Cowboy2Handler.init/4
        (cowboy) /home/mmr/dev/spades/backend/deps/cowboy/src/cowboy_handler.erl:41: :cowboy_handler.execute/2
        (cowboy) /home/mmr/dev/spades/backend/deps/cowboy/src/cowboy_stream_h.erl:320: :cowboy_stream_h.execute/3
        (cowboy) /home/mmr/dev/spades/backend/deps/cowboy/src/cowboy_stream_h.erl:302: :cowboy_stream_h.request_process/3
        (stdlib) proc_lib.erl:249: :proc_lib.init_p_do_apply/3

The error is occurring in api_auth_plug.ex, in the create function.  However, this function runs and works fine when I register a new user.  Maybe something is different about the conn when renewing?
Here are my current implementations:
api_auth_plug.ex
session_controller.ex

Oops, change conn         = PersistentSessionCache.delete(store_config, renew_token) to just PersistentSessionCache.delete(store_config, renew_token).
I’ll update the guide when I’m back.

Ok, it should be conn         = delete(conn, config) instead of conn = PersistentSessionCache.delete(store_config, renew_token). I've updated the guide, let me know if it all works as expected now!

Everything with renewing works after making that change.  I had to change one thing in the api_auth_plug_test.exs file.  At the end of the test:
old
    assert {_conn, nil} = APIAuthPlug.renew(renew_conn, @pow_config)
    assert {_conn, fetched_user} = APIAuthPlug.fetch(auth_conn, @pow_config)
    assert fetched_user.id == user.id

new
    assert {_conn, renewed_user} = APIAuthPlug.renew(renew_conn, @pow_config)
    assert renewed_user.id == user.id
    assert {_conn, fetched_user} = APIAuthPlug.fetch(auth_conn, @pow_config)
    assert fetched_user.id == user.id

Sorry for the back and fourth, I finally tested it all myself and this is how renew should look (nothing outside the APIAuthPlug should change):
  @doc """
  Create a new token with the provided authorization token.

  The renewal authorization token will be deleted from the store after the user id has been fetched.
  """
  @spec renew(Conn.t(), Config.t()) :: {Conn.t(), map() | nil}
  def renew(conn, config) do
    renew_token  = fetch_auth_token(conn)
    store_config = store_config(config)
    res          = PersistentSessionCache.get(store_config, renew_token)

    PersistentSessionCache.delete(store_config, renew_token)

    case res do
      :not_found -> {conn, nil}
      res        -> load_and_create_session(conn, res, config)
    end
  end


add a slide, add a file

created a branch, created a file and made a commit, and opened a pull request

created a branch, created a file and made a commit, and opened a pull request

created a branch, created a file and made a commit, and opened a pull request


[Audit]: L-02 Inconsistent Implementations in ERC-721 Extension

What is the feature you would like to see?
The Stylus library ERC-721 extensions are not consistent with the respective functionality of the Solidity library.
These inconsistencies were identified:
• In the uri_storage extension, the token_uri() function directly returns the value from storage but omits key checks:
◦ It does not verify whether the token exists, which is handled in the Solidity implementation.
◦ It does not handle base URI concatenation like the Solidity version. Instead, it directly retrieves and returns the stored token URI without constructing the full URI.
• There is a mismatch in the implementation of ERC721Metadata :
◦ The Rust implementation exposes the base_uri function. In the Solidity version, URIs are only accessible by token ID when the token exists. Not exposing
baseURI is generally advisable, as revealing it prematurely can leak sensitive NFT data before minting. This can enable advanced users to time their minting to acquire more desirable NFTs.
◦ The Rust version lacks the tokenURI function by default, which may cause integration issues.
Consider aligning these implementations with the Solidity library to ensure consistency and mitigate potential risks.
Contribution Guidelines

[X] I agree to follow this project's Contribution Guidelines

Closed by https://github.com/OpenZeppelin/rust-contracts-stylus/pull/333


ValueError: could not broadcast input array from shape

Hello,
Thank you for providing your code. I have been able to successfully training and evaluate data using the VOC2011 and VOC 2012 datasets with the model "AtrousFCN_Resnet50_16s".
I am working on training using my own data and the model "AtrousFCN_Resnet50_16s". I have a series of rgb .jpgs which I have segmented similarly to the VOC2011 and VOC2012 datasets. I am training for 3 classes (G1, G2, and no data) which are represented by 3 colors (purple, green, black), the first of two do not match the colors of the VOC models and are new categories. I should add that following the VOC data, I've also included a VOID category that is an outline around my objects of interest.
I have generated code to match the format of the VOC2012 dataset call in train.py. In this duplication, I have also changed the number of classes to 3:
if dataset == 'Grapes':
train_file_path = os.path.expanduser('~/path/to/my/data/train.txt')
val_file_path   = os.path.expanduser('~/path/to/my/data/val.txt')
data_dir        = os.path.expanduser('~/path/to/my/data/JPEGImages')
label_dir       = os.path.expanduser('~/path/to/my/data/SegmentationObject')
data_suffix='.jpg'
label_suffix='.jpg'
classes = 3
When I run my code, I get an error in the SegDataGenerator which reads:
ValueError: could not broadcast input array from shape (350,350,3) into shape (350,350,1)
I've tracked back and the error occurs here in the code:
        if self.loss_shape is not None:
            y = np.reshape(y, self.loss_shape)

        batch_x[i] = x
        batch_y[i] = y

I noticed that in your COCO implementation, you added loss_shape and I added "loss_shape = (target_size[0] * target_size[1] * classes,)" to the configuration, but now I get a new error:
ValueError: Cannot feed value of shape (1, 367500) for Tensor 'bilinear_up_sampling2d_1_target:0', which has shape '(?, ?, ?, ?)'
Do you have any suggestions for what I need to do so that I can train on my own data? I might add that my input data has fewer rows and columns than the VOC data by about 50%.
Thank you for your response.

I would add that after some detective work, I've tracked the error back a little further and found that it is thrown during BilinearUpSampling2D() in BilinearUpSampling.py. As an experiment I modified the the model code to drop the Bilinear Upsampling step, and the error then appeared in the previous convolution step. This makes me wonder if the problem is with (x). Do you have any suggestions on where to proceed from here?

Update: The above problem was unrelated to loss_shape. I figured out through some trial and error that the format of the segmentation data must have a color index between 1-256 instead of RGB. Just updating this here in case someone is putting their own training data together. Though, it would be useful if there was a better descriptor of how this code uses loss_shape/how the loss function is working in here. Thanks!

Could you elaborate on exactly the formats you're discussing here?

Sure. I created training data using RGB .jpg format images that I downloaded from the web. I took the raw .jpg files, and using GIMP, created .jpg segmented images that were RGB format. I converted these to .png to match the format that the code was written to utilize. I then banged my head on my desk for a while until I thought to examine the image properties of the VOC2012 segmentation data and compare it to my own data. I found that while my data was RGB, the VOC data was Indexed color (256 colors). I wrote a short python script that read in the jpgs and converted to 256 colors .png files (below). I am currently training and on epoch 59/250. Not sure about success yet - but there it is. I do have concerns that when I converted from RGB to 256 colors I accidentally matched a color in the VOC data because I picked colors using RGB - I will be checking that next.
#script to batch convert to RGB .jpg images to .png 256 color images.
WD = "~/SegmentationObject/"
os.chdir(WD)
files = glob.glob ('*.jpg')
for infile in files:
file, ext = os.path.splitext(infile)
im = Image.open(infile).convert('P',colors=256)
im.save(file + ".png")

Oh yeah that's a tricky one! For others reading, the png values are actually single channel ids, which are reused in Pascal VOC as class ids. What you see when you look at a png files are the values resulting from a lookup into what's known as a color palette which is a map from id to a color.
jpg is a bit risky to use for segmentation data because it may change colors depending on compression settings, and thus identify a different class. I think python pillow can be used for format conversion and creating the palette.

Yup! And, somewhat ironically, the .jpgs files I initially created were maximum quality and histograms of the colors showed my 3 distinct classes perfectly - but converting from .jpg to .png using PIL introduced new colors (for example, band 84 was cut into bands 83 and 84). As a work around, I managed to use quantize in PIL to convert my .jpgs to .pngs without loss (i.e. new colors) - but I have very little control over the class IDs and for palette I can only use an "adaptive" or "web" palette (see PIL readme). One major problem I also had was that two of my color classes were different enough in RGB that quantize converted my green and purple classes differently.  I don't have any examples I can share, but with my green colored class, quantize combined the green colors with the VOID outline from VOC, but with my purple class, quantize kept the classes separate. In the end, I went back and manually recolored my images using the color select and bucket tools in GIMP. Another option would have been to convert into numpy format - but I wasn't sure how the COCO data was handled in the main code, and I didn't want to open a new can of worms.
Below is my new code I used to convert .jpg to .png:
#convert to 3 color palette index from PIL import Image import glob, os WD = "C:/Users/burke/PycharmProjects/keras/testing/keras-fcn-master/Datasets/backup/Grapes - Copy/SegmentationObjectGrapesoneColor/" os.chdir(WD) files = glob.glob ('*.jpg') for infile in files:     file, ext = os.path.splitext(infile)     im = Image.open(infile).quantize(colors=3)     im.save(file + ".png")

Wow, thanks for the detailed explanation! I'm sure that will help someone out in the future.

@bgr33r
Thank you very much for sharing you knowledge, I met this problem when I use this code for training 2 classes images.


Fix example

Couple of typos...

Fixed merge conflict.

@diekus any idea who to ping to merge this?

I'll get that merged @marcoscaceres ! Thanks for the review!


runtime: sema: many many goroutines queueing up on many many distinct addresses -> slow

Hello up there. libcsp claims to be 10x faster on a benchmark involving sync.WaitGroup for a divide-and-conqueror summation program. I've analyzed the profile and most of the time is being spent in runtime.(*semaRoot).dequeue and runtime.(*semaRoot).queue triggered by calls to sync.WaitGroup .Done and .Wait. The benchmark uses many (~ Ngoroutines) different WaitGroups and semaphores simultaneously.
Go commit https://github.com/golang/go/commit/45c6f59e1fd9 says

There is still an assumption here that in real programs you don't have many many goroutines queueing up on many many distinct addresses. If we end up with that problem, we can replace the top-level list with a treap.

It seems the above particular scenario is being hit in this benchmark.

What version of Go are you using (go version)?

$ go version
go version go1.14.2 linux/amd64

Does this issue reproduce with the latest release?
Yes
What operating system and processor architecture are you using (go env)?
go env Output
$ go env
GO111MODULE="off"
GOARCH="amd64"
GOBIN=""
GOCACHE="/home/kirr/.cache/go-build"
GOENV="/home/kirr/.config/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOINSECURE=""
GONOPROXY=""
GONOSUMDB=""
GOOS="linux"
GOPATH="/home/kirr/src/neo:/home/kirr/src/tools/go/g.env"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/home/kirr/src/tools/go/go"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/home/kirr/src/tools/go/go/pkg/tool/linux_amd64"
GCCGO="/usr/bin/gccgo"
AR="ar"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build136588881=/tmp/go-build -gno-record-gcc-switches"

What did you do?

Ran benchmarks in libcsp.
What did you expect to see?
Libcsp and Go versions comparable in terms of speed.
What did you see instead?
Go version 10x slower.

CC @aclements @mknyszek @dvyukov

Storing part of the data on the side mapped using a global container is unnecessary overhead and contention. sync.Cond removed all contention and O(n) behavior with sync.syncSema in a20b4a6a9d (nowadays sync.notifyList). We could do the same for all other sync primitives.

@dvyukov thanks for feedback. Glad to hear there is a good path forward with embedded wait queue heads.


CSH-5293: Add disable-fullscreen-checkbox property

My impression from earlier discussions was that we would not turn the fullscreen property into a component property but make it hardcoded in the editor.

Oh really? We should have added a comment into the description then as we did for parallax property. What to do now?

Not sure what we discussed. Might make sense. Would it be a lot of work to change?


TLS authentication with certificates as identifiers

Extends current TLS authentication where acra may starts with specified from cli params client_id which used for all incoming connections. This PR extends it and allow to start acra without static client_id and use data from certificates to map them to keystore identifiers/keys. PR contains 2 implementations of extracting data from certificates: common name and serial numbers, which should be chosen at startup (cli params not added yet). And one implementation of converting these values to acceptable format of ids using hex encoder (to allow non ascii printable values like serial numbers) and hash function (to allow values which longer than 256 length).
A little bit refactored unit-tests to re-use same common function which verify wrapper's logic, added helpers to generate tls certificates in golang to test all specific cases related to certificate fields (@iamnotacake you can re-use them if need^)
Done:

validation incoming certificate (deny CA certificates or with incorrect keyUsage/extKeyUsage values)
identifier fetching from certificates (common name, serial numbers)
encoding identifier values to acceptable formats of clientID

Todo:

update cli args descriptions
extend tls configuration via CLI to configure algorithm of extracting data from certificates
update changelog
add integration tests

Also, projecting into the future, what will be a migration strategy for users which need to change their certificate subject?
Acra client IDs per se can be expected to be unchanging. However, the certificates might change due to some external reasons not connected with Acra. For example, the users might procure their certificates from a third-party CA, which one day adds or removes some field from distinguished names for newly issued certificates. The next certificate rotation will then result in a different client ID, resulting in unexpected service disruption.
It is easy to say "just don't change your certificate subject name", but that's kinda limiting and we'd better have a better answer. Some users might not want to get their own PKI just to run Acra without extra risks.
Do I remember correctly that client ID is not used for data encryption, or anything else other than locating the appropriate keys in the keystore? That is, if the certificate subject name changes, all the users need to do is to rename the keys to use the new computed client ID? If that's the case then certificates changes are not fatal. However, the users will need a way to 1) figure out client IDs for both old and new certificates, 2) rename the keys once they confirm the client ID change.

Yes, clientID should be unchanged, and this value used in acra-ee in tokenization as context data. And one of the future plans to merge clientID/zoneID usage and use them identically.

Another point here is that while client IDs do not affect the encrypted data, zone IDs do affect it (they are used as associated context for AcraStructs). Thus, if zone IDs need to change, the data will need to be re-encrypted.

And to use DN which allow to rotate certificate (new private key, new public key, signature, serial number) and re-use same DN identifier and avoid rotating/changing acra's keys.

Here's an idea that came to me just now. How about letting the user choose which parts of the DN should be included into synthetic client ID? That way the users might get a chance to have some constant part of their certificates which they can commit to being immutable. Say, only the "organisation name" and "common name" parts, ignoring everything else. Though, this comes with issues on its own: how to deal with custom DNs, how to format the extracted data pieces, etc.
Anyhow, I don't feel that this PR is a place for design discussions so I'll leave it at that. Let's discuss this in chat or something. For now, I believe it's enough to mark this functionality experimental and require the users to explicitly opt-in.

Here's an idea that came to me just now. How about letting the user choose which parts of the DN should be included into synthetic client ID? That way the users might get a chance to have some constant part of their certificates which they can commit to being immutable. Say, only the "organisation name" and "common name" parts, ignoring everything else. Though, this comes with issues on its own: how to deal with custom DNs, how to format the extracted data pieces, etc.

Yeah, there a lot of ways to do it and that is why it implemented with interfaces and several implementations which may be replaced in a future. But for now we don't really know how users will use it and it is redundant to implement a lot of strategies when most of them will not use

But not understand which prefixes you want to add? Which collisions it will help to avoid?

I was thinking about prefixing hashed identifier values with a constant:
 h := sha512.New()
+h.Write([]byte("client ID:"))
 h.Write(identifier)
 identifier = h.Sum(nil)

so that the hashes produced here are less likely to collide with any other SHA-512 hashes, computed and used elsewhere for other purposes. This binds hashes to some sort of "context".
It's not strictly necessary, but I think it's still good hygiene for cases when hash functions are used as something other than a simple checksum.

I was thinking about prefixing hashed identifier values with a constant

Agree, will add. I thought that maybe you talk about prefix for result value, like clientID_<hex_value>, which will help to filter/search values in KV storages and separate from other values, or a little bit human-readable values for FS storage) But probably will add both prefixes

It's not strictly necessary, but I think it's still good hygiene for cases when hash functions are used as something other than a simple checksum.

Hm, I remembered why I didn't do it... Main thought was to not complicate generating these values and allow to automate it by existing tools, without any acra-tools. Because user will need to call acra-keystore and generate keys specifying correct client_id and it requires to know how to convert info from certificate to result value. If will be used tls authentication then user will know serial number or DN, for example, and then generate acra keys with this metadata. And it easier to just extract info from cert by openssl and pass it to sha512sum and use the result as --client_id param for keystore.
But after changes, it will need more steps or we should provide some tool for that

I thought that maybe you talk about prefix for result value, like clientID_<hex_value>

That too. Though, I don't know how much useful it will be since client IDs like "04f05825..." (128 characters!) are going to be very conspicuous, and I don't imagine why we'd need an easy way to filter out those specifically to see which 'normal' IDs remain.

Hm, I remembered why I didn't do it... Main thought was to not complicate generating these values and allow to automate it by existing tools

You know, you just made me realize that those prefixes are probably not needed after all.
Let's look at it like this: if client ID syntax was flexible enough, we'd be using DNs directly. The certificate content is basically public, so there is no point in 'hiding' the value of DN, it can be assumed to be known to the attacker (as well as any hash derived from it, in whatever complex algorithm is there). So why all the additional complexity?
Please disregard my comments about prefixes before hashing.

@vixentael , I updated messages by 1 commit to avoid running tests by each commit from suggestions


Update RxSwift & RxCocoa dependencies to 4.4

Updates RxSwift & RxCocoa dependencies versions to 4.4

Thanks very much for the pull request. But this changes will tie people to versions 4.4 upwards and that's exactly what we don't want todo because there are still people using the version 4.3.x of RxSwift. The way it is right now supports all versions of 4.x.x


tests: retry leader of region

After doing some ConfChanges(eg. AddNode), leader_of_region may not find leaders if it gets stale store_ids.

LGTM

ping @overvenus

I am currently busy with other stuff, let's close it until I have time to continue.


Add runGlobal helper

Closes: https://github.com/stancl/tenancy/issues/487
I found some free time to create a helper for when a tenant has been identified and you want to run a callback on the central application.
I'm not quite sure about the naming tho:
Other naming possiblities considered:

runAsCentral($callback)
onCentral($callback)
runCentral($callback)

Hey @stancl I believe your comments have been addressed now.
Can you take a second look?

there are some other changes that I'd want here, but this is a small amount of code so it's literally easier to just write it than to explain the changes
appreciate the effort, closing in favor of #526


Methods which have cached answers for Command

Command should have methods that cache their results before returning/check the cache before making an http call to Github's API.
This would greatly refactor the code. E.g. method repo() : JsonObject is necessary to get rid of the DTO JsonObject repo which is currently passed around (along with the Command) to save method calls.

@charlesmike hi

@charlesmike hello

@charlesmike hello

Hi, @amihaiemil! I can help you index your Github-hosted website, provided that the repository name respects the format owner.github.io (or has a gh-pages branch) and the command is given by the repo's owner.

@charlesmike index

@charlesmike index

@charlesmike hello

@charlesmike index

@charlesmike index

@amihaiemil thank you for the command, the indexing process started just now. I will let you know of the outcome shortly.

@charlesmike index

@amihaiemil Some steps failed when precessing your command. See logs for details.

@charlesmike hello

@charlesmike hello

Hi, @amihaiemil! I can help you index your Github-hosted website, provided that the repository name respects the format owner.github.io (or has a gh-pages branch) and the command is given by the repo's owner.

@charlesmike index

@charlesmike index

@amihaiemil thank you for the command, the indexing process started just now. I will let you know of the outcome shortly.

@charlesmike index

@amihaiemil Some steps failed when precessing your command. See logs for details.

@charlesmike pls index this page

@charlesmike pls index this page

amihaiemil the given page does not seem to belong to the website hosted in this repo!
Make sure that the link starts with http:// or https:// followed byowner.github.io/... Do not use the CNAME or any other link, even if it redirects toa page from this repo.
If this condition is met and it still doesn't work please open an issue here.

@charlesmike hi there

@charlesmike hi there

Hi, @amihaiemil! I can help you index your Github-hosted website, provided that the repository name respects the format owner.github.io (or has a gh-pages branch) and the command is given by the repo's owner.

@charlesmike pls index this page

@charlesmike pls index this page

amihaiemil the given page does not seem to belong to the website hosted in this repo!
Make sure that the link starts with http:// or https:// followed byowner.github.io/... Do not use the CNAME or any other link, even if it redirects toa page from this repo.
If this condition is met and it still doesn't work please open an issue here.


Question about content_cluster_name argument in delete_all_docs method

Hello,
In the doc reference API, the class classvespa.application.Vespa has a method delete_all_docs with an argument called content_cluster_name. I'm not sure how to know what's my cluster name since when initializing the Application Package or when feeding the data, there is no such argument. I've checked the code and the vespa server doc, but I didn't find answers. Would be nice to have more information/examples about this content_cluster_name argument.
Thanks

off the bat, I think it is the same as the schema name, so you can try that. will update documentation regardless. thanks for reporting!

Will try that, thanks

Great! thanks!


next/release

:tada: This PR is included in version 1.28.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Cannot use z.array() as first-level schema

[X] Before posting an issue, read the FAQ and search the previous issues.

Description
I try to use a schema to validate a simple array, but it fails if I don't wrap it in an object. Here is what does not work:
const awardsSchema = z.array(
   z.object({
      id: z.string()
   })
)

const awards: Award[] = await awardsService.getAll()
const form = await superValidate(awards, zod(awardsSchema))

Causes a TS error on awardsSchema:

But if I wrap the array inside an object, everything is fine:
const awardsSchema = z.object({
   awards: z.array(
      z.object({
         id: z.string()
      })
   )
})

const awards: Award[] = await awardsService.getAll()
const form = await superValidate({ awards }, zod(awardsSchema))

I found that the issue #369 is kind of similar, although using the workaround that the OP did is not working in my situation.
I found nothing relative to this in the documentation.
I tried updating to v2.14.0 but no luck
I am left to think that maybe ZodArray is not a valid ZodObjectTypes, expected by zod() adapter?
Sorry if I missed something obvious 😅

The validation schema wraps a single form as an object with properties, so you're correct, arrays cannot be used on top-level.


Make run.ps1 More Resilient To Transient Startup Errors

Issue: https://github.com/rancher/rancher/issues/39658
Problem:
When provisioning windows worker nodes in vSphere, a graceful reboot of the node will result in the Rancher UI showing an error message and declaring the node as failed. This only occurs when restarting the node 'gracefully' via vmware tools. This error is inconsistent, but happens more often than not.
A few conditions contributed to this issue

Restarting nodes using vmware tools is more CPU intensive than restarting manually using Restart-Computer. Additionally, restarting using the vmware tools seems to result in reconfiguration of several network interfaces, which is not seen when restarting manually using Restart-Computer.

The run.ps1 script will stop the RKE2 service and then restart it somewhat quickly, with only about 5-10 seconds between the two operations.

The combination of the above two symptoms can lead to the RKE2 agent failing to create the load balancer due to the required port not being freed in time. The exact error seen is
{listen tcp <IP_ADDRESS>:6444: bind: Only one usage of each socket address (protocol/network address/port) is normally permitted.} {Error starting load balancer: listen tcp <IP_ADDRESS>:6444: bind: Only one usage of each socket address (protocol/network address/port) is normally permitted.}
This error is seen as a failure to apply the plan, and a subsequent error in the Rancher UI is displayed. In actuality, the rke2 agent will restart itself after it fails to create the load balancer, and then will then become functional.
Solution:
Increase the period of sleep between the stopping of the service and the starting of the service. This ensures enough time is provided to the host so that the port can be freed and used again once the service is restarted. Additionally, attempt to start the RKE2 agent service multiple times, at most 5 times. This ensures that other transient startup errors are handled more appropriately, and we don't report a failing node due to a problem that can be automatically resolved given a small amount of time.
In the event that multiple attempts to start the service doesn't work, we will print out the logs of the RKE2 agent service so that support members can relay more accurate debugging information.
This change impacts the reconnection time of windows nodes slightly, increasing the total time by ~25 seconds. However, the added stability is worth this cost.
Testing:

Create a custom RKE2 cluster and register a linux node with the cp/etcd role.
Create a windows VM in vSphere, ensure all prerequisites are configured (Containers feature is enabled, elevated powershell access is obatined, VMWare tools are installed properly)
Register the vSphere node as a worker in the custom cluster
Wait for the cluster to become available
In the vSphere UI, right click on the VM and, under the Power option, select  Restart Guest OS
Ensure that the node successfully reconnects to the rancher server and no errors are seen
Restart the node several times, ensuring each time a proper reconnection occurs

QA Considerations
There are a few of powershell commands that can be used to get rancher-wins and rke2 agent logs, here are some of the ones i've been using. Remember, you need to run these commands in Powershell, and not cmd. On windows server core, you can type powershell.exe to get a powershell session.
Get rancher-wins logs
get-winevent -providername rancher-wins | select-object Message | format-table -wrap

Get RKE2 agent logs
get-eventlog -logname Application -source rke2 | select-object ReplacementStrings | format-table -wrap

Regression Considerations
None, the node would consistently fail to reconnect prior to this change so trying multiple times shouldn't make it any worse.

@rancher-max would you be able to have someone take a look at this once the March releases are out?

cc: @aiyengar2

@rancher-max would you be able to have someone take a look at this once the March releases are out?

Potentially.. we'd probably need some sort of alpha/rc or something cut though to see the changes during provisioning unless Harrison has a viable way for us to test this out without that?
I'd probably defer to @sowmyav27's help as the hostbosters qa team has more expertise with vsphere+windows, but we should have bandwidth to help after our March patches are out!

I've looking into ways that we can test this without needing an RC or alpha, i'll add a new comment if I can come up with something reasonable for QA

I was able to manually create a multi-arch build of v1.24.11+rke2t1 which includes these changes that could be used for testing pre-rke2 RC. To use it you would just need to set the rancher environment variable CATTLE_SYSTEM_AGENT_INSTALLER_IMAGE to harrisonwaffel/system-agent-installer-, and then you would be able to provision a 1.24.11 RKE2 cluster on vSphere to test these changes. If QA uses this image to test we can validate the fix before merging this PR, which would be neat, and if any issues are found I can just update this PR.
Let me know what you think, otherwise we would need a new RC of the system-agent-installer since we have to pull the image in one way or another.


Update overlayfs-entrypoint.sh

Updated script to have:

Addition checks for required permissions and set if required, this should avoid unnecessary perm setting is not needed and result in quicker container start
added in error handling and leveraged gow_log function to output log information
moved all paths into variable at the beginning of the script

Otherwise its mostly the same script

So I have a question about the "/home/<YOUR USERNAME HERE>/wolf/clients/temp:/overlayfs/upper:rw" in README.md instructions; as you dont seem to use it at all inside the mounting process of overlayfs-entrypoint.sh. Im surely missing something here, just unsure what.


SQLite. Indexes are not created after the removal of the column

Calling SQLite3_DDL.prototype.dropColumn (from migration table.dropColumn('column_name')) causes actions:

create temp table without column
copy data from table to temp table
drop table
create table without column
copy data from temp table
drop temp table

Indexes are not recreated.

I can confirm the problem: after dropping a column during a migration the unique constraint on another  column went missing.
I set up a simple repository that demonstrates the error with Knex version 0.12.6. These are the steps to reproduce:
git clone https://github.com/haimich/sqlite-dropcolumn
cd sqlite-dropcolumn
npm install
./node_modules/.bin/knex migrate:latest

I also committed a log file containing the output of knex with debug=true: https://github.com/haimich/sqlite-dropcolumn/blob/master/knex.debug.log

I have the same problem..


Exploratory platform

The statement about the exploratry platform is not complaint with what staed in teh D5.2 of ACTRIS PPP. For a better consistency I modified the text in Section 1.

Great, thanks.

I'm currently working on it


Project GitHub Organization (15%)

[ ] Sufficient documentation in the top level README to explain to a stranger who you are, what this project was about, and how all of the material in the repo pertains to it.
[ ] This README should be:

[ ] Attractively formatted
[x] Include links to relevant files and repos.
[x] Include links to each of your own Github accounts AND LinkedIn accounts.

[x] Separate repositories for:

[x] Presentation and Project Organization materials.
[x] SOPs, Topologies, and other documentation.
[x] Scripts.

[ ] Each of these repositories should have attractive and informative README.md, and well labeled links to any relevant files within the repo.

[ ] Sufficient documentation in the top level README to explain to a stranger who you are, what this project was about, and how all of the material in the repo pertains to it.
[ ] This README should be:

[ ] Attractively formatted
[ ] Include links to relevant files and repos.
[ ] Include links to each of your own Github accounts AND LinkedIn accounts.

Informed team to stop using the additional repo

converted all team documents to markdown and added to wiki
fixed all hyperlinks as of now

Finished FrontPage Readme, no other repos, so no other readmes required.
Linked all SOPs to the table of contents, and videos.


Dynamic Admission Control

I recommend adding a section or at least sentence which explains to readers the order in which multiple webhooks of the same type are called. I.e., there are three validating webhooks configured in a cluster. Are they called serially? If so, what logic does the API server use to determine which goes first, second, and last?

Hi @chipzoller
What's the URL of the page that you recommend fixing?

https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/

/language en
/remove-lifecycle rotten

I think we should document that validating webhooks may be called in any order and potentially even in parallel.
/sig api-machinery


add file extensions to the #load option

Hi Eli,
I'm trying to use #load to load a specific self made C# file with a different extension,
I was trying to look for where to add this one to the available options but didn't find any.
Also,
Loading file can only work with the full path, used to work with the older AvalonEdit and Rosyln and it supports relative path.
Is there any way I can do something to enable the relative path?
Any help would be appreciated.
Thanks.

I'm not sure what you mean by file extension. It should work with any file name.
And relative path works after you save the document.


Mention that jQuery's on will not see event.data

jQuery wraps events into a home-made event object. This wrapping makes the event.data unavailable. This commit adds a little mention of that fact to help a future developer save time and frustration.

I debated that, but I thought that was maybe going too deep into jQuery's details for a package that doesn't rely on jQuery. I can change it

$event.originalEvent is already mentioned in the README, so there is a precedent. It might be useful to also mention it in the events section.

I personally don't get why this says $event.originalEvent instead of event.originalEvent. I would be tempted not to have the $.
Should I mention it once at the top like I did, or go through each event and mention event.originalEvent.data.newbody ?

I personally don't get why this says $event.originalEvent instead of event.originalEvent. I would be tempted not to have the $.

$ reinforces that it's a jQuery-ified event, and not a native one.

Should I mention it once at the top like I did, or go through each event

I think just once should be fine 👍

Updated the note as suggested.

Thanks @MaxLap!


[BUG]sysctlVmMaxMapCount: 262144 fails to set on GKE

What is the bug?
setting vm.max_map_count=262144 on gke with the security context via the helm chart currently does not work.
How can one reproduce the bug?
Steps to reproduce the behavior:

set sysctlVmMaxMapCount: 262144
set sysctl.enabled: true
Apply helm chart
sysctl error on GKE

What is the expected behavior?
Sysctl should set the vm.max_map_count
What is your host/environment?

OS: GKE
Version 1.19
Plugins NA

Do you have any screenshots?
If applicable, add screenshots to help explain your problem.
Do you have any additional context?
Current workaround is to run an init container to achieve the same goal:
`extraInitContainers:

name: ini-sysctl
securityContext:
runAsUser: 0
privileged: true
image: busybox:latest
command: ['sysctl', '-w','vm.max_map_count=262144']`

What was the issue @bluehawk27? I'll move this one into helm-charts.


Convert Pytorch to IR, get a error, may be a bug

Platform (like ubuntu 16.04/win10):
Mac 10.13.6 (17G65) cpu
Python version: 2.7
Source framework with version (like Tensorflow 1.4.1 with GPU): pytorh
Command:
python -m mmdnn.conversion._script.convertToIR -f pytorch -n net.pth --inputShape 3,224,224 -d ket

Error:
TypeError: _jit_pass_onnx(): incompatible function arguments. The following argument types are supported:
1. (arg0: torch::jit::Graph, arg1: torch._C._onnx.OperatorExportTypes) -> torch::jit::Graph
Error position:
https://github.com/Microsoft/MMdnn/blob/master/mmdnn/conversion/pytorch/pytorch_graph.py
64: def _optimize_graph(graph, aten, export_raw_ir=False):
...
124: trace.set_graph(PytorchGraph._optimize_graph(trace.graph(), False))

the param 'aten' is missing.

>>> torch.__version__
'0.4.1'

I fixed the above bug.
from torch.onnx import ONNX_ARCHIVE_MODEL_PROTO_NAME, ExportTypes, OperatorExportTypes
...
trace.set_graph(PytorchGraph._optimize_graph(trace.graph(), OperatorExportTypes.ONNX, False))

But occure othererror
ValueError: invalid literal for int() with base 10: '%204'
in:
output_shape_str = re.findall(r'[^()!]+', node.__str__())[1]
output_shape = [int(x.replace('!', '')) for x in output_shape_str.split(',')]

some nodes in my pytorch model:
%203 : Float(1, 512, 7, 7) = onnx::Add(%202, %197), scope: ResNet/Sequential[layer4]/BasicBlock[1]
%205 : Dynamic = onnx::Pad[mode=constant, pads=[0, 0, 0, 0, 0, 0, 0, 0], value=0](%204), scope: ResNet/AvgPool2d[avgpool]
%209 : Long() = onnx::Squeeze[axes=[0]](%208), scope: ResNet

This program can only handle the first type!
I think mmdnn is Incompatible with my pytorch version. it may Incompatible with my model file.
I gave up.

Seems like MMdnn cannot handle %205 %209, when output shape is unknown.

Hi @houkai, currently mmdnn does not support pytorch 0.4.1 and the adaptation to version 0.4.1 is under development. Please use pytorch 0.4.0. Thanks！

@rainLiuplus Thanks!

@rainLiuplus
when are you going to support 0.4.1?

It doesn't seem to suppport v1.0 is that correct?


make deletes checkpoint file on crash/interrupt

At iteration 496/500/500, Mean rms=0.858000%, delta=4.249000%, BCER train=13.167000%, BWER train=98.083000%, skip ratio=0.000000%,  New worst BCER = 13.167000 wrote checkpoint.

At iteration 595/600/600, Mean rms=0.841000%, delta=4.030000%, BCER train=12.671000%, BWER train=98.153000%, skip ratio=0.000000%,  New worst BCER = 12.671000 wrote checkpoint.

^Cmake: *** Deleting file 'data/chi_sim.shs_medium/checkpoints/chi_sim.shs_medium_checkpoint'
make: *** [Makefile:278: data/chi_sim.shs_medium/checkpoints/chi_sim.shs_medium_checkpoint] Interrupt

Appending || true to all lstmtraining command makes it resilient to crash, but not for interrupt.
Any idea to stop make from deleting checkpoint?

That's a good question. Normally it is good that make deletes a target when it is interrupted. That is reasonable for partially generated files like compiler or linker output. It would also be reasonable for a checkpoint file if the interrupt occurs while it is written, but in most cases a valid checkpoint file will be deleted which is indeed undesired.

It is the <model_base>_checkpoint file that gets deleted. This is the latest model file along with backup models to be used if the training runs into divergence. So, training cannot be restarted.
Iteration 256706: GROUND  TRUTH : ꦏꦢꦢꦺꦪꦤ꧀ ꦲꦶꦁ ꦔ꧀ꦒꦧꦸꦁ ꦏꦭꦶꦪꦤ꧀ = ꦗꦺꦤꦺꦁ ꦤꦺꦴꦩꦺꦂ ꦱꦶꦗꦶ ꦭꦤ꧀ ꦔꦤ꧀ꦠꦶ ꦛꦺ ꦌ ꦔ꧀ ꦤꦤ
Iteration 256706: ALIGNED TRUTH : ꦏꦢꦢꦺꦪꦤ꧀ ꦲꦶꦁꦔ꧀ꦒꦧꦸꦁ ꦏꦭꦶꦪꦤ꧀ = ꦗꦺꦤꦺꦁ ꦤꦺꦴꦩꦺꦂ ꦱꦶꦗꦶ ꦭꦤ꧀ ꦔꦤ꧀ꦠꦶ ꦛꦺ ꦌ ꦔ꧀ ꦤꦤ
Iteration 256706: BEST OCR TEXT : ꦏꦢꦢꦺꦪꦤ꧀ ꦲꦶꦁ ꦔ꧀ꦭꦧꦸꦁ ꦏꦭꦶꦪꦤ꧀ = ꦗꦺꦤꦺꦁ ꦤꦺꦴꦩꦺꦂ ꦱꦶꦗꦶ ꦭꦤ꧀ ꦔꦤ꧀ꦠꦶ ꦛꦺ ꦌ ꦥ꧀ ꦤꦤ
File /tmp/jav_java-2022-01-10ol1c1pg1/jav_java.CARAKAN_JAWA_Semi-Expanded.exp0.lstmf line 2011 :
Mean rms=0.569%, delta=1.751%, train=5.27%(17.62%), skip ratio=2.1%
Iteration 256707: GROUND  TRUTH : NAME="COLORFUL > DHEWEKE NGALAHKE SALAH Rosta DIMUNGSUH. tembang JAM JILID
File /tmp/jav-2022-01-10rb8nsh5e/jav.Trebuchet_MS_Bold.exp0.lstmf line 1216 (Perfect):
make: *** Deleting file 'data/JAV/checkpoints/JAV_checkpoint'
make: *** [Makefile:297: data/JAV/checkpoints/JAV_checkpoint] Terminated


linking hashtags

Hi
Linkifyjs is successfully creating links from strings using linkifyStr(string) , but the hashtags get linked locally, such as http://localhost/#hashtag
How can I make them link to Twitter's own domain?
thanks

You can use the formatHref option:
'This repo is #rad'.linkify({
  formatHref: function (value, type) {
    if (type === 'hashtag') {
      value = 'https://twitter.com/hashtag/' + value.substring(1);
    }
    return value;
  }
});


[Schema Registry] Update JsonSchemaSerializer Class Name

Packages impacted by this PR
Issues associated with this PR
Describe the problem that is addressed by this PR
Prepare GA release for schema registry & schema registry Json schema serializer. Change class name from JsonSerializer to JsonSchemaSerializer
What are the possible designs available to address the problem? If there are more than one possible design, why was the one in this PR chosen?
Are there test cases added in this PR? (If not, why?)
Provide a list of related PRs (if any)
Command used to generate this PR:**(Applicable only to SDK release request PRs)
Checklists

[ ] Added impacted package name to the issue description
[ ] Does this PR needs any fixes in the SDK Generator?** (If so, create an Issue in the Autorest/typescript repository and link it here)
[ ] Added a changelog (if necessary)

API change check
API changes are not detected in this pull request.


Promote access-nri-intake to 1.0.0b2 in analysis3

This PR is in prep to update the analysis3 environment to use the new beta release of access-nri-intake-catalog v1.0.0b2.

Did you cancel the checks?

Yep, checks cancelled once I saw them starting.

Package now built, restarting checks...

I had to manually restart the failed conda build. Looks like there is a delay between the push to pypi and the download from the conda build action...

Looks like it's set to go @rbeucher

I had to manually restart the failed conda build. Looks like there is a delay between the push to pypi and the download from the conda build action...

It's weird, I checked last night when it was failing, and I could find the 1.0.0b2 version on PyPI while the conda build was still complaining.

Something to keep an eye on.


Be Able to Change lighting settings with a selected key

This isn't an issue rather a suggestion, within some games. I would like to change between lightings within games as in some games I'd prefer default lighting. So, if you could please figure out a way to add something that would allow me to change the lighting version mid game.

I dont think that is possible without injecting into the game-client

That would also be very unstable hence Roblox disabled it

This isn't possible, sorry.


Cleanup rpe emb. and values.

Cleanup of the rpe variable names for the rpa flag to rpe/self.rpe and the rpe embedding to rpe_emb/self.rpe_emb.

I think our rpe implementation as is won't work correctly, so there's not too much point in merging this, as it's covered in https://github.com/EleutherAI/gpt-neox/pull/147


chore: upgrade to gradle wrapper to 7.2

Relates to #734
Summary:
This PR upgrades the gradle wrapper to version 7.2. This is a required step for #933.
Expected behavior:
No code change, application should be packaged as usual. Same tests should pass.
Please make sure these boxes are checked before submitting your pull request - thanks!

[x] Run the unit tests with gradle test to make sure you didn't break anything
[x] Format the title like "feat: [new feature short description]". Title must follow the Conventional Commit Specification(https://www.conventionalcommits.org/en/v1.0.0/).
[x] Linked all relevant issues
~[ ] Include screenshot(s) showing how this pull request works and fixes the issue(s)~

Upgrade instructions
./gradlew wrapper --gradle-version=7.2

If you want to use all, I'd suggest running:
./gradlew wrapper --gradle-version=7.2 --distribution-type=all

...and committing the result of that. It might be the same as just changing bin to all, but I'm not sure.

@barbeau  PTAL

Thanks for review @maximearmstrong @barbeau!


Bump version in prep for releasing segmented sync feature

Bump the version from 0.3.14 to 0.4.0 in preparation for releasing
the segmented sync feature. The release contains breaking API changes in
BlockHook function where an additional SegmentSyncActions argument
is passed to the function, in order to allow control over segmented
sync.

Codecov Report

Merging #127 (eb7bd01) into main (031a27f) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main     #127   +/-   ##
=======================================
  Coverage   63.50%   63.50%
=======================================
  Files          21       21
  Lines        2244     2244
=======================================
  Hits         1425     1425
  Misses        645      645
  Partials      174      174


[Test Harness] Allow placeholder application to act as a received command logger

Problem
To validate that DUT are sending the correct messages for the interaction model there is a need to log the CommandDataIB and AttributePathIB content of the invoke request.
Proposed Solution
Update placeholder applications to log all received requests when used without a specific test.

After playing with the placeholder apps, what exists is probably enough. Closing this in favour of more targeted actions if needed.


Flatcar improvements

What this PR does / why we need it:
The PR improves the Flatcar implementation to close the drift between other providers

remove containerized kubelet
removed docker service dependency
use the same containerd config and kubelet.service as other providers
allow to use the pause image as the sandbox image in containerd to gain more control over the used image

Special notes for your reviewer:
This PR was tested with Flatcar 2905.2.3 (Oklo)
Optional Release Note:

Flatcar improvements
Containerd config improvement

@moadqassem I rebased my Flatcar changes and closed the PR https://github.com/kubermatic/machine-controller/pull/1068 as we discussed today in favor of the upcoming OSM integration.
Would be nice to get this PR merged to keep the gap between our fork and the upstream as minimal as possible.

/approve

 pkg/userdata/flatcar/provider.go:681: File is not `gofmt`-ed with `-s` (gofmt)

@kron4eg fixed the fmt and a typo on the drop-in, this branch was deployed on a test cluster without any issues

/hold

@moadqassem something wrong with the PR or why did you put it on hold?

@FlorinPeter atm vSphere tests are failing due to some internal issues, which means the test will never be green, and since it has LGTM it will keep running the jobs which spam vCenter with no success. We are working on so hopefully will unhold it soon.

@moadqassem thx for the information

/hold cancel

/test pull-machine-controller-e2e-vsphere

FYI the problems that you had with vCenter other than Flatcar has been resolved. However I am gonna remove the LGTM label since this won't work without couple of changes

/LGTM cancel

@FlorinPeter Well, this won't work, the reason behind that is, for any k8s version less than 1.22.x we actually deploy docker by default not containerd, this means the systemd services (such as kubelet) assumes that the cri running on the worker node is docker not containerd thus non of those services will start. Maybe I can open another PR which will fix this issue for you but I need to validate couple of things before doing that

@moadqassem not sure if I understand it correctly. I deployed this change with Kubeone v1.3 and K8s v1.20 without any issue.

@FlorinPeter Well, this won't work, the reason behind that is, for any k8s version less than 1.22.x we actually deploy docker by default not containerd, this means the systemd services (such as kubelet) assumes that the cri running on the worker node is docker not containerd thus non of those services will start. Maybe I can open another PR which will fix this issue for you but I need to validate couple of things before doing that

@moadqassem not sure if I understand it correctly. I deployed this change with Kubeone v1.3 and K8s v1.20 without any issue.

Yeah sure and I can understand that. K1 deployed containerd as a default cri on all k8s versions unlike machine controller default options. Try change this line here from docker to containerd and see what you will get:
https://github.com/kubermatic/machine-controller/blob/master/cmd/machine-controller/main.go#L167

@FlorinPeter Well, this won't work, the reason behind that is, for any k8s version less than 1.22.x we actually deploy docker by default not containerd, this means the systemd services (such as kubelet) assumes that the cri running on the worker node is docker not containerd thus non of those services will start. Maybe I can open another PR which will fix this issue for you but I need to validate couple of things before doing that

@moadqassem not sure if I understand it correctly. I deployed this change with Kubeone v1.3 and K8s v1.20 without any issue.

Yeah sure and I can understand that. K1 deploys containerd as a default cri on all k8s versions unlike machine controller default options. Try change this line here from docker to containerd and see what you will get:
https://github.com/kubermatic/machine-controller/blob/master/cmd/machine-controller/main.go#L167

Ok now I got the issue you are referring to. Will try to see what will happen if I change it to docker to get a better understanding of the implications.

@moadqassem but this will change the default to containerd and will break users that are using docker as default, or?
I will try to check it tomorrow.

@moadqassem but this will change the default to containerd and will break users that are using docker as default, or?
I will try to check it tomorrow.

How is that a breaking behaviour? In order to use containerd in existing machines, you need to rotate your cluster in the first place, or create a new one. The part where we specify what cri we are gonna use is only at the beginning of machine provisioning. Or what do you exactly mean ?

I've rebased this PR and fixed issues mentioned by @moadqassem (albeit without changing flags defaults). So this PR is superseded by #1109.
Thanks again @FlorinPeter!

@moadqassem @kron4eg thx a lot, was on sick leave last week and was not able to handle it.
I appreciate your efforts!


POI Rotate Gizmo Pivot

Added gizmo pivot so that gizmo stays in same position when rotating
Fixes AB#2348

This fix isn't correct. The real issue is that the centroid isn't stable under different rotations. Setting it to average (not ideal) or factoring the rotation for the AABB calculations are better solutions.

using average gives pretty bad results. using AABB isn't ideal, but it's pretty good for most situations, just not rotation gizmo.
When you say "factoring the rotation for AABB calculations" , im not sure what you mean. I did do something where i moved the entire shape when rotating so that the centroid is always at the same position as the rotation gizmo, and it looks really bad.

When you say "factoring the rotation for AABB calculations" , im not sure what you mean. I did do something where i moved the entire shape when rotating so that the centroid is always at the same position as the rotation gizmo, and it looks really bad.

I meant that it should either;

Be the centre of a tight convex hull (rather than the min/max value on each axis) or;
Generate the AABB where the first 2 points (with either up or north) define the axis.

Under either of those options the centroid will remain stable during rotation.


chore: release main

:robot: I have created a release beep boop
@markdown-confluence/lib: 3.4.1
3.4.1 (2023-04-20)
Bug Fixes

Add repository information for providence (362e025)

@markdown-confluence/mermaid-electron-renderer: 3.4.1
3.4.1 (2023-04-20)
Bug Fixes

Add repository information for providence (362e025)

Dependencies

The following workspace dependencies were updated

dependencies

@markdown-confluence/lib bumped from 3.4.0 to 3.4.1

obsidian-confluence: 3.4.1
3.4.1 (2023-04-20)
Miscellaneous Chores

obsidian-confluence: Synchronize obsidian packages versions

Dependencies

The following workspace dependencies were updated

dependencies

@markdown-confluence/lib bumped from 3.4.0 to 3.4.1
@markdown-confluence/mermaid-electron-renderer bumped from 3.4.0 to 3.4.1

obsidian-confluence-root: 3.4.1
3.4.1 (2023-04-20)
Bug Fixes

Add repository information for providence (362e025)

This PR was generated with Release Please. See documentation.

:robot: Release is at https://github.com/obsidian-confluence/obsidian-confluence/releases/tag/obsidian-confluence-v3.4.1 :sunflower:

:robot: Release is at https://github.com/obsidian-confluence/obsidian-confluence/releases/tag/%40markdown-confluence/lib-v3.4.1 :sunflower:

:robot: Release is at https://github.com/obsidian-confluence/obsidian-confluence/releases/tag/%40markdown-confluence/mermaid-electron-renderer-v3.4.1 :sunflower:

:robot: Release is at https://github.com/obsidian-confluence/obsidian-confluence/releases/tag/obsidian-confluence-root-v3.4.1 :sunflower:


 When you type Vietnam into the country search box, it's not recognised.
Expected Behavior
Users should be able to search the site using Vietnam (all one word).
Actual Behavior
Vietnam is listed in the country drop down menu as Viet Nam.
Steps to Reproduce

Visit staging.openapparel.org
Search Vietnam in the country dropdown menu

Demo

Additional context
Optional. Add any other context about the problem here.

Good catch. Thank you. The wikipedia list of 2-character country codes listed used the 2-word form, which is how it got into our list.

Gosh, how intriguing!


look into improving service_fn ergonomics

trait Foo<State, Input> {
type Output;
type Error;
fn foo(ctx: Context<State>, input: Input) -> Result<Self::Output, Self::Error>;

}
To make it a bit more concrete I mean traits such as the one here.
So as a user it can be nice if you can also implement it using closures/functions such as
|| ...
|input: MyInput| ...
|ctx: Context| ...
|ctx: Context,  input: MyInput| ...
How I currently handle that at the moment is by working with an intermediate trait
trait FooFn<State, Input, A> {
type Output;
type Error;
fn foo(ctx: Context<State>, input: Input) -> Result<Self::Output, Self::Error>;

}
Which you can implement for all 4 closures as you can do all kind of dirty business with the A parameter.
You can then implement Foo for any FooFn.
That kind of approach works in most cases, but there are some scenarios
where a user will get an error that A is not known or some other related error.
The easiest solution is obviously to only ever allow a single Fn such that user would always have to give |ctx: Context,  input: MyInput| ... which honestly isn't too bad, and in that case you do not even need an intermediate trait for the Fn versions.
However... besides it not being so nice, it also means that you need to define the generic types even for those that you do not care about. E.g. maybe the user implements a Foo for which they want it to be able to work for any kind of Input, as all they care about is the Context. Now they would be forced to either implement the trait manually or in case nothing has to be moved/captured a fn. As generics aren't possible with closures.
To conclude, I get that this is a super luxary issue and that I can also live without. I mostly started this discussion as I was wondering what others did to solve that, if they ever wanted it at all. Or perhaps it's just dirty sily business.
also discussed in Rust discord: https://discord.com/channels/442252698964721669/443150878111694848/1194278349489574069

https://geo-ant.github.io/blog/2021/rust-traits-and-variadic-functions/ is a very good article about this.
Which cites an older major version of actix-web as a inspiration source.
Which was linked in an open rust-lang issue about it: https://github.com/rust-lang/rust/issues/60074

Resolved in https://github.com/plabayo/rama/commit/110b834e1a79ca64b5e412dc304188ac07cda150.


remove redundant 'if'

My IDE complains that this if is redundant because logs == [] will always be false (because we're within the [_ | _] = logs branch of the case statement.
Is this a typo or am I missing something?

Related: https://github.com/phoenixframework/phoenix_live_view/pull/2668


⚠ SceneTime has degraded performance

In 55029ae, SceneTime ($ST) experienced degraded performance:

HTTP code: 200
Response time: 8839 ms

Resolved: SceneTime performance has improved in 7aadc82.


switch from webpack to brunch

RT
Just a few things confuse me now

How can i define a global variable like DefinePlugin do
we use require.ensure() with webpack but how to handle this in brunch way

defining global variables from the config is not something we currently support. We do however bridge process.env.* from node to the browser, if that's what you are after

you probably don't need this in brunch anyway. Our "code splitting" is basically splitting which source files get compiled to which output files. Usually it's app.js with app code and vendor.js with the deps et cetera. In the browser then both are loaded with a script tag and require('initialize') (or something like that) is evaluated to load the entry point.

These files contain all the modules there are; they're all loaded synchronously.
Brunch does not do "on demand" module loading.

Get it,but we do need this functionality things like code split our routes reducers ,and env vars at development case,brunch is faster than webpack nice work,if we can solve the above points that should easy switch webpack to brunch

Webpack-style code splitting is not available in Brunch. Can you describe your use case?
It is possible to have brunch create several js bundles that originate from different files (e.g. app/file1.js and its deps; app/file2.js and its deps; and so on; via entry points)
That said, it still is going to be synchronous module loading from a single monolithic bundle. If that doesn't work for you, Brunch probably isn't what you would want to use.

I see,a use case is we need load module dynamically , a route config like below

 export default (store) => ({
  breadcrumbName: "Repository",
  path: 'repo',
  getComponent(nextState, next) {
    require.ensure([], (require) => {
      /*  These modules are lazily evaluated using require hook, and
          will not loaded until the router invokes this callback. */
      const Repo = require('./containers/RepoContainer').default
      const reducer = require('./modules/repo').default

      store.injectReducer({ key: 'repo', reducer })

      next(null, Repo)
    })
  }
})

FYI,I got an answer now,maybe brunch is not fit my use case .But i do like the speed...  so said .

Hm, maybe I'm just not on the same page... there does not seem to be any async loading from the server in the example you have given.
My webpack-fu is at its minimum, I previously understood the purpose of require.ensure as of something that fetches said modules from the server or something like that... is my understanding correct? In your case, it actually doesn't seem to do anything useful
With brunch all the modules are included in your bundle, which means all require calls are synchronous, hence I don't see the need for require.ensure
Modules are only evaluated when required. Nothing is automatically loaded for you. In your example, that would be when the getComponent callback is called... so what's the problem with just dropping that ensure call?

Yep,we just need load the route's file on demand,don't want include all files in a bundle,so require.ensure give us a try and we need it.

Well, then yeah, you are out of luck with brunch in this scenario. We don't have async module loading from the server and as far as I know, aren't planning on having one (cc @paulmillr @es128)
It would complicate things quite a bit, and brunch's speed is in part due to its conventions and opinions and solving the common use cases well.

So if that is critical for you, yeah, you would be better off staying with webpack.

Hm,thanks for you reply,Haha

Seizing the opportunity, @goshakkk says

We do however bridge process.env.* from node to the browser

However, I already did try to export some vars and also use FOO=bar brunch watch --server to use process.env.* in code, but neither have worked... There's some special config to this?

However, I already did try to export some vars and also use FOO=bar brunch watch --server to use process.env.* in code, but neither have worked... There's some special config to this?

I'm having the same problem.


⚠ Bofrost.de has degraded performance

In 7f48b08, Bofrost.de (https://www.bofrost.de) experienced degraded performance:

HTTP code: 200
Response time: 1728 ms

Resolved: Bofrost.de performance has improved in 278e1c2 after 19 minutes.