Not Library related

Hi Brian, first thank you for your work.
I have implemented your Spotify api  in order to show current track name and artist on a rgb matrix display (single 64x32 module with esp32 hub75 / Mrfaptastic library ).
Although in principle it works correctly, I can't show the name of the artist with dma_display->print(currentlyPlaying.artists[i].artistName);
I get compiling error with this funtion on RGB matrix display (on serial monitor is just fine)ç
Another help that I would like to ask you, is if it is possible to make the text scroll since there is not space for so much information in a simple panel.
Thanks in advance
`// ----------------------------
// Standard Libraries
// ----------------------------
#if defined(ESP8266)
#include <ESP8266WiFi.h>
#elif defined(ESP32)
#include <WiFi.h>
#endif
#include <Adafruit_GFX.h>
#include <Adafruit_GrayOLED.h>
#include <Adafruit_SPITFT.h>
#include <Adafruit_SPITFT_Macros.h>
#include <gfxfont.h>
#include <Arduino.h>
#include "Fonts/FreeSansBold9pt7b.h"
#include "Fonts/FreeSansBold12pt7b.h"
#include "Fonts/FreeSansBold18pt7b.h"
#include "Fonts/Picopixel.h"
#include "Fonts/FreeSerif9pt7b.h"
#include "Fonts/FreeSerif12pt7b.h"
#include "Fonts/FreeSerif18pt7b.h"
//#include "Fonts/FreeSerif12pt7b.h"
#include <WiFiClientSecure.h>
#include <ESP32-HUB75-MatrixPanel-I2S-DMA.h>
// ----------------------------
// Additional Libraries - each one of these will need to be installed.
// ----------------------------
#include <SpotifyArduino.h>
// Library for connecting to the Spotify API
// Install from Github
// https://github.com/witnessmenow/spotify-api-arduino
// including a "spotify_server_cert" variable
// header is included as part of the SpotifyArduino libary
#include <SpotifyArduinoCert.h>
#include <ArduinoJson.h>
// Library used for parsing Json from the API responses
// Search for "Arduino Json" in the Arduino Library manager
// https://github.com/bblanchon/ArduinoJson
//------- Replace the following! ------
char ssid[] = "MiFibra-XXXX";         // your network SSID (name)
char password[] = "XXXXXXX"; // your network password
char clientId[] = "XXXXXXXXXXXXXXXXXXXXXXXXXXXX";     // Your client ID of your spotify APP
char clientSecret[] = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; // Your client Secret of your spotify APP (Do Not share this!)
// Country code, including this is advisable
#define SPOTIFY_MARKET "IE"
#define SPOTIFY_REFRESH_TOKEN "AQBn5xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx--D4oPfCCMaXZAnQqBcxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxaO4"
//------- ---------------------- ------
// -------------------------------------
// -------   Matrix Config   ------
// -------------------------------------
const int panelResX = 64;      // Number of pixels wide of each INDIVIDUAL panel module.
const int panelResY = 32;     // Number of pixels tall of each INDIVIDUAL panel module.
const int panel_chain = 1;      // Total number of panels chained one to another
#define ENABLE_DOUBLE_BUFFER 1 // This is a good example to show the difference the //estaba quitado originalmente
// double buffer makes, it doesn't flash as much
// comment this out to test without it
// See the "displaySetup" method for more display config options
//------------------------------------------------------------------------------------------------------------------
MatrixPanel_I2S_DMA *dma_display = nullptr;
WiFiClientSecure secured_client;
uint16_t myBLACK = dma_display->color565(0, 0, 0);
uint16_t myWHITE = dma_display->color565(255, 255, 255);
uint16_t myRED = dma_display->color565(255, 0, 0);
uint16_t myGREEN = dma_display->color565(0, 255, 0);
uint16_t myBLUE = dma_display->color565(0, 0, 255);
uint16_t myPINK = dma_display->color565(227, 28, 121);
uint16_t myYELLOW = dma_display->color565(255, 255, 0);
uint16_t myPURPLE = dma_display->color565(199, 36, 177);
void displaySetup() {
HUB75_I2S_CFG mxconfig(
panelResX,   // module width
panelResY,   // module height
panel_chain    // Chain length
);
#ifdef ENABLE_DOUBLE_BUFFER
// This is how you enable the double buffer.
// Double buffer can help with animation heavy projects
mxconfig.double_buff = false;
#endif
mxconfig.clkphase = false;
dma_display = new MatrixPanel_I2S_DMA(mxconfig);
dma_display->begin();
}
TaskHandle_t Task1;
WiFiClientSecure client;
SpotifyArduino spotify(client, clientId, clientSecret, SPOTIFY_REFRESH_TOKEN);
unsigned long delayBetweenRequests = 6000; // Time between requests (1 minute)
unsigned long requestDueTime; //time when request due
void setup()
{
Serial.begin(115200);

displaySetup();
dma_display->fillScreen(myBLACK);
dma_display->setFont(&FreeSansBold9pt7b);
dma_display->setCursor(0,20);
dma_display->setTextSize(1);     // size 2 == 16 pixels high
dma_display->setTextWrap(false); // N.B!! Don't wrap at end of line
dma_display->setTextColor(myWHITE);
#ifdef ENABLE_DOUBLE_BUFFER
dma_display->flipDMABuffer();
#endif
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
Serial.println("");

// Wait for connection
while (WiFi.status() != WL_CONNECTED)
{
    delay(500);
    Serial.print(".");
}
Serial.println("");
Serial.print("Connected to ");
Serial.println(ssid);
Serial.print("IP address: ");
Serial.println(WiFi.localIP());

// Handle HTTPS Verification

#if defined(ESP8266)
client.setFingerprint(SPOTIFY_FINGERPRINT); // These expire every few months
#elif defined(ESP32)
client.setCACert(spotify_server_cert);
#endif
Serial.println("Refreshing Access Tokens");
if (!spotify.refreshAccessToken())
{
    Serial.println("Failed to get access tokens");
}

}
void printCurrentlyPlayingToSerial(CurrentlyPlaying currentlyPlaying)
{
Serial.print("Track: ");
Serial.println(currentlyPlaying.trackName);
dma_display->fillScreen(myBLACK);
dma_display->setCursor(0,20);
dma_display->print(currentlyPlaying.trackName);

Serial.println("Artist: ");
for (int i = 0; i < currentlyPlaying.numArtists; i++)
{
    Serial.print("Name: ");
    Serial.println(currentlyPlaying.artists[i].artistName);
    //Serial.print("Artist URI: ");
    //Serial.println(currentlyPlaying.artists[i].artistUri);
    Serial.println();
}

}
void loop()
{
#ifdef ENABLE_DOUBLE_BUFFER
dma_display->flipDMABuffer();
#endif
if (millis() > requestDueTime)
{
    Serial.println("getting currently playing song:");
    // Market can be excluded if you want e.g. spotify.getCurrentlyPlaying()
    int status = spotify.getCurrentlyPlaying(printCurrentlyPlayingToSerial, SPOTIFY_MARKET);
    if (status == 200)
    {
        Serial.println("Successfully got currently playing");
    }
    else if (status == 204)
    {
        Serial.println("Doesn't seem to be anything playing");
    }
    else
    {
        Serial.print("Error: ");
        Serial.println(status);
    }
    requestDueTime = millis() + delayBetweenRequests;
}

}`

Hello,
Part 1 of your question. I'm surprised dma_display->print(currentlyPlaying.artists[i].artistName); didn't work, what was the compile error?
Part 2: yeah they are very limited for space ok! I have a scrolling text example on the Trinity Github repo that should hopefully help
https://github.com/witnessmenow/ESP32-Trinity/blob/master/examples/BuildingBlocks/Text/ScrollingText/ScrollingText.ino
it should be simple enough to modify this to use spotify
inside your spotify callback just update the text variable and reset it's position
void printCurrentlyPlayingToSerial(CurrentlyPlaying currentlyPlaying)
{
    Serial.print("Track: ");
    Serial.println(currentlyPlaying.trackName);

    String tempText = String(currentlyPlaying.trackName);
    if(text != tempText){
        text = tempText;
        textXPosition = 64;
    }

}

A couple of thoughts around this:

You may need to modify this example to display more than one bit of information
Checking spotify will hog the ESP processor, which will stop the scrolling, so maybe limit checking spotify to when text is off screen (Or move the scrolling and display logic to the second ESP32 core, but that is more complicated)

Thank you very much for your advice. I apologize because I am very new to programming and it is difficult for me to make changes that do not result in compilation errors.
Tomorrow morning I'll try what you suggest, in the office.
I normally put music on spotify to my colleagues and they often ask me the names of artists they don't know.
It's very funny, because currently we all use another of your APIs (telegram-api bot ) to send us scrolling messages in the office since we all share the same Bot.
If you ever visit Malaga, I already owe you several beers!!

Part 1 of your question. I'm surprised dma_display->print(currentlyPlaying.artists[i].artistName); didn't work, what was the compile error?

The error is: currentlyPlaying' was not declared in this scope , when i try to put on both setup or loop part of the code.
However,  dma_display->print(currentlyPlaying.trackName); seens to work OK in the Void Setup part, but no on the loop part.
So, i think i need those funtions working on the loop part in order to integrate with your Trinity - scroll skecht (that works like a charm)

