Error Using dart_periphery (flutter-pi)

Hi, I am running flutter pi on an RPI 3B. When i use the flutter_gpiod package, it works well and i can access the GPIOs but when i try using dart_periphery and test a basic I2C function, i get an error as below. I dont know what is the issue or what to check.
Code:
var i2c = I2C(1);
try {
print('I2C info:' + i2c.getI2Cinfo());
} finally {
i2c.dispose();
}
Error:
══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
flutter: The following ArgumentError was thrown building MyHomePage(dirty, state: _MyHomePageState#9daba):
flutter: Invalid argument(s): join(null, "src", "native", "dart_periphery_<IP_ADDRESS>.so"): part 0 was null, but
flutter: part 1 was not.

Hi!
Flutter is on the roadmap - but currently I never tested dart_periphery with flutter.
Do you use flutter-pi for your test?

Hi, Oh, i dont know why i assumed that everything which works on dart would also work on flutter.
Yes, i am using flutter-pi.
Your package is pretty good as it covers all the peripherals in one package. I would love to see it working on flutter if possible.
Since, i have experience working with flutter only, i dont know how to run only dart on RPI.
Can you point me in the right direction so i can try.
Thanks

Hi!
I installed flutter-pi on my rasperry pi - I will try to nail down the problem.
Peter

Hi!
There is a workaround for your problem - please use the  setCustomLibrary() method to set the absolute path to the native library
https://github.com/pezi/dart_periphery/blob/main/lib/src/native/dart_periphery_static_<IP_ADDRESS>.so
Version 0.8.7-beta - please run pub get to update dart_periphery
      setCustomLibrary('/home/pi/test/test/dart_periphery_<IP_ADDRESS>.so');
      I2C i2c = I2C(1);
      info = i2c.getI2Cinfo();

Reason for this problem - the mechanism for resolving the absolute path of a file inside a package is a little weired in Dart . I used following code from this project. But this code fails inside the flutter-pi environment.
Please, do not close this issue - I will investigate which is the best fix  for this problem - documentation, or a code fix.

@pezi HI, thanks, your solution worked, Now i can access the I2C port. Really appreciate your support. I will be doing some more tests related to the functionality, i will keep you posted if you want for further improvement.

Hi, Sorry to bother you again, but i was just wondering how to add additional libraries to the package. For example, i am going to use an MPU6050 Accelerometer on I2C bus. There is a standard C library available for this at this link: https://github.com/Harinadha/STM32_MPU6050lib.
Can i simply add it to the folder C:\flutter.pub-cache\hosted\pub.dartlang.org\dart_periphery-0.8.8-beta\lib\src\hardware or to C:\flutter.pub-cache\hosted\pub.dartlang.org\dart_periphery-0.8.8-beta\lib\src\native, or do i have to carry out some additional steps.  Thanks.

You can not directly add a C library. You must write a Dart<->C library binding using dart:ffi to be able to call native methods.
dart_periphery uses this mechanism to bind the c-periphery library. dart_periphery was developed to be able access the I2C bus from Dart. This is fine, but if a sensor implementation is missing, you must port code from C or Java to Dart.
I started the porting of some popular environment sensors.
BMP280
using this project diozero as a template.
I found a simple MPU6050 implementation for the arduino.
https://elektro.turanis.de/html/prj075/index.html#h8
But porting sensor code is a puzzling job.

If you are little patient - I write code for this sensor  - using this source https://elektro.turanis.de/html/prj075/index.html#h8.

You can not directly add a C library. You must write a Dart<->C library binding using dart:ffi to be able to call native methods.
dart_periphery uses this mechanism to bind the c-periphery library. dart_periphery was developed to be able access the I2C bus from Dart. This is fine, but if a sensor implementation is missing, you must port code from C or Java to Dart.
I started the porting of some popular environment sensors.
BMP280
using this project diozero as a template.
I found a simple MPU6050 implementation for the arduino.
https://elektro.turanis.de/html/prj075/index.html#h8
But porting sensor code is a puzzling job.

Oh, i understand. Thanks for the explanation

If you are little patient - I can write code for this sensor - using this source https://elektro.turanis.de/html/prj075/index.html#h8.

That would be awesome. I look forward to it. In the meantime, if you know any online tutorial which i can follow to learn how to use Dart FFi to port an external C Library. Please advise, so that i can also add some libraries to your package if possible. Thanks

Hi!
This is a quick try to convert the arduino code.
// Copyright (c) 2021, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

import 'package:dart_periphery/dart_periphery.dart';

import 'package:dart_periphery/src/hardware/util.dart';
import 'dart:io';

const int MPU6050_ADRESS = 0x68;

const int ACCEL_OFFSET = 200;
const int GYRO_OFFSET = 151; // 151
const int GYRO_SENSITITY = 131; // 131 is sensivity of gyro from data sheet
const double GYRO_SCALE = 0.2; //  0.02 by default - tweak as required
const double LOOP_TIME = 0.15; // 0.

int map(int x, int in_min, int in_max, int out_min, int out_max) =>
    (x - in_min) * (out_max - out_min) ~/ (in_max - in_min) + out_min;

int constrain(int amt, int low, int high) =>
    ((amt) < (low) ? (low) : ((amt) > (high) ? (high) : (amt)));

class MPU6050 {
  final I2C i2c;
  MPU6050(this.i2c) {
    i2c.writeByte(MPU6050_ADRESS, 0x6B);
    i2c.writeByte(MPU6050_ADRESS, 0);
  }

  void getValues() {
    i2c.writeByte(MPU6050_ADRESS, 0x3B);
    var buf = ByteBuffer(i2c.readBytes(MPU6050_ADRESS, 14), false);
    var accAngle = <int>[];
    var gyroAngle = <double>[];
    double temperature;
    for (var i = 0; i < 3; ++i) {
      var accCorr = buf.getInt16() - ACCEL_OFFSET;
      accCorr = map(accCorr, -16800, 16800, -90, 90);
      accAngle.add(constrain(accCorr, -90, 90));
    }
    temperature = (buf.getInt16() + 12412.0) / 340.0;
    for (var i = 0; i < 3; ++i) {
      var gyroCorr = ((buf.getInt16() / GYRO_SENSITITY) - GYRO_OFFSET);
      gyroAngle.add((gyroCorr * GYRO_SCALE) * -LOOP_TIME);
    }
    print(
        'ACCEL_X: ${accAngle[0]}  ACCEL_Y: ${accAngle[1]} ACCEL_Z: ${accAngle[2]}');
    print('Temperature: ${temperature.toStringAsFixed(2)}');
    print(
        'GYRO_XOUT: ${gyroAngle[0]}  GYRO_YOUT: ${gyroAngle[1]} GYRO_ZOUT: ${gyroAngle[2]}');
  }
}

void main() {
  var i2c = I2C(1);
  try {
    var mpu = MPU6050(i2c);
    while (true) {
      mpu.getValues();
      sleep(Duration(milliseconds: (LOOP_TIME * 1000).toInt()));
    }
  } finally {
    i2c.dispose();
  }
}

My first version of the MPU6550 sensor code written in Dart is ready.  I ordered a MPU6550 sensor over Amazon - the sensor will be delivered tomorrow - so I can test new code.

Please update to 0.8.9-beta -
First version of MPU6050 sensor support
https://github.com/pezi/dart_periphery/blob/main/example/MPU6050_test.dart

I closed this issue - docu update for flutter-pi is available and a correct exception is available for the  flutter-pi  environment.

Thanks @pezi. Really appreciate it. I may contact you in a few days for a commercial development separately.

Hi, I made the changes and tried using the MPU 6050, but i am getting only a set value of Acc and Gyro. Its not changing at all. When i tried printing the various intermittent values, i figured that the buffer is getting only zeros. Here is my minor modifications with just extra print commands and the output i am getting. I double checked the MPU 6050 wiring connections as well.
import 'package:dart_periphery/dart_periphery.dart';
import 'package:dart_periphery/src/hardware/util.dart';
import 'dart:io';
const int MPU6050_ADRESS = 0x68;
const int ACCEL_OFFSET = 200;
const int GYRO_OFFSET = 151; // 151
const int GYRO_SENSITITY = 131; // 131 is sensivity of gyro from data sheet
const double GYRO_SCALE = 0.2; //  0.02 by default - tweak as required
const double LOOP_TIME = 0.15; // 0.
int map(int x, int inMin, int inMax, int outMin, int outMax) =>
(x - inMin) * (outMax - outMin) ~/ (inMax - inMin) + outMin;
int constrain(int amt, int low, int high) =>
((amt) < (low) ? (low) : ((amt) > (high) ? (high) : (amt)));
class MPU6050 {
final I2C i2c;
MPU6050(this.i2c) {
i2c.writeByte(MPU6050_ADRESS, 0x6B);
print('I2C ID: ${i2c.getI2Cfd()}');
print('I2C INFO: ${i2c.getI2Cinfo()}');
print('I2C READBYTE: ${i2c.readByte(MPU6050_ADRESS)}');
i2c.writeByte(MPU6050_ADRESS, 0);
}
void getValues() {
i2c.writeByte(MPU6050_ADRESS, 0x3B);
var buf = ByteBuffer(i2c.readBytes(MPU6050_ADRESS, 14), ByteBufferSrc.I2C,
BitOrder.MSB_LAST);
print('Buffer: ${buf.data}');
var accAngle = [];
var gyroAngle = [];
double temperature;
for (var i = 0; i < 3; ++i) {
var accCorr = buf.getInt16() - ACCEL_OFFSET;
print('Initial AccCorr: $accCorr');
accCorr = map(accCorr, -16800, 16800, -90, 90);
print('Mapped AccCorr: $accCorr');
accAngle.add(constrain(accCorr, -90, 90));
print('AccAngle: $accAngle');
}
temperature = (buf.getInt16() + 12412.0) / 340.0;
for (var i = 0; i < 3; ++i) {
var gyroCorr = ((buf.getInt16() / GYRO_SENSITITY) - GYRO_OFFSET);
gyroAngle.add((gyroCorr * GYRO_SCALE) * -LOOP_TIME);
}
print(
'ACCEL_X: ${accAngle[0]}  ACCEL_Y: ${accAngle[1]} ACCEL_Z: ${accAngle[2]}');
print('Temperature: ${temperature.toStringAsFixed(2)}');
print(
'GYRO_XOUT: ${gyroAngle[0]}  GYRO_YOUT: ${gyroAngle[1]} GYRO_ZOUT: ${gyroAngle[2]}');
}
}
void main() {
setCustomLibrary('/home/pi/test8/dart_periphery_static_<IP_ADDRESS>.so');
var i2c = I2C(1);
print('I2C Path: ${i2c.path}');
print('I2C Path: ${i2c.busNum}');
try {
var mpu = MPU6050(i2c);
while (true) {
mpu.getValues();
sleep(Duration(milliseconds: (LOOP_TIME * 1000).toInt()));
}
} finally {
i2c.dispose();
}
}
OUTPUT:
lutter: I2C Path: /dev/i2c-1
flutter: I2C Path: 1
flutter: I2C ID: 25
flutter: I2C INFO: I2C (fd=25)
flutter: I2C READBYTE: 64
flutter: Buffer: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
flutter: Initial AccCorr: -200
flutter: Mapped AccCorr: -2
flutter: AccAngle: [-2]
flutter: Initial AccCorr: -200
flutter: Mapped AccCorr: -2
flutter: AccAngle: [-2, -2]
flutter: Initial AccCorr: -200
flutter: Mapped AccCorr: -2
flutter: AccAngle: [-2, -2, -2]
flutter: ACCEL_X: -2  ACCEL_Y: -2 ACCEL_Z: -2
flutter: Temperature: 36.51
flutter: GYRO_XOUT: 4.53  GYRO_YOUT: 4.53 GYRO_ZOUT: 4.53
flutter: Buffer: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
flutter: Initial AccCorr: -200
flutter: Mapped AccCorr: -2
flutter: AccAngle: [-2]
flutter: Initial AccCorr: -200
flutter: Mapped AccCorr: -2
flutter: AccAngle: [-2, -2]
flutter: Initial AccCorr: -200
flutter: Mapped AccCorr: -2
flutter: AccAngle: [-2, -2, -2]
flutter: ACCEL_X: -2  ACCEL_Y: -2 ACCEL_Z: -2
flutter: Temperature: 36.51
flutter: GYRO_XOUT: 4.53  GYRO_YOUT: 4.53 GYRO_ZOUT: 4.53
flutter: Buffer: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
flutter: Initial AccCorr: -200
flutter: Mapped AccCorr: -2
flutter: AccAngle: [-2]
flutter: Initial AccCorr: -200
flutter: Mapped AccCorr: -2
flutter: AccAngle: [-2, -2]
flutter: Initial AccCorr: -200
flutter: Mapped AccCorr: -2
flutter: AccAngle: [-2, -2, -2]
flutter: ACCEL_X: -2  ACCEL_Y: -2 ACCEL_Z: -2
flutter: Temperature: 36.51
flutter: GYRO_XOUT: 4.53  GYRO_YOUT: 4.53 GYRO_ZOUT: 4.53
flutter: Buffer: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
flutter: Initial AccCorr: -200
flutter: Mapped AccCorr: -2
flutter: AccAngle: [-2]
flutter: Initial AccCorr: -200
flutter: Mapped AccCorr: -2
flutter: AccAngle: [-2, -2]
flutter: Initial AccCorr: -200
flutter: Mapped AccCorr: -2
flutter: AccAngle: [-2, -2, -2]
flutter: ACCEL_X: -2  ACCEL_Y: -2 ACCEL_Z: -2
flutter: Temperature: 36.51
flutter: GYRO_XOUT: 4.53  GYRO_YOUT: 4.53 GYRO_ZOUT: 4.53
flutter: Buffer: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
flutter: Initial AccCorr: -200
flutter: Mapped AccCorr: -2
flutter: AccAngle: [-2]
flutter: Initial AccCorr: -200
flutter: Mapped AccCorr: -2
flutter: AccAngle: [-2, -2]
flutter: Initial AccCorr: -200
flutter: Mapped AccCorr: -2
flutter: AccAngle: [-2, -2, -2]
flutter: ACCEL_X: -2  ACCEL_Y: -2 ACCEL_Z: -2
flutter: Temperature: 36.51
flutter: GYRO_XOUT: 4.53  GYRO_YOUT: 4.53 GYRO_ZOUT: 4.53
flutter: Buffer: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
flutter: Initial AccCorr: -200
flutter: Mapped AccCorr: -2
flutter: AccAngle: [-2]
flutter: Initial AccCorr: -200
flutter: Mapped AccCorr: -2
flutter: AccAngle: [-2, -2]
flutter: Initial AccCorr: -200
flutter: Mapped AccCorr: -2
flutter: AccAngle: [-2, -2, -2]
flutter: ACCEL_X: -2  ACCEL_Y: -2 ACCEL_Z: -2
flutter: Temperature: 36.51
flutter: GYRO_XOUT: 4.53  GYRO_YOUT: 4.53 GYRO_ZOUT: 4.53
flutter: Buffer: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
flutter: Initial AccCorr: -200
flutter: Mapped AccCorr: -2
flutter: AccAngle: [-2]
flutter: Initial AccCorr: -200
flutter: Mapped AccCorr: -2
flutter: AccAngle: [-2, -2]
flutter: Initial AccCorr: -200
flutter: Mapped AccCorr: -2
flutter: AccAngle: [-2, -2, -2]
flutter: ACCEL_X: -2  ACCEL_Y: -2 ACCEL_Z: -2
flutter: Temperature: 36.51
flutter: GYRO_XOUT: 4.53  GYRO_YOUT: 4.53 GYRO_ZOUT: 4.53

Sorry for this mess - I released this code too fast.
I think the problem is caused by
var buf = ByteBuffer(i2c.readBytesReg(MPU6050_ADRESS, 0x3B, 14),
        ByteBufferSrc.I2C, BitOrder.MSB_FIRST);

as a replacment for the arduino
  Wire.requestFrom(MPU6050_ADRESS, 7*2, true)

which waits until 14 bytes are available.
If you take a look at  https://github.com/Harinadha/STM32_MPU6050lib/blob/master/MPU6050.c
void MPU6050_I2C_BufferRead(u8 slaveAddr, u8* pBuffer, u8 readAddr, u16 NumByteToRead)

the way of reading data is more complicated.

Ups - i found an error - the byte order was wrong - now the temperature seems to be correct -  currently I can not test the sensor - the pins header isn't soldered, only trapped by a weight. I must solder the pin in the company.
import 'package:dart_periphery/dart_periphery.dart';

import 'package:dart_periphery/src/hardware/util.dart';
import 'dart:io';

const int MPU6050_ADRESS = 0x68;

const int ACCEL_OFFSET = 200;
const int GYRO_OFFSET = 151; // 151
const int GYRO_SENSITITY = 131; // 131 is sensivity of gyro from data sheet
const double GYRO_SCALE = 0.2; // 0.02 by default - tweak as required
const double LOOP_TIME = 0.15; // 0.

int map(int x, int inMin, int inMax, int outMin, int outMax) =>
    (x - inMin) * (outMax - outMin) ~/ (inMax - inMin) + outMin;

int constrain(int amt, int low, int high) =>
    ((amt) < (low) ? (low) : ((amt) > (high) ? (high) : (amt)));

class MPU6050 {
  final I2C i2c;
  MPU6050(this.i2c) {
    i2c.writeByteReg(MPU6050_ADRESS, 0x6B, 0);
    print('I2C ID: ${i2c.getI2Cfd()}');
    print('I2C INFO: ${i2c.getI2Cinfo()}');
  }

  void getValues() {
    var buf = ByteBuffer(i2c.readBytesReg(MPU6050_ADRESS, 0x3b, 14),
        ByteBufferSrc.I2C, BitOrder.MSB_FIRST);
    print('Buffer: ${buf.data}');
    var accAngle = [];
    var gyroAngle = [];
    double temperature;
    for (var i = 0; i < 3; ++i) {
      var accCorr = buf.getInt16() - ACCEL_OFFSET;
      print('Initial AccCorr: $accCorr');
      accCorr = map(accCorr, -16800, 16800, -90, 90);
      print('Mapped AccCorr: $accCorr');
      accAngle.add(constrain(accCorr, -90, 90));
      print('AccAngle: $accAngle');
    }
    temperature = buf.getInt16() / 340.0 + 36.53;
    for (var i = 0; i < 3; ++i) {
      var gyroCorr = ((buf.getInt16() / GYRO_SENSITITY) - GYRO_OFFSET);
      gyroAngle.add((gyroCorr * GYRO_SCALE) * -LOOP_TIME);
    }
    print(
        'ACCEL_X: ${accAngle[0]} ACCEL_Y: ${accAngle[1]} ACCEL_Z: ${accAngle[2]}');
    print('Temperature: ${temperature.toStringAsFixed(2)}');
    print(
        'GYRO_XOUT: ${gyroAngle[0]} GYRO_YOUT: ${gyroAngle[1]} GYRO_ZOUT: ${gyroAngle[2]}');
  }
}

void main() {
  var i2c = I2C(1);
  print('I2C Path: ${i2c.path}');
  print('I2C Path: ${i2c.busNum}');
  try {
    var mpu = MPU6050(i2c);
    while (true) {
      mpu.getValues();
      sleep(Duration(milliseconds: (LOOP_TIME * 1000).toInt()));
    }
  } finally {
    i2c.dispose();
  }
}

Thanks a lot. Your solution worked.
I created a small code just to get the data in a stream and display it in a small widget so that the whole screen doesn't rebuild on every value change from the sensor. Below is the code for anyone who may need it. your just have to call Homepage() from your main.dart file. Added are some tripping levels for the angles, temp and gyro values with a basic UI of change in the background color with the tripping values. Also, there is a small error in the code which goes off once the sensor start streaming values, so it wont be a testing problem. I will remove it later. Hope it helps someone.
import 'package:flutter/material.dart';
import 'package:dart_periphery/dart_periphery.dart';
// ignore: implementation_imports
import 'package:dart_periphery/src/hardware/util.dart';
const int MPU6050_ADRESS = 0x68;
const int ACCEL_OFFSET = 200;
const int GYRO_OFFSET = 151; // 151
const int GYRO_SENSITITY = 131; // 131 is sensivity of gyro from data sheet
const double GYRO_SCALE = 0.2; // 0.02 by default - tweak as required
const double LOOP_TIME = 0.15; // 0.
int map(int x, int inMin, int inMax, int outMin, int outMax) =>
(x - inMin) * (outMax - outMin) ~/ (inMax - inMin) + outMin;
int constrain(int amt, int low, int high) =>
((amt) < (low) ? (low) : ((amt) > (high) ? (high) : (amt)));
class MPU6050 {
final I2C i2c;
MPU6050(this.i2c) {
i2c.writeByteReg(MPU6050_ADRESS, 0x6B, 0);
print('I2C ID: ${i2c.getI2Cfd()}');
print('I2C INFO: ${i2c.getI2Cinfo()}');
}
Map<String, double> getValues() {
Map<String, double> dataMap = {};
var buf = ByteBuffer(i2c.readBytesReg(MPU6050_ADRESS, 0x3b, 14),
    ByteBufferSrc.I2C, BitOrder.MSB_FIRST);
print('Buffer: ${buf.data}');
List<int> accAngle = [];
var gyroAngle = [];
double temperature;
for (var i = 0; i < 3; ++i) {
  var accCorr = buf.getInt16() - ACCEL_OFFSET;
  print('Initial AccCorr: $accCorr');
  accCorr = map(accCorr, -16800, 16800, -90, 90);
  print('Mapped AccCorr: $accCorr');
  accAngle.add(constrain(accCorr, -90, 90));
  print('AccAngle: $accAngle');
}
temperature = buf.getInt16() / 340.0 + 36.53;
for (var i = 0; i < 3; ++i) {
  var gyroCorr = ((buf.getInt16() / GYRO_SENSITITY) - GYRO_OFFSET);
  gyroAngle.add((gyroCorr * GYRO_SCALE) * -LOOP_TIME);
}
print(
    'ACCEL_X: ${accAngle[0]} ACCEL_Y: ${accAngle[1]} ACCEL_Z: ${accAngle[2]}');
print('Temperature: ${temperature.toStringAsFixed(2)}');
print(
    'GYRO_XOUT: ${gyroAngle[0]} GYRO_YOUT: ${gyroAngle[1]} GYRO_ZOUT: ${gyroAngle[2]}');

dataMap = {
  'AngleX': accAngle[0].toDouble(),
  'AngleY': accAngle[1].toDouble(),
  'AngleZ': accAngle[2].toDouble(),
  'Temp': temperature.toDouble(),
  'GyroX': gyroAngle[0].toDouble(),
  'GyroY': gyroAngle[1].toDouble(),
  'GyroZ': gyroAngle[2].toDouble()
};

return dataMap;

}
}
class AngleWidget extends StatefulWidget {
final Map<String, double> dataMap;
AngleWidget(this.dataMap);
@override
_AngleWidgetState createState() => _AngleWidgetState();
}
class _AngleWidgetState extends State {
@override
Widget build(BuildContext context) {
final data = widget.dataMap;
return Container(
  child: ListView(
    children: [
      ListTile(
        title: Text('Angle X'),
        trailing: Text(data['AngleX'].toStringAsFixed(0)),
        tileColor: data['AngleX'] > 20 || data['AngleX'] < -20
            ? Colors.red
            : Colors.grey[50],
      ),
      ListTile(
        title: Text('Angle Y'),
        trailing: Text(data['AngleY'].toStringAsFixed(0)),
        tileColor: data['AngleY'] > 20 || data['AngleY'] < -20
            ? Colors.red
            : Colors.grey[50],
      ),
      ListTile(
        title: Text('Angle Z'),
        trailing: Text(data['AngleZ'].toStringAsFixed(0)),
        tileColor: data['AngleZ'] > 20 || data['AngleZ'] < -20
            ? Colors.red
            : Colors.grey[50],
      ),
      ListTile(
        title: Text('Gyro X'),
        trailing: Text(data['GyroX'].toStringAsFixed(2)),
        tileColor: data['GyroX'] > 5 || data['GyroX'] < -5
            ? Colors.red
            : Colors.grey[50],
      ),
      ListTile(
        title: Text('Gyro Y'),
        trailing: Text(data['GyroY'].toStringAsFixed(2)),
        tileColor: data['GyroY'] > 5 || data['GyroY'] < -5
            ? Colors.red
            : Colors.grey[50],
      ),
      ListTile(
        title: Text('Gyro Z'),
        trailing: Text(data['GyroZ'].toStringAsFixed(2)),
        tileColor: data['GyroZ'] > 5 || data['GyroZ'] < -5
            ? Colors.red
            : Colors.grey[50],
      ),
      ListTile(
        title: Text('Temperature'),
        trailing: Text(data['Temp'].toStringAsFixed(2)),
        tileColor: data['Temp'] > 30 || data['Temp'] < 20
            ? Colors.red
            : Colors.grey[50],
      ),
    ],
  ),
);

}
}
class HomePage extends StatefulWidget {
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State {
Map<String, double> anglesMap = {};
Stream<Map<String, double>> angleStream() async* {
var mpu = MPU6050(I2C(1));
while (true) {
await Future.delayed(Duration(milliseconds: (LOOP_TIME * 1000).toInt()));
anglesMap = mpu.getValues();
yield anglesMap;
}
}
@override
void initState() {
setCustomLibrary('/home/pi/test8/dart_periphery_static_<IP_ADDRESS>.so');
super.initState();

}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('RPI MPU6050 Demo'),
),
body: Center(
child: Container(
padding: EdgeInsets.all(20),
child: StreamBuilder(
builder: (ctx, snapshot) {
return AngleWidget(snapshot.data);
},
stream: angleStream(),
),
),
),
);
}
}

