RMSE value is not equal to the square root of MSE

🐛 Bug
I'm currently working on a multivariate time series forecasting problem, and RMSE is one of the evaluation metrics. After evaluating the model on the test set, I find that the RMSE value might be a little bit lower than expected, and then I find that the square of RMSE value is not equal to the MSE value.
To Reproduce
Here's my simple implementation of RMSE:
class RootMeanSquaredError(torchmetrics.MeanSquaredError):
    def compute(self):
        return torch.sqrt(super().compute())

Code sample
Here's the link to the repo that reproduces the problem, with data attached: rmse_test.
Expected behavior
RMSE should be approximately equal to the square root of MSE.
Environment

OS (e.g., Linux): Manjaro Linux 21.2.4
Python & PyTorch Version (e.g., 1.0): Python 3.8, PyTorch 1.10.2
How you installed PyTorch (conda, pip, build command if you used source): conda
Any other relevant information: PyTorch Lightning 1.5.10, TorchMetrics 0.7.2

I am investigating this issue, but I am confident that this is not an issue with torchmetrics but with lightning. If I after running the script try to compute:
res = model.metrics.compute() # {'MeanSquaredError': tensor(841.2437), 'RootMeanSquaredError': tensor(29.0042)}
res["MeanSquaredError"] == res["RootMeanSquaredError"] ** 2 # tensor(True)

i get the correct result, meaning that the internal metric computations are right.
@martinwhl Also I want to note that the MeanSquaredError metric has a squared argument that you can set to False if you want the RMSE metric.

Another observation, if the value instead is logged as:
    def test_step(self, batch, batch_idx):
        x, y = batch
        pred = self(x)
        y *= self.max_value
        pred *= self.max_value
        self.metrics.update(pred, y)

    def test_epoch_end(self, outputs) -> None:
        self.log_dict(self.metrics.compute())

then it also works.

Okay final update. The issue is this line:
self.log_dict(self.metrics(pred, y), batch_size=x.size(0))

the problem is that self.metrics(pred, y) will return the a dict of metrics on the current batch, thus the input will be a dict of tensors. When lightning detects that the input to self.log is a tensor it will automatically average the value over all the batches, which give a slightly biased value due to the square root not being a commutative operator (sqrt(a+b) != sqrt(a) + sqrt(b)).
The solution is to log the metric object instead, which will take care of the accumulation and making sure that everything is done correctly. Like this
self.metrics(pred, y)
self.log_dict(self.metrics)

which is also the way described in the documentation https://torchmetrics.readthedocs.io/en/latest/pages/lightning.html.
Sorry for the confusion.

Thanks a lot for your help!


[Scheduler][Stability] Adding random jitter to address duplicate task ids occurrence