This is the close i can get:
Youtube link: https://youtu.be/8d21nvXapiw
Where cursor seens to be scrolling as expected, i can only draw 1 time track name every spotify callback, so i put 1 second between calls. really laggy result this way.
`// ----------------------------
// Standard Libraries
// ----------------------------
#if defined(ESP8266)
#include <ESP8266WiFi.h>
#elif defined(ESP32)
#include <WiFi.h>
#endif
#include <Adafruit_GFX.h>
#include <Adafruit_GrayOLED.h>
#include <Adafruit_SPITFT.h>
#include <Adafruit_SPITFT_Macros.h>
#include <gfxfont.h>
#include <Arduino.h>
#include "Fonts/FreeSansBold9pt7b.h"
#include "Fonts/FreeSansBold12pt7b.h"
#include "Fonts/FreeSansBold18pt7b.h"
#include "Fonts/Picopixel.h"
#include "Fonts/FreeSerif9pt7b.h"
#include "Fonts/FreeSerif12pt7b.h"
#include "Fonts/FreeSerif18pt7b.h"
#include "Fonts/FreeSerifBold9pt7b.h"
#include <WiFiClientSecure.h>
#include <ESP32-HUB75-MatrixPanel-I2S-DMA.h>
#include <UniversalTelegramBot.h>
// ----------------------------
// Additional Libraries - each one of these will need to be installed.
// ----------------------------
#include <SpotifyArduino.h>
// Library for connecting to the Spotify API
// Install from Github
// https://github.com/witnessmenow/spotify-api-arduino
// including a "spotify_server_cert" variable
// header is included as part of the SpotifyArduino libary
#include <SpotifyArduinoCert.h>
#include <ArduinoJson.h>
// Library used for parsing Json from the API responses
// Search for "Arduino Json" in the Arduino Library manager
// https://github.com/bblanchon/ArduinoJson
//------- Replace the following! ------
char ssid[] = "MiFibra-XXXX";         // your network SSID (name)
char password[] = "XXXXXXXX"; // your network password
#define BOT_TOKEN "57XXXXXXXXXXXXXXXL__pTXXXXXXXXXXXA"
char clientId[] = "35XXXXXXXXXXXXXXXXXXXXXXXXXX6";     // Your client ID of your spotify APP
char clientSecret[] = "d5XXXXXXXXXXXXXXXXXXXXXXXXXd8"; // Your client Secret of your spotify APP (Do Not share this!)
// Country code, including this is advisable
#define SPOTIFY_MARKET "IE"
#define SPOTIFY_REFRESH_TOKEN "AQBn5kuXb5qGpZBPE9GGS4D0yNsa26y8Kqu2JTH2QXNrSEwhgv9rQm3a--D4oPfCCMaXZAnQqBcRST9bbHlYppWwCfjGEpukAchtpC-Q6TXO6rHGM7xbxEyrT4p8fKpbaO4"
//------- ---------------------- ------
// -------------------------------------
// ------- Matrix Config ------
// -------------------------------------
const int panelResX = 64; // Number of pixels wide of each INDIVIDUAL panel module.
const int panelResY = 32; // Number of pixels tall of each INDIVIDUAL panel module.
const int panel_chain = 1; // Total number of panels chained one to another
#define ENABLE_DOUBLE_BUFFER 1 // This is a good example to show the difference the //estaba quitado originalmente
// double buffer makes, it doesn't flash as much
// comment this out to test without it
// See the "displaySetup" method for more display config options
//------------------------------------------------------------------------------------------------------------------
MatrixPanel_I2S_DMA *dma_display = nullptr;
// For scrolling Text
unsigned long isAnimationDue;
int delayBetweeenAnimations = 25; // Smaller == faster
int textXPosition = panelResX * panel_chain; // Will start off screen
int textYPosition = panelResY / 2 - 8; // center of screen - 8 (half of the text height)
String text = "ESP32 Trinity, by Brian Lough";
WiFiClientSecure secured_client;
uint16_t myBLACK = dma_display->color565(0, 0, 0);
uint16_t myWHITE = dma_display->color565(255, 255, 255);
uint16_t myRED = dma_display->color565(255, 0, 0);
uint16_t myGREEN = dma_display->color565(0, 255, 0);
uint16_t myBLUE = dma_display->color565(0, 0, 255);
uint16_t myPINK = dma_display->color565(227, 28, 121);
uint16_t myYELLOW = dma_display->color565(255, 255, 0);
uint16_t myPURPLE = dma_display->color565(199, 36, 177);
void displaySetup() {
HUB75_I2S_CFG mxconfig(
panelResX, // module width
panelResY, // module height
panel_chain // Chain length
);
#ifdef ENABLE_DOUBLE_BUFFER
// This is how you enable the double buffer.
// Double buffer can help with animation heavy projects
mxconfig.double_buff = false;
#endif
mxconfig.clkphase = false;
dma_display = new MatrixPanel_I2S_DMA(mxconfig);
dma_display->begin();
}
TaskHandle_t Task1;
WiFiClientSecure client;
SpotifyArduino spotify(client, clientId, clientSecret, SPOTIFY_REFRESH_TOKEN);
unsigned long delayBetweenRequests = 1000; // Time between requests (1 minute)
unsigned long requestDueTime; //time when request due
void setup()
{
Serial.begin(115200);
displaySetup();
dma_display->fillScreen(myBLACK);
//dma_display->setFont(&FreeSerifBold9pt7b);
dma_display->setTextSize(2); // size 2 == 16 pixels high
dma_display->setTextWrap(false); // N.B!! Don't wrap at end of line
dma_display->setTextColor(myWHITE);
#ifdef ENABLE_DOUBLE_BUFFER
dma_display->flipDMABuffer();
#endif
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
Serial.println("");
// Wait for connection
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.print("Connected to ");
Serial.println(ssid);
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
// Handle HTTPS Verification
#if defined(ESP8266)
client.setFingerprint(SPOTIFY_FINGERPRINT); // These expire every few months
#elif defined(ESP32)
client.setCACert(spotify_server_cert);
#endif
Serial.println("Refreshing Access Tokens");
if (!spotify.refreshAccessToken())
{
Serial.println("Failed to get access tokens");
}
}
void printCurrentlyPlayingToSerial(CurrentlyPlaying currentlyPlaying)
{
Serial.print("Track: ");
Serial.println(currentlyPlaying.trackName);
dma_display->fillScreen(myBLACK);
//dma_display->setCursor(0,20);
dma_display->print(currentlyPlaying.trackName);
Serial.println("Artist: ");
for (int i = 0; i < currentlyPlaying.numArtists; i++)
{
Serial.print("Name: ");
Serial.println(currentlyPlaying.artists[i].artistName);
//Serial.print("Artist URI: ");
//Serial.println(currentlyPlaying.artists[i].artistUri);
Serial.println();
}
}
// Will be used in getTextBounds.
int16_t xOne, yOne;
uint16_t w, h;
void loop()
{
unsigned long now = millis();
if (now > isAnimationDue)
{
isAnimationDue = now + delayBetweeenAnimations;
textXPosition -= 1;

// Checking is the very right of the text off screen to the left
dma_display->getTextBounds(text, textXPosition, textYPosition, &xOne, &yOne, &w, &h);
if (textXPosition + w <= 0)
{
  textXPosition = 64;
}

dma_display->setCursor(textXPosition, textYPosition);

// The display has to do less updating if you only black out the area
// the text is
//dma_display->fillScreen(myBLACK);
//dma_display->fillRect(0, textYPosition, dma_display->width(), 16, myBLACK);

// dma_display->print(text);
#ifdef ENABLE_DOUBLE_BUFFER
dma_display->flipDMABuffer();
#endif
}
#ifdef ENABLE_DOUBLE_BUFFER
dma_display->flipDMABuffer();
#endif
if (millis() > requestDueTime)
{
Serial.println("getting currently playing song:");
// Market can be excluded if you want e.g. spotify.getCurrentlyPlaying()

// int status = spotify.getCurrentlyPlaying(printCurrentlyPlayingToSerial, SPOTIFY_MARKET);
int status = spotify.getCurrentlyPlaying(printCurrentlyPlayingToSerial);
if (status == 200)
{
Serial.println("Successfully got currently playing");
}
else if (status == 204)
{
Serial.println("Doesn't seem to be anything playing");
}
else
{
Serial.print("Error: ");
Serial.println(status);
}
requestDueTime = millis() + delayBetweenRequests;
}
}
`


Return additional data from tools to agent executor

Hi, I noticed that tools return type is set to string but it actually accepts JSON object as well, which will allow it to pass additional data down to main executor and you can use it like below:
// tools.ts
	public async _call(data) {
		const extractChain = await createExtractionChainFromZod(this.schema, getChatGPTModel())
		const extractedData = await extractChain.call({ query: data })

		return  {
			content: "can be gpt output text, if any",
			name: this.name,
			additional_kwargs: {
				myTool:{ extractedData }
			}
	}

// agent.ts
	const kwargs = intermediateSteps.flatMap((step) => {
			const { observation } = step;
			const { additional_kwargs: kwargs } = observation || {};

			return kwargs;
		});

		return new AIMessage(output, {
			metadata: { parameters: usedParameters, toolsOutput: kwargs }, // <---
		});

Now my question is am I doing this right? Or if there are any other better way to achieve this? If not, is it possible if we can fix the return type of tools/dynamicTools to accept object? Thanks 🙏

The tool default is expecting a string result https://github.com/langchain-ai/langchainjs/blob/main/langchain/src/tools/base.ts#L75, if you want you have to override call() instead of _call()


Add KafkaReader for processing streaming data with Apache Kafka

This is a proposal to add KafkaReader so that it is possible to read data from Kafka like TextLineReader and TFRecordReader.
Apache Kafka is a widely used distributed streaming platform in open source community. The goal of this fix is to create a contrib Reader ops (inherits ReaderBase and is similiar to TextLineReader / TFRecordReader) so that it is possible to reader Kafka streaming data from TensorFlow in a similiar fashion.
This fix uses a C/C++ Apache Kafka client library librdkafka which is released under the 2-clause BSD license, and is widely used in a number of Kafka bindings such as Go, Python, C#/.Net, etc.
Below is a sample usage:
import tensorflow as tf
import tensorflow.contrib.kafka as kafka

# The name of test:0:0:10
# test: topic
# 0: partition
# 0: offset
# 10: length (or -1 for unlimited)
#
# The parameters for KafkaReader
# servers: bootstrap.servers
# group: group.id
# eof: If True then read will block until the length of the data
#      has been read and ignore EOF error from Kafka

filename_queue = tf.train.string_input_producer(["test:0:0:10"])

reader = kafka.KafkaReader(servers="localhost", group="test", eof=True)
key, value = reader.read(filename_queue)
with tf.Session() as sess:
  coord = tf.train.Coordinator()
  threads = tf.train.start_queue_runners(coord=coord)
  for i in range(10):
    print(sess.run([key, value]))
  coord.request_stop()
  coord.join(threads)

NOTE: Because of #1419, the clean_deps of tensorflow/core:framework and tensorflow/core:lib has been commented out temporarily so that it is possible to build with ReaderBase. Any suggestions to address this issue is welcomed.
Signed-off-by: Yong Tang<EMAIL_ADDRESS>

Can one of the admins verify this patch?

/cc @terrytangyuan for the discussions.

@jhseu can you take a look?

Seems reasonable to add, but can we implement this as a Dataset instead? See tensorflow/core/kernels/reader_dataset_ops.cc

The queue style of reading will be deprecated.

Thanks @jhseu for the feedback! Let me take a look and update the PR accordingly.

It seems that Dataset requires tensorflow/core/kernels/dataset.cc to link as a .so. However, that is problematic becuase the class of Dataset will exist in two places and the kernel will not recognize the one in .so.
That is quite similar to the issue faced in  #1419. Not sure how to get around it other than building the KafkaDataset into the core kernel.

@mrry @allenlavoie Derek or Allen, any thoughts on how we might make a dataset in contrib that gets exposed as a shared library? I'm guessing it would just require moving some of the classes over to the framework directory?

@jhseu It should be possible in the next week or two. The current layering is bit more intricate than that, but a couple of changes in flight will enable us to remove the current dependency on core/common_runtime and allow building DatasetOpKernel and DatasetBase subclasses in a separate shared library.

Thanks @jhseu @mrry, please keep me posted on the changes in Dataset so that I could update the PR accordingly.

@jhseu @mrry have the changes been pushed? Thanks.

Not yet: we're waiting on a CL from @rohan100jain that will sever the dependency between captured_function.cc and tensorflow/core/common_runtime/..., so we can split all the tf.contrib.data kernels into a separate library that only depends on tensorflow/core/framework/....

Thanks! @rohan100jain please ping this thread once ready.


Problems with keys non-ascii letters

When I define a keyboard shortcut to move message to a specific folder, and that folder contains non-ASCII characters (Polish diacritics to be specific), the command does not work - pressing the key has no effect.
When I close and re-open the preferences page sometimes, depending on the character in question, the shortcut is displayed properly (probably when the folder name contains 'ó'), more often the diacritic gets replaced with something else (I recall 'B' and '&' being used).

Closing this in favor of #4. Fixing that issue should also fix this one.


bee node CPU load average is too high

I start a bee node, but the CPU load average is too high, and the is my disk r/w speed:
/dev/sda:
 Timing O_DIRECT cached reads:   528 MB in  2.01 seconds = 263.33 MB/sec
 Timing O_DIRECT disk reads: 266 MB in  3.07 seconds =  86.53 MB/sec

When I use iostat -d -x -k 1 10, the result is like this:
Device            r/s     w/s     rkB/s     wkB/s   rrqm/s   wrqm/s  %rrqm  %wrqm r_await w_await aqu-sz rareq-sz wareq-sz  svctm  %util
sda            290.00    0.00   2488.00      0.00     0.00     0.00   0.00   0.00  622.41    0.00 186.29     8.58     0.00   3.45 100.00
dm-0           281.00    0.00   2396.00      0.00     0.00     0.00   0.00   0.00  710.78    0.00 217.91     8.53     0.00   3.56 100.00
dm-1             0.00    0.00      0.00      0.00     0.00     0.00   0.00   0.00    0.00    0.00   0.00     0.00     0.00   0.00   0.00

Device            r/s     w/s     rkB/s     wkB/s   rrqm/s   wrqm/s  %rrqm  %wrqm r_await w_await aqu-sz rareq-sz wareq-sz  svctm  %util
sda            306.00    0.00   2524.00      0.00     0.00     0.00   0.00   0.00  380.82    0.00 186.42     8.25     0.00   3.27 100.00
dm-0           306.00    0.00   2692.00      0.00     0.00     0.00   0.00   0.00  426.73    0.00 211.77     8.80     0.00   3.27 100.00
dm-1             0.00    0.00      0.00      0.00     0.00     0.00   0.00   0.00    0.00    0.00   0.00     0.00     0.00   0.00   0.00

Has anyone encountered this problem ？

Me too.

Try playing with the flags below:
--db-block-cache-capacity uint            size of block cache of the database in bytes (default 33554432)
      --db-disable-seeks-compaction             disables db compactions triggered by seeks
      --db-open-files-limit uint                number of open files allowed by database (default 200)
      --db-write-buffer-size uint               size of the database write buffer in bytes (default 33554432)

If you join our Discord channel (#node-operators), then they can help you with tweaking the parameters in a way such that it is optimal for your system. Apart from that, we are continuously inspecting the resource consumption of the Bee node and try to improve.
Thank you for running Bee!


Model.train() needs a refactor

The stopping criteria and nesting of  are getting unwieldy and bugs are likely to creep in. It's also quite long and could be broken down.

The train method seems like it's very long and perhaps doing a bit too much in the one method. I'd need some info as to where the code can be split though. I feel like the training and file handling could be in separate methods here.

I'd be happy to pair program a bit on this one to get this cleaned up, let me know if you are keen.

Sounds good, let's do it.

I've cleaned this up a bit in #147, specifically I have moved to using context managers for a few things so that handling the closing of files and sessions is easier. It has made the nesting one level deeper in places though, but overall I think it's less complex.

I feel like when #154 is closed we can close this issue.


Compose LazyColumn bug when using activity to capture the screenshot.

I'll preface this issue that I think the issue is down the chain (Facebook screenshot library or Compose). The reason I'm filing this here is to see if others have run into it here and to provide this to others who run into it.
Expected behaviour
The screenshot is not capturing layout correctly when using compareScreenshot(activity) with a LazyColumn composable.
Actual behaviour
There should be: Row 1, Row N, ..., Row 5 laid out in the list, but it all overlaps.

Steps to reproduce
Test activity
class TestActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            AppContent()
        }
    }
}