The main problem of the first approach was the wrong combination of the I2C write commands.
 i2c.writeByte(MPU6050_ADRESS, 0x6B);
 i2c.writeByte(MPU6050_ADRESS, 0);

must be translated from the Ardiono Code as
   i2c.writeByteReg(MPU6050_ADRESS, 0x6B, 0);

The Arduino I2C command can to be translated 1:1 is some cases.
FYI: Flutter 2.0 is out - flutter pi has released binaries for this new release and I updated also my package to dart 2.12.0 including null-saftey


Multiplatform support for Kotlin/JS and Kotlin/Native

GRPC-web became GA. Coroutine is implemented in Kotlin/JS and Kotlin/Native Is there possibility to extract kotlin common code and implement for JVM/JS/Native to enable multi platform GRPC?

This is an interesting idea. I have not tried either of those before so I can't say straight away if it would work or not. But I will spend some time experimenting with those combinations to see what works and what doesn't work. I'll push a branch when I got something to show.
Any help with researching this is highly appreciated!

Can anyone get me going with this? I'm pretty new, but when I know how I have to setup the tooling/project, I'd like to add my efforts to this project

This project: https://github.com/cretz/pb-and-k  generates the JS code.. and native..

I take that back... no native in pb-and-k...   there is also kroto plus  https://github.com/marcoferrer/kroto-plus which says that  "In Progress
Multiplatform Protobuf Messages w/ Kotlinx Serialization"