Description of changes:
Added random jitter delay for task id generation - this naturally makes simultaneous state updates/requests less likely.
Tasks start logs
Task with id 4 was scheduled multiple times. The problem relatively easy to reproduce without this change on ubuntu, 8-core machine.
Scheduling Task (task_id: 0,
	fn: <function lgb_trial at 0x7fa83ace9b00>,
	args: {args: {'util_args': {'dataset_train_filename': 'dataset_train.bin', 'dataset_val_filename': 'dataset_val.b.., config: {'feature_fraction': 1.0, 'learning_rate': 0.1, 'min_data_in_leaf': 20, 'num_leaves': 31}, reporter: DistStatusReporter, },
	resource: DistributedResource(
	Node = Remote REMOTE_ID: 0,
	<Remote: 'inproc://<ip_here>/18386/1' processes=1 threads=8, memory=33.19 GB>
	nCPUs = 1, CPU_IDs = {[0]}))

Scheduling Task (task_id: 1,
	fn: <function lgb_trial at 0x7fa83ace9b00>,
	args: {args: {'util_args': {'dataset_train_filename': 'dataset_train.bin', 'dataset_val_filename': 'dataset_val.b.., config: {'feature_fraction': 0.9247339772148495, 'learning_rate': 0.06592805898944631, 'min_data_in_leaf': 2.., reporter: DistStatusReporter, },
	resource: DistributedResource(
	Node = Remote REMOTE_ID: 0,
	<Remote: 'inproc://<ip_here>/18386/1' processes=1 threads=8, memory=33.19 GB>
	nCPUs = 1, CPU_IDs = {[1]}))

Scheduling Task (task_id: 2,
	fn: <function lgb_trial at 0x7fa83ace9b00>,
	args: {args: {'util_args': {'dataset_train_filename': 'dataset_train.bin', 'dataset_val_filename': 'dataset_val.b.., config: {'feature_fraction': 0.8695569099758053, 'learning_rate': 0.08051659770615258, 'min_data_in_leaf': 2.., reporter: DistStatusReporter, },
	resource: DistributedResource(
	Node = Remote REMOTE_ID: 0,
	<Remote: 'inproc://<ip_here>/18386/1' processes=1 threads=8, memory=33.19 GB>
	nCPUs = 1, CPU_IDs = {[2]}))

Scheduling Task (task_id: 3,
	fn: <function lgb_trial at 0x7fa83ace9b00>,
	args: {args: {'util_args': {'dataset_train_filename': 'dataset_train.bin', 'dataset_val_filename': 'dataset_val.b.., config: {'feature_fraction': 0.8507991265255086, 'learning_rate': 0.07345453930070389, 'min_data_in_leaf': 2.., reporter: DistStatusReporter, },
	resource: DistributedResource(
	Node = Remote REMOTE_ID: 0,
	<Remote: 'inproc://<ip_here>/18386/1' processes=1 threads=8, memory=33.19 GB>
	nCPUs = 1, CPU_IDs = {[3]}))

Scheduling Task (task_id: 4,
	fn: <function lgb_trial at 0x7fa83ace9b00>,
	args: {args: {'util_args': {'dataset_train_filename': 'dataset_train.bin', 'dataset_val_filename': 'dataset_val.b.., config: {'feature_fraction': 0.9516841572012867, 'learning_rate': 0.0699298010777774, 'min_data_in_leaf': 10.., reporter: DistStatusReporter, },
	resource: DistributedResource(
	Node = Remote REMOTE_ID: 0,
	<Remote: 'inproc://<ip_here>/18386/1' processes=1 threads=8, memory=33.19 GB>
	nCPUs = 1, CPU_IDs = {[4]}))

Scheduling Task (task_id: 5,
	fn: <function lgb_trial at 0x7fa83ace9b00>,
	args: {args: {'util_args': {'dataset_train_filename': 'dataset_train.bin', 'dataset_val_filename': 'dataset_val.b.., config: {'feature_fraction': 0.8320992088927449, 'learning_rate': 0.009188210797555645, 'min_data_in_leaf': .., reporter: DistStatusReporter, },
	resource: DistributedResource(
	Node = Remote REMOTE_ID: 0,
	<Remote: 'inproc://<ip_here>/18386/1' processes=1 threads=8, memory=33.19 GB>
	nCPUs = 1, CPU_IDs = {[5]}))

Scheduling Task (task_id: 6,
	fn: <function lgb_trial at 0x7fa83ace9b00>,
	args: {args: {'util_args': {'dataset_train_filename': 'dataset_train.bin', 'dataset_val_filename': 'dataset_val.b.., config: {'feature_fraction': 0.9774783624448347, 'learning_rate': 0.1255406602615921, 'min_data_in_leaf': 14.., reporter: DistStatusReporter, },
	resource: DistributedResource(
	Node = Remote REMOTE_ID: 0,
	<Remote: 'inproc://<ip_here>/18386/1' processes=1 threads=8, memory=33.19 GB>
	nCPUs = 1, CPU_IDs = {[6]}))

Scheduling Task (task_id: 7,
	fn: <function lgb_trial at 0x7fa83ace9b00>,
	args: {args: {'util_args': {'dataset_train_filename': 'dataset_train.bin', 'dataset_val_filename': 'dataset_val.b.., config: {'feature_fraction': 0.9323156247870876, 'learning_rate': 0.05933944114295586, 'min_data_in_leaf': 1.., reporter: DistStatusReporter, },
	resource: DistributedResource(
	Node = Remote REMOTE_ID: 0,
	<Remote: 'inproc://<ip_here>/18386/1' processes=1 threads=8, memory=33.19 GB>
	nCPUs = 1, CPU_IDs = {[7]}))

Scheduling Task (task_id: 4,
	fn: <function lgb_trial at 0x7fa83ace9b00>,
	args: {args: {'util_args': {'dataset_train_filename': 'dataset_train.bin', 'dataset_val_filename': 'dataset_val.b.., config: {'feature_fraction': 0.9516841572012867, 'learning_rate': 0.0699298010777774, 'min_data_in_leaf': 10.., reporter: DistStatusReporter, },
	resource: DistributedResource(
	Node = Remote REMOTE_ID: 0,
	<Remote: 'inproc://<ip_here>/18386/1' processes=1 threads=8, memory=33.19 GB>
	nCPUs = 1, CPU_IDs = {[4]}))

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

Job PR-753-1 is done.
Docs are uploaded to http://autogluon-staging.s3-website-us-west-2.amazonaws.com/PR-753/1/index.html

Can you explain why this works? I'd expect task_id to be created by an entity that exists only once.

Can you explain why this works? I'd expect task_id to be created by an entity that exists only once.

When scheduler starts, it immediately allocates multiple sub-processes to schedule task (8 cores == 8 processes). The way how those processes exchange the information is through mp.Value in a shared memory. A Value increment for the counter is not an atomic operation and apparently python state synchronization between threads is not very good at isolating things within an mp.Lock boundaries or some CPU caching coming into play. Short story short: it fails at replicating the value between calls so the ids get not unique.
One of the common ways to combat this kind of racing condition is to add some random start jitter so the processes start slightly delay - this way the lock is not as congested at the startup and likelihood of race condition drops significantly.


Added a set-dotnet-env script for Xonsh

This pull requests adds support for environment variables in xonsh. It It is based upon a similar script in asdf-java, but with the appropriate variable names and paths.

@nd-net thanks for your contribution!


Add Finnish Dictionary

Description

MacOS has a great dictionary, but it's not available for Finnish. This extension adds a Finnish dictionary at your fingertips.
Screencast

Checklist

[x] I read the extension guidelines
[x] I read the documentation about publishing
[x] I ran npm run build and tested this distribution build in Raycast
[x] I checked that files in the assets folder are used by the extension itself
[x] I checked that assets used by the README are placed in the metadata folder

hi @albertoxamin - nice work! One suggestion: could you add an EmptyView when either of the commands is started? Greeting the user with a No Results screen feels a bit harsh 😺

I've added an EmptyView!

hi @albertoxamin - hope you don't mind, I did a couple of fixes:

once I started typing, the empty view disappeared and the No results screen was shown briefly, so I fixed the condition so this doesn't happen anymore
once the search text changed, we then performed an API call for each result, potentially resulting in tens of unnecessary calls. I updated the extension so that this is done "on demand", i.e. only when a particular item is selected.

https://user-images.githubusercontent.com/1155589/162731616-44e45fed-1c7a-40a6-934f-c6da61f0ec80.mov
Additionally, I've noticed that quite often, definitions look "broken" due to the markup the API returns. Do you think there's something we can do there? Either make the links work or clean them up?

Thanks for fixing that, that was the behaviour I originally had in mind, unfortunately I'm quite new to react.
I'll look into adding more regexes to make it look cleaner!

nice! 🎉

Great! However I noticed the screenshots are missing from the store page, how do I fix that? @sxn


Fix authorization format. Change url format.

 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.:x: tanyado sign nowYou have signed the CLA already but the status is still pending? Let us recheck it.


New models, plus some models will be deprecated on May 14th

Just got this email from Perplexity:

Introducing our newest models
We are excited to announce the launch of our latest Perplexity models: llama-3-sonar-small-32k-chat and llama-3-sonar-large-32k-chat, along with their search-enabled versions, llama-3-sonar-small-32k-online`` and llama-3-sonar-large-32k-online. These new additions surpass the performance of the previous iteration. For detailed information on our supported models, please visit our model card documentation.
[Action Required] Model Deprecation Notice
Please note that as of May 14, several models and model name aliases will no longer be accessible. We recommend updating your applications to use models in the Llama-3 family immediately.
The following model names will no longer be available via API:

codellama-70b-instruct
mistral-7b-instruct
mixtral-8x22b-instruct
pplx-7b-chat / pplx-7b-online
sonar-small-chat / sonar-small-online
pplx-70b-chat / pplx-70b-online
pplx-8x7b-chat / pplx-8x7b-online
sonar-medium-chat / sonar-medium-online

We recommend switching to models in the Llama-3 family:

llama-3-sonar-small-32k-chat / llama-3-sonar-small-32k-online
llama-3-sonar-large-32k-chat / llama-3-sonar-large-32k-online
llama-3-8b-instruct
llama-3-70b-instruct

Blog post: https://docs.perplexity.ai/changelog/new-models-llama-3-sonar-family

Looks like https://docs.perplexity.ai/docs/model-cards has the updated list:


Cell Control (Feature request)

Really like this project.
Would be even better if the API exposed cell controls, such as move/split/shoot mass.
I have no idea if this is viable (or already possible!) but if it could be included in a future release I would be extremely grateful.

Looking at Main_Out.js it looks like it should just be a case of wrapping the registerEvent function for split/shoot. Not sure about moving though.

You can split and shoot mass even without expose, by sending fake space and W key events. See minimal example for split:
window.onkeydown({
    keyCode: 32, // space
    target: document.getElementById("canvas"),
    preventDefault:() => undefined,
})

However, moving using sending mouse events to canvas is inconvenient: you have to translate move destination world coordinates to canvas pixel coordinates.
So, most likely, I will add functions/hooks to control cell movement.

That would be most excellent. Thanks.

I have succesfully used the $(window).mousemove() to control cell movement. To convert to canvas coordinates, all I did was add half the window dimensions so the origin of the mouse was in the center of the window. This works perfectly if you are only a single cell, however if you are split, I think the center may be a bit off. This method seems good enough at least until the movement hooks are added. I can try to find an example of the code if you are interested.

If you can provide a simple example of moving to the nearest cell, using the window.agar information, that would be splendid.

Unfortunately agar is down right now and I don't currently have access to the original code so I am not entirely sure whether or not this will work. Either way this is essentially it
Using JQuery:
    function moveCell(x,y){
      $(window).trigger('mousemove', {
        clientX: x + $(window).width()/2,
        clientY: y + $(window).height()/2
      });
    }

Pure JS:
    function moveCell(x,y){
      window.onmousemove({
        clientX: x + window.innerWidth/2,
        clientY: y + window.innerHeight/2
      });
    }

Whoops, Agar is back up and I tested it. Turns out I needed to use canvas instead of window.
I'm going to have to mess around with this a bit more but for now it is in world coordinates so moveCell(0,0) brings you to the center of the map.
function moveCell(x,y){
  $('canvas').trigger('mousemove', {
    clientX: x + $('canvas').width()/2,
    clientY: y + $('canvas').height()/2
  });
}

Awesome - works nicely. Thanks :+1:

Doesnt seems to work with the coordinates of the cells in window.agar.allCells - probably the issue that xzfc mentioned.
I tried to make a simple script to eat the nearest food but no joy.   Perhaps I have missed something?
Here is the script for reference:
// ==UserScript==
// @name ExposeTest
// @namespace ExposeTest
// @include http://agar.io/*
// @include https://agar.io/*
// @version 0.01
// @grant none
// @author SJMakin@Github
// ==/UserScript==
function moveCell(x,y){
$('canvas').trigger('mousemove', {
clientX: x + $('canvas').width()/2,
clientY: y + $('canvas').height()/2
});
//console.log('Moving cell x:' + x + ' y: ' + y);
}
function computeDistance(x1, y1, x2, y2, s1, s2) {
s1 = s1 || 0;
s2 = s2 || 0;
var xdis = x1 - x2;
var ydis = y1 - y2;
var distance = Math.sqrt(xdis * xdis + ydis * ydis) - (s1 + s2);
    return distance;
};

function isMe(cell){
for (var c = 0;  c < window.agar.myCells.length; c++) {
if (window.agar.myCells[c] == cell.id){
return true;
}
}
return false;
}
function Go(){
var mes = [];
var food = [];
//  var virus = [];
//  var other = [];
 for (var c in window.agar.allCells) {
   var cell = window.agar.allCells[c];
   if (isMe(cell)){
     mes.push(cell);
   } else if (cell.size <= 15){
     food.push(cell);
   }
  //  } else if (cell.isVirus){
  //    virus.push(cell);
  //  } else {
  //    other.push(cell);
  //  }

 }

 if (mes.length > 0) {
    var closest = 9999999;
    var target = [];
    for (var z = 0; z < food.length; z++){
      //console.dir(food[z])
      var dist = computeDistance(food[z].x, food[z].y, mes[0].x, mes[0].y);
      //console.log(dist);
      if (dist<closest){
        closest = dist;
        target.push(food[z].x) ;
        target.push(food[z].y) ;
      }
    }
     moveCell(target[0],target[1]);
 }

}
console.log('Loaded');
setInterval(Go,30);

Try it again but change my function to
function moveCell(x,y){
  $('canvas').trigger('mousemove', {
    clientX: x,
    clientY: y
});

Oh BTW, you can use the for-of loop instead of for-in. Its not necessary but I thought it was a pretty cool function when I found out about it. Plus it saves a line of code
for (var cell of window.agar.allCells) {
var cell = window.agar.allCells[c];

You can transtate coordinates using toPixelCoords function. I don't have
access to PC right now, so it is untested.
var transform = {scale:1, x:0, y:0}
agar.hooks.beforeTransform = (ctx, t1x, t1y, s, t2x, t2y) => {
  transform = {scale:s, x:t2x*s + t1x, y:t2y*s + t1y}
}

function toWorldCoords(pixelCoords) {
  var x = (pixelCoords.x - transform.x) / transform.scale
  var y = (pixelCoords.y - transform.y) / transform.scale
  return {x, y}
}

function toPixelCoords(worldCoords) {
  var x = worldCoords.x*transform.scale + transform.x
  var x = worldCoords.y*transform.scale + transform.y
  return {x, y}
}

OK - I believe those conversion methods work a charm, but I am still not able to correctly move the players cell to the food.  I added a method to draw a line between the player and and nearest food, and that looks great (when it displays) but the cell goes off in another direction entirely.  I have tried both of the movement functions above and neither seems to work.

// ==UserScript==
// @name        SJMBot
// @namespace   SJMBot
// @include     http://agar.io/*
// @include     https://agar.io/*
// @version     0.01
// @grant       none
// @author      SJMakin@Github
// ==/UserScript==

//Sample code
image = new Image();
image.crossOrigin = 'anonymous';
image.src = 'http://i.imgur.com/V8EOXwT.png';
window.agar.hooks.cellSkin = function(cell, old_skin) {
    if (old_skin) return old_skin;
    if (cell.isVirus) return image;
    return null;
}
console.log('Loaded Virus Image Switch');

//START - Helper methods

function computeDistance(x1, y1, x2, y2, s1, s2) {
        s1 = s1 || 0;
        s2 = s2 || 0;
        var xdis = x1 - x2;
        var ydis = y1 - y2;
        var distance = Math.sqrt(xdis * xdis + ydis * ydis) - (s1 + s2);

        return distance;
}

function isMe(cell){
    for (var i = 0; i < window.agar.myCells.length; i++){
        if (window.agar.myCells[i] == cell.id){
            return true;
        }
    }
    return false;
}

var transform = {scale:1, x:0, y:0}
window.agar.hooks.beforeTransform = (ctx, t1x, t1y, s, t2x, t2y) => { transform = {scale:s, x:t2x*s + t1x, y:t2y*s + t1y} }

function toWorldCoords(pixelCoords) {
    var x = (pixelCoords.x - transform.x) / transform.scale;
    var y = (pixelCoords.y - transform.y) / transform.scale;
    console.log('PC x: ' + pixelCoords.x + ' PC y: ' + pixelCoords.y + ' WC x ' + x + ' WC y ' + y)
    return [x, y]
}

function toPixelCoords(worldCoords) {
    var x = worldCoords.x*transform.scale + transform.x;
    var y = worldCoords.y*transform.scale + transform.y;
    console.log('WC x: ' + worldCoords.x + ' WC y: ' + worldCoords.y + ' PC x ' + x + ' PC y ' + y);
    return [x, y]
}

function moveCell(x,y){
  $('canvas').trigger('mousemove', {
    clientX : x + $('canvas').width()/2,
    clientY : y + $('canvas').height()/2
  });
  console.log('Moving cell - x:' + x + ' y: ' + y);
}

function moveCell2(x,y){
  $('canvas').trigger('mousemove', {
    clientX: x,
    clientY: y
    });
  console.log('Moving cell 2 - x:' + x + ' y: ' + y);
}

function drawLine(startX, startY, endX, endY){
      var canvas = document.getElementById("canvas");
      var context = canvas.getContext('2d');

      context.beginPath();
      context.moveTo(startX, startY);
      context.lineTo(endX, endY);
      context.lineWidth = 4;
      context.stroke();

      console.log('Line drawn');
      return true;
}

//END - Helper methods

//START - UI Customisation
window.agar.minScale = 0.5;
window.agar.drawGrid = false;
//END - UI Customisation

//START - Bot control

function processGameState(){
    //console.debug("SJMBot processGameState");
    var food = [];
    var virus = [];
    var me = [];
    var other = [];
    //console.dir(window.agar.allCells);
    for (var key in window.agar.allCells){
        var cell = window.agar.allCells[key];
        //console.log(cell.id);
        if (isMe(cell)){
            me.push(cell);
        } else if (cell.size < 15) {
            food.push(cell);
        } else if (cell.isVirus){
            virus.push(cell);
        } else {
            //Its not me, a virus or food, so it is another player
            other.push(cell);
        }
    }
    //console.log(me.length);

    if (me.length > 0 && food.length > 0){
        var closest = 99999999;
        var target = {};
        for (var z = 0; z < food.length; z++){
            var dist = computeDistance(me[0].x, me[0].y, food[z].x, food[z].y);
            if (dist < closest){
                closest = dist;
                target = food[z];
            }
        }
        //console.dir(me);
        //console.dir(food);
        var position = toPixelCoords(target);
        moveCell(position[0], position[1]);
        var myPosition = toPixelCoords(me[0]);
        drawLine (myPosition[0], myPosition[1], position[0], position[1]);
    }

}
setInterval(processGameState, 30);
//END - Bot control
console.log("SJMBot loaded");

Replacing moveCell with
function moveCell(x,y){
   document.getElementById('canvas').onmousemove({clientX:x, clientY:y})
}

works for me. I'm not into jQuery and can't say why $('canvas').trigger('mousemove', ... does not work.

Whey :+1: that works great!  Thanks xzfc, you are a star!

Feel free to close this now, but it may still be worth considering adding a hook and/or documenting this for reference.  Thanks again.


Utilities module not being found on OT-2

The utilities module is not being located on the OT-2

The path was being prepended to level 1 not 0.  Appears to be working now.


Update requirements on Influx due to HTTP subscriptions

Subscriptions with HTTP were added to Influx for v1.0.0. The Kapacitor config by default creates HTTP subscriptions. Therefore, the version for Influx must be >= 1.0.0.
I went round in circles for a while as Influx SHOW SUBSCRIPTIONS showed HTTP subscriptions yet nothing worked. Upgrading Influx to 1.0.0 made everything work.

@nathanielc can you confirm?

@beckettsean Yes, that is correct.

thanks, @edhgoose!


How do I close Modal on right click in overlay?

Summary:
I wish to close the modal on secondary click (right mouse click).
This works in your codepen demo for v.1.6.2: https://codepen.io/claydiffrient/pen/ZBmyKz?editors=1111
But not in my own demo with v3.3.2, see here: https://codepen.io/CharlotteA/pen/PozLwNw?editors=1111
Am I missing a new prop to handle this?
Expected behavior:
Close on right-click:
https://codepen.io/claydiffrient/pen/ZBmyKz?editors=1111
Link to example of issue:
Not closing on right-click:
https://codepen.io/CharlotteA/pen/PozLwNw?editors=1111
Any help very much appreciated!  🤓

Hi, @CharlotteArai. Right click and context menu are not implemented yet.  😞

I would love to contribute.

@pawan43563 All yours, 🤠! Let me know if you need assistance with this.

Is this issue still present? I would love to contribute.

@ZainGulbaz There is #901, but it's not finished. You can open a new one and we close it. Let me know and I'll assign you.

@diasbruno Yes please assign me.


Auto Deploy: Console set Environment Variables are not working

I set Environment Variables in my console for production stage, specifically OPENAI_API_KEY. However it not seen by the app that is deployed using auto deploy.
The Vercel AI SDK can pick it up automatically when I set it locally in .env, however it throws error not being able to find the key after auto deploy with Environment Variables set in the console.

We would recommend against using .env for this, try using our Secret component.
That said, can you show me where and how you are reading the OPENAI_API_KEY?


Triplet grid toggle action for MIDI editor

From<EMAIL_ADDRESS>on September 16, 2012 20:24:24
We have this for the arrange view. Could we also have this for the MIDI editor. It would save a lot of mousing around! Thanks.
Original issue: http://code.google.com/p/sws-extension/issues/detail?id=514

@nofishonfriday - care to add an action to toggle swing grid that would mirror its state on the toolbar? Seems that native action doesn't really play well when grids are linked between arrange and MIDI editor.
(Perhaps another such action for arrange is needed, similar to Adam Wathan's toggle grid actions?)
Thanks!

added in v2.9.3


add barbs linewidths

Hi, Thanks for your new release.
But I forgot to add barbs linewidths wrapper.
And I add follow code at  264 line of proplot/axes/plot.py
    'barbs': {
        'colors': 'edgecolors',
        'linewidths': 'linewidths',
        'linestyles': 'linestyles',
    },

Finally, it's not work.
how to solve it, Thank you.

Thanks for the report! Not sure why your attempt did not work, but this is now fixed (54c7d8c)
The dictionary you tried to edit translates generic, standardized keyword arguments for color/line width/line style into the method-specific keyword arguments (e.g. color, colors, edgecolor, and edgecolors are all equivalent). This makes things consistent across the different functions.
Here's an example:
import proplot as plot

# Sample data
state = np.random.RandomState(51423)
N = 10
scale = 15
x = y = np.arange(N)
z1 = state.rand(N, N) * scale
z2 = state.rand(N, N) * scale
c = np.random.rand(N, N)

# Example figure
fig, axs = plot.subplots(ncols=2)
axs[0].barbs(z1, z2, length=5, lw=0.5, color='red')
axs[1].barbs(z1, z2, c, length=5, lw=0.5, cmap='blues', colorbar='b')
axs.format(suptitle='Barbs example')

The development version can be installed with: pip install git+https://github.com/lukelbd/proplot.git


PROTOCOL: Wirecast 7 constant disconnects

In case someone finds this when searching for a solution for Wirecast 7 constant disconnects, use the 3.0 develop branch and set these options in your vhost configuration:
    in_ack_size     2500000;
    out_ack_size    2500000;
    mix_correct     on;

Full hls.conf file:
# the config for srs to delivery hls
# @see https://github.com/ossrs/srs/wiki/v1_CN_SampleHLS
# @see full.conf for detail config.

listen              1935;
max_connections     1000;
daemon              off;
srs_log_tank        console;
vhost __defaultVhost__ {
    in_ack_size     2500000;
    out_ack_size    2500000;
    mix_correct     on;
    hls {
        enabled         on;
        hls_fragment    10;
        hls_window      60;
        hls_path        ./objs/nginx/html;
        hls_m3u8_file   [app]/[stream].m3u8;
        hls_ts_file     [app]/[stream]-[seq].ts;
    }
}

Extract from https://github.com/ossrs/srs/issues/795#issuecomment-288088564


Set up of Database

Is your feature request related to a problem? Please describe.
As developper I want to create the database to save the  teammate status declared by the user of Yaki
Describe the solution you'd like
Design the database schema and tables for Yaki.
Take into account the features of future versions (and not only MVP) to avoid heavy refactoring on the database

Table names

CAPTAIN
TEAM
TEAM_MATE
DECLARATION
LOCATION

Database name
YAKI

Create scripts following scripts:

[ ] Create database
[ ] Create table TEAM
[ ] Create table TEAM_MATE
[ ] Create table CAPTAIN
[ ] Create table DECLARATION
[ ] Create table LOCATION


Disable the PHP example during the CI build.

PHP image build is very expensive because it has to download all the debian build tools like clang to build protobuf and grpc C++ libraries. This alongside all the other build artifacts takes a very long time.

https://github.com/GoogleCloudPlatform/open-match/issues/172

This reduced the build by 4 minutes.


Swift 5.6 not available

Describe the bug
Despite the README indicating support for Swift 5.6, my workflow fails with
Run fwal/setup-swift@v1
Error: Unexpected error, unable to continue. Please report at https://github.com/fwal/setup-swift/issues
Version "5.6" is not available
Stacktrace:
Error: Version "5.6" is not available
    at Object.verify (/home/runner/work/_actions/fwal/setup-swift/v1/dist/index.js:8115:15)
    at /home/runner/work/_actions/fwal/setup-swift/v1/dist/index.js:2740:36
    at Generator.next (<anonymous>)
    at fulfilled (/home/runner/work/_actions/fwal/setup-swift/v1/dist/index.js:2721:58)

(see here)
Any ideas?
Workflow configuration (please complete the following information):

Platform (runs-on): ubuntu-latest
Swift version (swift-version): 5.6

I think the issue is that v1 doesn't point to v1.14.0 yet.

I am facing the same issue with macOS-latest for swift version 5.6

like @fwcd mentioned the current solution would be set version explicit like:
    - uses<EMAIL_ADDRESS>      with:
        swift-version: "5.6"

Hi! Sorry everyone, the v1 failed to update without me noticing, it has been updated now!
As mentioned you can always use the exact version and I will eventually deprecate the v1 tag once the project makes the jump to version 2.0.
Optionally you can use Dependabot to keep all your actions up-to-date automatically:
# .github/dependabot.yml
version: 2
updates:
  - package-ecosystem: github-actions
    directory: "/"
    schedule:
      interval: daily


gparyani: Watch migrationexpert.com.au

gparyani requests the watch of the watch_keyword migrationexpert\.com\.au. See the MS search here and the Stack Exchange search here.

migrationexpert\.com\.au has been seen in 0 true positives, 0 false positives, and 0 NAAs.

Coverage remained the same at 66.386% when pulling 1da649a0820188a99fa40cd35960772c7568b5a9 on auto-blacklist-1535508539 into 71f6d32c4b82b82ff906d100fc6be4c9b6818a1a on master.

!!/approve


[Suggestion] Add HexTweaks into Curseforge website

The title says all, would be cool to cast sus spell not only in 1 server

just use modrinth 🙃
I am fine with you manually including it in a modpack

you are allowed to
thanks to the power of MIT
you just have to put it in the overrides section
or use a tool like packwiz and packwiz-installer which allows you to pull from both

You aren't allowed to unfortunately
due to the power of curseforge's allowed 3rd party mods list not including hex tweaks
and the link to their official form to request mods be added to the list is a broken link


TypeError: font.embed is not a function

I get the following Error :
[TypeError: font.embed is not a function] TypeError: font.embed is not a function
    at PDFDocument.end (/var/www/XXX/node_modules/pdfkit/js/document.js:202:14)

Once my code works, i did not change it. What can be caused the error?

Please provide an example demonstrating the issue.


fix author output

Added @ for authorHandle in pr and commit messages
Uses authorHandle now for pr and commit message instead of the real
name

After talking with @runspired this solution doesn't work for all cases. We need to find a more generic solution that will work.


use --cpu-shares instead of -c in integration test

Running integration test locally ran into such case:
# Warning: '-c' is deprecated, it will be replaced by '--cpu-shares' soon. See usage.

This pr did:

use --cpu-shares instead of -c in integration test

While --cpu-shares is always usable in each version of docker daemon.
In docker version of docker 1.11.0, no -c in docker run usage:
root@10-11-1-156:~# docker run --help
Usage:	docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
Run a command in a new container
  -a, --attach=[]                 Attach to STDIN, STDOUT or STDERR
  --add-host=[]                   Add a custom host-to-IP mapping (host:ip)
  --blkio-weight                  Block IO (relative weight), between 10 and 1000
  --blkio-weight-device=[]        Block IO weight (relative device weight)
  --cpu-shares                    CPU shares (relative weight)

Signed-off-by: Sun Hongliang<EMAIL_ADDRESS>

Good idea. LGTM.

LGTM


MyBB 1.8 support + connecting accounts with OpenID.

I know that you are planning to implement Steam OpenID login, so I've made some changes based on SteamAuthentication. It doesn't support logging in to forum with Steam credentials instead of forum username and password, it only allows for connecting user SteamID with forum account not by giving URL, but with OpenID. Moderators can use their tool in standard way though. It's using LightOpenID. Code is probably pretty bad (I'm not writing plugins for MyBB), but hey, it works (at least for me)! :)
Additionally it works with MyBB 1.8.x (tested on 1.8.3). I also included Polish language for this version.
If you have any questions or requests, no problem, I will reply :)
(PS. I'm both accounts :))

Hi Arhenox. Thanks for helping with the development. Now I feel even more bad for not keeping up with this for the past several months, but that's probably not a bad thing. :tongue: I'll definitely take a look at your code when I finally get around to this project, and if it looks like something I want to use (even if modified), I'll definitely credit you. :smile:

Great, I really want to help, because - in my opinion - this project is amazing :) Even if you don't like my code, I would be delighted to translate any future version to Polish :)

Any progress? :)

Sorry he passed away.


Repo engineering/publish to registry

This PR shortens release commands and prefers npm publish over yarn publish.
npm publish is a one step unlike 2step yarn publish


Make sorting by date columns on Edit Observations screen "sticky"

From https://forum.inaturalist.org/t/change-default-sort-order-of-your-observations-to-date-observed-instead-of-date-added/7803
It's fairly easy, some users would like the option to make the Date Observed and Date Added sorting columns on the Edit Observations screen "sticky", like how the number of obs displayed per page is, rather than it defaulting to date added (descending).

Are you referring to pages like https://www.inaturalist.org/observations/kueda? And can you define "sticky"? Should it be permanent, or can it only last as long as you are logged in?

Are you referring to pages like https://www.inaturalist.org/observations/kueda?

Yes.

And can you define "sticky"? Should it be permanent, or can it only last as long as you are logged in?

I was thinking it would be analogous to the observations per page option, if possible, so it would last even after you log out. But, this is a pretty niche use case, so as long as you are logged in would work, IMO.

#2837 has a potential fix. How does this look for UI?

Clicking the column header (or otherwise passing ordering parameters) will override user default.

IMO, this doesn't require additional UI. I think it would suffice if the existing ways of specifying order and order_by were saved as preferences. What do you think @tiwane?

Yeah, I don't think new UI is needed here. But that looks nice. :-)


How can i add something to the cache inside the eviction_listener?

Hey Moka team, i'm having a special scenario that i want to re add an item or a modified version of it to the cache when the item is getting evicted in certain scenarios, how can I achieve that?

Hi. I can show you some sample code for it. Which cache do you use: future::Cache, sync::Cache or sync::SegmentedCache? And if future::Cache, which async runtime do you use (e.g. Tokio)?
The current eviction_listener API does not expect the listener to add an entry to the cache and it may lead to a deadlock in some conditions. So instead of adding it from inside the listener, you will spawn a separate thread/async at the cache creation time, and use the thread/async task to add the entry to the cache. You can use a channel (std::sync::mpsc or tokio::sync::mpsc or something) to send the evicted entry from the listener to the thread/async task.

I'm using sync::Cache, I would really appreciate if you help me out with a sample code 🙏

No problem. Here is the sample code.
It got longer than I thought because the Sender of the mpsc channel is !Sync. Feel free to ask some questions.
// Cargo.toml
//
// [dependencies]
// moka = "0.11.3"

use std::{
    sync::{
        mpsc::{self, Sender},
        Arc, Mutex, OnceLock,
    },
    thread,
    time::Duration,
};

use moka::{notification::RemovalCause, sync::Cache};

/// The cache key type.
pub type Key = String;
/// The cache value type.
pub type Value = u32;

/// Command for the worker thread.
pub enum Command {
    /// (Re)insert the entry with the given key and value.
    Insert(Key, Value),
    /// Shutdown the worker thread.
    Shutdown,
}

/// This example demonstrates how to write an eviction listener that will
/// reinsert the expired entries.
///
/// We cannot make the eviction listener directly reinsert the entries, because
/// it will lead to a deadlock in some conditions. Instead, we will create a
/// worker thread to do the reinsertion, and create a mpsc channel to send
/// commands from the eviction listener to the worker thread.
fn main() {
    // Create a multi-producer single-consumer (mpsc) channel to send commands
    // from the eviction listener to the worker thread.
    let (snd, rcv) = mpsc::channel();

    // Wrap the Sender (snd) with a Mutex and set to a static OnceLock.
    //
    // Cache requires an eviction listener to be Sync as it will be executed by
    // multiple threads. However the Sender (snd) of the channel is not Sync, so
    // the eviction listener cannot capture the Sender directly.
    //
    // We are going to solve this by making the Sender globally accessible via
    // the static OnceLock, and make the eviction listener to clone it per
    // thread.
    static SND: OnceLock<Mutex<Sender<Command>>> = OnceLock::new();
    SND.set(Mutex::new(snd.clone())).unwrap();

    // Create the eviction listener.
    let listener = move |key: Arc<String>, value: u32, cause: RemovalCause| {
        // Keep a clone of the Sender in our thread-local variable, so that we
        // can send a command without locking the Mutex every time.
        thread_local! {
            static THREAD_SND: Sender<Command> = SND.get().unwrap().lock().unwrap().clone();
        }

        println!("{} was evicted. value: {} ({:?})", key, value, cause);

        // If the entry was removed due to expiration, send a command to the
        // channel to reinsert the entry with a modified value.
        if cause == RemovalCause::Expired {
            let new_value = value * 2;
            let command = Command::Insert(key.to_string(), new_value);
            THREAD_SND.with(|snd| snd.send(command).expect("Cannot send"));
        }

        // Do nothing if the entry was removed by one of the following reasons:
        // - Reached to the capacity limit. (RemovalCause::Size)
        // - Manually invalidated. (RemovalCause::Explicit)
    };

    const MAX_CAPACITY: u64 = 7;
    const TTL: Duration = Duration::from_secs(3);

    // Create a cache with the max capacity, time-to-live and the eviction
    // listener.
    let cache = Arc::new(
        Cache::builder()
            .max_capacity(MAX_CAPACITY)
            .time_to_live(TTL)
            .eviction_listener(listener)
            .build(),
    );

    // Spawn the worker thread that receives commands from the channel and
    // reinserts the entries.
    let worker = {
        let cache = Arc::clone(&cache);

        thread::spawn(move || {
            // Repeat until receiving a shutdown command.
            loop {
                match rcv.recv() {
                    Ok(Command::Insert(key, value)) => {
                        println!("Reinserting {} with value {}.", key, value);
                        cache.insert(key, value);
                    }
                    Ok(Command::Shutdown) => break,
                    Err(e) => {
                        eprintln!("Cannot receive a command: {:?}", e);
                        break;
                    }
                }
            }

            println!("Shutdown the worker thread.");
        })
    };

    // Insert 9 entries.
    // - The last 2 entries will be evicted due to the capacity limit.
    // - The remaining 7 entries will be evicted after 3 seconds, and then the
    //   worker thread will reinsert them with modified values.
    for i in 1..=9 {
        thread::sleep(Duration::from_millis(100));
        let key = i.to_string();
        let value = i;
        println!("Inserting {} with value {}.", key, value);
        cache.insert(key, value);
    }

    // Wait for 8 seconds.
    thread::sleep(Duration::from_secs(8));

    // Shutdown the worker thread.
    snd.send(Command::Shutdown).expect("Cannot send");
    worker.join().expect("The worker thread panicked");
}

$ cargo run --release
     ...
     Running `target/release/main`
Inserting 1 with value 1.
Inserting 2 with value 2.
Inserting 3 with value 3.
Inserting 4 with value 4.
Inserting 5 with value 5.
Inserting 6 with value 6.
Inserting 7 with value 7.
Inserting 8 with value 8.
Inserting 9 with value 9.
8 was evicted. value: 8 (Size)
9 was evicted. value: 9 (Size)
1 was evicted. value: 1 (Expired)
Reinserting 1 with value 2.
2 was evicted. value: 2 (Expired)
3 was evicted. value: 3 (Expired)
Reinserting 2 with value 4.
4 was evicted. value: 4 (Expired)
Reinserting 3 with value 6.
Reinserting 4 with value 8.
5 was evicted. value: 5 (Expired)
6 was evicted. value: 6 (Expired)
Reinserting 5 with value 10.
7 was evicted. value: 7 (Expired)
Reinserting 6 with value 12.
Reinserting 7 with value 14.
1 was evicted. value: 2 (Expired)
Reinserting 1 with value 4.
2 was evicted. value: 4 (Expired)
3 was evicted. value: 6 (Expired)
4 was evicted. value: 8 (Expired)
Reinserting 2 with value 8.
Reinserting 3 with value 12.
Reinserting 4 with value 16.
5 was evicted. value: 10 (Expired)
6 was evicted. value: 12 (Expired)
7 was evicted. value: 14 (Expired)
Reinserting 5 with value 20.
Reinserting 6 with value 24.
Reinserting 7 with value 28.
Shutdown the worker thread.

Awesome, Appreciate your help, I'm learning Rust on the fly on my project , and the sample is really educative, specially thread_local! usage 🙏.
should i close this issue?
I would also appreciate if you put this example on examples folder or README.md as well, it's a very good example.

Sure. I will put it on example folder and then close this issue.


[Fix] Fix format error in test.py when metric returns np.ndarray

Motivation
Fix the output format error when --metric-options average_mode=none
Modification
Add metric-options judgment condition
BC-breaking (Optional)
Does the modification introduce changes that break the backward compatibility of the downstream repositories?
If so, please describe how it breaks the compatibility and how the downstream projects should modify their code to keep compatibility with this PR.
Use cases (Optional)
If this PR introduces a new feature, it is better to list some use cases here and update the documentation.
Checklist
Before PR:

[x] Pre-commit or other linting tools are used to fix the potential lint issues.
[x] Bug fixes are fully covered by unit tests, the case that causes the bug should be added in the unit tests.
[x] The modification is covered by complete unit tests. If not, please add more unit test to ensure the correctness.
[x] The documentation has been modified accordingly, like docstring or example tutorials.

After PR:

[x] If the modification has potential influence on downstream or other related projects, this PR should be tested with those projects, like MMDet or MMSeg.
[x] CLA has been signed and all committers have signed the CLA in this PR.

 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.

Thanks for your contribution, we will review it recently.

Hi @zhaoxin111
Please fix the lint error.

Thanks! please sign the CLA before we can merge it.

 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.


Propagate stat calculation failures in tests

Motivation: https://github.com/prestosql/presto/pull/5756/commits/50e3fcc51c76064fe5c3f94167483609535ebb2c

Motivation: https://github.com/prestosql/presto/pull/5756/commits/50e3fcc51c76064fe5c3f94167483609535ebb2c


update_app_identifier fails to search for curly brace variables in Info.plist

New Issue Checklist

[x] Updated fastlane to the latest version
[x] I read the Contribution Guidelines
[x] I read docs.fastlane.tools
[x] I searched for existing GitHub issues

Issue Description

The update_app_identifier action does not properly detect all uses of PRODUCT_BUNDLE_IDENTIFIER in the Info.plist file.  Older Xcode projects and many examples show curly braces being used for variables inside the Info.plist file like ${PRODUCT_BUNDLE_IDENTIFIER}.  update_app_identifier only searches very specifically for parenthesis like $(PRODUCT_BUNDLE_IDENTIFIER) and fails to find the curly brace instance of this variable.
This leads to codesigning issues and other hard to diagnose problems because the Info.plist curly brace variable has been replaced with the new bundle identifier, but the project.pbxproj file still has instances of the old bundle identifier.  Xcode gets very confused as to what the actual bundle identifier is.
Command executed
bundle exec fastlane change_bundle_id
Complete output when running fastlane, including the stack trace and command used
This is the failed example output where the Info.plist is using curly braces:

 16:37:49 ExampleApp$ defaults read `pwd`/ExampleApp/Info.plist CFBundleIdentifier
${PRODUCT_BUNDLE_IDENTIFIER}
16:38:16 ExampleApp$ fgrep PRODUCT_BUNDLE_IDENTIFIER ExampleApp.xcodeproj/project.pbxproj
				PRODUCT_BUNDLE_IDENTIFIER = com.example.original.ExampleApp;
				PRODUCT_BUNDLE_IDENTIFIER = com.example.original.ExampleApp;
16:38:19 ExampleApp$ bundle exec fastlane change_bundle_id
[✔] 🚀
[16:38:44]: ------------------------------
[16:38:44]: --- Step: default_platform ---
[16:38:44]: ------------------------------
[16:38:44]: Driving the lane 'ios change_bundle_id' 🚀
[16:38:44]: -----------------------------------
[16:38:44]: --- Step: update_app_identifier ---
[16:38:44]: -----------------------------------
[16:38:44]: Updated ExampleApp/Info.plist 💾.
+------+-----------------------+-------------+
|              fastlane summary              |
+------+-----------------------+-------------+
| Step | Action                | Time (in s) |
+------+-----------------------+-------------+
| 1    | default_platform      | 0           |
| 2    | update_app_identifier | 0           |
+------+-----------------------+-------------+
[16:38:44]: fastlane.tools finished successfully 🎉
16:38:44 ExampleApp$ defaults read pwd/ExampleApp/Info.plist CFBundleIdentifier
com.example.changed
16:38:48 ExampleApp$ fgrep PRODUCT_BUNDLE_IDENTIFIER ExampleApp.xcodeproj/project.pbxproj
PRODUCT_BUNDLE_IDENTIFIER = com.example.original.ExampleApp;
PRODUCT_BUNDLE_IDENTIFIER = com.example.original.ExampleApp;
16:38:51 ExampleApp$

This is the correct output where the Info.plist is using parenthesis:

 16:38:51 ExampleApp → defaults read `pwd`/ExampleApp/Info.plist CFBundleIdentifier
$(PRODUCT_BUNDLE_IDENTIFIER)
16:40:54 ExampleApp$ fgrep PRODUCT_BUNDLE_IDENTIFIER ExampleApp.xcodeproj/project.pbxproj
				PRODUCT_BUNDLE_IDENTIFIER = com.example.original.ExampleApp;
				PRODUCT_BUNDLE_IDENTIFIER = com.example.original.ExampleApp;
16:40:58 ExampleApp$ bundle exec fastlane change_bundle_id
[✔] 🚀
[16:41:04]: ------------------------------
[16:41:04]: --- Step: default_platform ---
[16:41:04]: ------------------------------
[16:41:04]: Driving the lane 'ios change_bundle_id' 🚀
[16:41:04]: -----------------------------------
[16:41:04]: --- Step: update_app_identifier ---
[16:41:04]: -----------------------------------
[16:41:04]: Updated ExampleApp.xcodeproj 💾.
+------+-----------------------+-------------+
|              fastlane summary              |
+------+-----------------------+-------------+
| Step | Action                | Time (in s) |
+------+-----------------------+-------------+
| 1    | default_platform      | 0           |
| 2    | update_app_identifier | 0           |
+------+-----------------------+-------------+
[16:41:04]: fastlane.tools finished successfully 🎉
16:41:05 ExampleApp$ defaults read pwd/ExampleApp/Info.plist CFBundleIdentifier
$(PRODUCT_BUNDLE_IDENTIFIER)
16:41:08 ExampleApp$ fgrep PRODUCT_BUNDLE_IDENTIFIER ExampleApp.xcodeproj/project.pbxproj
PRODUCT_BUNDLE_IDENTIFIER = com.example.changed;
PRODUCT_BUNDLE_IDENTIFIER = com.example.changed;
16:41:10 ExampleApp$

Environment

✅ fastlane environment ✅
Stack

Key
Value

OS
10.14.4

Ruby
2.5.0

Bundler?
false

Git
git version 2.20.1 (Apple Git-117)

Installation Source
~/.rbenv/versions/2.5.0/bin/fastlane

Host
Mac OS X 10.14.4 (18E226)

Ruby Lib Dir
~/.rbenv/versions/2.5.0/lib

OpenSSL Version
OpenSSL 1.0.2n  7 Dec 2017

Is contained
false

Is homebrew
false

Is installed via Fabric.app
false

Xcode Path
/Applications/Xcode.app/Contents/Developer/

Xcode Version
10.2.1

System Locale

Variable
Value

LANG
en_US.UTF-8
✅

LC_ALL

LANGUAGE

fastlane files:
`./fastlane/Fastfile`
# This file contains the fastlane.tools configuration
# You can find the documentation at https://docs.fastlane.tools
#
# For a list of all available actions, check out
#
#     https://docs.fastlane.tools/actions
#
# For a list of all available plugins, check out
#
#     https://docs.fastlane.tools/plugins/available-plugins
#

# Uncomment the line if you want fastlane to automatically update itself
# update_fastlane

default_platform(:ios)

platform :ios do
  desc "Description of what the lane does"
  lane :change_bundle_id do
    update_app_identifier(
      xcodeproj: "ExampleApp.xcodeproj",
      app_identifier: "com.example.changed",
      plist_path: "ExampleApp/Info.plist"
    )
  end
end

`./fastlane/Appfile`
# app_identifier("[[APP_IDENTIFIER]]") # The bundle identifier of your app
# apple_id("[[APPLE_ID]]") # Your Apple email address

# For more information about the Appfile, see:
#     https://docs.fastlane.tools/advanced/#appfile

fastlane gems

Gem
Version
Update-Status

fastlane
2.121.1
✅ Up-To-Date

Loaded fastlane plugins:
No plugins Loaded
Loaded gems

Gem
Version

did_you_mean
1.3.0

slack-notifier
2.3.2

rouge
2.0.7

xcpretty
0.3.0

terminal-notifier
2.0.0

terminal-table
1.8.0

multipart-post
2.0.0

word_wrap
1.0.0

public_suffix
2.0.5

tty-screen
0.6.5

babosa
1.0.2

colored
1.2

highline
1.7.10

commander-fastlane
4.4.6

excon
0.62.0

unf_ext
<IP_ADDRESS>

unf
0.1.4

domain_name
0.5.20180417

http-cookie
1.0.3

faraday-cookie_jar
0.0.6

gh_inspector
1.1.3

mini_magick
4.5.1

multi_json
1.13.1

multi_xml
0.6.0

rubyzip
1.2.2

security
0.1.3

xcpretty-travis-formatter
1.0.0

bundler
2.0.1

naturally
2.2.0

simctl
1.6.5

uber
0.1.0

declarative
0.0.10

declarative-option
0.1.0

representable
3.0.4

retriable
3.1.2

mime-types-data
3.2018.0812

mime-types
3.2.2

jwt
2.1.0

signet
0.11.0

memoist
0.16.0

os
1.0.0

googleauth
0.6.7

httpclient
2.8.3

google-api-client
0.23.9

nanaimo
0.2.6

colored2
3.1.2

claide
1.0.2

CFPropertyList
3.0.0

atomos
0.1.3

xcodeproj
1.8.2

unicode-display_width
1.5.0

plist
3.5.0

addressable
2.6.0

tty-cursor
0.6.1

tty-spinner
0.9.0

faraday
0.15.4

fastimage
2.1.5

json
2.2.0

dotenv
2.7.2

faraday_middleware
0.13.1

digest-crc
0.4.1

google-cloud-env
1.0.5

google-cloud-core
1.3.0

google-cloud-storage
1.16.0

emoji_regex
1.0.1

openssl
2.1.2

date
2.0.0

fileutils
1.2.0

ipaddr
1.2.2

psych
3.1.0

generated on: 2019-04-24

👋 @macblazer , thanks for reporting the issue!
You did mention that:

Older Xcode projects and many examples show curly braces being used for variables inside the Info.plist file like ${PRODUCT_BUNDLE_IDENTIFIER}.

Do you know since what Xcode version Apple switched from curly braces to $(...)? 🤔
I was looking for it, but just found this resource where they are showing $(...).
I also checked GNU documentation and according to Basics of Variable References:

To substitute a variable’s value, write a dollar sign followed by the name of the variable in parentheses or braces: either ‘$(foo)’ or ‘${foo}’ is a valid reference to the variable foo.

So I guess it's gonna be fine to support both 👍 I will have a look at it 👀

Here we go https://github.com/fastlane/fastlane/pull/14687 🎁
@macblazer feel free to test my changes. All you need to do is to change your Gemfile
gem 'fastlane', git: 'https://github.com/fastlane/fastlane.git', branch: 'mollyIV-fix-action-update-app-identifier-curly-brackets'

Thanks 🙇 🙇


⚠ Fortnite has degraded performance

In c048b82, Fortnite (https://fortnite.com) experienced degraded performance:

HTTP code: 200
Response time: 1540 ms

Resolved: Fortnite performance has improved in bf4d3fe.


some bug fix and adjustment

first, I noticed that the bot starts duplicating commands hunt and maybe others after a long pause.
secondly, I noticed that the EpicRPG bot sends a captcha after 50 hunts per hour, so, I would like to add the function of automatic pause and resume with the possibility of adjustment in the configuration file. for example, the bot would work for 45 minutes, pause for 15 minutes, then work again for 45 minutes, etc. this would help reduce the number of captchas or remove them altogether.

also wish the ruby training would work

also auto tame pets after training. here are the buttons.
unfortunately, I don't have enough desire and time to learn and do it on my own


Installed golang still go: command not found

I know it's not the issue of this tool but maybe you guys can help.
I installed the golang but still it's showing go command not found

What is your operating system?

Kali Linux 2016.2

Run on terminal:
go env
And send me output.

root@kali:~# go env
bash: go: command not found
root@kali:~#

It will not work if golang is not configured correctly.
Try reinstall golang.
Run as root:
apt update && apt install golang
Case get some error, please send me the output.

apt install golang -y

I have installed golang and after that I am running this command go env
rook@kali:~# go env bash: go: command not found root@kali:~#
https://imgur.com/a/ykkYQ

Do you have your OS upgraded?
That's some bug on kali probably, if not solve the problem upgrading your system, try reinstall.

Maybe

Nobody else had it

You can try set GOPATH.
Moment..

Guide me please

Run
ls /usr/lib/go-1.8
And send me output.

There are folders
bin, doc, pkg, src, test VERSION AND A favicon.ico.gz

I am able to run go in bin by ./go

Ok.
Run
export GOROOT="/usr/lib/go-1.8"

Did

Run go on terminal. Works?

Nope

Lol wtf

See this image
https://imgur.com/a/lGrTg

export GOROOT="/usr/lib/go-1.8"
without /bin

Yes after seeing that I have mistakenly added bin, I removed bin and then tried still not working

I am able to run chaos by changing directory to /use/lib/go-1.8/bin
And then running ./go run /root/Desktop/CHAOS.go

But go is not able to make exe it gives error

Probably it give errors cause need environment variables configured like that:

You can set using export before:
GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/root/go"
GORACE=""
GOROOT="/usr/lib/go-1.8"
GOTOOLDIR="/usr/lib/go-1.8/pkg/tool/linux_amd64"
GCCGO="gccgo"
CC="gcc"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build786735881=/tmp/go-build -gno-record-gcc-switches"
CXX="g++"
CGO_ENABLED="1"
PKG_CONFIG="pkg-config"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"

I have all same settings

I have a folder go and go-1.7 should I delete them

i have the same problem..i dont understand because i had CHAOS it work perferct then i deleted because i had not enough space in my disk ...then aftercouple day's i download it again and now when i want to run it ,i have this strange message .." bash: go: command not found "

I finnaly had to change my os. I found no solution

@mateo24xx
When this occurs normally is because the Golang is not installed or the GOROOT is not set correctly. I don't know why this is happening, but the recommended would be reinstall Golang, if it does not resolve is probably some problem in the OS.

maybe not permission to execute the .sh file;
commend:ll  and find the file or directory  permissions

After set GOROOT,you also need export PATH=$PATH:$GOROOT/bin,then it will execute from PATH

Had same problem and this solution worked for me. This solution is specific to Kali Linux and works only if you have installed golang using apt package manager as the uninstall commands used below are dependent on apt based installation of golang.

First uninstall the current installation of golang.

apt-get purge golang

Clean up your apt caches and remove all unwanted left out dependencies of the golang which has not been uninstalled. I stacked up all housecleaning apt commands in there to ensure , there is no leftovers.

apt-get autoclean
apt-get autoremove
apt-get clean
apt-get remove

Install golang
apt-get install golang

Try out typing "go version" to check if it is installed correctly
Hope this solution works.

After set GOROOT,you also need export PATH=$PATH:$GOROOT/bin,then it will execute from PATH.
It works for me,on ubuntu 20.

You can do the following steps for install:
sudo apt-get install golang
git clone https://github.com/tomnomnom/httprobe.git
cd httprobe
go build main.go
mv main httprobe
Help:
./httprobe -h
Ref: https://www.youtube.com/watch?v=OoK-CGFjYXY

I've gone through the same problem and in my case the problem was with the go .tar.gz I've used.
So, to install Go, started by running
curl -O https://dl.google.com/go/go$VERSION.linux-amd64.tar.gz

OR
curl -O https://dl.google.com/go/go$VERSION.linux-386.tar.gz

I tested first with ...-386.tar.gz but then kept getting

/usr/local/go/bin/go: No such file or directory.

then eventually it worked fine with
curl -O https://dl.google.com/go/go1.16.6.linux-amd64.tar.gz

apt install golang -y
work perfect

Thanks for help

hiiii,

In my case, there is go is installed and go path is set. But When I am installing the chaincode it gives the error.

try exporting env in local terminal
export PATH=$(go env GOPATH)/bin:$PATH

try this :
export PATH=$PATH:/usr/local/go/bin


Library specific tutorials are not easily discoverable

Currently, to get to the gz-sim tutorials, one has to expand the "Library reference" menu, select Sim, and finally select Tutorials. I propose listing each library's tutorial in https://gazebosim.org/docs/garden/tutorials so they're just one link away from where users would go to find tutorials.

Before we start to add new tutorials, I would like to propose the reorder of the sections. See https://github.com/gazebosim/docs/pull/348

A followup issue is that the per-library links in the https://gazebosim.org/libs page are broken. I'm not finding the source code to that page anywhere.

I added the tutorial links as proposed in the original description, in a PR based on Jose's PR above https://github.com/gazebosim/docs/pull/349

As a side note: we can improve the accessibility of the tutorials for the users navigating the page but we might have a serious problem with web searches #20

Does the page need to be deployed manually? It isn't up.

Does the page need to be deployed manually? It isn't up.

Yes, gazebosim-backend has to be deployed manually each time we make changes to gazebosim/docs. I'll deploy it now and close this issue.

Thanks! Now that it's deployed, I'm seeing some of the links I added are broken :sweat_smile:
The sdformat link is broken because it's slightly different... fixed in https://github.com/gazebosim/docs/pull/353
The gz-cmake and gz-utils links are broken. These specific ones are broken even if accessed from the Library Reference links - the API page is accessible, but the tutorial page doesn't exist.
https://gazebosim.org/api/cmake/3
https://gazebosim.org/api/utils/2
Should we just remove these from the newly added list, as opposed to having links that don't work?

These specific ones are broken even if accessed from the Library Reference links - the API page is accessible, but the tutorial page doesn't exist.
https://gazebosim.org/api/cmake/3
https://gazebosim.org/api/utils/2
Should we just remove these from the newly added list, as opposed to having links that don't work?

As one of the maintainers of cmake3 I think that we should try to add the tutorials or fix whatever is preventing them to have the tutorials page. Not that I think that removing them is the best temporary solution but given that we need to go win a cycle of manually deployment, if fix that in the code side of the libraries and that solves the problem best seems to me like going forward if possible.


how to get the Tensor's numpy in process ?

hi,dear
if I just want to get the tensor's values in process?
chould you please help me ?
codes down
mnist = tf.keras.datasets.mnist

(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0

strategy = tf.distribute.MirroredStrategy()
print ('Number of devices: {}'.format(strategy.num_replicas_in_sync))
BUFFER_SIZE = len(x_train)
BATCH_SIZE_PER_REPLICA = 64
GLOBAL_BATCH_SIZE = BATCH_SIZE_PER_REPLICA * strategy.num_replicas_in_sync

# Add a channels dimension
x_train = x_train[..., tf.newaxis].astype("float32")
x_test = x_test[..., tf.newaxis].astype("float32")
train_ds = tf.data.Dataset.from_tensor_slices(
    (x_train, y_train)).shuffle(10000).batch(GLOBAL_BATCH_SIZE)
train_dist_dataset = strategy.experimental_distribute_dataset(train_ds)

class MyModel(tf.keras.Model):
    def __init__(self):
        super(MyModel, self).__init__()
        self.conv1 = tf.keras.layers.Conv2D(32, 3, activation='relu')
        self.flatten = tf.keras.layers.Flatten()
        self.d1 = tf.keras.layers.Dense(128, activation='relu')
        self.d2 = tf.keras.layers.Dense(10)
    #
    def call(self, x):
        x = self.conv1(x)
        x0 = self.flatten(x)
        x = self.d1(x0)
        return self.d2(x)

how to get the x0's values ?
thx

@ucasiggcas ,
Please go through the links with similar references for more information.It helps.Link1,Link2.
Thanks!

I got success,thx


Restrict IAM user to only Amplify Console

Please describe which feature you have a question about?
I want to restrict the user access to only the Amplify Console.
The IAM user should have no CLI access but the ability to manage the console itself (i.e. add new projects, add redirects, env variables, general settings)
Could you help me determine the proper IAM policy needed to do this?
Something like this?
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "amplify:*"
            ],
            "Resource": "*"
        }
    ]
}

{     "Version": "2012-10-17",     "Statement": [         {             "Sid": "VisualEditor0",             "Effect": "Allow",             "Action": [                 "amplify:CreateApp",                 "amplify:CreateBackendEnvironment",                 "amplify:CreateBranch",                 "amplify:DeleteApp",                 "amplify:DeleteBackendEnvironment",                 "amplify:DeleteBranch",                 "amplify:GetApp",                 "amplify:GetBackendEnvironment",                 "amplify:ListApps",                 "amplify:ListBackendEnvironments",                 "amplify:ListBranches",                 "amplify:ListDomainAssociations",                 "amplify:UpdateApp"             ],             "Resource": "*"         }     ] }
The full CLI policy definition is here for reference: https://docs.amplify.aws/cli/usage/iam


Inline image should inherit border applied to inline phrase

The converter does not currently support adding borders to inline images. While you can define a border on an inline role and wrap that around an inline image, the border does not get applied to the image.
Let's assume we define an inline role in the theme as follows:
role:
  border:
    border-width: 1
    border-color: '000000'

Then apply the role to a phrase that encloses an inline image:
[.border]#before image:image-with-border.png[] after#

The border is applied to the text, but not the image. There is something currently preventing that from working properly. Presumably, the border is not being inherited

I figured out how to support the role on the image itself as well as the inherited role. Previously, the code was not even checking for a role and propagating its associated properties in either case.


MNT: Re-rendered with conda-build 3.21.4, conda-smithy 3.8.6.post.dev25, and conda-forge-pinning 2<IP_ADDRESS>.37.38

Checklist

[ ] Used a personal fork of the feedstock to propose changes
[ ] Bumped the build number (if the version is unchanged)
[ ] Reset the build number to 0 (if the version changed)
[ ] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[ ] Ensured the license file is being packaged.

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.


Providing all binaries as tarball in releases

It would be pretty good if there would be GitHub releases including the ebpf_exporter binary together with pre-built examples in a common tarball for both architectures instead of just the ebpf_exporter binary. Advantage would be to allow pre-compiled binaries directly out of VMs in case the provided functionality of the examples would be totally enough for the specific use case.
Furthermore for the cachestat example it would be good to have a 2nd version for kernels <5.15 in the examples folder which still uses account_page_dirtied instead of folio_account_dirtied.

We provide docker images if you want to run some prebuilt examples. I suppose we can make a github action to upload both compiled examples and binaries to releases.

Furthermore for the cachestat example it would be good to have a 2nd version for kernels <5.15 in the examples folder which still uses account_page_dirtied instead of folio_account_dirtied.

Please make a PR.

Implemented in #325:

I'll attach these to the next release.


Issue when building with Aurelia-CLI

Not sure if this is an issue here, or with aurelia-bundler...
I've tried creating a new project using the new release version of the cli tool (Typescript, default settings for everything else) and then adding aurelia-breeze (adding that, aurelia-fetch-client and breeze-client to the dependencies in aurelia_project/aurelia.json). When I do au build it looks like it's deriving the wrong filename for breeze - which should be breeze.min.js
Tracing aurelia-binding...
Tracing aurelia-bootstrapper...
Tracing aurelia-breeze...
error D:\dev\AuTest\BreezeTest\node_modules\breeze-client\breeze.js
Tracing aurelia-event-aggregator...
Tracing aurelia-dependency-injection...
Tracing aurelia-framework...
Tracing aurelia-history...

Finally got to the bottom of this - there's a problem with Breeze when using AMD - the adapters etc. require the main module with the name "breeze" rather than "breeze-client".
I'll go and raise an issue with them...

Hi @dwarry , I have the same issue I think. Did you ever find a resolution or workaround?
thanks

Yeah, Breeze fixed it a while ago and it's been working for me since then, though I've been using JSPM rather than Aurelia-CLI recently.


Source: section with git_url fails json schema validation when folder option is used

when folder option is removed validation passes successfully

Looking up the schema and it seems to want me to use destination instead of folder tag, perhaps it is just read me.md update
https://boa-build.readthedocs.io/en/latest/recipe_spec.html

@alexshagiev
Seems like this issue here https://github.com/mamba-org/boa/issues/313 could be the cause of what you are experiencing

@pelumi1163  - i don't think so because i am using full path git & svn url and not relative path. However, since you pointed this out i see this line is expecting tag name to be folder instead destination. The issue i think is that at some point the json yaml validation schema was changed to use destination for svn , git, etc but the code still expects folder

duplicate of #311 and should be resolved by #316


Snmalloc2 API cleanups for sandbox use.

This is the set of changes required for snmalloc2 to be usable by the
process sandboxing code and incorporates some API changes that reduce
the amount of code required to embed snmalloc.  Highlights:

The existing code expects to have an instance of the Globals object
but this is only ever used as a handle for the type.  There is no
mechanism for providing a different globals object to different
consumers (except by providing a different type) and so all methods
are purely stateless and refer either to static fields or to fields
of a singleton.  This mechanism does not benefit from lazy static
initialisation because there is a separate mechanism for lazy
initialisation.  This version removes any instantiation of the
globals class and makes all state per-type, not per instance.  All
methods on the globals class are now static and we no longer thread
an empty object through a load of methods internally.
Not every configuration needs to use the lazy initialisation hooks.
They now need to be provided only if they are used.  If the
configuration does not provide an ensure_init method, it is not
called.  If it does not provide an is_initialised method then the
global initialisation state is not checked.
There is now an snmalloc::Options class that default initialises
itself to the default behaviour.  Every configuration must provide a
constexpr instance of this class.  Each flag can be separately
overridden and new flags can be added without breaking any existing
API consumers.

For the sandbox case, I currently have an empty GlobalState and put everything sandbox-specific in LocalState.  It would be easy for LocalState to have a reference to a per-larger-context if it's necessary (e.g. one LocalState per thread with a reference to a SandboxState).  Providing a way of requesting a LocalState per {some context} is probably less invasive than a similar thing for different GlobalState.

  I'll merge once CI is happy.


Support stamping

I should be able to push a specific tag with something like bazel run --stamp --embed_label=1.2.3 //path/to:my_oci_push
Will use https://github.com/aspect-build/bazel-lib/blob/main/docs/stamping.md

In addition to tags, there should be support for stamping labels (and possibly other fields).

@thesayyn I have a new idea to approach this that doesn't require we run more actions, and maybe it also satisfies your desire to have a file passed in.
# instead of default_tags: ["latest"] we have a new metadata attribute:
oci_push(
    name = "push_image",
    metadata = {"default_tags": ["latest"]},
    image = ":image",
    repository = "index.docker.io/<ORG>/image",
)

metadata could later include custom labels as well.
oci_push becomes a macro so that dict value is supported, like we do for inline tsconfig.json:
def oci_push(name, metadata = None, **kwargs):
    if types.is_dict(metadata):
        metadata_label = "_{}_write_metadata".format(name)
        write_file(
            name = metadata_label,
            out = "_{}.json".format(name),
            content = [json.encode(metadata)],
        )
        metadata = metadata_label

    oci_push_rule(
        name = name,
        metadata = metadata,
        **kwargs
    )

so the attribute on the oci_push rule  is a label pointing to a JSON file.
Now the user can use the existing affordance for stamping in our jq rule:
jq(
    name = "stamped_metadata",
    srcs = [],
    filter = "|".join([
        "$ARGS.named.STAMP as $stamp",
        # With --stamp, use the --embed_label value, otherwise use 0.0.0
        """.default_tags = [($stamp.BUILD_EMBED_LABEL // "0.0.0")]""",
    ]),
)

oci_push(
    name = "push_image_index",
    metadata = ":stamped_metadata",
    image = ":image_index",
    repository = "index.docker.io/<ORG>/image",
)

WDYT?

I updated #70 with a partly-working implementation for this proposal

I love this. it's almost what I tried to describe to you in our call. like the idea that stamping is done in a separate action and fed as a file to the rule.

What do you think about stamping / label support for the repository attribute of oci_push?
The use case I have in mind is enabling developers to test out a container image in their private container registry (think ghcr.io/<user>/foo) via a build setting but also having a default setting for releases (like company.tld/foo).

Thanks! Getting the company involved may take some time. I'll discuss it internally.
Donating privately may be an option. What I can offer is helping out with maintenance and feature development in some capacity.


PreparedStatement insert cannot handle single column insert

For single column insert there is a problem. The compiler emits an error  message - Found: (1 : Int) Required: scalamacros.statements.CallArgs[Nothing]. Any way to resolve it?
BTW, thanks for the excellent article - https://medium.com/codex/scala-3-macros-without-pain-ce54d116880a and source codes that accompany the article.
@main def preparedStatemntTest(): Unit = {

  val statement = StatementGenerator.createPreparedStatement("user")(ColDef[Int]("id"))

  statement.insert(1) //Found: (1 : Int) Required: scalamacros.statements.CallArgs[Nothing]

}

I have found a solution for the problem I reported, it is not optimal though. For single column, I need explicitly create the a tuple i.e.  ColDefInt *: EmptyTuple. Of course the insert will have to be statement.insert(1 *: EmptyTuple) as well

Thank you for pointing this out. The current implementation works only with tuples (automatically simplified). I've added a change that should handle a single argument case. Please see the PR if it solves the problem: https://github.com/plewand/scala3-macros/pull/2/files. If so I'll update the post in free time.

Thanks for your response. Your solution is the optimal solution I am seeking as I had a workaround to handle the single ColDef by creating another. I posted to Scala Gitter to seek help for a better solution for my workaround, but there were no response https://gitter.im/scala/scala?at=61963c2d026dc63ca60256d4
BTW, I also modified your article example from Quote/Splice to Inline as described in Scala gitter example.
Thanks for your article and code example. Your article is really an excellent primer into Scala 2 macro .


2.2 IIS InProcess Hosting Question

Describe the bug
We aren't quite the bug phase yet, is there any way to tell once the app starts if its being run InProcess vs OutOfProcess in IIS?  Does changing the setting in web.config override setting the value in the csproj?

Is it locally or in Azure? The main difference is that there would be no dotnet.exe/Application.exe process running in InProcess case.

This would be locally but on a server we we won’t have access to.  So I was hoping there was a way programmatically we could get access to the info. Thanks for the quick response @pakrym.


Option to always fully maximize window when dragged to top of screen.

Description of the new feature / enhancement
I want to disable Windows Snap and only use Fancy Zones. However, there is one feature Windows Snap that I can't live without, which is the ability to full maximize windows when they are dragged to the top of the screen.
This means I have to have both FancyZones and Windows Snap activated simultaneously, which can lead to some unwanted behavior in certain situations.
I would love a tickbox that enables "fully maximize if window dragged to top of screen", that would enable this feature regardless of what your FancyZone layout is for that monitor.
Scenario when this would be used?
This would enable me to disable Windows Snap and only use FancyZones to arrange my windows, but retain a key feature of Windows Snap that is currently missing from FancyZones.
Supporting information
No response

With Windows snapping disabled, you can hit Windows Key + Up Arrow to fully maximize your currently focused window!

With Windows snapping disabled, you can hit Windows Key + Up Arrow to fully maximize your currently focused window!

Fair enough, and I did know this, but doesn't really address the request for this added functionality. When I'm dragging windows between monitors, it's a bit annoying to have to drag the window over, set it down, and then get my fingers into position to hit Win+up to maximize the window -- instead of just dragging it to the top of the correct monitor screen to maximize. But obviously I'm just requesting a feature on a free piece of software and nobody is obligated to implement it or think it's a good idea. Thanks for the reply regardless.

Totally get what you're saying here. If the issue is that moving between mouse (for dragging) and the keyboard (for shortcutting) gets frustrating, I just read about a shortcut (haven’t tested this yet and replying from a mobile device) to allow you to move windows between monitors:
“If you want to move a window to a display located to the left of your current display, press Windows + Shift + Left Arrow. If you want to move a window to a display located to the right of your current display, press Windows + Shift + Right Arrow.”
Assuming this works, maybe combining this with the other shortcut at least allows you to contain your movements to the keyboard.


Add GSSOC'23 Navbar Clone

close #1400
Hi, @pranjay-poddar, I've successfully created a navbar clone of GSSOC'23 webpage.
please consider merging my pull request in the main branch.

@Ayush9951 Why have you added Flow CV login Page? There's two commit related to "Flow Cv login page". If it's by mistake, Please remove it. Then only I can proceed further.


NuGet install fails for Silverlight

From FAQ - http://faq.labs.cityindex.com/questions/can-t-install-or-upgrade-ciapi-cs-in-the-silverlight-application
install-package CIAPI.CS
Successfully installed 'CIAPI.CS <IP_ADDRESS>'.
Successfully uninstalled 'CIAPI.CS <IP_ADDRESS>'.
Install failed. Rolling back...
Install-Package : Could not install package 'CIAPI.CS <IP_ADDRESS>'. You are trying to install this package into a project that targets 'Silverlight,Version=v4.0', but the package does not contain any assembly references
 that are compatible with that framework. For more information, contact the package author.
At line:1 char:16
+ install-package <<<<  CIAPI.CS
    + CategoryInfo          : NotSpecified: (:) [Install-Package], InvalidOperationException
    + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PowerShell.Commands.InstallPackageCommand

re-added SL and P7.  needs to be published somewhere to test deployment. nuget official has stabel


Difference of semantic_seg and mask

Hello,
Silly question, what is the difference between the mask and the semantic segmentation map?
When I try to train detectoRS it needs the segmentation masks a-priori. I thought that these can be retrieved from my coco dataset. Is my conception wrong?
Thanks

You can refer to this answer

@yhcao6 Ok I understand that. But, the maskRCNN can be trained without the gt_semantig_seg keyword and computes the masks from the polys.
Why the detectoRS is different in this regard?
Both networks are designed for instance segmentation.

DetectoRS itself doesn't need semantic_seg, but HTC does. For the detail, you can refer to the paper of HTC.

Ok, Its because of the segmentation branch. Thank you!


[Arch] Refresh databases before installing

Fix #1
Refresh and upgrade package databases before installing additional packages, by adding the -yu options.
Fix #2
Add the --needed option to pacman, so existing packages won't be reinstalled,

https://discourse.doomemacs.org/t/development-roadmap/42#do-not-pr-11


Add a changelog

You're using GH releases right now but the way to get the changelog integrated into VS Code and the marketplace is by adding a CHANGELOG.md file to the root of the extension folder.

Hmm so the best would be to mirror/reflect it also in the CHANGELOG.md?

@mxschmitt There are GitHub actions that exist that will copy notes from changelogs to a release when you push a tag.  I've used this one in the past and I actually wrote an article about it.
Alternatively, if you use a tool like Changesets for managing releases it will take care of putting notes in both places.

Triaging issues that are not in the immediate plans.

That's a shame, this makes it much harder for users to find what has changed in product.


runs/conversion/invocation is not generated according to the schema

according to:
https://gitlab.com/ignis-build/sarif-converter/-/issues/60
"Invocation object and not a string"

Thanks for raising this!  I think this was already fixed - see #50 - but we haven't published the fixed tool version on PyPI yet.  Please take a look and reopen if you think there's anything wrong with that fix.

looks like there is still a problem:
INFO:SNYK-OSS:cmd: ['check-jsonschema', '--schemafile', 'https://gitlab.com/gitlab-org/security-products/security-report-schemas/-/raw/master/dist/dependency-scanning-report-format.json', 'gl-dependency-scanning-report.json']
INFO:SNYK-OSS:stdout:
ok -- validation done
INFO:SNYK-OSS:cmd: ['sarif', 'copy', '--output', '.report/gl-sast-report.sarif', '.report/sarif']
INFO:SNYK-OSS:stdout:
Wrote .report/gl-sast-report.sarif with 4 runs from 4 SARIF files
INFO:SNYK-OSS:cmd: ['check-jsonschema', '--schemafile', 'https://docs.oasis-open.org/sarif/sarif/v2.1.0/errata01/os/schemas/sarif-schema-2.1.0.json', '.report/gl-sast-report.sarif']
ERROR:SNYK-OSS:stdout:
Schema validation errors were encountered.
  .report/gl-sast-report.sarif::$.runs[0].conversion.invocation: 'executionSuccessful' is a required property
  .report/gl-sast-report.sarif::$.runs[1].conversion.invocation: 'executionSuccessful' is a required property
  .report/gl-sast-report.sarif::$.runs[2].conversion.invocation: 'executionSuccessful' is a required property
  .report/gl-sast-report.sarif::$.runs[3].conversion.invocation: 'executionSuccessful' is a required property

Sorry for the oversight here.  Fix pending in #62


Pre-approve provider emails before first sign-in

Context
It is possible for any user with a DfE login to get an authenticated sessions within our service. Whether they can use the provider interface depends on the existence of a database-backed ProviderUser with the same uid.
uid values, however, are not known in advance, when a Provider is onboarded. The current process consists of emailing providers asking for their users to get DfE sign-in accounts, log into Apply, see the authorisation error, at which point we can grab their uid and add them to the system.

By creating provisional user records with no uid but with an email address, if such email addresses are known in advance, we could pre-approve these users so that when they get their DfE sign-in accounts and log in they can start using the provider interface straight away.
We have decided to add these pre-approved/provisional users as provider_users with a blank uid instead of creating a different table. This will allow us to re-use any UI components developed to support the many-to-many relationship between users and providers. There may be a checkbox or notice attached about leaving uid blank within the form.
Changes proposed in this pull request
This PR makes uid an optional field for ProviderUser by:

removing the NOT NULL constraint for dfe_sign_in_uid from provider_users
removing the unique index from dfe_sign_in_uid on provider_users (would only allow one NULL)
removing validates_presence_of for :uid in ProviderUserForm
allowing nil as a value for uid in ProviderUserForm while preventing the empty string

Furthermore, a unique index is added to email_address on provider_users. ProviderUser's #load_from_session will now match the DfE sign-in session on uid as before, but if that fails it will attempt to match on email and set the nil UID if the email matches.
Before:

After:

Guidance to review
Use http://localhost:3000/support/users/provider/new to create a new ProviderUser leaving the uid blank but adding a previously unused email address. Log out, then sign in to the provider interface using this new email address. You should NOT see:

... but be able to access the provider_interface straight away.
Link to Trello card
Data sharing agreement onto 'Manage'

This sounds like a good idea! 👍


At-least-once processing for asynchronous subscriptions

With asynchronous subscriptions, the producing client receives a 202 Accepted once the emitted event has been committed to an internal queue. A worker then grabs the event from the queue, fetches the relevant subscriptions, and attempts to trigger the relevant functions. This setup allows for at-most-once processing but does not provide resiliency in the event of failure of the Event Gateway node.
For this ticket, we should implement at-least-once processing for asynchronous events so that a producing client can feel confident that the emitted event will be processed by downstream subscribers.

@alexdebrie do you have any thoughts on how you would implement this?
As I read through the EG docs, I kind of expected a section explaining how EG would set up managed event queues of your favorite cloud provider behind the scenes to solve at-least-once processing. For example, if I created an event foo, EG would set up a Google PubSub topic foo and subscribe to it, feeding subscriptions created via the EG API.
This would mean that on posting an event to EG, it doesn't call the subscribed functions directly but sends the event to the associated queue. When the event comes back down from the queue, it sends it to the subscribed functions and removes it from the queue if this has been successful.
What do you think?

Hey @486, thanks for jumping it.
We've discussed this a bit internally, and that's exactly the way we're planning on handling it -- using some sort of queue to manage events to protect against Event Gateway instances dying.
We're prioritizing some other work right now, but let us know if you'd like to help with this! It's a decent chunk of work that will require some upfront design, but I'm sure @mthenw would be happy to discuss if you're interested.

Thanks for the reponse @alexdebrie ! Glad to hear my idea is valid. I might consider it, but I have another question around the project. How can I PM you?

 You can email me at<EMAIL_ADDRESS>.


update js dependencies to current versions

this has been done already (updated to a certain fixed point for now)


fix(responsive-web-design): change follow-btn class name to action-button-container

Checklist:

[x] I have read freeCodeCamp's contribution guidelines.
[x] My pull request has a descriptive title (not a vague title like Update index.md)
[x] My pull request targets the master branch of freeCodeCamp.
[x] All the files I changed are in the same world language, for example: only English changes, or only Chinese changes, etc.

Closes #39608 | Improve warnings about extensions?

Changes:

All changes were tested locally
Switches all instances of follow-btn to action-button-container as suggested in #39608

@moT01 Is adding a note about the class name change a viable solution?
It is a bit unfortunate that we have to remove so many videos (five) just because we changed one class name. They do still explain and show usage, there is just inconsistency with the class name.
I think using follow-bttn might cause more confusion than an obvious difference.

Just an FYI, this is the filter list blocking follow-btn
https://easylist-downloads.adblockplus.org/fanboy-annoyance.txt

Thanks for the link @lasjorg. I'm not really a fan of adding notes all over the place - although, they are needed many times. Not sure if I should continue the discussion here or back on the issue but - what about adding info about the extension issue in the forum hint article? or perhaps the ask for help modal instead of trying to adjust the lessons?
What happens if/when some extension does this for another class we use? Just keep changing the lessons around and removing the videos? I'm wondering if this isn't the right approach. Perhaps we should just let those forum posts go in and let people get help there. Or try to find a blanket solution like maybe one of my suggestions. I kind of like the idea of putting a warning in the hint articles.

Perhaps we should just let those forum posts go in and let people get help there. Or try to find a blanket solution like maybe one of my suggestions. I kind of like the idea of putting a warning in the hint articles.

What about a test at the top of the list that looks for the follow button to exist?
- text: The .follow-btn should be rendered on the page. Be sure to turn off any extensions such as ad blockers.
  testString: assert(follow button exists)

@nhcarrigan I kind of like that idea.
Unlike color issues with extensions, the missing button we can actually test for by just querying the DOM for the element.

I think it's the approach that would be most clear to our users (and remain compatible with the videos)

@lasjorg @nhcarrigan Can you specify exactly what the contributor needs to do?  I assume the current changes are not what is wanted.

Revert everything back.

Add a new test, in the assert test for the button. I tested this assert using the Fanboy's Social Blocking List and it turns out the element is not removed from the DOM but is just set to display: none. We should probably test for both though.

- text: The .follow-btn should be rendered on the page. Be sure to turn off any extensions such as ad blockers.
  testString: assert($('.follow-btn').length > 0 && $('.follow-btn').css('display') !== 'none');

Add the test to all the flexbox challenges.

@luqven Can you please do as @lasjorg has suggested?
Thank you @lasjorg for the detailed response.  That really helped.

@luqven On second thought, since all the changes need to be reverted and we are getting ready to merge a PR that will completely change the layout of all challenge files, I am going to close this PR.  If you don't mind, wait a couple of days until we have validated the above referenced PR has not caused any undesirable effects.
Thank you for understanding.


P1: "Done" on Patient Details goes to Search instead of Home

When you search for a patient, then add a BP, then hit "Done" on the green button at the bottom of the patient details screen, the user is taken back to search.
Note: When you add a new patient, the flow is correct and the user is returned to the home screen.
Tested on production app.

Fixed by 6c30fd2b79ad32f5ba6316082d1570ef10a75cab


[4.0][Feature Proposal] Dynamic default field values based on GET parameters

In my code, I often add a row button in tables to add a related model easily.
For instance, I have a "store" and "book" models, with a 1-N relation (one store has many books), I want, from the table "store", to add a book linked to one store, so I add a button in each row of "store", leading to the URL /admin/book/create?store=2
Then, in my BookCrudController, I add such code:
$request = request();
$this->crud->addField([
            'name' => 'store_id',
            'label' => 'Store',
            'type' => 'select2',
            'entity' => 'store',
            'attribute' => 'name',
            'model' => 'App\Models\Store',
            'default' => $request->has('store') ? $request->input('store') : null,
            'attributes' => [
                'autocomplete' => 'off',
            ]
 ]);

It works: the store is automatically selected in the book creation form. However, it is not very readable/practical, as the autocomplete=off is required to avoid cached values by the browser.
It would be nice to have this feature, like this:
'default' => 1
'default_from_request' => 'store'

If store is a parameter of the request, then it is selected as the default value and the autocomplete is automatically added, otherwise the default is taken into account.
Not sure if there is a better mean to do it, but with such a feature, it would simplify the way to link tables/models between them.

Hi @jrpub ,
Thanks for bringing this up. I don't know... it seems to me like we already have a good solution for default values - the one you mentioned is both:

already available for all field types
invisible (the admin would not be able to see/modify the default value from the URL)

I'm reluctant on adding default values through GET parameters because:

it needs to be added to all field types;
as a developr, when adding a default value, you'd need to (1) remove the Add button and (2) replace it with your own button, with that GET parameter in the URL; this alternative process seems unintuitive to me - I think it's much more intuitive to plug in the default value when you do addField(); I think "autocomplete=off" is a small tradeoff for setting the default value in an intuitive place;

I'm leaning towards declining this feature request, I'm afraid - seems like a lot of work (both for the feature, and for the end-developer who would use it) for little benefit. Of course, I might be wrong - it's been known to happen :-) I'll leave this issue open for feedback for a while, to let others voice their opinion.
Cheers!

Hi @jrpub ,
On second thought, I think I'm going to close this now, I'm sorry. As I said before, I don't think this is really necessary, since we already have a way to do this, and this second way is NOT better than the first, in my opinion. It might be useful for your current project, but I think adding this second option to do this... it would just complicate most Backpacker's lives.
Again - sorry.
Cheers!


Fix gossip validator unit tests

Describe the bug
We need to bring this back https://github.com/ChainSafe/lodestar/blob/master/packages/lodestar/test/unit/network/gossip/validator.test.ts#L31

closed via #1438


What is the performance impact of sandbox?

Does sandbox affect the performance of programs?

The tool itself does not have any performance impact itself - the toolkit only sets up seccomp filters for the application, but otherwise is inactive on runtime:

if you use libsandbox.so - the code from the library runs only on process startup to set up the filters
if you use sandboxify - it is the same as libsandbox.so, but even more - the sandboxify code is completely evicted from the process address space once the main application gets execution control, so the code is not even there

The only potential performance impact you might get is the impact of the Linux seccomp filters themselves. The kernel will execute these filters for each system call the application makes so the exact impact depends on how complex these filters are and how many system calls a particular application does. In other words - it is dependent on a particular workflow.
But in general, for a simple system call allowlist/denylist filters - there should be no visible impact as the resulting filters are quite simple.

Thanks for the response.


Refactor into streamlit based app w/ milvus+llama-index as RAG backend on top of Ollama

TODO:

background refresh coroutine/thread (currently just caches all series and their embeddings on startup), we want to refresh (figure out how to get individual doc ids from vectorstore)
More efficient indexing for larger TSDBs with millions of series
This code is pretty terrible 😅 code cleanups/separate into classes/modules
YAML based config
Different UI with this as Server (streamlit seems too toy-like atm)
Embedded query view?
Different model backends (vLLM/ollama/openai/gemini/azure)
Actually, make this deployable on k8s
Switch to federate call for prometheus (much easier to get all the data, even if slow)
Metric metadata embeddings

I wonder if this would be any easier in Go 🙈

Superseded by #2