@Composable
fun AppContent() {
    DesignTheme(
        lightMode = true
    ) {
        Box(modifier = Modifier
            .fillMaxSize()
            .background(backgroundColor())
        ) {
            Column {
                Text("Lazy Column Rows (1-5):")

                LazyColumn(modifier = Modifier.fillMaxWidth().fillMaxHeight()) {
                    (1..5).forEach { value ->
                        item {
                            Text("Row $value")
                        }
                    }
                }
            }
        }
    }
}

The test logic
class LazyColumnTest : ScreenshotTest {

    @get:Rule
    val composeRule = createAndroidComposeRule<TestActivity>()

    @Test
    fun lazyColumnTest() {
        compareScreenshot(composeRule.activity)
    }
}

Version of the library
Used the latest 5.11.2

The issue really lies with how the Facebook screenshot library generates bitmaps. It uses an old way instead of relying on semi-new PixelCopy utility. I've copied logic from androidx.compose.ui.test which uses PixelCopy and integrated with the ScreenshotTest in Karumi/Shot:
object MyScreenshots {

    fun takeScreenshot(activity: Activity, name: String? = null) {
        val testObject = object : ScreenshotTest {

        }
        val bitmap: Bitmap = captureActivity(activity)
        testObject.compareScreenshot(bitmap, name)
    }
}

private fun captureActivity(activity: Activity): Bitmap {
    val windowToCapture = activity.window
    val handler = Handler(Looper.getMainLooper())

    awaitDraw(activity)

    val locationInWindow = intArrayOf(0, 0)
    val view = activity.window.decorView
    view.getLocationInWindow(locationInWindow)
    val x = locationInWindow[0]
    val y = locationInWindow[1]
    val captureRectInWindow: Rect = Rect(0, 0 , view.measuredWidth, view.measuredHeight)
    captureRectInWindow.offset(x, y)

    // and then request the pixel copy of the drawn buffer
    val destBitmap = Bitmap.createBitmap(
        captureRectInWindow.width(),
        captureRectInWindow.height(),
        Bitmap.Config.ARGB_8888
    )

    val latch = CountDownLatch(1)
    var copyResult = 0
    val onCopyFinished = PixelCopy.OnPixelCopyFinishedListener { result ->
        copyResult = result
        latch.countDown()
    }
    PixelCopy.request(windowToCapture, captureRectInWindow, destBitmap, onCopyFinished, handler)

    if (!latch.await(1, TimeUnit.SECONDS)) {
        throw AssertionError("Failed waiting for PixelCopy!")
    }
    if (copyResult != PixelCopy.SUCCESS) {
        throw AssertionError("PixelCopy failed!")
    }
    return destBitmap
}

private fun awaitDraw(activity: Activity) {

    val windowToCapture = activity.window
    val handler = Handler(Looper.getMainLooper())

    // first we wait for the drawing to happen
    val drawLatch = CountDownLatch(1)
    val decorView = windowToCapture.decorView
    handler.post {
        if (Build.VERSION.SDK_INT >= 29 && decorView.isHardwareAccelerated()) {
            decorView.viewTreeObserver.registerFrameCommitCallback {
                drawLatch.countDown()
            }
        } else {
            decorView.viewTreeObserver.addOnDrawListener(object : ViewTreeObserver.OnDrawListener {
                var handled = false
                override fun onDraw() {
                    if (!handled) {
                        handled = true
                        handler.post {
                            drawLatch.countDown()
                            decorView.viewTreeObserver.removeOnDrawListener(this)
                        }
                    }
                }
            })
        }
        decorView.invalidate()
    }
    if (!drawLatch.await(1, TimeUnit.SECONDS)) {
        throw AssertionError("Failed waiting for DecorView redraw!")
    }
}

Since the Facebook screenshot library doesn't seem to be well maintained, I wonder if Karumi/Shot should replace it with an internal implementation.

I'm afraid the library we use under the hood is not compatible with compose so you'll have to test your composable function using the Compose API I created.
About this:

Since the Facebook screenshot library doesn't seem to be well maintained, I wonder if Karumi/Shot should replace it with an internal implementation

Due to the fact that I'm working on a different project right now and there are no more active contributors implementing new features, I don't think this is something we can do. At least for now.

The issue happens with mixed-use apps which will usually be the case during migration to Compose. Would you be open if I contributed it? I have a working setup in our codebase and could add it here behind an optional flag?

I think, if we want to be pragmatic, we should ask for the feature to the original facebook library even before implementing this. Implementing our own solution when taking the screenshot is a huge change in our codebase and would change how shot works under the hood. We should first check if Facebook is providing support for this feature and later make a decision.


jcenter migration?

Or, is there a good replacement for this?

Found this!
https://github.com/barteksc/AndroidPdfViewer/issues/1005


[FEATURE REQUEST] Graceful Shutdown

Is your feature request related to a problem? Please describe.
Graceful shutdown of temporal workers if requested
Describe the solution you'd like
When SIGTERM is sent, then I'd like for roadrunner to:

stop receiving jobs
process all pooled jobs
shutdown workers after all pooled jobs has been processed.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
This is a continuation of https://github.com/temporalio/roadrunner-temporal/issues/34

I am going to implement a graceful shutdown like in the Kubernetes. First CTRL+C (SIGINT, SIGTERM) hit will stop the execution but wait for the requests which already came to the RR. The second hit will force RR to exit.


Project Euler: Problem 1: Multiples of 3 and 5 - First test case is wrong?

Describe your problem and how to reproduce it: In the first problem of the Project Euler, I got an error with the first test case, don't know why it says is wrong.
Add a Link to the page with the problem:
https://learn.freecodecamp.org/coding-interview-prep/project-euler/problem-1-multiples-of-3-and-5/
Tell us about your browser and operating system:

Browser Name: Brave Browser
Browser Version: 0.66.82 Chromium: 75.0.3770.38 (Official Build) beta (64-b
Operating System: Mac OS 10.15

Code:
function multiplesOf3and5(number) {
  let sum = 0, i = 3;

  for(i; i <= number; i++) {
    if ((i % 3 == 0) || (i % 5 == 0)) sum += i;
  }

  return sum;
}

multiplesOf3and5(1000);

Cases:

Mine is returning 234168, not 233168.

Closed, sorry misread the problem.
"Find the sum of all the multiples of 3 or 5 below the provided parameter value number."


Release 2023-04-26

Release 2023-04-26
NB: this PR must be merged only by 'Create a merge commit'!
Checklist when preparing for release

[ ] Read or refresh the release flow guide
[ ] Ask in the cloud Slack channel that you are going to rollout the release. Any blockers?
[ ] Does this release contain any db migrations? Destructive ones? What is the rollback plan?

Checklist after release

[x] Make sure instructions from PRs included in this release and labeled manual_release_instructions are executed (either by you or by people who wrote them).

[ ] #3954

post-release: fix "broken" => "Broken" in prod alert

[ ] Based on the merged commits write release notes and open a PR into website repo (example)
[ ] Check #dev-production-stream Slack channel
[ ] Check stuck projects page
[ ] Check recent operation failures
[ ] Check cloud SLO dashboard
[ ] Check compute startup metrics dashboard

Outdated, new one will be built by @vadim2404 with #4104.


Orientation and navigation mode added as a dimension

https://openedx.atlassian.net/browse/MA-1185
Segment library updated to latest version and moved to gradle file instead of the snapshot in the libs folder
PlayServices, Compat Libraries and MultiDex versions updated to latest, as they were causing errors with the inclusion of Segment's latest version
@1zaman @bguertin @aleffert plz review

:+1:

all the review changes have been made, but Travis is still failing for some reason.

There's a server change, but I'm dealing with it

We just need to add the play services repository to .travis.yml, as seen here http://docs.travis-ci.com/user/languages/android/

I think if we don't, travis still has it but uses an outdated version which doesn't have the new dependencies (which is why it was working before)

It was working before because we had Play Services included locally as a static dependency.

I've reverted targetSdkVersion back to 21 cuz it being set to 22 causes our current version of Robolectric to throw this exception:

java.lang.UnsupportedOperationException: Robolectric does not support API level 22.

Furthermore, if we try updating Robolectric to its latest snapshot supporting API Level 22 i.e. Robolectric 3.1 SNAPSHOT the tests run fine locally but Travis hangs up and ultimately fails as signified by this PR https://github.com/edx/edx-app-android/pull/361


Update package version for hpe-csm-scripts Main

Summary and Scope
Update package version for hpe-csm-scripts for CASMHMS-5346 - Change lock_management_nodes.py to lock nodeBMCs of management nodes
Issues and Related PRs

Resolves CASMHMS-5346

Testing
For testing, see https://github.com/Cray-HPE/hpe-csm-scripts/pull/9
Risks and Mitigations
low
Pull Request Checklist

[x] Version number(s) incremented, if applicable
[x] Copyrights updated
[x] License file intact
[x] Target branch correct
[x] CHANGELOG.md updated
[x] Testing is appropriate and complete, if applicable
[x] HPC Product Announcement prepared, if applicable
[ ]

This PR seems a bit stale, but we don't build from main anywho.. assuming this is updated in release/1.2 it should be fine to merge.


[TrOCR] - Stage2 weights

Hi,
Is it possible to share the stage2 weights for the model as well which is fine-tuned using mix of handwritten and machine text?

@riteshKumarUMass, we do not have plans to release the stage2 weights yet.


Random Loss of Credentials

Hi,
I was searching official documentation and previous issues to see if this issue was ever brought up before, but couldn't find anything.  Please let me know what technical information would help you to understand the problem further too.
We have a Solr-Operator instance running that provisioned a 10-node SolrCloud cluster (4 NRT, 2 TLOG, 4 PULL).  Everything was functional.  It was connected to our main app that was running a solr index operation (~1.3M indexes).  Upon randomly checking in on the running index, we noticed that our main app started throwing a  401 Bad Credential Error.  We refreshed the credentials and the application seems to have been able to reconnect to the SolrCloud cluster.  However, we're not sure what may have caused the issue.

From the perspective of Solr-Operator, is there any insight on an unlikely situation/conditions/events that would cause the credentials to be lost in this manner?

In case it's helpful, a capture of the Solr error

Can you explain how you have setup authentication for your SolrCloud? Maybe post the yaml for your solr cloud?

Follow-up question: Are restarts resilient while a search index is being built?

Yes, if you are using persistent storage for your SolrCloud. If you are using ephemeral, then there are no promises currently. The story there should get better in future versions.

Can you explain how you have setup authentication for your SolrCloud? Maybe post the yaml for your solr cloud?

To support dynamic creation, we have terraform code that runs to create/destroy credentials on-call.  Per the solr-operator docs, it uses the admin password to create/remove new users through the Solr Admin UI.

Enable authentication
Create new authentication login keypair
Delete existing authentication login keypair

Yes, if you are using persistent storage for your SolrCloud. If you are using ephemeral, then there are no promises currently. The story there should get better in future versions.

Understood.  After I asked the question and before you responded, I found your other issue (https://github.com/apache/solr-operator/issues/365).  We will be moving to persistent volumes 👍

Also, since the zookeepers have ephemeral storage too, would the security.json with the credentials possibly be lost on replace/restarts? 🤔

Also, since the zookeepers have ephemeral storage too, would the security.json with the credentials possibly be lost on replace/restarts? 🤔

That is certainly possible... You definitely want to be running your ZK cluster with persistent storage.

We refreshed the credentials and the application seems to have been able to reconnect to the SolrCloud cluster.

What do you mean by refreshed. I'm assuming you created a new authentication keypair and deleted the old one using your terraform scripts?

What do you mean by refreshed. I'm assuming you created a new authentication keypair and deleted the old one using your terraform scripts?

Yes, using the terraform scripts, we destroyed the original credentials and created new credentials.

Hi @HoustonPutman, thanks for your continued support!  As we are figuring out how to deploy solr with persistent storage, we're running into a few bumps and would appreciate your confirmation on a few things.
We setup our EKS cluster with an EFS volume.  (EBS doesn't have proper support for Fargate nodes where we are running.)  Stupid question, but the solr-operator would be  happy with EFS too, right?
The EFS volume gets mounted to all nodes that are started on our cluster that have a Private IP.  We tested this functionality by pulling and running a test case from the upstream aws-efs-csi-driver repo.  So we have confidence that EFS is setup for our cluster properly.
I'm trying to provision a solrcloud cluster with the solr-operater and am running into issues with PVC not being bound to the solrcloud pods.  I'm still debugging, but do you have any insights on things I would have to change other than this?

Hmmm.... so upon further research, it seems like there's a race condition happening in either the solr or solr-operator helm charts.
Inspecting the pvc that solr tries to create,

Inspecting the pod that solr-operator tries to create,

 Full Pod Inspection
nickumia@DL62-2-2MDD043:~/datagov-brokerpak$ kubectl describe pods solr-50d858e0985ecc7f-solrcloud-0
Name:                 solr-50d858e0985ecc7f-solrcloud-0
Namespace:            default
Priority:<PHONE_NUMBER>
Priority Class Name:  system-node-critical
Node:                 <none>
Labels:               app.kubernetes.io/instance=solr-50d858e0985ecc7f
                      app.kubernetes.io/managed-by=Helm
                      app.kubernetes.io/name=solr
                      app.kubernetes.io/version=8.9.0
                      controller-revision-hash=solr-50d858e0985ecc7f-solrcloud-74f75459bd
                      eks.amazonaws.com/fargate-profile=default-namespaces-k8s-5fcb154753056b9c
                      helm.sh/chart=solr-0.5.0
                      solr-cloud=solr-50d858e0985ecc7f
                      statefulset.kubernetes.io/pod-name=solr-50d858e0985ecc7f-solrcloud-0
                      technology=solr-cloud
Annotations:          kubernetes.io/psp: eks.privileged
                      solr.apache.org/nextScheduledRestart: 2022-01-28T23:20:00Z
                      solr.apache.org/solrXmlMd5: 843652bc6b529b66f46bcdae6764ab4e
Status:               Pending
IP:
IPs:                  <none>
Controlled By:        StatefulSet/solr-50d858e0985ecc7f-solrcloud
Init Containers:
  cp-solr-xml:
    Image:      library/busybox:1.28.0-glibc
    Port:       <none>
    Host Port:  <none>
    Command:
      sh
      -c
      cp /tmp/solr.xml /tmp-config/solr.xml
    Environment:  <none>
    Mounts:
      /tmp from solr-xml (rw)
      /tmp-config from data (rw)
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-qzccw (ro)
  setup-zk:
    Image:      docker.io/solr:8.11
    Port:       <none>
    Host Port:  <none>
    Command:
      sh
      -c
       ZK_SECURITY_JSON=$(/opt/solr/server/scripts/cloud-scripts/zkcli.sh -zkhost ${ZK_HOST} -cmd get /security.json); if [ ${#ZK_SECURITY_JSON} -lt 3 ]; then echo $SECURITY_JSON > /tmp/security.json; /opt/solr/server/scripts/cloud-scripts/zkcli.sh -zkhost ${ZK_HOST} -cmd putfile /security.json /tmp/security.json; echo "put security.json in ZK"; fi
    Environment:
      ZK_HOST:        solr-50d858e0985ecc7f-solrcloud-zookeeper-0.solr-50d858e0985ecc7f-solrcloud-zookeeper-headless.default.svc.cluster.local:2181,solr-50d858e0985ecc7f-solrcloud-zookeeper-1.solr-50d858e0985ecc7f-solrcloud-zookeeper-headless.default.svc.cluster.local:2181,solr-50d858e0985ecc7f-solrcloud-zookeeper-2.solr-50d858e0985ecc7f-solrcloud-zookeeper-headless.default.svc.cluster.local:2181/
      ZK_CHROOT:      /
      ZK_SERVER:      solr-50d858e0985ecc7f-solrcloud-zookeeper-0.solr-50d858e0985ecc7f-solrcloud-zookeeper-headless.default.svc.cluster.local:2181,solr-50d858e0985ecc7f-solrcloud-zookeeper-1.solr-50d858e0985ecc7f-solrcloud-zookeeper-headless.default.svc.cluster.local:2181,solr-50d858e0985ecc7f-solrcloud-zookeeper-2.solr-50d858e0985ecc7f-solrcloud-zookeeper-headless.default.svc.cluster.local:2181
      SECURITY_JSON:  <set to the key 'security.json' in secret 'solr-50d858e0985ecc7f-solrcloud-security-bootstrap'>  Optional: false
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-qzccw (ro)
Containers:
  solrcloud-node:
    Image:      docker.io/solr:8.11
    Port:       8983/TCP
    Host Port:  0/TCP
    Requests:
      cpu:      1
      memory:   1G
    Liveness:   http-get http://:8983/solr/admin/info/system delay=20s timeout=1s period=10s #success=1 #failure=3
    Readiness:  http-get http://:8983/solr/admin/info/system delay=15s timeout=1s period=5s #success=1 #failure=3
    Environment:
      SOLR_JAVA_MEM:   -Xms300m -Xmx300m
      SOLR_HOME:       /var/solr/data
      SOLR_PORT:       8983
      SOLR_NODE_PORT:  80
      POD_HOSTNAME:    solr-50d858e0985ecc7f-solrcloud-0 (v1:metadata.name)
      SOLR_HOST:       default-$(POD_HOSTNAME).sub-nickumia40.ssb-dev.data.gov
      SOLR_LOG_LEVEL:  INFO
      GC_TUNE:
      SOLR_STOP_WAIT:  55
      ZK_HOST:         solr-50d858e0985ecc7f-solrcloud-zookeeper-0.solr-50d858e0985ecc7f-solrcloud-zookeeper-headless.default.svc.cluster.local:2181,solr-50d858e0985ecc7f-solrcloud-zookeeper-1.solr-50d858e0985ecc7f-solrcloud-zookeeper-headless.default.svc.cluster.local:2181,solr-50d858e0985ecc7f-solrcloud-zookeeper-2.solr-50d858e0985ecc7f-solrcloud-zookeeper-headless.default.svc.cluster.local:2181/
      ZK_CHROOT:       /
      ZK_SERVER:       solr-50d858e0985ecc7f-solrcloud-zookeeper-0.solr-50d858e0985ecc7f-solrcloud-zookeeper-headless.default.svc.cluster.local:2181,solr-50d858e0985ecc7f-solrcloud-zookeeper-1.solr-50d858e0985ecc7f-solrcloud-zookeeper-headless.default.svc.cluster.local:2181,solr-50d858e0985ecc7f-solrcloud-zookeeper-2.solr-50d858e0985ecc7f-solrcloud-zookeeper-headless.default.svc.cluster.local:2181
      SOLR_OPTS:       -DhostPort=$(SOLR_NODE_PORT)
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-qzccw (ro)
      /var/solr/data from data (rw)
Conditions:
  Type           Status
  PodScheduled   False
Volumes:
  data:
    Type:       PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
    ClaimName:  data-solr-50d858e0985ecc7f-solrcloud-0
    ReadOnly:   false
  solr-xml:
    Type:      ConfigMap (a volume populated by a ConfigMap)
    Name:      solr-50d858e0985ecc7f-solrcloud-configmap
    Optional:  false
  default-token-qzccw:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  default-token-qzccw
    Optional:    false
QoS Class:       Burstable
Node-Selectors:  <none>
Tolerations:     node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                 node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
  Type     Reason            Age   From               Message
  ----     ------            ----  ----               -------
  Warning  FailedScheduling  42m   fargate-scheduler  Pod not supported on Fargate: volumes not supported: data not supported because: PVC data-solr-50d858e0985ecc7f-solrcloud-0 not bound

From my understanding the order of operations is,

Create PV
Create PVC
Create Pod

It seems like the pod is waiting for the PVC to be bound but the PVC is not getting bound because it's waiting for the pod to start up.  This may only be an issue because of Fargate issues.  I was trying to inspect the solr helm chart for an order of operations, but didn't see anything that would represent an order of operations.  Can you help verify that there aren't any complex dependencies between the PVC creation and the Pod creation?

So there is no issue with the helm charts, or the Solr Operator really.
The Solr Operator utilizes many of the Kubernetes built-in-resources to run Solr, included the StatefulSet. The operator relies on Kubernetes to manage the PVCs mostly itself through the StatefulSet controller. As a part of defining a StatefulSet, you can provide a PVC template that it will use to create a PVC for every pod in the statefulSet.
Since your PVCs are not able to be dynamically provisioned, you will need to create your PVs for them to map to before creating your SolrCloud (as you mentioned). You need to make sure that you are creating at least the same number of PVs as the number of SolrCloud pods you have requested.
As to why it can't bind the PVC to your PV, have you made sure that you are setting the same StorageClass for your PV and PVCs (the same one you are creating your PVs with)? The PVCs and PVs cannot bind if they do not have the same storageClassName and meet the size requirements in your PVC. (You can find all of the PVC options for you Solr pods here: https://artifacthub.io/packages/helm/apache-solr/solr#data-storage-options)
Looking through the single PV that you are creating, it is not setting a storage class, while your SolrCloud PVC spec is setting a storage class of "gp2" (as shown in your kubectl describe pvc above).

Hi again @HoustonPutman 😄
We overhauled our implementation a bit.  We're,

using managed-node-groups instead of fargate (accepting the increased compliance load for our application) and
implemented the ebs EKS addon instead of efs EKS addon.

Because of these changes, the solr-operator and solr helm charts have no issue provisioning PVs and starting solrcloud nodes.  We think this will resolve the loss of credentials issue based on discussions in this thread, current testing and general observations.  I appreciate your continued guidance on our journey.  No need of response yet.  I will post back within the next week after we do a full load test.

I'm so sorry for the delay!  We've had a few other issues that we've had to work through.
Updated timeline:  We should have the results by the end of next week.

I think it's safe to close this issue as the problem was using ephemeral storage for everything.  Switching to persistent storage seems to have a stable configuration.  Thanks again @HoustonPutman!


jsx-handler-names, stateless components and object destructuring

I'm seeing something related to #346 in my eslint errors:

I solved it by changing the code, but shouldn't it work considering input is just a prop?

Try const handleChange = input.onChange; first.

@ljharb I did solve it by changing the code as I said but the point is: that code shouldn't yield an error, should it?
The same object destructuring works without any trick in normal components.

Ah, fair point. If the same code (with const { input } = this.props; and then using input.onChange) passes in a non-SFC, then there’s definitely a bug.
The bug might be that the SFC warns, or that the stateful component doesn’t warn, but either way they should behave the same.

My mistake: the message happens with a stateful component too.
Actually, it happens even if not destructuring the object: onChange={props.input.onChange} and onChange={this.props.input.onChange}.
In other words, the rule always accepts a props.onEvent but never a nested props.nested.onEvent, and it's the same when destructuring.
https://github.com/yannickcr/eslint-plugin-react/blob/4f3fc51e32467afbeccc4954765f4312e8e76edf/lib/rules/jsx-handler-names.js#L39
I think it's a bug because if props.onChange is acceptable, why props.input.onChange wouldn't be?

It shouldn't be acceptable in general because flat props are way better than nested ones :-)
However, I agree that it should be equally acceptable to this rule.

@ljharb Any updates on this issue?

@acherkashin no; but a PR with failing tests would be very helpful.

It seems like this can be covered by setting eventHandlerPropPrefix to false. Happy to reopen if not.

I don't understand how setting eventHandlerPropPrefix to false fixes this issue.
eventHandlerPropPrefix applies to the prop name and also when a handler is assigned as it is from the function props as in
<MyComponent onChange={props.onChange} />

What if I want to code like this
const MyInput = ({onChange}) => {
 ...
  return <input type='text' onChange={onChange} />
}

It's indeed stylistic, and if you prefer on you should configure it that way.
That said, if setting it to false stops reporting on those two examples but is reporting on onChange, that's a bug - could you please file a new issue?

It is not reporting onChange either and it seems that it doesn't report at all. So, I'm not sure if a bug should be opened per what you said but you can let me know again after going through this observation.
I tried to inspect code https://github.com/jsx-eslint/eslint-plugin-react/blob/master/lib/rules/jsx-handler-names.js#L144 to see what is happening:

Setting eventHandlerPropPrefix: false, sets the eventHandlerPropPrefix to null - Line 97
This then sets the PROP_EVENT_HANDLER_REGEX to null - Line 104
This then sets propIsEventHandler to null - Line 140
And then neither of the if condition executes - Line 144 and Line 157

Please let me know what do you think?

Right, i expect them all not to warn if it’s set to false. If you want the prefix “on” you’d need to set it to that.

Sorry, I'm confused.

i expect them all not to warn if it’s set to false>

It seems this is desired

It seems like this can be covered by setting eventHandlerPropPrefix to false.

This is what you suggested above and closed the bug and I took it as a solution to what is reported.
So both these look contradictory. Am I wrong in understanding the conversation?

Also if you can let me know if a new bug needs to open for the code situation mentioned in this link.

Maybe I'm confused :-) are you saying that you want it to warn on onChange={onChange}, or you want it not to warn? Which one are you unable to achieve?

I do not want onChange={onChange} to be warned because it comes from destructuring the props
but I want onChange={changeHandler} to be warned because it doesn't use handle prefix.

The rule definitely doesn't - and isn't intended to - differentiate based on whether it comes from props or not. If the prop is named onChange then you can rename it when you destructure it to handleChange, for example.

OK. Thank you!

I believe this rule doesn't work with destructuring because when you destructure you are creating a local variable.
This produces and error.
export function Component({onClick}) {
  return (
    <Button
      onClick={onClick}
    >
      Click Me
    </Button>
  );
}

This works fine.
export function Component(props) {
  return (
    <Button
      onClick={props.onClick}
    >
      Click Me
    </Button>
  );
}

If you destructure you will unfortunately have to rename on destructure in order for it to work.
export function Component({onClick: handleClick}) {
  return (
    <Button
      onClick={handleClick}
    >
      Click Me
    </Button>
  );
}

Configuration
    "react/jsx-handler-names": [
      "error",
      {
        "checkInlineFunction": true,
        "checkLocalVariables": true
      }
    ],

Yes, forcing you to rename on destructure is the intended consequence of the rule here.


Update to the window.caches sample

R: @jmadler
Modernizes the sample to reflect some changes to the cache.add() behavior, as well as moving to the new templating system. It also explicitly checks for window.caches and displays an error status when it's not available.
Fixes #413

(This is staged at https://jeffy.info/samples/service-worker/window-caches/)

LGTM


external-dns keep ips of disable host / unhealthy container

Rancher Version: 1.0.1
Environment Type: Cattle
In my understanding, external-dns is supposed to keep the DNS updated with reachable ips for a given service. I therefore thought that disabling an host (through the Rancher UI) would make external-dns remove its IP from the provider (cloudflare in my case), but it didn't. I tried also totally stopping the machine, same result.
I went through the code of external-dns and it seems it takes every container entries returned by the Rancher Metadata API, regardless of the "health_state" field that states whether or not this container is healthy. Shouldn't that be checked ?
To take in account the other case (Host DISABLED), how could we proceed ? It seems the metadata API doesn't provide any information about that. It should be useful to have a state reflected in the container (as there's no host concept in the metadata api) to have for example "health_state": "disabled" or something like that ?
The usecase for me is to deal easily with a machine having an issue by disabling it and then checking what's wrong before putting it back in the pool again, without having to remove it completely from Rancher.

External DNS does not look at health state as it's basically assumed that if the health state is bad Rancher will take action to delete the bad instance and deploy good ones.  Then external DNS will be updated with the new good addresses.
The specific use case you are looking at will not work as you intended.  If you deactivate a host we do don't consider that host to be bad.  An inactive host only means to Rancher that we shouldn't put new things on that host.

Hi Darren,
Thank's for the quick response ! I understand your point of view, but wouldn't my usecase be also a good idea ?
Secondary question then, how often is the external-dns service supposed to update the DNS ? I just tried to upgrade the concerned service (httpd), so it was not redeployed to the disabled host, but it seems external-dns is not updating anything so far and it's been already ~5mns.

@ahfeel Did your services have health checks on them? Without health checks, services will remain on a host (either an inactive or reconnecting host). If a health check was on the service, then the containers would be re-scheduled to a new host and external-dns should update accurately.
external-dns should update fairly quickly. 5 minutes seems too long. Which catalog are you using?

@ahfeel If you are still facing issues and can provide more details to the questions I had asked, please re-open.


ADBDEV-4738: Rework patch that solves function-table type dependency issue

Rework patch 11da7e0 that solves function-table type dependency issue
Patch 0c3ab91 backups functions before tables unconditionally.
In this case gprestore can not restore functions, that depends on tables
by arguments or return types.
This patch solves this issue by backup independent functions before
tables and dependent functions after.
Test is taken from 11da7e0

Why sort functions by dependent and independent if we can append all functions to objects array after tables?

if we

append all functions to objects array after tables

then we can not restore tables depended on functions like in https://github.com/arenadata/gpbackup/commit/0c3ab91e550bd0ae076314b75ab18e8a6907a1f6

At the description there is small typo: functions, that depends on -> functions, that depend on

fixed


Fix Syntax error in flashlight.md

replacing : with = after onclick in line 19.

 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.


BB interp

ARIA tools was previously not intersecting with the DEM due to a small bug that overwrot the DEM values with longitude values instead.
That has been fixed and improved using an xarray-based implementation. The topography is now evident in the height layers (compare with https://github.com/dbekaert/RAiDER/pull/465):

@dbekaert @bbuzz31 , below I’ll share the results of a basic test I ran to vet this bug-fix. Specifically, I compared the incidence angles derived directly through ISCE2 with those derived from the ARIA-tools interpolation and DEM-intersection scheme.
For reference, the example I used an ascending track (path 72) GUNW over Iraq: S1-GUNW-A-R-072-tops-20171117_20171111-145939-00043E_00034N-PP-428e-v2_0_6.nc
Here is the hillshaded view of the DEM:

Here is the incidence angle raster derived directly from ISCE2:

Note that it’s very difficult to discern the difference looking at this side-by-side with the ARIA-tools derived counterpart, so here’s instead the residual (i.e. ARIA-tools derived interpolated incidence angle minus the ISCE2 derived incidence angle). The residual looks like a DEM in and of itself, which would make sense if the topography doesn’t cancel out as we’d expect:

After these proposed bug-fixes, here is the new residual between the “corrected” ARIA-tools and ISCE2 derived rasters. Clearly looks like the topography is cancelled out. The remaining topography-correlated residual is to be expected given the ARIA-tools field has been interpolated:


What's the usage of image_blender.py?

Hi,
What's the correct usage of image_blender.py?
Usage: image_blender.py -b BASE -t TEXTURE -o OUTPUT [-w WAVELET] [-l LEVEL] [-m MODE]
b and t are just the name of the images; but what about -w, -l and -m? Are these numbers? e.g. -m 1, or are they letters? e.g. -m L, etc?
Leaving -m says it requires an argument
TypeError: Image mode must be 'L', 'P', 'RGB' or 'CMYK'
putting any of these does not solve the problem.

I had missed this issue a while back.  The error you are seeing seems to be that PIL (or Pillow) is having a problem reading whatever image type you are using.  I don't think there as an issue with the command line arguments.
If you run the image_blender.py -h the values listed as "default" arguments indicate what is expected.
Here is a simple nonsense example of applying a "fingerprint" texture to a color image of an airplane.
python image_blender.py -b ~/airplane.ppm -t ~/fingerprint1.pgm -o blended.png -l 3 -w sym4 -m symmetric

input images were obtained from:  http://www.hlevkin.com/06testimages.htm
example output:


When building the docker,  is displayed where the label "mpinets" should be.

Hi! There are two confuses I wanna figure out:
First, when I followed your step to clone the repo using: git clone https://gitlab-master.nvidia.com/srl/motion-policy-networks , why can't this link be found?
Second, when building the docker, why is  displayed in the terminal where the tag "mpinets" should be?
Looking forward to your answer! Thank you!

@ZhangYue1226 I agree to the first point. The link to the repo is not working. I have the same issue.
Did not understood the second question.

The repo link has been fixed aebee854df1c94026d8586eae48f08573a329986

Hi @ZhangYue1226 , thanks for pointing these issues out.
For your second question, can you post a picture of the behavior you're seeing and explain what you expect?

I'm going to close this issue because it's been hanging for 3 months. @ZhangYue1226 , feel free to reopen it if you're still having issues.


feat: adding prop to specify a sort algothrim for results

adding a way to sort the array of strings within a filtered list based on a provided search function passed in as a prop
example:

<Autocomplete
 options={options}
 search={quickSearch} // user defined search and/ or sort function
/>

Codecov Report
Patch coverage: 100.00% and no project coverage change

Comparison is base (cf21f21) 100.00% compared to head (fe73c86) 100.00%.

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
Additional details and impacted files
@@              Coverage Diff              @@
##           release/0.7      #423   +/-   ##
=============================================
  Coverage       100.00%   100.00%
=============================================
  Files               45        45
  Lines             1029      1031    +2
  Branches           400       403    +3
=============================================
+ Hits              1029      1031    +2

Impacted Files
Coverage Δ

src/autocomplete/Autocomplete.tsx
100.00% <100.00%> (ø)

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

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


how did you get <25ms

Actually my startup time is about 64 ms based on the Lazy profile

Hey, it might depend on your hardware specs as well.  Sometime even mine goes to  30 or so.


Timestamps uninitialized

During unmarshalling of XML, Timestamp fields were set to 0 and time data was not being stored. It looks like the UnmarshalXMLAttr function should use a *Timestamp instead of a Timestamp. Here's a  a pull request that fixes this.
https://github.com/lair-framework/go-nmap/pull/3

PR merged


Variadic config items don't work in Helm charts

I've been trying to use a variadic config item in a HelmChart manifest, unsuccessfully.
Looking at the implementation in renderKotsKinds, Helm charts are handled in a special case, that is indeed not calling processVariadicConfig.
Is there any particular reason for that? It would be nice to have that feature, in particular in the values: section.

Hi @olim7t, could you open this as a support request through the vendor portal? That would be the easiest way to get this in front of the right folks.  Additionally, if you could share a bit more about your particular use case when doing that, we may be able to help you figure out a workaround for the time being.

Following up in this issue, we have internal tracker 85203 for the feature request to support variadic configuration for the HelmChart custom resource.


Custom Animation System

Is your feature request related to a problem? Please describe.
A custom animation system for boards that has more complex LED.
Describe the solution you'd like
I already made a solution for my own fork. https://github.com/203Electronics/Matrix-Bootloader/commit/5be0be79d0ea44c26edaed1cd995f1df341e1f5d
But I would prefer this is supported upstream.
Describe alternatives you've considered
Mentioned above,
Additional context
https://github.com/203Electronics/Matrix-Bootloader/blob/bbea776965f24ec35122fcb3a7a0941923276599/ports/espressif/boards/boards.c#L197
Add this line to make ws2812 more stable.
(Still glitches out sometimes, not sure why that is the case. I assume this has to with tinyUSB irq?)

Demo: https://youtu.be/VedpKSH5nWM

custom animation is totally OK, but it should be per-board configuration and default to existing one. custom animation code/function must be in myboard/board.c since it is board specific.

custom animation is totally OK, but it should be per-board configuration and default to existing one. custom animation code/function must be in myboard/board.c since it is board specific.

Yes, that was the point. On my board.c I included #define CUSTOM_LED which overloads the animation system to the animation.c in the board folder.

feel free to submit pr when you think it is ready.

feel free to submit pr when you think it is ready.

If I want to submit a PR that means I will have to submit a compatible device that uses this system. I don't think my devices are appropriate on this repo, so should I port my code to a device like esp32-s3-devkit-1 and specify a pin for the RGB matrix?

My current implementation prevents self-update to be build

c:/users/caine/.espressif/tools/xtensa-esp32s2-elf/esp-2021r2-8.4.0/xtensa-esp32s2-elf/bin/../lib/gcc/xtensa-esp32s2-elf/8.4.0/../../../../xtensa-esp32s2-elf/bin/ld.exe: esp-idf/src/libsrc.a(main.c.obj): in function board_timer_handler': C:/Users/caine/Documents/GitHub/Matrix-Bootloader/src/main.c:257: multiple definition of board_timer_handler'; esp-idf/boards/libboards.a(animation.c.obj):c:\users\caine\documents\github\matrix-bootloader\ports\espressif_build\matrix_block6_prototype1/../../boards/matrix_block6_prototype1/animation.c:70: first defined here

Will try get that fixed later

feel free to submit pr when you think it is ready.

If I want to submit a PR that means I will have to submit a compatible device that uses this system. I don't think my devices are appropriate on this repo, so should I port my code to a device like esp32-s3-devkit-1 and specify a pin for the RGB matrix?

yes, since this is board specific, you should only apply this to board with rgb matrix like yours, the s3 devkit does not have this and could confuse other user. If your board is not ready to submit an PR, no problem at all, just wait until it is ready.

If your board is not ready to submit an PR, no problem at all, just wait until it is ready.

My issue is that my board isn't a dev board so I don't think it should be on the tinyuf2 repo. But I'm pretty sure there are some dev boards with RGB matrix or someone wants to implement this on their own project.

My issue is that my board isn't a dev board so I don't think it should be on the tinyuf2 repo. But I'm pretty sure there are some dev boards with RGB matrix or someone wants to implement this on their own project.

ah I see, your board is not in mass production as others. Yeah, in that case, using a popular devkit would be ideal, we will make it disabled by default.


HHH-9834: Fix Audit table creation fails for ElementCollection Map with CLOB/NCLOB element column

https://hibernate.atlassian.net/browse/HHH-9834
This PR addresses a flaw in the original PR https://github.com/hibernate/hibernate-orm/pull/1714, where we now will include the Revision Type field as part of the primary key to address uniqueness concerns.

Applied upstream.

    @ElementCollection //    @Lob     @Column(name = "content_value", columnDefinition = "TEXT")     @MapKeyColumn(name = "content_key", length = 50)     @CollectionTable(name = "volume_cover_content", foreignKey = ForeignKey(name = "CONTENT_COVER_FK"))     var content: MutableMap<String, String> = mutableMapOf()
while @Lob is work will ,but @Column still not work!!!


fix Firefox version in the 'lastError' compatibility table

runtime.lastError was added as part of the following bugzilla issue:

Bug 1190680 - Support errors for open extension API via lastError

This PR fixes the compat table to report 47 as the first Firefox version which supports it.

Thanks @rpl !


Create privacy policy web hover box

Dependency
#1089
Overview
Create "Cookies and Privacy Policy" hover box.
Action Items

[ ] Research data 311 repo to understand how 311 data implemented this feature
[ ] Create a hovering "Cookies and Privacy Policy" box like in the screenshot below this box should appear in all of the users pages until the user selects "Got it"
[ ] Learn More should link to the privacy page created on #1074

Resources/Instructions

View sample site

data 311 repo

@ladissi or @kevindphan asked

privacy policy hover box
regarding the hovering cookies and privacy box, do we need to track when users having clicked "Got it"?

Answer: not that I know of.

I am still working on this issue, I will try to finish it by next meeting.

Waiting for  #1089 , So I can  style them accordingly.

Discuss with @ladissi whether or not this pops up on all pages or just the front page.

I  almost finished with the hover box waiting for the design to be finalized from UI team  and also need the cookie image for the hover box

I have created a PR for this issue, But there is an issue with the Navbar , On clicking on the Join the Index and other NavBar, the scroll on right appears and and disappears due to which the cookie box moves on and off.

The hover-box changes looked good @bhaggya !
After talking to Bonnie, I'm moving this issue to Post-MVP as we already have the Privacy Policy at the bottom of the page and everything else is extra. While the changes look good, the moving hover-box does become an issue of presenting a good UX and as a result, it would be better to have it perfect than to put it up in its' current state


Formatted Page With Extras

Just gave the page a cleanup added "OPEN IN LBRY" buttons (with open links) and made the markup compatible with accessibility devices.
Although multiple H1 tags can be used, they are not best practice due to accessibility issues.

@jamesbiller can you run this locally to see if it's something you'd like merged.

You got it chief!

On May 8, 2018, at 9:56 AM, Thomas Zarebczan<EMAIL_ADDRESS>wrote:
@jamesbiller https://github.com/jamesbiller can you run this locally to see if it's something you'd like merged.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub https://github.com/lbryio/lbry.io/pull/543#issuecomment-387410900, or mute the thread https://github.com/notifications/unsubscribe-auth/AlAEOBr5359EXbhYUeQnNzJSSqw6Vjriks5twaP5gaJpZM4T2D7P.

Currently working blind as I don't have lbry.io set up on a local server, but all should hopefully look like I imagined :)

Oh and forgot to say... Images sizes should always be in HTML. This will help speed up page load times and make a page compatible with every device/browser.

Still learning Git, so looking to see what happened.


how to get k8s service endpoint ip:port dynamically

NOTE: GitHub issues are reserved for bug reports only.
For anything else, please join the conversation
in Kong Nation https://discuss.konghq.com/c/kubernetes.

Summary
I wan to use url_hash like nginx to load balance to the pods directly.but I do not know how to get the endpoint ip:address as they may be changed after publish through CI/CD pipeline
Kong Ingress controller version
kong-docker-kubernetes-ingress-controller.bintray.io/kong-ingress-controller:0.7.0
Kong or Kong Enterprise version
2.0.4
Kubernetes version
paste kubectl version output
Client Version: version.Info{Major:"1", Minor:"14", GitVersion:"v1.14.8", GitCommit:"211047e9a1922595eaa3a1127ed365e9299a6c23", GitTreeState:"clean", BuildDate:"2019-10-15T12:11:03Z", GoVersion:"go1.12.10", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"16", GitVersion:"v1.16.10", GitCommit:"afea77eefe3272c0f53c4552183ecb16c091db41", GitTreeState:"clean", BuildDate:"2020-09-17T06:32:50Z", GoVersion:"go1.13.9", Compiler:"gc", Platform:"linux/amd64"}
Environment

Cloud provider or hardware configuration:
AKS
OS (e.g. from /etc/os-release):
NAME="Alpine Linux"
ID=alpine
VERSION_ID=3.11.6
PRETTY_NAME="Alpine Linux v3.11"
HOME_URL="https://alpinelinux.org/"
BUG_REPORT_URL="https://bugs.alpinelinux.org/"
Kernel (e.g. uname -a):
Linux kong-kong-69f945f48d-rfw8b 4.15.0-1089-azure #99~16.04.1-Ubuntu SMP Fri Jun 5 15:30:32 UTC 2020 x86_64 Linux
Install tools:
Others:

What happened
Expected behavior
Steps To Reproduce

I'm not sure if I'm understanding you but it seems like you would like to have deterministic load balancing of requests to upstream pods. If you want a solution like sticky session, please use KongIngress resource to achieve that.
Upstreams in kong are the abstracted load-balancers. The following doc should help:
https://docs.konghq.com/2.1.x/loadbalancing/
https://docs.konghq.com/2.1.x/admin-api/#upstream-object

Closing as stale.

Closing as stale.


Multiple Records Found error unexpected "ok" behavior

It says "Click OK to show all the matched records", but it goes to an unfiltered recordset page instead.

This should go to recordset with the same set of filtered results.

Changes for this have been merged into master.


bash resource "flags" option not inherited by guards when using guard_interpreter

Description
bash resource guards with guard_interpreter :bash do not inherit flags option. See https://github.com/chef/chef/blob/master/lib/chef/resource/execute.rb#L162-L168
On a fresh vagrant up I am installing pyenv such that pyenv is initialized by ~/.profile. I need to set flags '-l' so that ~/.profile gets loaded with new pyenv config during that first converge.
It's pretty dirty to use pyenv this way and I should probably just use the python community cookbook to setup the system python, but I thought I'd bring it up since it's confusing to have the code part find and run a command that's not supposed to run, then have that command fail for the exact reason that the guard protects against. I used the old trick of
not_if "bash -l -c 'some-command' &>/tmp/guard.out"

to diagnose it.
Chef Version
12.14.89
Platform Version
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 7.11 (wheezy)
Release:    7.11
Codename:   wheezy

related: https://github.com/chef/chef-rfc/blob/master/rfc011-resource-guard.md

Okay so it sounds like flags should inherit through the same mechanism used by powershell_script.
This is probably a breaking change for someone though who has flags which will break their guards.

Hi,
We've tried with latest chef but issue is not being reproduced at our end.
bash 'bash-test' do
	guard_interpreter :bash
	code "mkdir test"
	flags '-l'
	not_if '[[ 1 < 1 ]]'
end

recipe o/p
Recipe: (chef-apply cookbook)::(chef-apply recipe)
  * bash[bash-test] action run
    - execute "bash" -l "/tmp/chef-script20200401-6443-1447mcq"

@lamont-granquist  Please suggest if we need to do anything here?

Hi @causton81 Please check ^

@causton81  Closing this issue as it is not reproducible from our end with the latest chef.
Please let us know if there is anything.


Questions on ATP's P4 Source Code

I hope this message finds you well. I am currently studying the ATP's P4 source code, and I would be very grateful if you could help me understand these questions.
Q1. In common.p4 at line 162, there is a function call bit_andcb(mdata.isAggregate, p4ml.bitmap, mdata.bitmap);. I am not familiar with bit_andcb, and I couldn't find a corresponding description for it in the P4_14 syntax. Could you explain what it does or direct me to relevant documentation?
Q2. In p4ml.p4 at line 93, I believe this branch of the conditional is for the last aggregation packet received. I am wondering why the packet does not need to be resubmitted here. Wouldn't this mean that the last 32 gradients are left unaggregated?
Q3. In p4ml.p4 at line 133, I think this branch is for the first aggregation packet received, where the gradient is stored in the register. Combined with Line 93, when there are three workers, three packets need to be aggregated. I'm wondering how is the second packet aggregated?
Q4. In the outPort_table, the packet received from the worker is forwarded to the loopback port. Does this mean that the packet will repeat the aggregation process? I find this part a bit confusing and would appreciate any clarification.
Thank you very much for your time and assistance. I greatly appreciate any guidance you could provide on these points.
Best regards

Hi @qumalangma,
Apologies for the delayed reply. Regarding your question about relevant documentation, you can find the materials from Intel.
As for the other questions, we currently do not have the resources for ongoing maintenance. However, one approach to understanding the code is to use Intel's behavior model to run the code and analyze the logs, or to run it on the Tofino hardware to trace the behavior.
Thanks,
Lam

Thank you very much for your earlier work.
As I am not particularly familiar with the syntax of P4_14, I have analyzed the original code and adapted it by copying the existing implementation and adjusting parts of the code logic. Please note that some portions of the code differ from the presentation in the paper, with a focus on handling AGTR conflicts. The testing on the H3C switch has now been successfully completed.
If permitted, I would like to update the modified code in the repository.

Hi @qumalangma ,
Glad it could be of help to you. Additionally, I believe there is an experimental_p416 branch that contains the P4_16 code developed by another student afterward. I’m not sure if it is well-tested, but you might find it useful.
And sure— we absolutely welcome your contributions to the code!

I'm sorry for what I mentioned earlier: I had already conducted relevant tests on the program on the device.
However, after retesting the code before submission, I found that the aggregation operation in the latter part of the resubmitted packet actually has an issue.
and I haven’t identified the cause yet.
I’m struggling with it --- please look forward to my good news.


Add a background behind flyout button

Currently for toolbox categories with a flyout button, there's an issue where the button overlaps the blocks as you scroll.
To resolve, we want to just add an opaque background behind the flyout button so that the blocks scroll underneath.
Before:

After:

great idea!

Codecov Report

Merging #217 into master will decrease coverage by 0.02%.
The diff coverage is 14.28%.

@@            Coverage Diff             @@
##           master     #217      +/-   ##
==========================================
- Coverage   59.70%   59.68%   -0.03%
==========================================
  Files          95       95
  Lines       11580    11588       +8
==========================================
+ Hits         6914     6916       +2
- Misses       4666     4672       +6

Impacted Files
Coverage Δ

core/ui/block_space/flyout.js
62.19% <14.28%> (-0.84%)
:arrow_down:

Continue to review full report at Codecov.

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


using @property

This shows up in Members but with no type or description in the table
/**

@memberof appController
@prop {object} $scope.scheduleData - The current schedule data object
*/

You show in your map-controller this example, but it doesn't seem to generate anything in document output
/**
* @property {Hash} _objects collection og objects that belongs to this map
*/
I have to do this to get all the data to fill in (which is verbose, I would like the one line @property like above
/**

@memberof appController
@prop {object}
@type {object}
@description The current schedule data object
*/

Thanks, I am really getting some good docs from this tool so far..

What are you actually documenting? Could you include the code?

Please reopen when you have further information.


Compile unminified files

This takes care of #74.

src/css/winbox.css has been moved to dist/css/winbox.css
dist/winbox.bundle.js has been renamed to dist/winbox.bundle.min.js (because it's the minified version)

And we now have the following unminified files being built (in addition to what was already being built):

dist/css/themes/modern.css
dist/css/themes/white.css
dist/js/winbox.js
dist/winbox.bundle.js

Hello, I checked this PR again and came to the conclusion that the dist folder should just include final builds. When you take a look to the non-minified version of Javascript compiled files you will notice a lot of code coming from the compiler. It might be a bug by the compiler. So I just will take over some changes like naming the bundle to "bundle.min.js".
Thanks a lot


Support casts of inner type in SingleColumnTableType

The type system requires data types to be able to convert non-matching types in
the value(...) function.

Codecov Report

:exclamation: No coverage uploaded for pull request base (master@f46ac25). Click here to learn what that means.
The diff coverage is 100%.

@@            Coverage Diff            @@
##             master    #6366   +/-   ##
=========================================
  Coverage          ?   83.26%
  Complexity        ?    12818
=========================================
  Files             ?     1481
  Lines             ?    48524
  Branches          ?     5911
=========================================
  Hits              ?    40405
  Misses            ?     5371
  Partials          ?     2748

Impacted Files
Coverage Δ
Complexity Δ

...ain/java/io/crate/types/SingleColumnTableType.java
84.61% <100%> (ø)
7 <0> (?)

...te/operation/scalar/cast/CastFunctionResolver.java
97.4% <100%> (ø)
11 <0> (?)

Continue to review full report at Codecov.

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


add predict function to results

New feature. Add predict function to results. Just refactored each fitting method to have a fit function, which the results data map uses, and is returned as the predict function so that users can predict new values.

Thanks @fkabinoff, I have added this to #59


⚠ Avatar API Endpoint has degraded performance

In 9564185, Avatar API Endpoint (https://avatar.roblox.com/v1/avatar-rules) experienced degraded performance:

HTTP code: 200
Response time: 1032 ms

Resolved: Avatar API Endpoint performance has improved in 20af987 after 79 days, 19 hours, 21 minutes.


Problems with updating lock screen capture

Is there an existing issue for this?

[X] I have searched the existing issues

Operating system
Ubuntu 20.04
Installation method
Manual (please specify in the description!)
Betterlockscreen & Dependency-Versions
[B] Betterlockscreen

Betterlockscreen: version: v4.0.3 (dunst: false, feh: true)
i3lock: version 2.13.c.4-33-g380a10a (2022-02-03) © 2010 Michael Stapelberg, © 2015 Cassandra Fox, © 2021 Raymond Li
/usr/local/bin/betterlockscreen: line 937: convert: command not found
feh version 3.8-6-g125556c
Compile-time switches: curl verscmp xinerama

Also, i add dunst version:
Dunst - A customizable and lightweight notification-daemon 1.4.1 (2019-07-03)

Bug description
I cant set background for lock-screen. It return me errors. I think, this can be related with dunst, but im ont sure.
I installed all dependencies from your man
Also, i facing with weird systemctl output.
Steps to reproduce
.
Relevant log output
Problem with lock-screen background:

> file kosmo_gui.png
kosmo_gui.png: PNG image data, 1600 x 900, 8-bit/color RGB, non-interlaced
[I] [16:06:21] valera@valera-thinkpad /home/valera/Downloads
> betterlockscreen -u kosmo_gui.png
[B] Betterlockscreen
Error org.freedesktop.DBus.Error.InvalidArgs: No such interface “org.dunstproject.cmd0”
Failed to communicate with dunst, is it running? Or maybe the version is outdated. You can try 'dunstctl debug' as a next debugging step.
[*] Updating image cache...
[=] Detected 3 display(s) @ 6720x1440 total resolution
[=] Original image(s): kosmo_gui.png kosmo_gui.png kosmo_gui.png
[=] Processing display: eDP-1 (1)
[=] Resolution: 1600x900
[*] Resizing base image...
/usr/local/bin/betterlockscreen: line 447: convert: command not found
[*] Rendering 'dim' effect...
/usr/local/bin/betterlockscreen: line 460: convert: command not found
[*] Rendering 'blur' effect...
/usr/local/bin/betterlockscreen: line 474: convert: command not found
[*] Rendering 'dimblur' effect...
/usr/local/bin/betterlockscreen: line 491: convert: command not found
[*] Rendering 'pixel' effect...
/usr/local/bin/betterlockscreen: line 507: convert: command not found
[*] Rendering 'dimpixel' effect...
/usr/local/bin/betterlockscreen: line 519: convert: command not found
[*] Rendering 'color' effect...
/usr/local/bin/betterlockscreen: line 531: convert: command not found
[=] Processing display: DP-2-1 (2)
[=] Resolution: 2560x1440
[*] Resizing base image...
/usr/local/bin/betterlockscreen: line 447: convert: command not found
[*] Rendering 'dim' effect...
/usr/local/bin/betterlockscreen: line 460: convert: command not found
[*] Rendering 'blur' effect...
/usr/local/bin/betterlockscreen: line 474: convert: command not found
[*] Rendering 'dimblur' effect...
/usr/local/bin/betterlockscreen: line 491: convert: command not found
[*] Rendering 'pixel' effect...
/usr/local/bin/betterlockscreen: line 507: convert: command not found
[*] Rendering 'dimpixel' effect...
/usr/local/bin/betterlockscreen: line 519: convert: command not found
[*] Rendering 'color' effect...
/usr/local/bin/betterlockscreen: line 531: convert: command not found
[=] Processing display: DP-2-2 (3)
[=] Resolution: 2560x1440
[*] Resizing base image...
/usr/local/bin/betterlockscreen: line 447: convert: command not found
[*] Rendering 'dim' effect...
/usr/local/bin/betterlockscreen: line 460: convert: command not found
[*] Rendering 'blur' effect...
/usr/local/bin/betterlockscreen: line 474: convert: command not found
[*] Rendering 'dimblur' effect...
/usr/local/bin/betterlockscreen: line 491: convert: command not found
[*] Rendering 'pixel' effect...
/usr/local/bin/betterlockscreen: line 507: convert: command not found
[*] Rendering 'dimpixel' effect...
/usr/local/bin/betterlockscreen: line 519: convert: command not found
[*] Rendering 'color' effect...
/usr/local/bin/betterlockscreen: line 531: convert: command not found
[*] Creating canvas: 6720x1440
[*] Rendering final wallpaper images...
[*] Rendering final lockscreen images...
/usr/local/bin/betterlockscreen: line 541: convert: command not found
/usr/local/bin/betterlockscreen: line 542: convert: command not found
/usr/local/bin/betterlockscreen: line 545: composite: command not found
/usr/local/bin/betterlockscreen: line 547: convert: command not found
rm: cannot remove '/home/valera/.cache/betterlockscreen/current/shadow.png': No such file or directory
rm: cannot remove '/home/valera/.cache/betterlockscreen/current/rectangle.png': No such file or directory
[+] Done

Problem with systemctl:
> systemctl status betterlockscreen@$USER
●<EMAIL_ADDRESS>- Lock screen when going to sleep/suspend
     Loaded: loaded<EMAIL_ADDRESS>enabled; vendor preset: enabled)
     Active: failed (Result: exit-code) since Thu 2022-03-17 15:58:07 MSK; 10min ago
    Process: 208090 ExecStart=/usr/bin/betterlockscreen --lock (code=exited, status=203/EXEC)
    Process: 208091 ExecStartPost=/usr/bin/sleep 1 (code=exited, status=0/SUCCESS)
   Main PID: 208090 (code=exited, status=203/EXEC)

мар 17 15:58:06 valera-thinkpad systemd[1]: Starting Lock screen when going to sleep/suspend...
мар 17 15:58:06 valera-thinkpad systemd[1]<EMAIL_ADDRESS>Main process exited, code=ex>
мар 17 15:58:07 valera-thinkpad systemd[1]<EMAIL_ADDRESS>Failed with result 'exit-cod>
мар 17 15:58:07 valera-thinkpad systemd[1]: Failed to start Lock screen when going to sleep/suspend.
lines 1-11/11 (END)

If convert is missing, you need to install ImageMagick.

Thanks, mate! Thats worked. Problem was, that i just downloan ImageMagick bin-file and put it in /bin directory.
Now i found manual, how to install it on Ubuntu. And problem solved)
Link on manual, maybe it will be usefull 2 someone:
https://www.tecmint.com/install-imagemagick-on-debian-ubuntu/


OE sometimes shows spinning icon for server when I expand it...

Issue Type: Bug
No idea. It is random behavior.
Azure Data Studio version: azuredatastudio 1.8.0 (96e214593190071f0b520439929b218f9fa673de, 2019-06-06T01:59:30.203Z)
OS version: Windows_NT x64 10.0.18922

System Info

Item
Value

CPUs
Intel(R) Core(TM) i7-7820HQ CPU @ 2.90GHz (8 x 2904)

GPU Status
2d_canvas: enabledchecker_imaging: disabled_offflash_3d: enabledflash_stage3d: enabledflash_stage3d_baseline: enabledgpu_compositing: enabledmultiple_raster_threads: enabled_onnative_gpu_memory_buffers: disabled_softwarerasterization: enabledsurface_synchronization: enabled_onvideo_decode: enabledwebgl: enabledwebgl2: enabled

Load (avg)
undefined

Memory (System)
31.85GB (15.39GB free)

Process Argv

Screen Reader
no

VM
0%

Extensions (7)

Extension
Author (truncated)
Version

ssmskeymap
kev
1.1.0

agent
Mic
0.40.0

azuredatastudio-postgresql
Mic
0.2.0

import
Mic
0.8.0

profiler
Mic
0.8.0

server-report
Mic
0.1.5

sql-vnext
Mic
0.14.1

Possibly dupe of #6128? @kburtram do you also only see that intermittently?
@uc-msft

What server are you connecting to?
Is it a specific server/servers or does it seem to happen to any server randomly?
Are you getting a pop up notification asking you to submit a bug when this happens? (there's another issue I'm tracking that I added this notification for, but if you're not seeing it then maybe this is another issue)
Are there any errors in the dev console when this happens?
Are you seeing this when connecting to multiple servers in quick succession or does it happen even when connecting to a single server?

@Charles-Gagnon I think the repro was pretty consistent.  But only occurred when connecting through a certain path.  It haven't seen this when expanding directly recently.

I'm going to close this for now since we already have a couple other connecting issues. @uc-msft if you have more information to offer please add that here and I'll look into whether your issue is actually something new or just the similar issues we're seeing elsewhere.


Renaming CPU architecture to have consistent naming

Description
Renaming CPU architecture to have consistent naming.
Here are the following changes:

x86_64 to x64
aarch64 to arm64

Issues Resolved
#606
Check List

[ ] New functionality includes testing.

[ ] All tests pass

[ ] New functionality has been documented.

[ ] New functionality has javadoc added

[x] Commits are signed per the DCO using --signoff

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

start gradle check

start gradle check

start gradle check


ipType Error

Looks like it has a problem getting the ipType
C:\Users\wmarino\Desktop\ProxyList>proxy-lists -V
1.14.1

C:\Users\wmarino\Desktop\ProxyList>proxy-lists getProxies
Getting proxies...
Error: Missing required option (`option.bitproxies.apiKey`): You can get an API key for this service by creating an account at https://bitproxies.eu/
Error: Missing required option (`option.kingproxies.apiKey`): You can get an API key for this service by creating an account at https://kingproxies.com/register
Writing output to C:\Users\wmarino\Desktop\ProxyList/proxies.txt
C:\Users\wmarino\AppData\Roaming\npm\node_modules\proxy-lists\node_modules\geoip-native-lite\index.js:33
                        throw new Error('Data (' + ipType + ') has not been loaded.');
                        ^

Error: Data (ipv6) has not been loaded.
    at Object.lookup (C:\Users\wmarino\AppData\Roaming\npm\node_modules\proxy-lists\node_modules\geoip-native-lite\index.js:33:10)
    at C:\Users\wmarino\AppData\Roaming\npm\node_modules\proxy-lists\index.js:180:38
    at Function._.map._.collect (C:\Users\wmarino\AppData\Roaming\npm\node_modules\proxy-lists\node_modules\underscore\underscore.js:172:24)
    at EventEmitter.<anonymous> (C:\Users\wmarino\AppData\Roaming\npm\node_modules\proxy-lists\index.js:178:17)
    at emitOne (events.js:116:13)
    at EventEmitter.emit (events.js:211:7)
    at C:\Users\wmarino\AppData\Roaming\npm\node_modules\proxy-lists\sources\freeproxylist.js:36:14
    at C:\Users\wmarino\AppData\Roaming\npm\node_modules\proxy-lists\node_modules\async\dist\async.js:2556:16
    at C:\Users\wmarino\AppData\Roaming\npm\node_modules\proxy-lists\node_modules\async\dist\async.js:421:16
    at C:\Users\wmarino\AppData\Roaming\npm\node_modules\proxy-lists\node_modules\async\dist\async.js:2494:9

This seems to temp fix the issue:
proxy-lists getProxies  --ip-types ipv4,ipv6

You can also set it directly in the options object:
const proxyOptions: Options = {     ipTypes: ['ipv4'] };

This has been fixed in the latest version.


[fud] Start some very tiny tests for Xilinx toolchain

The idea here is to have a quick way to check that everything still works with the (very complex) set of stages that invoke the Xilinx toolchain on Calyx programs. There are two "suites" that share a single test program for now: one that compiles the program, producing an .xclbin, and one that both does that and executes the program in emulation mode. Hopefully, this makes it slightly easier to check that we're not breaking anything as we work on this stuff.
A major caveat, of course, is that this is only really meant to run on Havarti; it will is not a CI thing and will not be, barring a huge amount of effort to get Xilinx stuff running in CI.
It is also worth pointing out that the command for emulation is currently very ugly. It should not be necessary to set up the Xilinx tools before invoking fud. That's part of the purpose of writing down these tests: to lay bare the fact that work needs to be done here. I'll describe more about what needs to be done in a subsequent issue.
This PR also makes a few changes to the fpga execution stage to make the output simpler. It suppresses two forms of logging from the XRT library. Unfortunately, this does not seem to be enough to suppress some logging from the underlying Vitis emulation tool, so I had to grep that out for a reasonable/deterministic output. Finally, also moved the running time from the output itself to a proper log message.
Running these things most recently took 5m28s on Havarti, end to end.

[edit] The below problems have been resolved.
Finally, there are a couple of things to fix before this is ready to be useful:

The compilation output is currently entirely empty. We should capture something about the output, but I'm not sure what (checking in the entire binary executable is probably not right).
The emulation output contains a bunch of Xilinx logging junk and the execution time, which is nondeterministic. We should strip this out to make the test actually useful as a test.

barring a huge amount of effort to get Xilinx stuff running in CI

The alternative is to use self hosted runners which might be a good infrastructure investment in the long term. It requires building some server shenanigans but probably not terribly hard.

Well, unfortunately, that page has a big warning that recommends against using self-hosted runners with open-source repositories...

This is because forks of your repository can potentially run dangerous code on your self-hosted runner machine by creating a pull request that executes the code in a workflow.

It is possible to configure actions to only send payloads when pushed to master or disallow actions from being run entirely when you have PR from a fork. The former would defend against problems in the warning.

OK, this should finally be ready to be useful! (5.5 minutes at a time…)

Is  tests/xilinx/compile/language-tutorial-iterate.expect expected to be an empty file? I'd have assumed that it would be an xclbin file.

Ah yeah, at the moment it is… I haven't actually kept the .xclbin checked in because it is binary, enormous (60 MB), and seemingly nondeterministic. I thought about trying to check in the result of some simple sanity check, like file foo.xclbin, but even that doesn't know anything about the file (it just says data). Then there's xclbinutil --info -i foo.xclbin, from Xilinx's own tools, which is very detailed and likely also nondeterministic (contains build dates, etc.). So I'm sort of at a loss about what should be checked in as a result; the compromise here is just to check for failures.

Sounds good! LGTM.

Thanks for taking a look!!