We are looking at using Kotlin MPP to share our business layer code base between our platforms. Since we use gRPC on all our platforms already this would be really nice to have. Any news on this?

I have implemented such a project on my own. It currently supports JVM/Android and JS and allows you to make grpc calls from your common code. iOS is currently not supported, but it will be in the future.
Here is my project: GRPC Kotlin Multiplatform


ghc-mod extencion don't work on Ubuntu

Ubuntu 18.04
Installed ghc-mod 5.8 (from Ubuntu's repositories)
vscode 1.22.2 (from official .deb package)

Could you try a couple of things:

See if ghc-mod is working on the command line to check a source file: ghc-mod check path/to/source.hs
In VSCode go to Help -> Toggle Developer Console and see if there are any error messages displayed.

For the record, on a fresh Ubuntu 18.04 install I had to do the following to get the extension working:

Install VSCode and this extension
# apt install ghc-mod cabal-install
cd project-dir/ && cabal sandbox init && cabal update && cabal install


Register Class Order

Hi,
I register all Serializable classes with reflection and it works good on both serialize and deserialize.
If I remove one of that classes or add a new one, it gives exceptions. I know it should have same register order. As much as, I know Kryo has a registration method, so you can give id for each registered class. I couldn't find but do you have such a method or any plan to implement such a mechanism or any suggestion for solution?
Thanks

it would be possible using e.g. annotations, however in order to avoid backward compat issues you would have to track id collisions manually. A simpler solution would be to be able to "reserve" an Id, so instead of removing a class you just put in an incrementIdCount() or so (or just give null as argument).

wiat what: it's already possible
FSTConfiguration::getClassRegistry().registerClass( Class c, int code, FSTConfiguration conf).
Warning:

Id's have to be at least > 10.000 to avoid collisions, better choose a base of like 1_000_000 for your id's.
note the registere silently returns in case the class is already registered


Resistances for NPC Actors Not Working

I have tried this with different creatures and with different resistances (fire, physical) and the resistances are not working when applying the damage to a NPC actor. I even started a new campaign with zero modules in it to verify that the problem wasn't being caused by an errant module.
An easy NPC actor to replicate the problem is the Grick (the uncommon one). It has resistance to physical damage 5 but that doesn't apply and the NPC takes full damage each time. I have not tried testing the resistances towards PCs, only NPCs.

Did you turn on IWR in settings?

Apologies, I didn't realize that this was an optional setting. I'll close it. Thanks.


Update Navigation list for empty platform/portfolio list

Update Navigation list for empty platform/portfolio list
Remove the Edit icon in the navigation list as it is removed from the new UX design.

@gmcculloug  - please merge when you can - this allows us to use the UI when the topology service is not available


Implement sce_em_set

Implements sce_em_set opcode, which sets up a new enemy spawn for a room. Some additional code is implemented:

Initialization of game enemy routine table
Initialization of room enemy routine table
Zombie dog routine top level and dead state

We know em_20 is the dog. Should we replace em_20 by EnemyDog or similar?

We know em_20 is the dog. Should we replace em_20 by EnemyDog or similar?

Is the same for everything we know, like licke, spider, etc


XNGAPIClient is missing UIKit Import

If I use the XNGAPIClient in Swift Xcode reports 3 expected type errors. If you look at the error message the UIImage class could not be found. You can fix it using the
#import <UIKit/UIKit.h>
in the XNGAPIClient.h or in the categories where UIImage is used.

Thanks a lot for the heads up :blush: ! We are working on supporting Swift projects. You could use the swift_support branch until this PR is merged: https://github.com/xing/XNGAPIClient/pull/80


Using Vault with ScriptCraft

Hello,
I've been researching this for a couple hours now, and I can't seem to figure out how to import Vault and use it in ScriptCraft. I've looked at using importPackage() and I know I need to import net.milkbowl.vault.economy.Economy, but I haven't figured much else from there.
Thanks,
Nathan

Are you using Bukkit or CanaryMod?

Sorry, I forgot to specify: I'm using Bukkit, but I hope to eventually start a server completely based on ScriptCraft with CanaryMod.
Thanks for the quick reply!

Hi @NathanFlurry ,
You can access the Plugin's API once you get the plugin by its name:
http://dev.bukkit.org/bukkit-plugins/scriptcraft/?page=2#c49

Thanks! I seem to have missed that.


Add a Gitter chat badge to README.md

kenny-hibino/stories now has a Chat Room on Gitter
@kenny-hibino has just created a chat room. You can visit it here: https://gitter.im/kenny-hibino/stories.
This pull-request adds this badge to your README.md:

If my aim is a little off, please let me know.
Happy chatting.
PS: Click here if you would prefer not to receive automatic pull-requests from Gitter in future.

No longer needed.


main_binary should reuse the caller's target

I suspect when running cargo test --target TRIPLET that main_binary will still use the default TRIPLE.
Downside: when the user is calling cargo test without a --target, assert_cmd passing --target will cause a one-time large compile time cost
See https://github.com/assert-rs/assert_cli/pull/109

See https://github.com/assert-rs/assert_cli/issues/102

From #43
@mssun

As described https://github.com/mesalock-linux/mesabox/issues/41. I don't know why the first tests are always blocking for over 60 seconds. However, after the blocking issue, all testcases can be run without any problem.

test gnu::arch::test_x86_64 ... test gnu::arch::test_x86_64 has been running for over 60 seconds
test gnu::base32::test_decode ... test gnu::base32::test_decode has been running for over 60 seconds

This only happens in Travis: https://travis-ci.org/mesalock-linux/mesabox/jobs/411140601#L1305
I cannot reproduce this issue in my machine. Don't know why.

@epage

You are having the opposite problem of me with #4.
Your tests build with --target but assert_cmd doesn't.  Even if they are the same target, cargo will do a unique build for it, blocking your tests.  I'm guessing its two tests because they are running in parallel and one is being blocked on the other having the file lock.
This is a tricky situation.  Ideally, we'd always pass along --target but for the default case, it'll slow people's tests down.
Options

An API but like #34 there are complications with letting people customize the behavior
A feature flag to opt-in.
... something else?

@mssun

Yes, this is the problem. Testing with cargo test does not have this issue, but cargo test --target x86_64-unknown-linux-musl still has.
cargo test:

https://travis-ci.org/mesalock-linux/mesabox/jobs/411409632#L996
https://travis-ci.org/mesalock-linux/mesabox/jobs/411409632#L1696

cargo test --target x86_64-unknown-linux-musl

https://travis-ci.org/mesalock-linux/mesabox/jobs/411409633#L1013
https://travis-ci.org/mesalock-linux/mesabox/jobs/411409633#L1425

This is a tricky situation. Ideally, we'd always pass along --target but for the default case, it'll slow people's tests down.

I'm not quite understand the tricky situation, and how it affects the cargo test --target x86_64-unknown-linux-musl case. Do you mean that no matter what target I pass to the cargo, assert_cmd will do a build for me (and without any target flag)?
Anyway, for the solution, I prefer to a esay/intuitive one like a feature flag to opt-in.

Do you mean that no matter what target I pass to the cargo, assert_cmd will do a build for me (and without any target flag)?

As of right now, yes.

If we start passing in --target, we hurt the performance of those who don't pass in --target.
But without it, we hurt your performance and reduce your platform coverage

I've started mapping out what we might due to the API to help
Please check out https://github.com/assert-rs/assert_cmd/issues/44 and provide feedback


entiteiten removed after reboud HA

Hello,
I have 2 ECU, these work well.
But when I restart Home Assistant, all entities of the 2nd ECU disappear.

![Schermafbeelding 2024-10-03 150138]
(https://github.com/user-attachments/assets/64aa6304-d8e2-4e6f-bee4-56b52bc4922a)
see also the screenshots

The integration does not anticipate more than 1 ECU, this is a frequently heard wish. Try this solution to see if it can work for you. Both can run simultaneously next to each other on HA. https://github.com/HAEdwin/homeassistant-apsystems_ecu_proxy


support for google docs paste

Doing.

eagerly waiting. thanks.

Support some simple format in the latest version.
What is the format you are most looking forward to, can you give a link to the document?

I want multiple list with multiple indentation to paste normally. I will reply after testing new version.

Oh I see, currently not supported, I would try to support this feature.

Try the latest version? Is this what you want?

🤩🤩🥳


feat: SOF-1254 add TriCaster matrix support

Adds support for TriCaster's internal matrix router (also known as crosspoint)

Codecov Report

Merging #47 (dbb1b26) into develop (3d9964a) will increase coverage by 0.10%.
The diff coverage is 92.10%.

: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
@@             Coverage Diff             @@
##           develop      #47      +/-   ##
===========================================
+ Coverage    33.58%   33.68%   +0.10%
===========================================
  Files           66       66
  Lines         8893     8911      +18
  Branches      2199     2202       +3
===========================================
+ Hits          2987     3002      +15
- Misses        5379     5382       +3
  Partials       527      527

Impacted Files
Coverage Δ

...ges/timeline-state-resolver-types/src/tricaster.ts
59.45% <50.00%> (-1.84%)
:arrow_down:

...er/src/integrations/tricaster/triCasterCommands.ts
100.00% <100.00%> (ø)

...tions/tricaster/triCasterShortcutStateConverter.ts
96.82% <100.00%> (-0.05%)
:arrow_down:

...src/integrations/tricaster/triCasterStateDiffer.ts
97.67% <100.00%> (+0.09%)
:arrow_up:

...tions/tricaster/triCasterTimelineStateConverter.ts
78.66% <100.00%> (+2.19%)
:arrow_up:

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


Unable to DisableFilter() for a single column equality only filter.

I am receiving a "Filter name {0} not found" error while calling DisableFilter() on a single column equality-only filter:
Test snippet:
modelBuilder.Filter("EntityCFilter", (EntityC b) => (b.DeleteTimestamp == null));
...
context.DisableFilter("EntityCFilter");
Yields the error noted above. From what I can tell from the source, the filter is not actually registered correctly for single column equality only filter. So, subsequently it can't be found to be disabled.
I have a change for the Filter() single column scenario, but I'm not sure it's "correct".

Sorry about that.  I just checked in a fix and updated NuGet.  My change is slightly different than yours.  All filters need to be registered in _GlobalParameterValues no matter what so that they can be disabled.  I missed that when I changed how the disabling was done.


1.8.9 Compatibility Fix

These changes might fix the issue that a lot of mods are having, where they inherit acceptedMinecraftVersion instead of setting it manually, and something goes wrong. Minecraft Errors and says that  wants Minecraft [1.8,1.8]
As far as I can tell, the round bracket at the end is important, but I might not be.
I shall be testing this.

Sorry - only just spotted this PR.
You mentioned that you were testing this - did you have any issues?

It loaded in, but then it crashed when I placed villagers and doors. It didn't work in multiplayer, though.
Also, another issue is that there is no IP address to enter in when I try to use the mod on a Realm.

I think this PR with the #21 together should work out. I'm not in a position to test right now...  will hopefully get to it this weekend.


rendering instructions

Thanks for your wonderful work!
I am very interested in your work and try to extend the ideas to other tasks.
I wonder when the rendering instructions will be available?

I figure out how to render text. following https://github.com/xplip/pixel/blob/main/scripts/data/prerendering/prerender_bookcorpus.py.
Another question is how can I get emojis as shown in Figure 2 in the paper?
Are these emojis added in some automatic manner, or, emojis are part of the corpus and you do not manipulate them?

Personally, I am also interested in the performance of the language model without such emojis which contain image concepts. Will these emojis help language modeling?

Thanks for your interest in PIXEL! I can try to write up a small rendering guide this week to help use and extend our renderer.
The prerendering script you found is using the PyGameTextRenderer but I would generally recommend that you use the PangoCairoTextRenderer which has broader language support and support for the emojis you mentioned.
After setting up your environment as described here, you can render an image similar to the one in the paper like this:
from pixel import PangoCairoTextRenderer
from PIL import Image

# Load renderer with fallback fonts and RGB rendering enabled
text_renderer = PangoCairoTextRenderer.from_pretrained(
    "Team-PIXEL/pixel-base",
    fallback_fonts_dir="path/to/your/fallback_fonts",
    rgb=True
)

sentence = "My cat 🐈 loves pancakes 🥞 and my duck 🦆 loves grapes 🍇."

# Render the sentence; returns an Encoding object
encoding = text_renderer(sentence)

# Create image from pixel values; img will have dimensions 3x16x8464 by default
img = Image.fromarray(encoding.pixel_values)

# Save to disk to visualize
img.save("test.png")

Note that you’re going to need an emoji font like AppleColorEmoji.ttf to successfully render emojis and you need to instantiate a renderer with the rgb=True argument to render it in color.
See here for instructions on how to download our fallback fonts.
We haven’t done much experimentation with emojis yet. They may or may not help in language modelling, but personally I think they will primarily help for tasks that explicitly make use of emoji such as sentiment analysis of social media texts.
If you aren’t interested in emoji, then I recommend you do not use the rgb=True argument because RGB rendering is slightly slower than grayscale rendering. However, I strongly recommend to use fallback fonts regardless.
I hope this helped for now and as I mentioned I will try to write up something more detailed later this week. Let me know if you have further questions :).

Thanks for your detailed response!


MapProxyDomain vs Response with "Alternate-Protocol" header

Noticed at iispeed.com
When applying MapProxyDomain to https://www.google-analytics.com/analytics.js:
This response header will get forwarded: Alternate-Protocol: 443:quic,p=1 in the optimized response.
That seems optimistic, I wish our server supported that :-)
Note that there's a hack in place to supress this right now, so it won't reproduce.

Do you think we should just strip out Alternate-Protocol in MapProxyDomain responses?

@jeffkaufman Yes, I think we should.
We might also want to check http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html#sec13.5.1 to make sure other hop-by-hop headers are also not forwarded.
Alternate-Protocol is not on the list in the RFC, but it does classify as hop-by-hop as far as I can tell.

Fixed by https://github.com/pagespeed/mod_pagespeed/commit/d43f40b3c7b3b27dfce3350cea2d8b62f83cdc27


Show file hashes in properties like HashTab. #3722

Resolved / Related Issues
This PR is used to implement a new feature to show file hashs MD5/SHA1/CRC32 on Properties panel and compare the current hashs with hashs of another files.
Validation

[x] Get folder Properties and get his hashs
[x] Compare the current file hashs with other file hashes (check if they are different)
[x] Compare the current file hashs with same file hashes (check if they are equals)

Screenshots (optional)

@oleitao Do you really think we should include the option to compare with other Files? I think the properties dialog should be limited to the selected file.

@oleitao Do you really think we should include the option to compare with other Files? I think the properties dialog should be limited to the selected file. Also, can you put the hashes section after the details section?

@yaichenbaum i saw that suggestion on 3722 but i can remove that. Please let me know.

@oleitao It's up to you, but in my opinion, if it's working fine, we might as well keep it.

@oleitao It's up to you, but in my opinion, if it's working fine, we might as well keep it.

I've a some suggestions about an previous related PR 4121 which is related with MD5 hash generation.

In order to don't have MD5 hash on two placed Properties -> General(tab) and Properties -> Hashes (tab). I suggest to remove MD5 hash field of General tab.

Discard that PR 4121

Do you agree?

Do you agree?
@oleitao I agree, it should only be in one place.

@oleitao Should the compare option be a little lower down on the page similar to the screenshot shared in the issue you linked?

@oleitao Should the compare option be a little lower down on the page similar to the screenshot shared in the issue you linked?

@yaichenbaum i removed the compare option. Do you want to add compare option again?

@oleitao Should the compare option be a little lower down on the page similar to the screenshot shared in the issue you linked?

@yaichenbaum i removed the compare option. Do you want to add compare option again?

It's good either.

By the way, CRC32 hash should be 04CE0987.

I've tested CRC32 and compared the output with Hash Viewer and all CRC32 generated hashes was mathed.

@oleitao Can you address the requested changes?

@oleitao Can you address the requested changes?

@yaichenbaum yes i can. Tomorrow i will start to work on requested changes.

@oleitao Can you address the requested changes?

It's better not address this PR to me.


What's the best way to integrate Sound ?

Hello
Your lightweight viewer is awesome. I've followed the examples presented on the website and have created a tour successfully, my question remains however - what code would be best to attribute sound to each 'scene' as a background sound?
Much appreciated!
S

Thank you for your prompt response.
Using the Tour Example API for instance (below) , where would this *event
listener *be best placed in the structure?
I have an mp3 file ready to link to on the web so an indication of how this
could be referenced would be greatly appreciated.

<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Tour</title>
<link rel="stylesheet"

<EMAIL_ADDRESS>

Why not add custom fields to each scene in your tour JSON and then let one single event handler use a specific scene field as the audio name/URL.

Using the Tour Example API for instance (below) , where would this *event listener *be best placed in the structure?

Replace the first line of the script, pannellum.viewer('panorama', {, with var viewer = pannellum.viewer('panorama', { to assign the Pannellum instance to a variable.
Then, add new code at the end of the script:
viewer.on('scenechange', function(sceneid) {
    // Replace this code with code to play your sounds.
    // This example will print the scene ID, e.g., `circle` or `house` in the example, to the browser
    // developer console any time the scene changes.
    console.log(sceneid);
});

Hi. Is there a way to get this to work with something line 'sceneload'? I'm trying to make the first scene play ambient sound.

Hi. Is there a way to stop the sound from the first scene when a new scene loads? I'm trying to make every scene have it's own unique ambient sound playing in the background, but using the method here the sound from the first scene just keeps playing over the sound from the previous scene.

@epignosis567: Well, store the JavaScript audio instance in a variable and in the handler that loads a new sound you can stop/destroy the old audio instance.

Thanks, but I don't think that would work since I'm storing the audio in individual 'scenechange' functions, right?

@epignosis567: You could store the audio reference in a variable named currentAudio that is global so the scene change function can access it. It checks whether the variable is initialized and then stops/destroys the audio. Then it creates the new audio and assigns it to the variable instead, so the cycle can start again.

Thanks! I'll work on this. (I opened a separate issue in the meantime.)
I'm not sure I understand how this could be implemented using 'scenechange' though. This is what I've been working on:
viewer.on('scenechange', function(extWindow) {
var extWindowAmbience = document.getElementById("extWindowSound");
extWindowAmbience.play();
console.log(extWindow);
});
viewer.on('scenechange', function(hallChar) {
    var hallCharAmbience = document.getElementById("hallCharSound");
    hallCharAmbience.play();
    console.log(hallChar);
});

    var currentAudioElement = null;

    viewer.on('scenechange', function(sceneId) {
        if(currentAudioElement) {
            currentAudioElement.pause();
        }

        let newAudioId = sceneId + 'Sound'; // "ambience"Sound
        let newAudioElement = document.getElementById(newAudioId );

        currentAudioElement = newAudioElement ;
        newAudioElement .play();
    });

When the scene changes, the handler checks for a set currentAudioElement variable.
If it is set, it calls pause() on that audio element in order to prevent any further audio playback.
Then it gets the audio element for the new scene, also assigns it to currentAudioElement and plays it back.

Thanks. I’m still working on this but I will report back.

Thanks, this has worked well for me - Great help!


unknown command "oidc-login" for "kubectl"

Hi,
I'm running on linux, trying to run kubefwd with:
sudo -E kubefwd svc -c $KUBECONFIG -n default
Getting the error:
error: unknown command "oidc-login" for "kubectl"
FATA[17:16:59] Error connecting to k8s cluster: Get "https://(REDACTED)": getting credentials: exec: executable kubectl failed with exit code 1

My cubeconfig looks similar to this:
current-context: (REDACTED)
kind: Config
preferences: {}
users:
- name: (REDACTED)
  user:
    exec:
      apiVersion: client.authentication.k8s.io/v1beta1
      args:
      - oidc-login
      - get-token
      - --oidc-issuer-url=(REDACTED)
      - --oidc-client-id=(REDACTED)
      - --oidc-extra-scope=profile,groups
      command: kubectl
      env: null
      interactiveMode: IfAvailable
      provideClusterInfo: false

P.S:  kubectl works fine without kubefwd

kubefwd is a separate application and does not know about kubectl or kubectl plugins. Your config is trying to execute kubectl and since it is doing it via sudo it might not have access to the same plugins.

Thank you for pointing this out. I used krew to install oidc-login.
Adding kubelogin binary to my path resolved the issue.


Adjusts the current image orientation automatically

I pull request to fix this issue on your package https://stackoverflow.com/questions/50277697/laravel-is-rotating-the-image-when-uploaded
This is example when I upload this image

Then your package is not orientation properly

Hope this my pull request can help
Thanks

Hey! Thanks for the PR! I will merge it and refactor a bit as I see you've changed some function params. ;)


Check the focusing behavior of popup windows

The popups don't seem to always get the effect of being the focused window. I've seen this with my colorscheme.
Another example: https://www.reddit.com/r/neovim/comments/17tu64y/comment/k91dv1k/?utm_source=share&utm_medium=web2x&context=3

This problem still exists in dev branch!

I realized the problem was my color scheme :P


I can't download BBC.com/news/ video

Exact URL is http://www.bbc.com/news/video_and_audio/must_see/33376376.
$ youtube-dl -v http://www.bbc.com/news/video_and_audio/must_see/33376376
[debug] System config: []
[debug] User config: []
[debug] Command-line args: [u'-v', u'http://www.bbc.com/news/video_and_audio/must_see/33376376']
[debug] Encodings: locale UTF-8, fs UTF-8, out UTF-8, pref UTF-8
[debug] youtube-dl version 2015.06.15
[debug] Python version 2.7.6 - Linux-3.13.0-37-generic-x86_64-with-LinuxMint-17.1-rebecca
[debug] exe versions: avconv 9.18-6, avprobe 9.18-6, rtmpdump 2.4
[debug] Proxy map: {}
[generic] 33376376: Requesting header
WARNING: Falling back on generic information extractor.
[generic] 33376376: Downloading webpage
[generic] 33376376: Extracting information
ERROR: Unsupported URL: http://www.bbc.com/news/video_and_audio/must_see/33376376
Traceback (most recent call last):
File "/usr/local/bin/youtube-dl/youtube_dl/extractor/generic.py", line 1020, in _real_extract
doc = parse_xml(webpage)
File "/usr/local/bin/youtube-dl/youtube_dl/utils.py", line 1558, in parse_xml
tree = xml.etree.ElementTree.XML(s.encode('utf-8'), **kwargs)
File "/usr/lib/python2.7/xml/etree/ElementTree.py", line 1300, in XML
parser.feed(text)
File "/usr/lib/python2.7/xml/etree/ElementTree.py", line 1642, in feed
self._raiseerror(v)
File "/usr/lib/python2.7/xml/etree/ElementTree.py", line 1506, in _raiseerror
raise err
ParseError: not well-formed (invalid token): line 80, column 548
Traceback (most recent call last):
File "/usr/local/bin/youtube-dl/youtube_dl/YoutubeDL.py", line 650, in extract_info
ie_result = ie.extract(url)
File "/usr/local/bin/youtube-dl/youtube_dl/extractor/common.py", line 273, in extract
return self._real_extract(url)
File "/usr/local/bin/youtube-dl/youtube_dl/extractor/generic.py", line 1571, in _real_extract
raise UnsupportedError(url)
UnsupportedError: Unsupported URL: http://www.bbc.com/news/video_and_audio/must_see/33376376

Thank you. I can now download the video!


xInstallPrerequisite

Just a little feedback regarding to prerequisite install. I only made this far on my test environment today. :)
The latest RTM bits seems to have something new with prerequisites.
I had to replace "DotNet452" with "DotNetFx" in MSFT_xSPInstallPrereqs.psm1 and MSFT_xSPInstallPrereqs.schema.mof. Also had to delete "$KB2898850" from $requireParams.
if ($majorVersion -eq 16) {
Write-Verbose -Message "Version: SharePoint 2016"
$requiredParams = @("SQLNCli","Sync","AppFabric","IDFX11","MSIPCClient","KB3092423","WCFDataServices56","MSVCRT11","MSVCRT14","ODBC","DotNetFx")
}
Thanks
Tony Huang

@tonyhxh Looks like the prereq installer changed in the RTM build. I'll flag this to be fixed ASAP. Thanks for reporting it

@BrianFarnhill - wouldn't it be easier for us to have the pre-reqs as a
list based on the version and build? It isn't the first time we need to
change this in the past couple of months :)
That said, Achieving so would mean an complete re-write of the module so
I'd be tempted to just update it for now but have a commitment from all of
us to address this limitation/concern at a later stage.
On Tue, Mar 22, 2016 at 11:07 AM, Brian Farnhill<EMAIL_ADDRESS>wrote:

@tonyhxh https://github.com/tonyhxh Looks like the prereq installer
changed in the RTM build. I'll flag this to be fixed ASAP. Thanks for
reporting it
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub
https://github.com/PowerShell/xSharePoint/issues/229#issuecomment-199549609

@camiloborges Yes and no - we essentially have that now in the list of prereqs that it checks for based on major build version (15/16). We don't really need to go to the build version below that because the prereq installer doesn't normally change in builds, the only potential change point is for service packs (a CU doesn't patch the files you use to install, just the installation itself) so I think managing the list how we are currently isn't an awful approach - but I'm open to looking at how we structure it to make the prereqs more fluid as opposed to the hardcoding that happens now.

@tonyhxh I just checked in the code to fix this in #279 - I'll close this off once it makes it to the dev branch

All done - thanks for reporting @tonyhxh

@BrianFarnhill, @tonyhxh Are there any SP2019 versions  of MSFT_SPInstallPrereqs.psm1 and MSFT_SPInstallPrereqs.schema?  The TAP bits have DotNet47 instead of DotNetFx for the prereq installer argument list.

Understood.  I will remove my comment for now.


Standardize & update colors

First discussed in #35

Thanks for this! I wanted to get to it early but couldn't. Merging this now.


Remove version: Nvidia.GeForceNow version <IP_ADDRESS>

[Automated] It returns code over 400 in all urls
Microsoft Reviewers: Open in CodeFlow

URL: https://ota-downloads.nvidia.com/ota/GeForceNOW-release_8E75E4.exe
Status code: 200
(Automated message - build 608)


move or update usage summarizer utility

The usage summarizer needs to be compiled so that it can be started from the command line.  However, compiling it (with all of their dependencies) bloats the size of the jar file and can potentially cause version conflicts with other jars.
Either:

[ ] Move it to a separate module and create an uber jar to call it, or
[ ] Keep it in the ssclj jar, but load the implementation dynamically from the main function.

Test: check that the usage email is sent

[ ]  Keep it in the ssclj jar, but load the implementation dynamically from the main function.
[ ] Test on nuv.la that create*.sh scripts work


Print out brokers information on subctl show all

Print out the info, even if clusters only have brokers.
Clusters that don't have brokers will just show informatory "Detecting
brokers" message and nothing further.
Resolves: #1894
Signed-off-by: Mike Kolesnik<EMAIL_ADDRESS>

Fixed linting errors


some domains are not working (.org and .es)

Seems like .org (wikipedia.org or archive.org) and .es (google.es) are not working. whois: connect to whois server failed: dial tcp: lookup http://whois.easydns.com: no such host. I tried .com domains and works as expected.

.info and .me domains aren't working either. I tested it using the docker and the domains viewdns.info and domain.me. The error message is the same but with a different whois server: whois: connect to whois server failed: dial tcp: lookup whois.godaddy.com/: no such host

.io doesn't work for devterms.io as well:
whois: connect to whois server failed: dial tcp: lookup www.spaceship.com/domains/whois: no such host

Seems like .org (wikipedia.org or archive.org) and .es (google.es) are not working. whois: connect to whois server failed: dial tcp: lookup http://whois.easydns.com: no such host. I tried .com domains and works as expected.

If I am not mistaken, .es uses a private NIC and can't be reached by using the Linux command whois, for instance.
Therefore, I might suggest you use other APIs or dominios.es lookup service.
Siempre nos hemos empeñado en hacer todo nosotros, y esto nos pasa cuando no nos importa un bledo la integración o compatibilidad universal con otros servicios. La oveja negra, siempre.


GCC DLP Rule > Unable to select Teams as a location (not a visible option)

I have a GCC client that is not seeing Teams as a location when setting up DLP rule. Is there any condition that might exist that would keep this from showing up as an option? They do have at least one existing Team so I would think that would be an available option. I am seeing Teams chat and conversations as an available location for them.

@rbahne - May we know which Microsoft document link you used in reference to this issue?
Please share it with us so we can investigate further. Thank you.

@rbahne - We appreciate any feedback that improves the content in the Microsoft docs but we haven't had any response from you so we are going to close this issue.
Please feel free to open a new issue if there is a specific area of the docs that we can improve or make better. Thank you.


feat(cloud): add get configuration support

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


utm: init at 3.2.4

Description of changes
Adds UTM: a GUI application for managing virtual machines on macOS.

I starting trying to build UTM from source but ended up just packaging their binary releases instead. I think it's not impossible to build UTM from source within the sandbox but I think it'll end up taking a fair amount of effort.
We would need to:

essentially recreate most of build_dependencies.sh in the package

most of the deps are already in nixpkgs
we'd still want to use UTM's QEMU instead of the one in nixpkgs
we'd want separate derivations for the deps that we do build (at a glance this looks like: qemu, spice, angle, epoxy, virglrenderer plus some tools like depot/gclient) and then assertions in the main UTM derivation that check that the versions we built match what's supposed to be in the UTM release

figure out what to do for entitlements

despite what the UTM docs say, I think it's possible to get by with ad-hoc signing; I think this is essentially the same issue as was already solved for QEMU in nixpkgs (https://github.com/NixOS/nixpkgs/pull/139960)

get UTM to build with xcbuild instead of real xcodebuild

this is the real blocker; xcbuild doesn't seem to have real swift support and it falls over immediately on the subcommands used in UTM's build script

So for now I just have this package pull the DMG from the UTM GitHub releases. FWIW, this is what homebrew seems to do as well.
Things done

Built on platform(s)

[ ] x86_64-linux
[ ] aarch64-linux
[x] x86_64-darwin
[x] aarch64-darwin

[x] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[x] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[x] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[x] Tested basic functionality of all binary files (usually in ./result/bin/)
22.11 Release Notes (or backporting 22.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[x] Fits CONTRIBUTING.md.

Worked for me just fine.


Update README.md

Add some more names on the list

Pleased follow @AbbeyIT’s comment 👍

Okay @E-fais

Pleased follow @AbbeyIT’s comment 👍

Okay @E-fais

Looking good


Discrepancy in examples for steps syntax

Is this a BUG REPORT or FEATURE REQUEST?: Possible error in the documentation
What happened: In many of the examples, the steps are written both with two hyphens as in - - name (example) and in the same list, with one hyphen as in   - name (example). The same pattern can be seen in the readme. I assume the two hyphens are typos 🤔 ?
What you expected to happen: The docs to be consistent and follow yaml best practice

This is actually intended. The steps spec is a list of lists, all of the steps in each element of the parent list will be run in parallel and once they are all done, the next set of elements in the parent list will be run.
In the example you cite:
https://github.com/argoproj/argo/blob/b3d458504b319b3b02b82a872a5e13c59cb3128f/examples/retry-with-steps.yaml#L11-L16
hello1 will be run first (since it is a part of the first element of the parent list). After it's done, hello2a and hello2b will be run in parallel (since they are both part of the second element of the parent list).

Ah, thanks!


Add support for TCMalloc in CMake build

This abstracts some of the logic for finding a malloc replacement so that either jemalloc or TCMalloc can be used, and mimalloc support added easily at a later point. It also fixes some incorrect generator expression usage. If jemalloc and TCMalloc are both found, an error will be issued. It looks like this is what the autotools build does.

[approve ci autest]


test: reduce timeout in tcp_close_while_connecting

Somtimes (once every 10 runs or so) the socket would 'connect' before
'uv_close' was called. This caused EHOSTUNREACH to be set for SO_ERROR
instead of ECANCELED.

This should resolve issue  #741

CI: https://ci.nodejs.org/job/libuv+any-pr+multi/266/
@mhdawson maybe we can get a CI account for @iWuzHere?

All green on PPC linux :D
https://ci.nodejs.org/job/libuv+any-pr+multi/nodes=ppcle-ubuntu1404/266/console
https://ci.nodejs.org/job/libuv+any-pr+multi/nodes=ppcbe-fedora20/266/console

@saghul do you know if that's been done in the past for people who are not collaborators ?  In the mean time I'm happy to kick off runs on request of @iWuzHere (he works in the same office).   Should we do that for each PR as it is submitted ?

Great work @iWuzHere :+1: I actually saw this failure on the Debian 8 machine earlier today, so now we get MOAR GREEN! :green_heart:
LGTM.

Landed in e76e213, thanks!

do you know if that's been done in the past for people who are not collaborators ? In the mean time I'm happy to kick off runs on request of @iWuzHere (he works in the same office).

I'm not sure it it has been done, I was trying to avoid being a bottleneck... also, timezones! If you can hel with kicking off builds, I'm also fine with that.

Should we do that for each PR as it is submitted ?

Usually I like to visually review at least once.


Fix #3252, add an interpolation value for the color matrix result

Add an interpolation value that allows you to interpolate between a texel's original color and the result of applying the color matrix.
This should fix #3252 where the user wanted to easily define a scale of sepia to apply.

Technically, it is alpha. That's how result of advanced blendMode is formed.


Direct Messages from IRC to Discord Channel

Hi,
would it be possible to add a feature to activate that mentioned title issue?
I would like to use direct message at the irc level and present this into a discord channel.
thanks in advance.

No, that's not possible in the bots current state. I don't think it's something that fits well with the main goal of the project either, but it shouldn't be too hard to implement in a fork if you're interested in that.


Cannot use logard in Vitest

Hello good sir
I'm writing some tests in Vitest and when trying to import anything from logard, I get an error.
In my use case, I wanted to mock a TrackingScope
    import TrackingScope from 'logard/dist/src/TrackingScope.js';

    const scope = new TrackingScope(params, {});

this results in this error:
Failed to resolve import "logard/dist/src/TrackingScope.js" from "fileToTest.test.ts". Does the file exist?'

Hi @SeppeP, good to hear from you!
TrackingScope is intended as an internal concern, but most APIs just need a subclass of Scope. So you could create a subclass that you can specialize for your testing purposes, as shown below. Does this work for you?
This doesn't allow calling Loader.getResult though (it really needs a TrackingScope to determine when a previous result can be returned), but I would advise mocking that specific function if needed as that seems outside of the scope of a typical unit test.
import { ParamSource, RouteParams, RouteAttributes, Scope } from 'logard';

class TestScope extends Scope {
  constructor(
    public params: Partial<RouteParams> & { attribs?: RouteAttributes },
  ) {
    super();
  }

  protected getParamValue(name: string, source: ParamSource): Array<string> | undefined {
    return this.params[source]?.[name];
  }

  getAttribute<T>(name: string): T | undefined {
    return this.params.attribs?.[name];
  }
}

Thank you for the great advice. I got it working now.


docker-compose improvements: memory, kafka/zookeeper logs

memory

When running the tutorials in our docker-compose environment, not all containers may start - or may fail once started, if memory is not sufficient.
Whilst the top level docs do refer to needing 4Gb memory, we don't currently try to check.
Investigate how feasible this is - ie launching a special container to check environment - though this may be an issue in terms of virtualization & security

By default all logs from docker compose are dumped to stdout. Kafka/zookeeper are very verbose (INFO) which can be confusing. Look at switching off/reducing/redirecting this logging

also consider if resource useage can be decreased


Support 'untracked' files in lakectl local

Hey! I'm using lakectl local , i.e. my local directory has a .lakefs_ref.yaml file in a directory that's linked to a corresponding lakefs repo, branch and commit. Sometimes i want to run lakectl local checkout <path> but I do not want it to overwrite untracked files in that directory. Is this something that is supported / on the roadmap? Similar to how git does not remove untracked paths when doing a git pull. I was able to do this by using lakectl fs download -r <lakefs url> <path> , so just wondering if its possible to implement with lakectl local as well. Thanks in advance!
Slack conversation with @ozkatz - https://lakefs.slack.com/archives/C016726JLJW/p1728595649900559

I can work on supporting something like a .lakeignore file to exclude files from local commit\checkout etc, if that's the approach the team wants to go with.

Would prefer an option that allows us to blanket ignore all untracked files, and mimics the functionality in lakectl fs download -r <lakefs url> <path> without needing to maintain extra configs. Any particular reason the .lakeignore is preferred given the desired functionality already exists in another form.

An ignore file would allow users do local checkout and later local commit without worrying about untracked files, which could be helpful. That said, I can see that your suggestion might be easier to use.
I would wait for someone from the team to weigh in on this.


Adds Support for Nested JSON

Currently, getting rawdata from JSON objects fails and breaks when nesting other JSON objects together. This PR fixes that and adds tests for the test cases where this can fail.

The reasoning behind this PR is because currently, in order to nest JSON objects, we need to do something like this:
let example: JSON = [
    "hello" : "there"
]

let nested: JSON = [
    "whats" : "up"
    "example" : example.object
]

For developers migrating to SwiftyJSON from using dictionaries before, it's not immediately apparent that this case crashes when getting rawData from the nested object because JSONSerialization doesn't recognize the JSON struct as serializable. Plus, a developer would expect to be able to construct JSON objects like this fairly regularly. Especially when developers start moving to Swift on the backend.
Merging this PR would allow a developer to do this:
let example: JSON = [
    "hello" : "there"
]

let nested: JSON = [
    "whats" : "up"
    "example" : example
]

The last commit I put in was a direct duplicate of #589. The reasoning for this is because my changes will directly conflict with those changes. This brings in the performance enhancements while still supported nested JSON.

This is weird. Tests are passing on my machine.

Could we restart travis?

I forked this and it succeeded twice in Travis. From looking on the web, this could be related to many things, but the intermittent nature of it lends itself to being a timeout issue which many people believe to be the cause.
There is a "Restart Build" button in travis, so if this error comes back you could always try that. Otherwise there are numerous suggestions on how to mitigate or work around this issue, but it's hard to see if they help if the issue is not currently happening.

@nicholas-lonsinger Thanks for that. I think because I don't have access, I can't restart the build myself. I tried looking and couldn't find the restart build button that's normally there.

LGTM 👍

I am trying to parse a JSON object (dictionary). When I access a value for key, I don't get another JSON, I get a [String: JSON]. Is there a way to treat a JSON dictionary object as a [string: JSON] and keep parsing recursively?


Improved [MicroBadger] tests speed

Addresses #2489. Selected images that are less "heavy" and seemed to give faster response times from the API. I also aligned the example previewUrls to match what was used in the test.

Messages

:book:
:sparkles: Thanks for your contribution to Shields, @PyvesB!

  Generated by :no_entry_sign: dangerJS against 24709f391afade70ce1b7272ba9214176f137c20

It's not essential, though it'd be great if you could update the previewUrls to namedParams to help with #2496.

No tests have timed out this time round and they execute much faster with the new images, below one second.

@paulmelnikow can these examples really be converted at this point? As the tag is optional, wouldn't we be affected by #2497?

In examples I haven't been using optionals, so #2497 doesn't apply. Instead there's usually a different pattern for each example, one with and without the optional part. That way each example renders the way you'd expect:


Update decimal.md

Fix formatting of registry entry for decimal format
Formatting is currently off due to use of | in "Type" field:

Using a space instead produces:

@baywet Could you please review and merge?
Thanks in advance!


Charges no longer updating passively

Displayed charges are no longer updating passively. Every item has to be force-updated by right clicking and selecting 'Check', otherwise the number of charges displayed stays the same.  I believe this issue began either with the Leagues IV patch or the one the week prior.

same here, already had my charges gone in the middle of contents because of it lol

yeah I did something dumb and completely broke it. There is an update (0.6.1) awaiting approval which works fine afaict. Sorry for the interruption :/

No worries at all man. Appreciate your work :)


Add 'Nullable' built-in utility type

I've made a PR
Search Terms

Nullable
Suggestion

TypeScript already comes with a NonNullable type, defined in lib.es5.d.ts:
/**
 * Exclude null and undefined from T
 */
type NonNullable<T> = T extends null | undefined ? never : T;

I propose that its inverse, Nullable, is added to the built-in type utilities.
I'm aware that your general position in terms of built-in type utilities is that you don't extend them unless strictly necessary, but I do think this is an important addition for the following reason:
The built-in type utilities generally offer inverse types. For example, Partial is the inverse of Required. And, Pick is the inverse of Omit. Because of this, to me it naturally follows that NonNullable should have an inverse called Nullable.
Use Cases

For the following examples, nullable is defined as null or undefined, thereby following TypeScripts definition from the NonNullable utility type.
A few examples that comes to mind:

Required keys with nullable values.
Function arguments that may have a nullable value.

Additionally, it may help with simplifying built-in type definitions:
For example in lib.es5.d.ts, the catch and then declarations for the Promise interface can be simplified:
interface Promise<T> {
    then<TResult1 = T, TResult2 = never>(onfulfilled?: Nullable<(value: T) => TResult1 | PromiseLike<TResult1>>, onrejected?: Nullable<(reason: any) => TResult2 | PromiseLike<TResult2>>): Promise<TResult1 | TResult2>;
    catch<TResult = never>(onrejected?: Nullable<(reason: any) => TResult | PromiseLike<TResult>>): Promise<T | TResult>;
}

There are several types, particularly in lib.dom.d.ts that could also be simplified by leveraging the Nullable type.
Examples

As part of an InterfaceDeclaration:
interface Foo {
    prop: Nullable<string>;
}

As a optional parameter to a function that may also accept null:
function validateUserInput (text: Nullable<string>): void {}

Checklist
My suggestion meets these guidelines:

[x] This wouldn't be a breaking change in existing TypeScript/JavaScript code
[x] This wouldn't change the runtime behavior of existing JavaScript code
[x] This could be implemented without emitting different JS based on the types of the expressions
[x] This isn't a runtime feature (e.g. library functionality, non-ECMAScript syntax with JavaScript output, etc.)
[x] This feature would agree with the rest of TypeScript's Design Goals.

We've opted to not include utility type aliases in the lib unless they're required for declaration emit purposes

For what it's worth, I do realize that this is your stance, and I also address it in the issue text and provide arguments as to why I think this could be an exception to that general rule.

Consistency is a proxy measure, not an endgoal. We don't do things just to increase consistency; we do them to improve developer's experiences. What we've heard from users is that they don't like it when we needlessly add new global types because a) it causes conflicts with theirs and b) we don't always pick the same definition that they were using.

Alright, that's fair. Again, I know this is your stance and have also seen this reasoning behind declining other proposals for built-in types, but I thought this felt like a needed omission as a companion to NonNullable, hence the issue and PR. But I'll go ahead and close it.

Consistency is a proxy measure, not an endgoal. We don't do things just to increase consistency; we do them to improve developer's experiences. What we've heard from users is that they don't like it when we needlessly add new global types because a) it causes conflicts with theirs and b) we don't always pick the same definition that they were using.

Probably you should reserve some keywords as JS do.


Question : Can I easily do this with this gem

Hello,
I have now this code :  https://gist.github.com/rwobben/4be6a4c7c5798306ab2c790b50c6f01f
this work fine with 10 records.
But now I have to read some 2.800 records.
Can I do this more efficient with this gem.
and if so, can someone give me some tips how to handle this the best ?

@rwobben thanks for asking. I am not sure if this gem is better. You could try to use the Hydra and see for yourself: https://github.com/typhoeus/typhoeus#making-parallel-requests.

Thanks,
The onyly thing I do not see it  how I can make it work with a lot of request.  That example is about 3 , Im using a lot more.  I think It not wise to make all the requests hardcoded. That will be a lot of code then

I think you should iterate over an array of urls instead. Or maybe I don't fully understand your question.

oke, I can make urls instead of numbers. I have to change the code in the first part.
but how can I change the example of parallel request so it takes a array instead of some fixed number of urls

numbers are fine too. you would create requests in a loop, add them to the hydra and run the hydra when all the requests are added.

oke, and adding to hydra can be done this way : Typhoeus::Request.new
then I have to find a way to find out which response is a part of which record so I can store everything at the right place.


Improve the Warnings about missing clipboard registers

Make it translatable
Use a different warning, when clipboard support was not compiled in

On 2024-11-16, Luca Saccarola wrote:

@saccarosium requested changes on this pull request.

In src/message.c:

@@ -4071,7 +4070,11 @@ msg_warn_missing_clipboard(void)
{
if (!global_busy && !did_warn_clipboard)
{

  msg(_(warn_clipboard));

+#ifdef FEAT_CLIPBOARD

  msg(_("W23: Clipboard register not available, using register 0"));

+#else

  msg(_("W24: Clipboard register not available"));

I think this should be a little more specific about the fact that vim doesn't
have this functionality compiled with ideally a link to a doc detailing what is
+clipboard. Mainly for new users that they will likely now about +clipboard and
the fact that you need to recompile vim.
Probably something like: "Clipboard register is not available in this build of
vim. To learn more read :h clipboard"

But new users should know about, or be made aware of, ":help W23".
I don't think we should be turning error messages into essays when
we have a very good help system.
Regards,
Gary

TLDR: at least try to tell the user why the clipboard is unavailable.

But new users should know about, or be made aware of, ":help W23".

IMHO Errors should be helpful and guide you to the solution. The all W* is not really user friendly TBH (but that is another discussion). If I'm a new user how I suppose to know that that W24 is a helptag to use in the docs? I've used vim for like 6 years and discovered this not even that long ago and I'm certain that will confuse people at least from my personal experience teaching vim and helping others triage issues.

I don't think we should be turning error messages into essays

Man you read really short essays :)

LGTM!


ci: added currency report

refs INSTA-1016

Tekton Pipeline name too long. Will fix this in a separate PR soon.


Multi-constructor targets

Alfred becomes unusable when the target has multiple constructors defined. The processor has no sense of difference between those constructors and mash up all parameters defined within them into one single (unusable) factory its matching provider.

Closed with #6 now merged.


Akka.Monitoring v0.7.0 Stable Release

0.7.0 September 13 2017

Upgraded to Akka.NET v1.3.1.
PerformanceCountersCategoryName made settable

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.2 out of 4 committers have signed the CLA.:white_check_mark: Aaronontheweb:white_check_mark: MirekVales:x: Silv3rcircl3:x: chivandikwaYou have signed the CLA already but the status is still pending? Let us recheck it.


Javascript errors with leaflet 1.1.0

[x] I'm reporting a bug, not asking for help
[x] I've looked at the documentation to make sure the behaviour is documented and expected
[x] I'm sure this is a Leaflet Draw code issue, not an issue with my own code nor with the framework I'm using (Cordova, Ionic, Angular, React…)
[x] I've searched through the issues to make sure it's not yet reported

How to reproduce

Leaflet version I'm using: 1.1.0
Leaflet Draw version I'm using: 0.4.9

What behaviour I'm expecting and which behaviour I'm seeing
I expect the javascript to load without throwing errors but it reports:
TypeError: can't define property "segmentsIntersect": Object is not extensible

Minimal example reproducing the issue
Load https://jsfiddle.net/1fuq748y/1/ while watching the console.

Another warning:
Deprecated include of L.Mixin.Events: this property will be removed in future releases, please inherit from L.Evented instead.

@zakjan see #700 for more info.

We can reproduce the above reports by @tomhughes and @zakjan in our own integrations.

Also have the above problem.

Same issue here.. "segmentsIntersect" error and mixin deprecation warning

For a workaround on the "segmentsIntersect" bug you can pin the Leaflet version in your own package.json at "1.0.3".  This will satisfy the semver requirements of the Leaflet-draw package.json and work.
Not sure what changed in the Leaflet package between 1.0.3 and 1.1.0.  Might go have a quick look and see, but from a quick glance earlier, it seems the answer was 'a lot'.

https://github.com/Leaflet/Leaflet/issues/5589
Does this appear to be the issue? If so, it looks like it's something that Leaflet-Draw itself would have to change.

Yeah, that'd be it I reckon.  Good find.

This is happening for me using Leaflet 1.0.3 and Leaflet-Draw 0.4.9

So what's the solution here? Just making L.LineUtil into its own class
seems like it would be just fine? In fact, I don't see why it's extending
L.Util to begin with...
On Wed, Jun 28, 2017 at 3:55 PM, Anthony Frehner<EMAIL_ADDRESS>wrote:

Leaflet/Leaflet#5589 https://github.com/Leaflet/Leaflet/issues/5589
Does this appear to be the issue? If so, it looks like it's something that
Leaflet-Draw itself would have to change.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/Leaflet/Leaflet.draw/issues/739#issuecomment-311814643,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAzNEqyZNZN464EqRStaA-deo0CyxYIsks5sItnJgaJpZM4OGj81
.

The update to Leaflet 1.1.0 also appears to break the test suite in Leaflet.draw because of the ES6+Rollup refactor.
Should Leaflet.draw be updated for ES6+Rollup as well? Happy to contribute on that but I would assume that that change is relatively large in scope.

If you're volunteering to port over 5k lines of javascript and then
reconfigure the build system - then by all means, please do.
On Thu, Jun 29, 2017 at 6:12 PM, Michael Clawar<EMAIL_ADDRESS>wrote:

The update to Leaflet 1.1.0 also appears to break the test suite in
Leaflet.draw because of the ES6+Rollup refactor.
Should Leaflet.draw be updated for ES6+Rollup as well? Happy to contribute
on that but I would assume that that change is relatively large in scope.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/Leaflet/Leaflet.draw/issues/739#issuecomment-312148340,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAzNEo-GIrihR9KNFpJXUE_4nQeyhFCJks5sJEuFgaJpZM4OGj81
.

Lots of good information here. It does appear the minor release of Leaflet broke Draw.
Any patches to resolve the utility issue should reference #5589 (thanks @frehner for pointing that out).
ES6 Rollup would be nice, we can set up an ES6 branch to handle that. Leaflet.Editable is having a similar issue (looks like utility) and the next 'major' update to Leaflet.Draw will be piggybacking off Editable - just an FYI.
In the meantime, I'll scope the compatibility of Leaflet.Draw to a ceiling of Leaflet 1.0.x. This will happen tomorrow morning.

@midnightmastermind - was just thinking about why you'd still have the problem.  Are you using npm3 or greater?  Because npm3 stores all dependencies in a flat structure, so by adding Leaflet to your own package.json, it should not be refetched by Leaflet Draw.  npm2 stores each dependencies' dependencies (?) in their own node_modules folder, so would be refetched.  Hope that makes sense.

@JonForest  thanks for the heads up. I actually found out the issue was my npm install was downloading the newest version due to the have "^1.0.3" as the dependency version. Removing the carot solved the issue.

@ddproxy I don't know if you had a timeline in mind for progressing on ES6+Rollup but I would be able to dig into that transition next week.
I am indeed volunteering to do as much as needed to port over 5k lines of js and reconfigure the build system (and certainly willing to see it to the finish line since we use Leaflet.Draw pretty extensively on projects at StratoDem).
Do you want the ES6+Rollup to wait until Leaflet.Editable is updated, or can that progress in parallel?

@mjclawar so, that implies abandoning #643, among others? What advantages
are you expecting from the ES6 port?
At any rate, it sounds like, at this point, if @ddproxy wants to take
Leaflet Draw into another direction w/ Leaflet Editable, I should just
permanently fork Leaflet Draw into another plugin entirely.
On Fri, Jun 30, 2017 at 2:38 PM, Michael Clawar<EMAIL_ADDRESS>wrote:

@ddproxy https://github.com/ddproxy I don't know if you had a timeline
in mind for progressing on ES6+Rollup but I would be able to dig into that
transition next week.
I am indeed volunteering to do as much as needed to port over 5k lines of
js and reconfigure the build system (and certainly willing to see it to the
finish line since we use Leaflet.Draw pretty extensively on projects at
StratoDem).
Do you want the ES6+Rollup to wait until Leaflet.Editable is updated, or
can that progress in parallel?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/Leaflet/Leaflet.draw/issues/739#issuecomment-312378639,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAzNElRCQMstBzsUbEwnUBxPNassGPzXks5sJWrhgaJpZM4OGj81
.

There are three different directions that can be taken at this point.

ES6 Rollup
Bugfixes for L1.1
Editable integration

@mjclawar We can do the Rollup without Editable, since the Editable changes haven't made public yet (it's very alpha at this point) both can progress at their own rates.
@germanjoey I've been hesitant to approve PRs that make major changes or implement major features to this plugin. By using Editable, we can get access to their plugins that implement some of the features we are looking for. This should allow new features to remain optional, pluggable, and customizable that the current version of Draw struggles to maintain.

@ddproxy
I've gotta say, suddenly voicing this concern now after sitting on #634 for
seven months (and despite my repeated attempts to follow up with you) is
ridiculous. The concern about major changes also doesn't make sense, since
I took great pains w/ L.Draw's #634 and L.Snap's #40 to not make any
major changes. The only modification to the existing logic was to flesh out
the parameters for various L.Draw's events, for which I ensured backwards
compatibility and also provided documentation. The other changes -
restoring L.Snap compatibility, Undo/Redo, and providing L.CRS.Simple
compatibility - were all completely
optional/pluggable/customizable/whatever you wanna call it.
I don't really know what you're going for w.r.t. L.Editable integration
with L.Draw. Feature-wise, as L.Editable seems to have every feature that
L.Draw has except for the Toolbar?
And are you trying to say that you're done with this existing Leaflet Draw
codebase?
Joe
On Sat, Jul 1, 2017 at 12:27 PM, Jon West<EMAIL_ADDRESS>wrote:

There are three different directions that can be taken at this point.

ES6 Rollup
Bugfixes for L1.1
Editable integration

@mjclawar https://github.com/mjclawar We can do the Rollup without
Editable, since the Editable changes haven't made public yet (it's very
alpha at this point) both can progress at their own rates.
@germanjoey https://github.com/germanjoey I've been hesitant to approve
PRs that make major changes or implement major features to this plugin. By
using Editable, we can get access to their plugins that implement some of
the features we are looking for. This should allow new features to remain
optional, pluggable, and customizable that the current version of Draw
struggles to maintain.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/Leaflet/Leaflet.draw/issues/739#issuecomment-312451188,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAzNErb4V-MSGttoT19nuYm0M9-P8mP_ks5sJp2JgaJpZM4OGj81
.

@germanjoey
No. Not done with the existing codebase.
#651 introduces the undo and state managers that would qualify as a feature.
However, that is not why #651 has not been merged yet. The PR had a lot of merge conflicts and still does. Once these are resolved and I can test that PR, it may be merged.

@midnightmastermind 0.4.10 was released to handle the leaflet version cap.
@germanjoey I'm going to merge #651 into undo-manager this week. I'm okay with one more minor release (0.5.0) to handle pre Leaflet 1.1 to encompass those changes and ES6 can be 0.6.0. Once I see changes on #651 I'll merge and handle the remaining conflicts if any.
@mjclawar Looking at starting the ES6 rollup, due to bower, this will happen on a branch. If you have anything started, point me to it and I'll merge into es6-rollup

@ddproxy That would be great. I just pushed another commit onto #651 with some bugfixes and additional documentation. Please let me know if there's anything I can do to help.

@ddproxy I wasn't sure what direction this plugin was heading in given the above thread, so I ported Leaflet.draw to an ES6+Babel/Webpack project we use internally. We're probably going to split that out into its own public repo later this week, and I can point you at that when we do if that will be helpful. It has class implementations (e.g., class SimpleShape extends Feature), Flow type annotations and a fair number of ES6 syntax changes, so clearly it can't be merged easily into this plugin. Please let me know what would be most helpful for updates here.

@mjclawar That sounds like it's in the right direction. I favor Babel but since Leaflet uses Rollup, I'll cherrypick what is applicable. Thanks!

Here's where we're at right now: https://github.com/StratoDem/SDLeafletDraw.
Obviously still needs a fair amount of work and I'll try to port the tests soon, but code is working for our use cases with an import 'sdleafletdraw;. This adds L.Control.Draw and L.Draw.Event access.
The ES6 code is in src/es6/, then built with Babel into dist.

@mjclawar Thanks for this. Looks like we stripped a lot of documentation annotations. I'm not sure how Rollup or Babel would treat those (probably ignore).

@ddproxy What do you mean by stripped a lot of documentation annotations? Where/when were they stripped?

@mjclawar There are annotations/code comments above each class and method in the original source code that are used to generate documentation of the api - that produces the api documentation.

What is the fix for this bug?
I'm working with a VueJS-pwa project where ES6 is imported. When i'm trying to import leaflet and leafletDraw, it gives me the error:

Cannot add property segmentsIntersect, object is not extensible

I have imported it like this:
import Leaflet from 'leaflet';
import LeafletDraw from 'leaflet-draw';

The current versions are:
"leaflet": "^1.1.0",
"leaflet-draw": "^0.4.10"

@Fillah Have you tried https://github.com/Leaflet/Leaflet.draw/issues/739#issuecomment-311659407 ?

from leaflet 1.1.x all Util objects are marked as non-extensible, that's why you got the error:

Cannot add property segmentsIntersect, object is not extensible

see this code in leaflet-src: var LineUtil = (Object.freeze || Object)

It looks like Leaflet devs implemented a fix for the non-extensible objects:
https://github.com/Leaflet/Leaflet/issues/5650
https://github.com/Leaflet/Leaflet/pull/5658

Is there going to be any attempt to update leaflet.draw to work with leaflet 1.1.0 . ?
Thanks!

Leaflet 1.2.0 is released. Probably solves the related issues.
http://leafletjs.com/2017/08/08/leaflet-1.2.0.html

Anyone tried it with 1.2.0?

Keep in mind those release notes point out that this is a temporary fix and eventually they will have new best practices not to add things to most L namespaces and instead start to use modules. I recommend cutting to disconnected modules sooner rather than later, for what little that advice is worth.

@scaddenp Confirmed 1.2.0 works

Hello All, I'm still having this issue. Any updates yet??

Working Example:
Hey All, Just to let someone know if anyone still having this issue. I'm useing leaflet(1.6.0) vuejs, vue2-leaflet as wrapper and leaflet-draw(0.4.X), edit, drag, handler to customize functions and buttons.
I couldn't figure it out how to fix it so I've made a component by adding leaflet-draw, edit, drag, handler valina js(and customized a bit) altogether in one component.. I don't use npm for this plugin functions anymore and now it works perfect. So it's better to convert vanilla code to vuejs component and handle all the code there even it's over 8,000 lines....... hehe :)
Anyway, let me know if you need more info.
BTW, you need to fix the vanilla code a bit as all the variables are using only 'var'. It will cause some problems to sending data to leaflat(1.6.0, npm installed) as leaflat, leaflet-draw, edit, drag, handlers are using same variable names and you need to put them in one component. I had an issue that leaflet(npm) couldn't recognize which event was occurred(error methods in leaflet.js
= .trim()).
component should be like this
//leaflet-draw template in vuejs
<template>
<div style="display: none;"> </div>
</template>

<script>
add all the vanilla js here and fix the codes as you need

let map = {}
let whatever layer, group you need = L.featrureGroup();

export default {
 name: 'leaflet-draw',
mounted() {
 this.$nextTick(() => {
 //write here to mount buttons and functions
// e.g.
//map = this.$parent.$parent.$refs.map.mapObject
)
}
}
</script>

parent component where map is(i'm using vue2-leaflet wrapper)
<template>
 <l-map>
   <l-tile-layer />
  <leaflet-draw position="topleft" />
</l-map>
</template>

<script>
import LeafletDraw from './LeafletDraw';

 export default {
..
components: {
'leaflet-draw': LeafletDraw
}
</script>

and that's all. Here's an output(I'm still working on button icon as we're using fontawesome... please ignore it)


Trouble Adding Rooms

Hey everyone,
I was wondering if this method would be even possible using streams but is it possible to add rooms? I have tried several different ways but I am having trouble getting it to work. Do I need to add clusters? Any help would be greatly appreciated!

Can you provide simple API for rooms/channel? like as socket-io.


Refactor category panels to use GbCategoryType

Issue #1487 1487 introduced a new GbCategoryType wrapper. Refactor to use this rather than the explicit ints.

Code thing, no need to test.


Broken link in 00-setup-introduction

Broken link in the Summary section (documentation)

Thank you!


Some outdated documentation

Running (bottom) has outdated syntax (I believe).
Please add how-to-profile information to the documentation, including information about how to use nsight sys and ncu. Reminder that for ncu one requires --cache-control none, --clock-control none for multi-rank jobs.

Not sure of status of this. Please have a look @anshgupta1234

@sbryngelson 1. isn't an issue I believe, but there is no documentation for 2.
I personally am inexperienced with nsight sys and ncu, but I can learn and then add it to the documentation if you'd like :)

I recommend learning to use them on MFC.

I believe this is closed.


The method string is surprising since it does not return a string

Before reading the documentation, it seemed obvious to me that in the following code:
auto
as_string(boost::urls::url_view uv)
{
  return uv.string();
}

Would return a string. In fact it returns a string_view, which may well actually be a dangling reference.
It seems to me that this is likely to be the source of many future support calls by surprised library users.
Proposal:
Provide both url[_view]::string() which returns a std::string, and url[_view]::string_view() which returns a std::string_view.

So once we have std::string_view string_view() const;,

should we also provide std::string string() const;?
should we provide operator string_view() const;, since that's cheap?
should we remove std::string_view string_view() const; if operator string_view() const; is provided?

string_view url_view_base::encoded_url() would be consistent with the other names
string_view url_view_base::str() looks OK to me too.
There's also an argument to be made for string_view url_view_base::data()
string_view url_view_base::encoded_str or maybe
string_view url_view_base::encoded_string
If I'm being honest, I don't put very much stock in the argument that string() should return a literal std::string. I use the term string to refer to string views everywhere in the docs. I am firmly in the "users must be string-view-aware" camp. That means they better know what the return types are and they better treat string views like references in terms of lifetime management.

If I'm being honest, I don't put very much stock in the argument that string() should return a literal std::string.

I think the names you proposed depend on that premise. In that case, url_view_base::string() sounds better. Or url_view_base::encoded().

They are all called buffer now


binary Search visual presentation added

Gif explaning the advantage of binary search over sequencial search

[x] I have read freeCodeCamp's contribution guidelines.
[x] My pull request has a descriptive title (not a vague title like Update index.md)
[x] My pull request targets the master branch of freeCodeCamp.
[x] None of my changes are plagiarized from another source without proper attribution.
[x] My article does not contain shortened URLs or affiliate links.

If your pull request closes a GitHub issue, replace the XXXXX below with the issue number.
Closes #XXXXX

Thanks for the PR @astro6026, but I'm quite sure we do not want to host images for guide articles in the freeCodeCamp repo. Also there are some typos and formatting issues that could be better - for instance, there isn't a space here ###Some SPOJ Problems related to Binary Search after the three #, and a lot of missing spaces in the second file you changed. It looks like you put a decent effort into this so it would be great to get this added, but for now it needs to be closed. If you could host that image somewhere else, I think https://imgur.com/ is a good place or I've seen images put in gitter chat rooms and linked to that upload.... And also make a separate PR for each file changed we could probably get this stuff added. Thanks and happy coding!


Twilio Binding - Get To Number from Request

Description
In Twilio Binding spec the toNumber is required in the metadata. The application is NOT able to send the recipient number dynamically from the POST endpoint data. The toNumber passed in metadata is not used to send in Twilio API.
Changing this implementation to

Optional toNumber field in metadata.
The toNumber can be both configured as metadata or send as POST data to the endpoint.
Added tests to make sure the call to Twilio is covered.
Change the code to mock the HTTP client in tests.

Issue reference
Please reference the issue this PR will close: #255
Checklist
Please make sure you've completed the relevant tasks for this PR, out of the following list:

[x] Code compiles correctly
[x] Created/updated tests
[ ] Extended the documentation

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

Merged, thanks!


Clear old tasks

When I don't call the function below @background decorator, it still runs repeatedly. I previously called that function with the repeat argument.
p/s : I've kill process : python manage.py process_tasks and run again.
I think the tasks are still saved. can you tell me how to clear them?
tks~!

I think manually deleting them from the database will fix your problem. Becuase the process_tasks command also queries the database constantly and will not see deleted tasks anymore.
You can also manually add them to completed tasks, although it doesn't seem required.

For me, using django-background-tasks 1.2.5.
Because in my code the repeat is set to 1 and repeat_until is None, so after some while, the completed_task database will be huge and cluttered. If I want to delete the completed_task in my code, I'd use:
from background_task.models import CompletedTask
CompletedTask.objects.all().delete()