slickgrid event drag support for jquery > 3.0

An update to jquery version to 3.0.0 and above, does not seem to support jquery.event.drag-2.2.js . Is there any workarounds/alternative libraries to achieve this?
Will there be an update on jquery.event.drag-2.2.js to be compatible with jquery 3.0.0?

As far as I'm aware, 2.2 is compatible. Originally we had 2.1 and that was updated specifically for recent versions of jQuery. What specifically are you having problems with?

@6pac , on jQuery 3.5.1 the slickgrid's table column expansion functionality is not working as expected.
E.g. Table column becomes distorted when expanding.

apologies, I didn't notice this was on the original MLeibman branch. This repo has been DEAD for some time.
Please use: https://github.com/6pac/SlickGrid/wiki
This will solve all your issues.
Or GhisCoding also has a number of extensions of the basic grid: https://github.com/ghiscoding/

The same issue arises for me . How can I fix the solution for Uncaught TypeError: Cannot set properties of undefined (setting 'touchcancel') at jquery.event.drag-2.2.js:382  at jquery.event.drag-2.2.js:402 as I updated the version from 1.11.2 to 3.6.0
    $event.fixHooks.touchcancel = {                                                         --> 382

props: "clientX clientY pageX pageY screenX screenY".split( " " ),
filter: function( event, orig ) {
if ( orig ){
var touched = ( orig.touches && orig.touches[0] )
|| ( orig.changedTouches && orig.changedTouches[0] )
|| null;
// iOS webkit: touchstart, touchmove, touchend
if ( touched )
$.each( touchHooks.props, function( i, prop ){
event[ prop ] = touched[ prop ];
});
}
return event;
}
};
// share the same special event configuration with related events...
$special.draginit = $special.dragstart = $special.dragend = drag;
})(jQuery);                                                                                -->402

@Ramsankar002 please see my above comment. This repo is long dead. Please use the current one.

Thank you very much @6pac . It worked

Running into same issue, @Ramsankar002 could you please tell me how you resolved this?

@dheerajd-msys please see my above comment. This repo is long dead. Please use the current one.

Hello @dheerajd-msys  Same  issue i faced when i updgrad the juery please help me about steps wht you follow.


Potential inconsistency in overlap constraint in vaes* instructions

raised by @timhsu404
Is there a reason why overlapping constraint between vd and vs2 are different between vaesef and other vaes* instructions
https://github.com/riscv/riscv-crypto/blob/master/doc/vector/insns/vaesef.adoc does not mention

The instruction encoding is reserved if vector register group vd overlaps with vs2.

while it is mentionned in vaesm for example https://github.com/riscv/riscv-crypto/blob/master/doc/vector/insns/vaesem.adoc

The AES instruction descriptions were out of sync. I have updated them to be more in sync; I still have some work to do in this area.
The overlap constraints were too strict in some cases and in others they were part of a note. Since notes are non-normative, we should not put such requirements in them. These have all be cleaned up.


Error on Install

In NeoVim
fatal: could not read Username for.. Is SSH Error keys?

Hi @davidcastilloc, I don't think that issue is related to anything specific to this plugin. Not sure how you're installing, but that does seem to be a connection issue. Specifically, it's trying to use the https:// download which require your username & password, but since it doesn't have them it attempts to prompt you for them, but the "terminal prompts disabled" message show that that is failing.
Again, not sure what you're using to install, but if that program uses the git@github.com:... git URL then your SSH key would be used and everything should work.
Closing this now as I don't believe this is an issue with the plugin, but here is some additional context to hopefully help you sort it out. Best of luck


3.0: Move "is unit test" utility functions to dedicated trait

This PR will be easiest to review by looking through the individual commits.
Related to #1877
Commit Details
:heavy_plus_sign:  Sniff: remove the is_token_in_test_method() method :new:
This method is currently unused in WPCS and it is not 100% clear what the method should do, so removing the method for now.
If needs be it can be brought back later if/when there is more clarity on what the method is supposed to solve.
Move "is this test code" related utilities to dedicated IsUnitTestTrait
The "is this test code" related utilities are only used by a small set of sniffs, so are better placed in a dedicated trait.
This moves the (public) $custom_test_class_whitelist and the $custom_test_class_whitelist properties as well as the is_token_in_test_method() and the is_test_class method to a new WordPressCS\WordPress\Helpers\IsUnitTestTrait and starts using that trait in the relevant sniffs.
The trait has been made stand-alone, i.e. it does not presume that a sniff implementing it extends the WordPressCS\WordPress\Sniff class.
This makes it easier to (re-)use the traits, even when a sniff extends an abstract sniff class from PHPCS itself or from PHPCSUtils.
Note: the is_token_in_test_method() method is currently unused in WPCS, but seems useful enough to keep in place.
Related to #1465
IsUnitTestTrait::is_test_class(): use PHPCSUtils
This implements PHPCSUtils alternatives for PHPCS native methods and other PHPCSUtils utilities in the IsUnitTestTrait::is_test_class() code.
The functionality is unchanged (just less buggy).
:heavy_minus_sign:  IsUnitTestTrait::is_token_in_test_method(): implement PHPCSUtils/improve handling nested functions
IsUnitTestTrait: rename protected property
The protected property $test_class_whitelist has been renamed to $known_test_classes as a step towards removing whitelist/blacklist terminology.
IsUnitTestTrait: rename public property
The public property $custom_test_class_whitelist has been renamed to $custom_test_classes as a step towards removing whitelist/blacklist terminology.
Includes adjusting the property name in all tests which included the property.
Related to #1915
To do before release:

[ ] Annotate this change in the wiki custom properties list

IsUnitTestTrait: rename local variable
The function local variable $whitelist has been renamed to $known_test_classes as a step towards removing whitelist/blacklist terminology.
IsUnitTestTrait: add missing WP Core test case classes
Add two more test cases which were added to /tests/phpunit/includes/.
Note: WP Core contains more test cases, but those are in the tests/phpunit/tests directory, while the test cases in  /tests/phpunit/includes/ are supposed to be the "public test API", which is why those are the only ones in this list.
IsUnitTestTrait: improve documentation

For example: for a token in a function nested within a test method, the method would previously return true and strictly speaking this is correct when the question is "is the token in a test method ?".

However, this answer is incorrect if the question would be "is this a token which is unit test code ?" as the nested function would be in the global scope and not in the scope of the test class.

It seems to me that, in both cases, the current status of what this helper does is not truthful.
If we want to cover both cases, a new helper would need to be created which will account for the scope of the unit test, and a check should be added in the current helper that would exclude the case if it's in a unit case, but just cover the part where we check if the token is in a test method.
If I'm not mistaken, this could be useful if anonymous functions or classes are used in a method within a test class. Don't ask me how I know of this case, let's just say that integration tests in WordPress require some level of imagination 😂

It seems to me that, in both cases, the current status of what this helper does is not truthful.

Well, as the method is not used in WPCS at this time, this discussion is theoretical.
Maybe we should just remove the method completely until such time that WPCS needs it again.
More than anything, it would be better for custom rulesets to exclude the test directories completely for these sniffs. This can't be done from within WPCS as we don't know what the name of the test directory is for individual projects.
These methods are only a guestimation to try and bow out before reporting.

As this is going to be for a major release, I'm not against the behaviour here being clarified in a particular way, even if there is no extra helper method to help answer the other question.

@dingo-d @GaryJones What can I do to move this PR forward ? I'm happy to adjust it, but at this moment there doesn't seem to be consensus on if and how it should be adjusted. Would it be possible to continue the above discussion ?

I'm fine with removing it, especially since it's not being used at the moment. We can easily return it back (it's in the commits).

I'm in agreement here.

Ok, in that case, the method is hereby gone. I've added a new commit at the start of the stack and removed the "improve the method" commit. The changes have been annotated in the above PR description.

Rebased now the GH actions PR has been merged. Would appreciate a merge if the build passes,


Body landmarks in edge mode

Hello, I'm trying to implement your handtracker including the body landmarks given by the Movenet model, in Edge mode;
is there a reason why you hadn't include them in the edge mode? the 'bag' is always empty, so there's no additional info appart from the hand landmarks;
thanks in advance and absolutely stunning work!!

Hi,
Initially, visualizing the body landmarks was useful for me when implementing and debugging the body pre focusing mode. I decided to keep it in host mode just because I thought it could be useful for users for a better understanding of the bpf mode, and also in this mode, there is no impact on perfomance. It is not implemented in edge mode to minimize the size of the data transferred on the USB link.

Ok thats perfect, thanks for the answer!


karax examples should use import instead of include

https://github.com/pragmagic/karax/blob/master/experiments/echartstest.nim uses import:
import karax / [kbase, vdom, kdom, vstyles, karax, karaxdsl, jdict, jstrutils, jjson]
but https://github.com/pragmagic/karax/blob/master/readme.rst uses include:
include karax / prelude
import is cleaner IMO; include should only be used when import doesn't work.

But include karax / prelude is what's useful for small example programs, the explicit imports are for longer programs, I like both.

what about having a module common that re-exports all of these, then simply:
import karax / common

I don't like the export feature and think my way is cleaner, include for quick-n-dirty, import for explicit code. :-)


Support using a TOML dotfile config file in the user's homedir

Parse a TOML file for default configuration. Should require params to be passed in if not present

Thank you for your work! Closed with #36


Duplicated json objects

Some of the API views (e.g. https://d-place.org/api/v1/language_trees/?page=3) have a lot of duplicated data which is wasting bandwidth and database queries, e.g.
   "results": [
        {
            "id": 1,
            "name": "Cochimi-Yuman.glotto.trees",
            "taxa": [
                {
                    "id": 1,
                    "languageTree": 1,
                    "label": "coco1261",
                    "language": 371,
                    "societies": [
                        {
                            "society": {
                                "id": 435,
                                "ext_id": "J143",
                                "name": "Cocopa"
                            },
                            "labels": "coco1261",
                            "fixed_order": 0
                        },
                        {
                            "society": {
                                "id": 434,
                                "ext_id": "Nh19",
                                "name": "Cocopa"
                            },
                            "labels": "coco1261",
                            "fixed_order": 0
                        }
                    ]
                },
                {
                    "id": 1,
                    "languageTree": 1,
                    "label": "coco1261",
                    "language": 371,
                    "societies": [
                        {
                            "society": {
                                "id": 435,
                                "ext_id": "J143",
                                "name": "Cocopa"
                            },
                            "labels": "coco1261",
                            "fixed_order": 0
                        },
                        {
                            "society": {
                                "id": 434,
                                "ext_id": "Nh19",
                                "name": "Cocopa"
                            },
                            "labels": "coco1261",
                            "fixed_order": 0
                        }
                    ]
                },
                {

Note the duplicate id=1 blocks, one with society names, one without.

Closing.


reducer assignment issues

So, I've been debugging an issue all morning, and finally think I have a grasp of what's happening. It's not a fun one, so be warned.
The short version is:
I think when you assign the result of xt::reduce() back to an xt::rarray, something goes wrong, but if you assign it back to xt::xarray then coerce that to xt::rarray everything is fine. This only seems to show up when reducing over large-ish (>2500 elements) matrices.
The long version
I'm trying (and successfully!) to expose the "custom reducer" idea to the R user, so they can do something like rray_reducer(x, function(.x, .y) {.x + .y}) to get a reduced sum over a specified axis. It would be great because you can then use any R function as the reducer function (probably with some performance loss because you have to call back to R repeatedly from cpp, but im okay with that for now).
It works for small matrices (or maybe im getting lucky) but when I up the size to ~2500 elements or more, things fall apart.
The only way I can think to give you a reproducible example is to make a standalone cpp file that you can use Rcpp::sourceFile() on...so...I'm sorry about that.
This version goes to xarray first, then to rarray. It seems to work fine.  It works fine in this example because of the conversion first to xarray.

// [[Rcpp::depends(xtensorrr)]]
// [[Rcpp::plugins(cpp14)]]

#include <xtensor-r/rarray.hpp>
#include <xtensor/xreducer.hpp>
#include <xtensor/xio.hpp>
#include <xtensor/xarray.hpp>
#include <Rcpp.h>
using namespace Rcpp;

// How does this work?
// 1) rray_custom_reducer_cpp() takes x, a function with 2 args, the axes, and the return type
// 2) Based on the types of x and the return type, it calls something along the lines of:
//    rray_custom_reducer_impl<TYPEOFX, RETURNTYPE>(x, f, axes);
// 3) rray_custom_reducer_impl
//    - coerces x to an rarray
//    - creates a binary_functor using f and all of the type info
//    - then makes an xreducer_functor out of that and calls reduce using it
// 4) binary_functor this is where the magic happens
//    it lets you use scoping so you can initialize it with "things" you'd like
//    it to have available when the function is called (by the overloaded () operator)
//    - So we give it the function and the SEXPTYPE return type in the constructor
//    - And then we template on the Cpp element and return type
//    - Each call to the overloaded () operator calls f and coerces the result
//      to RET_T if it can be, otherwise error

// Functor allows a kind of scoping so r_functor(left, right)
// internally knows about the R function f
template <typename ELEM_T, typename RET_T>
class binary_functor {

private:
  Rcpp::Function f;
  SEXPTYPE RTYPE;
  R_xlen_t good_length = 1;

public:
  binary_functor(Rcpp::Function f_, SEXPTYPE RTYPE_) : f(f_), RTYPE(RTYPE_) {  }

  // Also pulling the first element of the result, even if it had more than
  // one thing. Should do checking instead.
  RET_T operator () (const ELEM_T& x, const ELEM_T& y) const {

    //std::cout << "x: " << x << std::endl;
    //std::cout << "y: " << y << std::endl;

    SEXP f_res = f(x, y);

    //Rcpp::print(f_res);

    // Type check
    if (TYPEOF(f_res) != RTYPE) {
      const char* good_type = Rf_type2char(RTYPE);
      const char* bad_type = Rf_type2char(TYPEOF(f_res));
      Rf_errorcall(
        R_NilValue,
        "`.f` should return length 1 objects of class `%s`, not class `%s`.",
        good_type,
        bad_type
      );
    }

    // Length check
    if (Rf_xlength(f_res) != good_length) {
      Rf_errorcall(
        R_NilValue,
        "`.f` should return objects of length 1, not %i.",
        Rf_xlength(f_res)
      );
    }

    // Clever conversion to replace explicit use of
    // REAL() or INTEGER()
    RET_T res = ((RET_T *)DATAPTR(f_res))[0];

    //std::cout << "res: " << res << std::endl;

    return(res);
  }
};

template <typename ELEM_R_T, typename RET_R_T>
SEXP rray_custom_reducer_impl(SEXP x, Rcpp::Function f, std::vector<std::size_t> axes) {

  // Underlying Cpp type. This helper is necessary because it converts
  // rlogical->int
  using elem_t = xt::r_detail::get_underlying_value_type_r<ELEM_R_T>;
  using ret_t  = xt::r_detail::get_underlying_value_type_r<RET_R_T>;

  // Pull the SEXPTYPE of the return value from the cpp type
  // The helper is necessary because rlogical->LGLSXP has been specially registered
  static constexpr int ret_sexptype = Rcpp::traits::r_sexptype_traits<RET_R_T>::rtype;

  // Create the rarray with the type matching x
  const xt::rarray<ELEM_R_T>& x_rray = xt::rarray<ELEM_R_T>(x);

  // Create the functor
  auto r_functor = binary_functor<typename elem_t::type, typename ret_t::type>(f, ret_sexptype);
  auto xr_functor = xt::make_xreducer_functor(r_functor);

  // THIS IS THE PROBLEM LINE!
  xt::xarray<typename ret_t::type> res = xt::reduce(xr_functor, x_rray, axes);
  xt::rarray<RET_R_T> res2 = res;

  std::cout << "xarray: " << res << std::endl;
  std::cout << "rarray: " << res2 << std::endl;

  return(res2);

}

// Helper for switching on the string op
constexpr unsigned int str2int(const char* str, int h = 0) {
  return !str[h] ? 5381 : (str2int(str, h+1) * 33) ^ str[h];
}

// [[Rcpp::export]]
SEXP rray_custom_reducer_cpp(SEXP x, Rcpp::Function f, std::vector<std::size_t> axes, SEXP type_) {

  // Collect the char from the string type ("double", "integer", "logical")
  const char* type = CHAR(Rf_asChar(type_));

  // Switch on X
  switch(TYPEOF(x)) {

    // This means ELEM_T = double
    case REALSXP: {

      // Switch on return type:
      // "double" = REALSXP
      // "integer" = INTSXP
      // "logical" = LGLSXP
      switch(str2int(type)) {

        case str2int("double"): {
          return rray_custom_reducer_impl<double, double>(x, f, axes);
        }

        case str2int("integer"): {
          return rray_custom_reducer_impl<double, int>(x, f, axes);
        }

        case str2int("logical"): {
          return rray_custom_reducer_impl<double, rlogical>(x, f, axes);
        }

        default: {
          Rcpp::stop("Incompatible SEXP encountered; only accepts doubles, integers, and logicals.");
        }

      }

    }

    // This means ELEM_T = int
  case INTSXP: {
    switch(str2int(type)) {

      case str2int("double"): {
        return rray_custom_reducer_impl<int, double>(x, f, axes);
      }

      case str2int("integer"): {
        return rray_custom_reducer_impl<int, int>(x, f, axes);
      }

      case str2int("logical"): {
        return rray_custom_reducer_impl<int, rlogical>(x, f, axes);
      }

      default: {
        Rcpp::stop("Incompatible SEXP encountered; only accepts doubles, integers, and logicals.");
      }

    }
  }

    // This means ELEM_T = int
  case LGLSXP: {
    switch(str2int(type)) {

      case str2int("double"): {
        return rray_custom_reducer_impl<rlogical, double>(x, f, axes);
      }

      case str2int("integer"): {
        return rray_custom_reducer_impl<rlogical, int>(x, f, axes);
      }

      case str2int("logical"): {
        return rray_custom_reducer_impl<rlogical, rlogical>(x, f, axes);
      }

      default: {
        Rcpp::stop("Incompatible SEXP encountered; only accepts doubles, integers, and logicals.");
      }

    }
  }

  default: {
    Rcpp::stop("Incompatible SEXP encountered; only accepts doubles, integers, and logicals.");
  }

  }
}

Correct results:
Rcpp::sourceCpp("~/Desktop/test.cpp")

x <- matrix(as.double(1:5000), ncol = 2)

fn <- function(.x, .y) {.x + .y}

rray_custom_reducer_cpp(x, fn, 0L, "double")
#> [1] 3126250 9376250

standard output and standard error
xarray: { 3126250.,  9376250.}
rarray: { 3126250.,  9376250.}

Created on 2018-12-09 by the reprex package (v<IP_ADDRESS>00)

This is the not working version, even though I think it should work. It's more...unstable...than actually not working as the rarray result has variable output. The only thing I changed is that problem line, and now I just return 1 because I don't trust the output. But a key thing to look at here is the std output, where I've printed resulting rarray objects from the two calls to the same function. I had to try and run it multiple times because sometimes it just crashes...

// [[Rcpp::depends(xtensorrr)]]
// [[Rcpp::plugins(cpp14)]]

#include <xtensor-r/rarray.hpp>
#include <xtensor/xreducer.hpp>
#include <xtensor/xio.hpp>
#include <xtensor/xarray.hpp>
#include <Rcpp.h>
using namespace Rcpp;

// How does this work?
// 1) rray_custom_reducer_cpp() takes x, a function with 2 args, the axes, and the return type
// 2) Based on the types of x and the return type, it calls something along the lines of:
//    rray_custom_reducer_impl<TYPEOFX, RETURNTYPE>(x, f, axes);
// 3) rray_custom_reducer_impl
//    - coerces x to an rarray
//    - creates a binary_functor using f and all of the type info
//    - then makes an xreducer_functor out of that and calls reduce using it
// 4) binary_functor this is where the magic happens
//    it lets you use scoping so you can initialize it with "things" you'd like
//    it to have available when the function is called (by the overloaded () operator)
//    - So we give it the function and the SEXPTYPE return type in the constructor
//    - And then we template on the Cpp element and return type
//    - Each call to the overloaded () operator calls f and coerces the result
//      to RET_T if it can be, otherwise error

// Functor allows a kind of scoping so r_functor(left, right)
// internally knows about the R function f
template <typename ELEM_T, typename RET_T>
class binary_functor {

private:
  Rcpp::Function f;
  SEXPTYPE RTYPE;
  R_xlen_t good_length = 1;

public:
  binary_functor(Rcpp::Function f_, SEXPTYPE RTYPE_) : f(f_), RTYPE(RTYPE_) {  }

  // Also pulling the first element of the result, even if it had more than
  // one thing. Should do checking instead.
  RET_T operator () (const ELEM_T& x, const ELEM_T& y) const {

    //std::cout << "x: " << x << std::endl;
    //std::cout << "y: " << y << std::endl;

    SEXP f_res = f(x, y);

    //Rcpp::print(f_res);

    // Type check
    if (TYPEOF(f_res) != RTYPE) {
      const char* good_type = Rf_type2char(RTYPE);
      const char* bad_type = Rf_type2char(TYPEOF(f_res));
      Rf_errorcall(
        R_NilValue,
        "`.f` should return length 1 objects of class `%s`, not class `%s`.",
        good_type,
        bad_type
      );
    }

    // Length check
    if (Rf_xlength(f_res) != good_length) {
      Rf_errorcall(
        R_NilValue,
        "`.f` should return objects of length 1, not %i.",
        Rf_xlength(f_res)
      );
    }

    // Clever conversion to replace explicit use of
    // REAL() or INTEGER()
    RET_T res = ((RET_T *)DATAPTR(f_res))[0];

    //std::cout << "res: " << res << std::endl;

    return(res);
  }
};

template <typename ELEM_R_T, typename RET_R_T>
SEXP rray_custom_reducer_impl(SEXP x, Rcpp::Function f, std::vector<std::size_t> axes) {

  // Underlying Cpp type. This helper is necessary because it converts
  // rlogical->int
  using elem_t = xt::r_detail::get_underlying_value_type_r<ELEM_R_T>;
  using ret_t  = xt::r_detail::get_underlying_value_type_r<RET_R_T>;

  // Pull the SEXPTYPE of the return value from the cpp type
  // The helper is necessary because rlogical->LGLSXP has been specially registered
  static constexpr int ret_sexptype = Rcpp::traits::r_sexptype_traits<RET_R_T>::rtype;

  // Create the rarray with the type matching x
  const xt::rarray<ELEM_R_T>& x_rray = xt::rarray<ELEM_R_T>(x);

  // Create the functor
  auto r_functor = binary_functor<typename elem_t::type, typename ret_t::type>(f, ret_sexptype);
  auto xr_functor = xt::make_xreducer_functor(r_functor);

  // THIS IS THE PROBLEM LINE!
  xt::rarray<RET_R_T> res = xt::reduce(xr_functor, x_rray, axes);

  std::cout << "rarray: " << res << std::endl;

  return(Rf_ScalarInteger(1));

}

// Helper for switching on the string op
constexpr unsigned int str2int(const char* str, int h = 0) {
  return !str[h] ? 5381 : (str2int(str, h+1) * 33) ^ str[h];
}

// [[Rcpp::export]]
SEXP rray_custom_reducer_cpp2(SEXP x, Rcpp::Function f, std::vector<std::size_t> axes, SEXP type_) {

  // Collect the char from the string type ("double", "integer", "logical")
  const char* type = CHAR(Rf_asChar(type_));

  // Switch on X
  switch(TYPEOF(x)) {

  // This means ELEM_T = double
  case REALSXP: {

    // Switch on return type:
    // "double" = REALSXP
    // "integer" = INTSXP
    // "logical" = LGLSXP
    switch(str2int(type)) {

  case str2int("double"): {
    return rray_custom_reducer_impl<double, double>(x, f, axes);
  }

  case str2int("integer"): {
    return rray_custom_reducer_impl<double, int>(x, f, axes);
  }

  case str2int("logical"): {
    return rray_custom_reducer_impl<double, rlogical>(x, f, axes);
  }

  default: {
    Rcpp::stop("Incompatible SEXP encountered; only accepts doubles, integers, and logicals.");
  }

  }

  }

    // This means ELEM_T = int
  case INTSXP: {
    switch(str2int(type)) {

  case str2int("double"): {
    return rray_custom_reducer_impl<int, double>(x, f, axes);
  }

  case str2int("integer"): {
    return rray_custom_reducer_impl<int, int>(x, f, axes);
  }

  case str2int("logical"): {
    return rray_custom_reducer_impl<int, rlogical>(x, f, axes);
  }

  default: {
    Rcpp::stop("Incompatible SEXP encountered; only accepts doubles, integers, and logicals.");
  }

  }
  }

    // This means ELEM_T = int
  case LGLSXP: {
    switch(str2int(type)) {

  case str2int("double"): {
    return rray_custom_reducer_impl<rlogical, double>(x, f, axes);
  }

  case str2int("integer"): {
    return rray_custom_reducer_impl<rlogical, int>(x, f, axes);
  }

  case str2int("logical"): {
    return rray_custom_reducer_impl<rlogical, rlogical>(x, f, axes);
  }

  default: {
    Rcpp::stop("Incompatible SEXP encountered; only accepts doubles, integers, and logicals.");
  }

  }
  }

  default: {
    Rcpp::stop("Incompatible SEXP encountered; only accepts doubles, integers, and logicals.");
  }

  }
}

Sometimes this will crash on you, sometimes it will just give odd results...
Rcpp::sourceCpp("~/Desktop/test2.cpp")

x <- matrix(as.double(1:5000), ncol = 2)

fn <- function(.x, .y) {.x + .y}

rray_custom_reducer_cpp2(x, fn, 0L, "double")
#> [1] 1

rray_custom_reducer_cpp2(x, fn, 0L, "double")
#> [1] 1

standard output and standard error
rarray: { 3126250.}
rarray: { 6.938981e-310}

Created on 2018-12-09 by the reprex package (v<IP_ADDRESS>00)

I am looking into this... seems an awkward bug!

I dove a bit more into it and I did not have the same problems when using xt::sum(...). So I am wondering if the segfault is related to calling the R-reducing function? I tried to add a PROTECT statement around f(x, y) but that didn't work for now. However, there might be something along those lines going on?
Are we sure that there are no memory/GC issues inside the binary_functor?
I also see Shield<SEXP> my_result = something_from_r; used a lot in Rcpp code.

Hey, I think I found it. The way we're assigning from xexpressions is currently broken. Will fix ASAP. Sorry for these painful bugs and thanks for the awesome bug reports!

I think I did try Sheild() and some PROTECT things as well and didn't have any luck.
Hopefully you can fix it with the xexpression assignment! Not a problem about it being buggy, I'm more than happy to hunt these down for you.

I've investigated this quite a bit now and am still not sure what's going on exactly.
With pure-C++ functors it seems to work fine. I also call gc from Rcpp using
Rcpp::Function("gc")();

which noticeably slows the function call but doesn't lead to a segfault.
Things like rarray<double> s = xt::sum(input, axes) never segfaulted for me.
Maybe we can simplify this even further and ask on the Rcpp mailing list for help?
Btw calling back to R in the reducer will be a lot slower than pure C++ :)

I'll see if I can simplify further.
I'm aware of the painful speed loss from calling back to R from cpp, but think that the flexibility might be nice for small scale things, even if its slower.

maybe we can make an example for only Numeric / double stuff and see if the guys over at Rcpp have ideas.

You mean like this?
// [[Rcpp::depends(xtensorrr)]]
// [[Rcpp::plugins(cpp14)]]

#include <xtensor-r/rarray.hpp>
#include <xtensor/xreducer.hpp>
#include <xtensor/xio.hpp>
#include <xtensor/xarray.hpp>
#include <Rcpp.h>
using namespace Rcpp;

// Assume we take in doubles and return doubles

// [[Rcpp::export]]
SEXP custom_reducer_impl(SEXP x, Rcpp::Function f, std::vector<std::size_t> axes) {

  // Create the rarray with the type matching x
  const xt::rarray<double>& x_rray = xt::rarray<double>(x);

  // Create the functor
  auto r_functor_lambda = [f](const auto& left, const auto& right) {
    SEXP f_res = f(left, right);
    double res = REAL(f_res)[0];
    return(res);
  };

  auto xr_functor = xt::make_xreducer_functor(r_functor_lambda);

  // THIS IS THE PROBLEM LINE!
  xt::xarray<double> res = xt::reduce(xr_functor, x_rray, axes);
  xt::rarray<double> res2 = res;

  std::cout << "xarray: " << res << std::endl;
  std::cout << "rarray: " << res2 << std::endl;

  return(res2);
}

// [[Rcpp::export]]
SEXP custom_reducer_impl_bad(SEXP x, Rcpp::Function f, std::vector<std::size_t> axes) {

  // Create the rarray with the type matching x
  const xt::rarray<double>& x_rray = xt::rarray<double>(x);

  // Create the functor
  auto r_functor_lambda = [f](const auto& left, const auto& right) {
    SEXP f_res = f(left, right);
    double res = REAL(f_res)[0];
    return(res);
  };

  auto xr_functor = xt::make_xreducer_functor(r_functor_lambda);

  // THIS IS THE PROBLEM LINE!
  xt::rarray<double> res = xt::reduce(xr_functor, x_rray, axes);

  std::cout << "rarray: " << res << std::endl;

  return(res);
}

# change to your own path.
Rcpp::sourceCpp("~/Desktop/simple-example.cpp")

small <- matrix(as.double(1:6), ncol = 2)
large <- matrix(as.double(1:5000), ncol = 2)

fn <- function(.x, .y) {.x + .y}

custom_reducer_impl(small, fn, 0L)
#> [1]  6 15
custom_reducer_impl_bad(small, fn, 0L)
#> [1]  6 15

custom_reducer_impl(large, fn, 0L)
#> [1] 3126250 9376250

# should crash
# custom_reducer_impl_bad(large, fn, 0L)

I've used a lambda instead of the separate functor idea, but I think the same idea is still holding

Cool! I'll get back to work on this tomorrow.
Btw. there is also the immediate_evaluation mode, which is not lazy, but faster (and assigns to a intermediate xarray). It could be interesting for you!

There was one other idea I wanted to try. By-passing Rcpp::Function and using the bare bones C interface way to call the R function using Rf_eval(). The purrr package uses this approach, so I followed their template, specifically map().
I noticed a few things here:

It is much faster! See the benchmark at the very end. 3 in the benchmark is the current way, 4 is the bare bones way. Still slower than base R, but close enough that the gains in flexibility may make this worth it.
It it still a little unstable when assigning right to an rarray<double> rather than going to xarray then rarray.

Regarding the instability, you do get different results than before when we used Rcpp::Function. In this case, when assigning right to rarray<double>, you generally get the correct result for matrices with 5000 elements, but using 50000 elements becomes unstable. It sometimes gives the right result, and other times gives an answer with strange "promise" attributes and an incorrect dim attribute. (promises in R are, as far as I know, like unevaluated expressions). Eventually, running that version enough times will crash R.
Below, the cpp function custom_reducer_bare_call() holds the implementation of the "bare bones" version. It currently uses the working version, assigning first to xarray then to rarray.
These results seem to tell me either:
a) There is still something wrong with the way xexpressions are assigned to rarray objects
b) Something needs to "force" the promised elements when going directly to rarray objects. I'm not sure if that is something I need to do, of if xtensor should do it. I also don't know how they get forced when going to xarray first.

// [[Rcpp::depends(xtensorrr)]]
// [[Rcpp::plugins(cpp14)]]

#include <xtensor-r/rarray.hpp>
#include <xtensor/xreducer.hpp>
#include <xtensor/xio.hpp>
#include <xtensor/xarray.hpp>
#include <Rcpp.h>
using namespace Rcpp;

// Assume we take in doubles and return doubles

// [[Rcpp::export]]
SEXP custom_reducer_impl(SEXP x, Rcpp::Function f, std::vector<std::size_t> axes) {

  // Create an rarray of doubles
  const xt::rarray<double>& x_rray = xt::rarray<double>(x);

  // This lambda calls out to the R function at each iteration of the reduce call
  // The return value of f is a SEXP, we assume it holds a double under the hood
  auto r_functor_lambda = [f](const auto& left, const auto& right) {
    SEXP f_res = f(left, right);
    double res = REAL(f_res)[0];
    return(res);
  };

  // Make an xtensor xreducer from our lambda
  auto xr_functor = xt::make_xreducer_functor(r_functor_lambda);

  // THIS IS THE PROBLEM LINE!
  xt::xarray<double> res = xt::reduce(xr_functor, x_rray, axes);
  xt::rarray<double> res2 = res;

  return(res2);
}

// [[Rcpp::export]]
SEXP custom_reducer_impl_bad(SEXP x, Rcpp::Function f, std::vector<std::size_t> axes) {

  // Create an rarray of doubles
  const xt::rarray<double>& x_rray = xt::rarray<double>(x);

  // This lambda calls out to the R function at each iteration of the reduce call
  // The return value of f is a SEXP, we assume it holds a double under the hood
  auto r_functor_lambda = [f](const auto& left, const auto& right) {
    SEXP f_res = f(left, right);
    double res = REAL(f_res)[0];
    return(res);
  };

  // Make an xtensor xreducer from our lambda
  auto xr_functor = xt::make_xreducer_functor(r_functor_lambda);

  // THIS IS THE PROBLEM LINE!
  xt::rarray<double> res = xt::reduce(xr_functor, x_rray, axes);

  return(res);
}

// [[Rcpp::export]]
SEXP custom_reducer_bare_call(SEXP x, SEXP f_name_, std::vector<std::size_t> axes, SEXP env) {

  // get the name of the function object in the env
  // install it as f
  const char* f_name = CHAR(Rf_asChar(f_name_));
  SEXP f = Rf_install(f_name);

  // We also need left_ and right_ installed
  // to shove them in the call before the reduce loop
  SEXP left_ = Rf_install("left_");
  SEXP right_  = Rf_install("right_");

  // Create the call like f(left_, right_)
  // Ignoring dots for now
  SEXP f_call = PROTECT(Rf_lang3(f, left_, right_));

  // Create an rarray of doubles
  const xt::rarray<double>& x_rray = xt::rarray<double>(x);

  // This lambda calls out to the R function at each iteration of the reduce call
  // The return value of f is a SEXP, we assume it holds a double under the hood
  auto r_functor_lambda = [f_call, env](const auto& left, const auto& right) {

    // left and right should be length 1
    // Assume they are REAL for now
    SEXP left_val  = PROTECT(Rf_allocVector(REALSXP, 1));
    SEXP right_val = PROTECT(Rf_allocVector(REALSXP, 1));

    // Shove in the actual values
    REAL(left_val)[0] = left;
    REAL(right_val)[0] = right;

    // Define left_ again (for the existing call to find)
    // And assign its value to be the SEXP left_val
    SEXP left_ = Rf_install("left_");
    Rf_defineVar(left_, left_val, env);

    // Same for right_
    SEXP right_ = Rf_install("right_");
    Rf_defineVar(right_, right_val, env);

    // Eval the call in the right env
    SEXP f_res = PROTECT(Rf_eval(f_call, env));
    //SEXP f_res = PROTECT(R_forceAndCall(f_call, 2, env));

    // Pull out the result
    double res = REAL(f_res)[0];

    UNPROTECT(3);

    return(res);
  };

  // Make an xtensor xreducer from our lambda
  auto xr_functor = xt::make_xreducer_functor(r_functor_lambda);

  // THIS IS THE PROBLEM LINE!
  xt::xarray<double> res2 = xt::reduce(xr_functor, x_rray, axes);
  xt::rarray<double> res = res2;
  //xt::rarray<double> res = xt::reduce(xr_functor, x_rray, axes);

  UNPROTECT(1);

  return(res);
}

# change to your own path.
Rcpp::sourceCpp("~/Desktop/simple-example.cpp")

small <- matrix(as.double(1:6), ncol = 2)
large <- matrix(as.double(1:5000), ncol = 2)
reallarge <- matrix(as.double(1:50000), ncol = 2)

fn <- function(.x, .y) {.x + .y}
fn2 <- function(.x, .y) {.x}

# //////////////////////////////////////////////////////////////////////////////
# sum-reduce

custom_reducer_impl(small, fn, 0L)
#> [1]  6 15
custom_reducer_impl_bad(small, fn, 0L) # somehow this works
#> [1]  6 15

custom_reducer_impl(large, fn, 0L)
#> [1] 3126250 9376250
# should crash
# custom_reducer_impl_bad(large, fn, 0L)

# //////////////////////////////////////////////////////////////////////////////
# reduce but just return x back

# All good here
custom_reducer_impl(small, fn2, 0L)
#> [1] 1 4
custom_reducer_impl_bad(small, fn2, 0L)
#> [1] 1 4

custom_reducer_impl(large, fn2, 0L)
#> [1]    1 2501
# Crashes
# custom_reducer_impl_bad(large, fn2, 0L)

# //////////////////////////////////////////////////////////////////////////////
# Bare bones version

custom_reducer_impl_bare <- function(.x, .f, ...) {
  .f <- rlang::as_function(.f)
  custom_reducer_bare_call(.x, ".f", 0L, env = environment())
}

custom_reducer_impl_bare(small, fn)
#> [1]  6 15

# its alive!
custom_reducer_impl_bare(large, fn)
#> [1] 3126250 9376250

# this works too!
custom_reducer_impl_bare(reallarge, fn)
#> [1] 312512500 937512500

# //////////////////////////////////////////////////////////////////////////////
# Benchmarks

# Really large
bench::mark(
  as.array(colSums(reallarge)),
  rray:::rray_reducer_cpp("sum", reallarge, 0L),
  custom_reducer_impl(reallarge, fn, 0L), # <- functor + Rcpp::Function
  custom_reducer_impl_bare(reallarge, fn) # <- bare bones
)
#> Warning: Some expressions had a GC in every iteration; so filtering is
#> disabled.
#> # A tibble: 4 x 10
#>   expression     min    mean  median      max `itr/sec` mem_alloc  n_gc
#>   <chr>      <bch:t> <bch:t> <bch:t> <bch:tm>     <dbl> <bch:byt> <dbl>
#> 1 as.array(…  37.6µs  40.4µs    39µs   1.48ms  24734.      7.39KB     2
#> 2 "rray:::r…  98.1µs 276.9µs 255.7µs    9.9ms   3612.       1.5MB    13
#> 3 custom_re…   472ms 479.2ms 479.2ms 486.46ms      2.09    2.49KB    37
#> 4 custom_re…  18.4ms  22.1ms  20.4ms  55.75ms     45.2     2.49KB    23
#> # … with 2 more variables: n_itr <int>, total_time <bch:tm>

Created on 2018-12-11 by the reprex package (v<IP_ADDRESS>00)

immediate_evaluation mode

I'll check that out! Thanks!

Debugging this a little more just to try and narrow in on the issue. Here are a few simpler variations:

custom_reducer_impl_simple - The functor returns 1, assign straight to rarray<double>

custom_reducer_impl_simple_error - The functor returns 1, a useless NumericVector is created in the functor, assign straight to rarray<double>

custom_reducer_impl_simple_works - Same as 2, but assign to xarray then to rarray.

2 fails randomly on large matrices when you try and print the result out, and I have no idea why. I'm generally getting the error message 'getCharCE' must be called on a CHARSXP, but I also sometimes get results that don't have the right dim attribute or are just the wrong class (sometimes I get character or logical vectors back for some reason).
The interesting thing here is that this happens even though I am not accessing left or right at all. Just calling NumericVector inside the functor is enough to break things, apparently.

// [[Rcpp::depends(xtensorrr)]]
// [[Rcpp::plugins(cpp14)]]

#include <xtensor-r/rarray.hpp>
#include <xtensor/xreducer.hpp>
#include <xtensor/xio.hpp>
#include <xtensor/xarray.hpp>
#include <Rcpp.h>
using namespace Rcpp;

// [[Rcpp::export]]
SEXP custom_reducer_impl_simple(SEXP x, std::vector<std::size_t> axes) {

  const xt::rarray<double>& x_rray = xt::rarray<double>(x);

  // Just return the double value of 1
  auto r_functor_lambda = [](const auto& left, const auto& right) {
    double res = 1;
    return(res);
  };

  auto xr_functor = xt::make_xreducer_functor(r_functor_lambda);

  xt::rarray<double> res = xt::reduce(xr_functor, x_rray, axes);

  return(res);
}

// [[Rcpp::export]]
SEXP custom_reducer_impl_simple_error(SEXP x, std::vector<std::size_t> axes) {

  const xt::rarray<double>& x_rray = xt::rarray<double>(x);

  // Create a NumericVector in there
  auto r_functor_lambda = [](const auto& left, const auto& right) {
    NumericVector l(1, 1.0);
    double res = 1;
    return(res);
  };

  auto xr_functor = xt::make_xreducer_functor(r_functor_lambda);

  xt::rarray<double> res = xt::reduce(xr_functor, x_rray, axes);

  return(res);
}

// [[Rcpp::export]]
SEXP custom_reducer_impl_simple_works(SEXP x, std::vector<std::size_t> axes) {

  const xt::rarray<double>& x_rray = xt::rarray<double>(x);

  // Create a NumericVector in there
  auto r_functor_lambda = [](const auto& left, const auto& right) {
    NumericVector l(1, 1.0);
    double res = 1;
    return(res);
  };

  auto xr_functor = xt::make_xreducer_functor(r_functor_lambda);

  xt::xarray<double> res2 = xt::reduce(xr_functor, x_rray, axes);
  xt::rarray<double> res = res2;

  return(res);
}

# change to your own path.
Rcpp::sourceCpp("~/Desktop/example.cpp")

real_large <- matrix(as.double(1:50000), ncol = 2)

# Fine
for(i in 1:10000) {
  x <- custom_reducer_impl_simple(real_large, 0L)
}

# This should error if you try it
# If you comment out the print(x) line, it probably wont error
for(i in 1:10000) {
  x <- custom_reducer_impl_simple_error(real_large, 0L)
  print(x)
}

# Fine
for(i in 1:10000) {
  x <- custom_reducer_impl_simple_works(real_large, 0L)
  print(x)
}

Hi @DavisVaughan
just FYI I just found a bug in the reducers for column_major (which is always the case in R).
Maybe this bug will also fix our issues here! :)

Should this issue be closed?

I'm still having the error, but custom reducers are low on my priority list right now, and probably won't make it into the first version of rray.
That said, if you throw out the rest of the issue and focus on this comment: https://github.com/QuantStack/xtensor-r/issues/76#issuecomment-448689755, then that is the simplest way to showcase the error.

Hey @DavisVaughan FYI, we have worked quite a bit on Xtensor reducers recently (thanks to the hard work of @AdrienDelsalle) in core Xtensor, and that issue should now be fixed!


Create de_DE.ini

Translate the Plugin on the Language German/Deutsch

ok

@fuyutsuki Is this PR okay for you, or do you still have requests for changes?

@DragonfireHD98 Thanks for your contribution! If you change the destination to the dev/4.1 branch and then merge it, no problem. same goes for #154!

how can i do this -.- ?

#155 to merge so close


Streamline incons

DO NOT MERGE - this PR is for displaying this prototype code only, and is not meant to be merged.
This is a prototype of adding incon/fincon machinery to streamline, rather than writing it into core. Credit to Alex Greer for a lot of the ideas in here, especially the idea that streamline's particular implementation of a cell would be a good place to mix in incon/fincon functionality.
Since the "read incon" behavior and "write fincon" behavior should be tightly coupled, I've created an InconBehavior interface to package them together. The signatures on these methods allow them to be extended (see InconBehavior.map), which is important for allowing users to write an InconBehavior for simple types, that we can automatically extend to more complex or "wrapped" types. Otherwise, the InconBehavior is left highly general, treating incons as String-SerializedValue key-value pairs, which can be freely queried for incons and freely written for fincons.
The key principle in this design is "Every cell has an incon behavior." There are some cells where that behavior is degenerate, i.e., "For incons, use this constant value, and for fincons, write nothing out." However, this is an opt-out system, where the modeler needs to choose not to save the cell's value, rather than needing to remember everywhere else that they should save the cell's value.
To that end, I've modified streamline's cell allocation function to take an InconBehavior instead of an initial value. This interacts with a static incon manager to retrieve the initial value for the cell and register the fincon behavior, simultaneously. Doing the two operations simultaneously, I hope, will contribute to keeping the two halves of this behavior tightly coupled.
On top of this, I'm modifying the MutableResource constructors to add more user-friendly support for common use cases, namely

mapping the dynamics directly to a single key in the incon/fincon, and
not saving the dynamics at all.
There will still be a more general constructor for MutableResource which allows any incon/fincon behavior, to support edge cases.

Finally, that static incon manager is initialized and loaded with a set of incons when building the registrar, since building the registrar has evolved into the natural place to initialize all the streamline singletons, like the simulation clock and the global logger. That static incon manager then exposes a method to write a fincon, which the model may call at any time to invoke all the registered fincon behaviors, compose a full system fincon, and save that fincon. Note that this will mean it's up to the mission model to define something like a simulation config parameter and model task, or a "Fincon" activity, to actually save the fincon.

Meant to open this in my own repo, sorry!


setDeepCopyEnabled is a bug?

ModelMapper INSTANCE = new ModelMapper();
INSTANCE.getConfiguration().setDeepCopyEnabled(true);
INSTANCE.getConfiguration().isDeepCopyEnbale
but default value is true.  when i set a true  ,its become false !!
I felt there was something wrong with the set method, which removed AssignableConverter when set to true。when i copy object to dest ，the Object Type property would to be null?
can you give a example for setDeepCopyEnabled?

deep copy is disabled by default
when set deep enabled to true, we can get deep copy enabled as true
when set deep enabled to false, we can get deep copy enabled as false
it works as design to remove AssignableConverter while enable the deep copy, because the AssignableConverter will just copy the reference of source to destination directly when the source property has same type as destination property.

I'm not sure what's your problem? Can you provide more information? Maybe some code demonstrate your idea? Thanks


Fix integration test to work on lakeFS/KV

Fixes #42.

This is blocking #41, so if we don't get this out soon-ish let's merge this over there.

Thanks!


fix: remove warning log if validator pubkey not found or invalid

Motivation
This log is too noisy and quite common if the validator client has loaded pubkeys which are not yet active. We can't log this as warn, an alternative would be to log it was debug but the scenario where this log would be useful, e.g. a user querying the api manually, a debug log will hardly be visible and likely the user it better of just double checking the pubkey sent (ie. in case it is malformed).
Description
Remove warning log if validator pubkey not found or invalid, this reverts https://github.com/ChainSafe/lodestar/pull/7107/commits/e595ab713d16893ea35f9b70e92ec4cacb608dde added in https://github.com/ChainSafe/lodestar/pull/7107

:tada: This PR is included in v1.23.0 :tada:


Find dead relative links

Hi,
We are using grav to build a documentation that has a great amount of relative link, but sometimes we renamed pages manually and so some links are not renamed.
A page to find all (relative) dead links from all content sounds like a nice addition to maintain this.
Is that something you would consider?
Thanks

Would be a nice plugin, if someone wants to start tackling this.
Alternatively there are many tools that do this job from a command line command.
For example

wget
https://wummel.github.io/linkchecker/
https://davidwalsh.name/broken-link-checker

@magnetik I'll see if I can take this on.

@magnetik Initial work started here
https://github.com/jgonyea/grav-plugin-broken-link-checker
Once I get a few more things off that to-do list, I'll submit it to official gpm.

What is the progress on this?

@KrakenEXE I haven't had time to finish this. I'll see if can get a working release this week.

@jgonyea Thank you very much. If you need any additional help please ask.

Too bad this is not official. Is there some alternative within Grav?


Add Lydian support

I installed all Google Noto Fonts and Firefox still does not support the display of Lydian. See for example https://en.wikipedia.org/wiki/Lydian_(Unicode_block)

Actually the problem of display only happens on Firefox. Characters are correctly displayed with Chromium 53

The problem is with Firefox rendering engine. Closing the issue.


[BUG]

Describe the bug
after compilation(yarn build),when I refresh current page ,erros appears as following:
Error response
Error code: 404
Message: File not found.
Error code explanation: 404 - Nothing matches the given URI.
Steps To Reproduce
1 yarn build
2 go into dist/ or build/
3 run a static web server .such as :python -m http.server,or http-server of nodejs.
4 errors appears.
Expected behavior
I hope the refresh action to run normally.
Screenshot
No response
Desktop
No response
Mobile
No response
Additional Context
No response

running examples in this project,error appears as above.


{KeyVault} Refine error messages

The original error message is ambiguous. Confirmed with Key Vault PM.

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

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

[x] I adhere to the Command Guidelines.

S168


Add --vra-tenant command line option

Add knife command line option "--vra-tenant" as an alternative to specifying "knife[:vra_tenant]" in your knife.rb.

Awesome! Thanks for this. When I'm back off holidays all check out the failures, unless you get to em first.


Project refactoring and library upgrades

Change project character set to UTF-8
Refactored POM: All Versions are set as properties
Restore Java Service Provider Interface for FOP-Extension in maven build
Fix QR-Code functionality with xZing 3.4.1 and later (3.5.1)
Increment snapshot version to 2.2.0-SNAPSHOT (latest official version is 2.1.0)
Library upgrades:

Library upgrades
Apache FOP 2.8
Batik 1.16
XML graphics common 2.8
ZXing 3.5.1
Xalan 2.7.2
Xml-APIs 1.4.01
Avalon Framework 4.3.1
Apache Commons Cli 1.5

Added TAGS to original CSV/SVN commits:
There is no way to make a pull request for tags. So you can add these tags in your repository with following git commands:
git tag barcode4j_1_0 31223e8095bd0dea7e5545841e816400fe1757f8
git tag barcode4j_1_0_rc1 79de4dc97a425cd8bc2730f8cbd4e06d8cb642ef
git tag barcode4j_2_0 445b15e626b4c881b2a0740184b15caebb75f986
git tag barcode4j_2_0_alpha1 87a42149d1dfc0e88157090794c2d0d543370f38
git tag barcode4j_2_0_alpha2 6e24d34c681962ff14664e32f2aa05f498c98d24
git tag barcode4j_2_1 274cd4edca0c128ef814e5e7a54e1282d8313e1f
git tag before_switch_to_alv2 b3fed673344dd0071e3a259b6dc0e2d68a840fba

Hi,
thanks for accepting pull request :-)
Other question: Is it possible for you to add the tags from the original source SVN-Repository?
See initial comment on pull request.
Mathias

yeah, I ran them on my pc this morning but forgot to push them. Will sort it once I'm home. Do you intend to make any further changes? I no longer use JDK 8 as Java 17 is my target for pretty much all projects. I'm considering bumping the minimum JDK to 11 so that I can add JPMS support. Would that be a problem for you?

@tags -> very nice 👍
Java 11/17 is OK because we already use Java 17 for the most part in our company. I also think that the JPMS support will not be a problem for us.
We don't have any expansion plans at the moment, but I can imagine that we'll certainly do bug fixes.
It would be nice if you manage (we? manage) to bring the releases to Maven Central. But there is certainly still one or the other to do (e.g. Ant versus Maven build is not the same).
Ant versus Maven build:
What still needs to be done is for the Maven build to create the same JARs as the Ant build. For example, I noticed that the FOP extension does not contain the classes from the "barcode-xgc" module. These are necessary to bring the barcodes as images into the PDFs. In our projects, the JAR for the "barcode-xgc" module is also used (and so it is not a direct problem). For the FOP extension I think the easiest way would be to combine the "barcode-xgc" module with the "barcode4j-fop-ext" module.

I just checked maven central. Seems 2.1 just had two artifacts:

barcode4j
barcode4j-fop-ext

so bundling xgc into fop-ext seems reasonable. To be honest I've not used this repo for a while. The barcode4j dependency was used heavily by my previous employer and so I was looking to revive the project just for my own sanity. I don't need to generate labels for my current line of work but am still interested in keeping barcode4j alive and can publish to maven central as well, although that will likely have to be using my own groupId: com.singinbush. I think it would be wise to release a 2.2.0 version to maven central that has the same org.krysalis.barcode4j package name so that there are no breaking changes for anyone wanting to use it.
Before doing that it would be good to get some thorough testing done, is that something you can help with?

May I help you to do the merge of these two Moduls in a new pull request?
@ groupId:
As you say, I think for this project we should use "org.krysalis.barcode4j", yes.
Should I try to conatct the initiator Jeremias Märki of the project if it is OK to use this groupId ( Home page https://www.jeremias-maerki.ch/wordpress/de/software/ )?
@ testing
Maybe I can help you to move tests to JUnit 5.


thank you

you can close whenever but I was thinking about making this and saw this repo and it did the job. cut my memory used by 320%.

this shouldbe added to the core as a optimization .


feat: add pre-push hook to lint and compile TS

Before we merge this, I want to discuss Husky's git hooks in general.
Curious about some of the "holes" like just committing code when you haven't ran yarn install. Pipelines would catch things, but is there another way?


Fixed a bug where timeout argument not being used

Fixed a bug where timeout argument not being used.

[approve ci]

[approve ci]

Done as I commanded, therefore it's perfect.

Is this related to the event loop changes? If so, we need this for 7.1.x ?

It’s related to the event loop, but we don’t need this for 7.1.x since the
PollEvent method is not in there.
On Mon, Nov 6, 2017 at 5:01 PM Leif Hedstrom<EMAIL_ADDRESS>wrote:

Is this related to the event loop changes? If so, we need this for 7.1.x ?
—
You are receiving this because you were assigned.
Reply to this email directly, view it on GitHub
https://github.com/apache/trafficserver/pull/2777#issuecomment-342317363,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AGxlKeabLV8_lBGeNN8JjvZZNN1uhuTWks5sz4-9gaJpZM4QTkxo
.

--
With Regards
Fei Deng


Feature/add video to pl

Looks like the video player was not in the manifests for pattern lab. I've added them, but webpack is now having trouble with the following line in the video scss.
@include bolt-button-style(secondary);
I tried a few things, including adding the button as a dependency of the video player, and running npm run setup, but to no avail...

@sghoweri This is needed to get Drupal integration running - coming across:
  @include bolt-button-style(secondary);
          ^
      No mixin named bolt-button-style

Backtrace:
	node_modules/@bolt/components-video/src/_videojs-enhancements.scss:17

Wait a sec - something doesn't feel right here.

That mixin should exist (albeit, as a component-specific mixin the button component ships with): https://github.com/bolt-design-system/bolt/blob/master/packages/components/bolt-button/src/_button.mixins.scss#L332

@EvanLovely why wouldn't we be seeing that exact same error message on our end.... because this isn't getting compiled atm?

@joekarasek @EvanLovely I'm pulling this down to take another look at this so we can get this merged in today


Merge formatters unit tests

PR provides following changes:
Enable formatters tests build
Correct formatters tests according to code changes and make formatters tests buildable
This PR contains changes and review notes fixes from previous PR.

@anosach-luxoft , @dev-gh, @VVeremjova , @AByzhynar, @Kozoriz, @LuxoftAKutsan, @dtrunov, Please review

@anosach-luxoft , @dev-gh, @VVeremjova , @AByzhynar, @Kozoriz, @LuxoftAKutsan, @dtrunov, Please review changes

Reviewed

Reviewed


Puppet agent 8 throws a warning when it interpolates the template sensu/agent.yaml.erb

Description of problem

puppet agent 8 emits a warning while it's interpolating the template sensu/agent.yaml.erb

Command used and debugging output
puppet agent -t --debug
Debug: Datacat_collector[sensu_agent_config](provider=datacat_collector): Collected {"backend-url"=>["wss://uat-sensu01.xxxxx.org:8081", "wss://uat-sensu02.xxxxx.org:8081", "wss://uat-sensu03.xxxxx.org:8081"], "name"=>"test-consul01.xxxxx.org", "agent-managed-entity"=>true, "subscriptions"=>["devops_linux", "linux_metrics", "vmware", "devops_linux", "linux_metrics", "vmware"], "annotations"=>{"place"=>"holder", "puppet_board"=>"https://puppetboard.xxxxx.org/test/node/test-consul01.xxxxx.org", "performance_board"=>"https://metrics.xxxxx.org/d/DsGCxmXZz/resources-utilization?orgId=1&var-server_name=test-consul01_xxxxx_org", "What does this server do?"=>"https://wiki.xxxxx.org/dosearchsite.action?cql=siteSearch+~+%22consul%22&queryString=consul"}, "labels"=>{"host_name"=>"test-consul01", "fqdn"=>"test-consul01.xxxxx.org", "ip_address"=>"xxxxxxxxxx", "ip6_address"=>"xxxxxxxxxxx", "reboot_required"=>"false", "security_update_count"=>"0", "domain_password"=>"xxxxxxxxxxxxxxxx", "snmp_community"=>"xxxxxxxxxxxx", "environment"=>"test", "nagios_check_path"=>"/usr/lib/nagios/plugins", "fqdn_metrics_label"=>"test-consul01_xxxxx_org", "os_name"=>"Ubuntu", "os_version"=>"20.04", "hostgroup"=>"consul", "served_domain"=>"consul.xxxxx.org", "memory_limit"=>"-w 85 -c 90", "swap_limit"=>"-w 15% -c 10%"}, "namespace"=>"default", "redact"=>["monitor_password", "domain_password", "password", "passwd", "pass", "api_key", "api_token", "access_key", "secret_key", "private_key", "secret", "snmp_community", "gandi_api_key"], "password"=>"xxxxx", "trusted-ca-file"=>"/etc/sensu/ssl/ca.crt", "statsd-event-handlers"=>["influxdb_stats", "influxdb_sensu_events"], "keepalive-critical-timeout"=>60, "keepalive-warning-timeout"=>40, "keepalive-handlers"=>["devops_email", "it_email", "slack", "squadcast-general"]}
Debug: Datacat_collector[sensu_agent_config](provider=datacat_collector): Applying template sensu/agent.yml.erb
/opt/puppetlabs/puppet/cache/lib/puppet/provider/datacat_collector/datacat_collector.rb:31: warning: Passing safe_level with the 2nd argument of ERB.new is deprecated. Do not use it, and specify other arguments as keyword arguments.
/opt/puppetlabs/puppet/cache/lib/puppet/provider/datacat_collector/datacat_collector.rb:31: warning: Passing trim_mode with the 3rd argument of ERB.new is deprecated. Use keyword argument like ERB.new(str, trim_mode: ...) instead.

Platform and version information

Your OS: Linux
Your Ruby version: $(/opt/puppetlabs/puppet/bin/ruby --version) ruby 3.2.3
Your version of Puppet: Puppet community edition 8.5
Your version of Sensu: 6.10.0-7172
Your version of this module: 5.11.1

@ManishaKumari295 this issue is caused by datacat module being deprecated: https://forge.puppet.com/modules/richardc/datacat/readme
I can try to fork datacat module and have a look.

@ManishaKumari295 a possible solution consists of switching from datacat module to puppet-colections module, hence switching from ERB to EPP.
Could you also please revert the change below? This default value is not appropriate for a public module:
Optional[Stdlib::Absolutepath] $package_download_path = '/home/ubuntu/.puppetlabs/etc/code/modules',

@maxadamo thanks for the response and suggestions. I am checking if puppet-collections or puppetlabs/conact will be able to replace datacat module. Shall proceed with the changes and let you know once done.


Error: 'currently'

Hi there,
I hope anyone can help me with this. Everything works, except the wheater.
I always get this message when I start it up:
Traceback (most recent call last):   File "smartmirror.py", line 161, in get_weather     temperature2 = "%s%s" %(str(int(weather_obj['currently']['temperature'])), degree_sign) KeyError: 'currently' Error: 'currently'. Cannot get weather.
I also put in the secret code as it should be.
Thanks and greets from Germany
Lukas

have you figure out the error or you need help?

I have the same problem. could you share how you solved it please?
Thank you in advance!

I have the same error too!! How did you fix it?


memory corrupted?

Hi @achaloyan ,
I meet a question, which may be memory corruption.    I debug as these:

and texts:
(gdb) bt
#0  synth_state_update (base=<optimized out>, message=0x7fe5b40182f8) at src/mrcp_synth_state_machine.c:570
#1  0x00007fe5db3a53ed in mrcp_server_msg_process (task=0xa5f318, msg=0x7fe5c00008c0) at src/mrcp_server.c:840
#2  0x00007fe5db3c144a in apt_task_msg_process (task=0xa5f318, msg=0x7fe5c00008c0) at src/apt_task.c:347
#3  0x00007fe5db3c183a in apt_consumer_task_run (task=<optimized out>) at src/apt_consumer_task.c:145
#4  0x00007fe5db3c0a20 in apt_task_run (thread_handle=0xa746a0, data=0xa5f318) at src/apt_task.c:594
#5  0x00007fe5da11dea5 in start_thread () from /lib64/libpthread.so.0
#6  0x00007fe5d9b448dd in ioperm () from /lib64/libc.so.6
#7  0x0000000000000000 in ?? ()
(gdb) p *message
$11 = {start_line = {message_type = MRCP_MESSAGE_TYPE_RESPONSE, version = MRCP_VERSION_2, length = 0, request_id = 1454635, method_name = {buf = 0x7fe5b4065730 "SPEAK", length = 4}, method_id = 3, status_code = MRCP_STATUS_CODE_SUCCESS,
    request_state = MRCP_REQUEST_STATE_COMPLETE}, channel_id = {session_id = {buf = 0x7fe5b40657f0 "", length = 16}, resource_name = {buf = 0xa6d650 "speechsynth", length = 11}}, header = {generic_header_accessor = {data = 0x7fe5b40184e0, vtable = 0x7fe5db5db7e0 <vtable>},
    resource_header_accessor = {data = 0x7fe5b40185d8, vtable = 0x7fe5db5dba20 <vtable>}, header_section = {ring = {next = 0x7fe5b4018370, prev = 0x7fe5b4018370}, arr = 0x7fe5b40183b0, arr_size = 38}}, body = {buf = 0x0, length = 0}, resource = 0xa6d610, pool = 0x7fe5b4018278}

As you see :

session_id is empty, which should't occur;
method_name is "SPEAK", but method_id is "3", however the correctly method_id of "SPEAK" is 2,  the method_id of "STOP" is 3, as in https://github.com/unispeech/unimrcp/blob/7c8703d6fe4d9816bf635b2848e3657606729fe3/libs/mrcp/resources/include/mrcp_synth_resource.h#L33

My veriosn is:

unimrcp: 1.5
tts plugin: demo-synth by your implement

And I add some logs to debug(print the pointer address of message and pool),
/** Process STOP request */
static apt_bool_t demo_synth_channel_stop(mrcp_engine_channel_t *channel, mrcp_message_t *request, mrcp_message_t *response)
{
	demo_synth_channel_t *synth_channel = channel->method_obj;
	/* store the request, make sure there is no more activity and only then send the response */
	synth_channel->stop_response = response;
	apt_log(APT_LOG_MARK, APT_PRIO_INFO, "demo_synth_channel_stop %s, %s, %0x, %0x", synth_channel->stop_response->channel_id.session_id.buf, synth_channel->stop_response->start_line.method_name.buf, synth_channel->stop_response, synth_channel->stop_response->pool);
	return TRUE;
}

/** Callback is called from MPF engine context to read/get new frame */
static apt_bool_t demo_synth_stream_read(mpf_audio_stream_t *stream, mpf_frame_t *frame)
{
	demo_synth_channel_t *synth_channel = stream->obj;
	/* check if STOP was requested */
	if(synth_channel->stop_response) {
		apt_log(APT_LOG_MARK, APT_PRIO_INFO, "Request Stop Response, %s, %s, %0x, %0x", synth_channel->stop_response->channel_id.session_id.buf, synth_channel->stop_response->start_line.method_name.buf, synth_channel->stop_response, synth_channel->stop_response->pool);
......

So the ouput is :
2021-07-20 18:25:20:116614 src/mrcp_server_connection.c:811<PHONE_NUMBER>26112 [INFO]   Receive MRCPv2 Data <IP_ADDRESS>:1544 <-> <IP_ADDRESS>:37889 [77 bytes]
MRCP/2.0 77 STOP 1454635
Channel-Identifier:38ba5092e94411eb@speechsynth

2021-07-20 18:25:20:116694 src/apt_task.c:264<PHONE_NUMBER>26112 [INFO]   Signal Message to [MRCP Server] [0x7fe5c40008e0;2;3]
2021-07-20 18:25:20:116755 src/mrcp_server_session.c:575<PHONE_NUMBER>41408 [INFO]   Dispatch Signaling Message [1]
2021-07-20 18:25:20:116768 src/mrcp_synth_state_machine.c:485<PHONE_NUMBER>41408 [INFO]   Process STOP Request <38ba5092e94411eb@speechsynth> [1454635]
2021-07-20 18:25:20:116775 src/apt_task.c:264<PHONE_NUMBER>41408 [INFO]   Signal Message to [Demo Synth Engine] [0x7fe5d4002b30;1;0]
2021-07-20 18:25:20:116835 src/demo_synth_engine.c:352<PHONE_NUMBER>51552 [INFO]   demo_synth_channel_stop 38ba5092e94411eb, STOP, b40182f8, b4018278

2021-07-20 18:25:20:126218 src/demo_synth_engine.c:499<PHONE_NUMBER>36256 [INFO]   Request Stop Response, , SPEAK, b40182f8, b4018278
2021-07-20 18:25:20:126240 src/apt_task.c:264<PHONE_NUMBER>36256 [INFO]   Signal Message to [MRCP Server] [0x7fe5c00008c0;3;4]

It can see the address don't change, but the content of the address is changed, ag : b40182f8, b4018278.
So I guess the memory corrupted, but I can't analysis why.
Would you give me some suggests please?

Sorry, I am not able to follow you. Maybe you can use the latest version of UniMRCP such as 1.7.0.

Closing this issue for now. If you are able to reproduce the problem with the latest release, please feel free to reopen.


Add test where a from b is directly assigned but contains user:* or user#relation errors out

Add a test that ensures that if b in the case of a from b is directly assigned but contains user:* or user#relation that we error out too.

e.g.
define parent: [folder:*]
define viewer: viewer from parent

define parent: [folder#parent]
define viewer: viewer from parent

Run against the current API and see if it properly validates against this case.

model
  schema 1.1

type folder
  relations
    define parent: [folder:*]
    define viewer: viewer from parent

From the CLI:
{
  "is_valid":false,
  "error":"the relation type 'folder' on 'parent' in object type 'folder' is not valid"
}

Where as language only throws:
`parent` relation used inside from allows only direct relation.

Hello @d-jeffery ,
I would like to contribute to this issue. Could you please assign it to me and provide any relevant references or guidance?
Thank you!

Hello @d-jeffery ,
I would like to contribute to this issue. Could you please assign it to me and provide any relevant references or guidance?
Thank you!

Hi, I'm no longer on this project. @rhamzeh?


Adds command ´teams message restore´, Closes #5860

Closes #5860.
When shipping this PR, the permission ChannelMessage.ReadWrite should be added to the PnP Management Shell application

Thank you @nicodecleyre, we'll do our best to review the PR ASAP.

Hi @nicodecleyre, I just wanted to let you know I haven't forgotten you. Just waiting for #5867 to be merged so I can use the teams util that's been introduced there in this PR as well.

Hi @nicodecleyre, I just wanted to let you know I haven't forgotten you. Just waiting for #5867 to be merged so I can use the teams util that's been introduced there in this PR as well.

Hi there, no problem! Thank you for giving an update on your side.

Thx Milan. I've removed the test regarding when a Team is not found and when a channel is not found, as these are covered by the new teams util

Merged manually, thank you!


Thoughts on a new cheat like deal that does not overwrite the current balance?

My feature request is about the deal cheat codes:
https://github.com/foundry-rs/forge-std/blob/662ae0d6936654c5d1fb79fc15f521de28edb60e/src/StdCheats.sol#L540-L571
Overwriting the current balance works for standard tests, but it is not helpful in an invariant testing context. Certain invariant may rely upon the contract balance over time.
Thus my suggestion to add a new cheat like deal but which is additive, which adds the provided amount on top of the current balance.
This is for both ETH and ERC-20 tokens.

This is really just a one liner that removes a balanceOf call—i.e. you can currently do this with deal(token, to, token.balanceOf(to) + amount), which is pretty brief and clear—so I'm not sure it adds much value

Fair enough.


The code needs more const

As we move towards greater threading, it would be nice if we started using const more carefully. As of C++11, const really means "thread safe" and it would be great if we could start using it in objects that get passed around a lot.
In aid of this, it would be great if we could get rid of the formatting rule that require const instance variables to be in UPPERCASE. This does not improve readability IMHO and takes me back to the coding standards of the 1970s. In particular, this formatting rule makes moving code into a Task class somewhat onerous because you have to go and change all the cases of the variables.

Agreed, sounds good.

I think you can add a // NOLINT comment after the variable to defeat this but I haven't tried it yet.

I would rather change the formatting rules for const variables in the .clang-tidy. NOLINT should be kept to a minimum.

So I can remove
    value:           UPPER_CASE

Or make it lower_case to match the non-const members?

If you remove it it will fall back to the more general case (which I believe is the variable, i.e. lower_case, see the docs here for more info). I'm fine with changing it to aNy_CasE, that should be easier.

Ah that makes more sense.

This is more of a coding standard now.


Plugin Unavailable?

Hi, is this plugin still available?
It has disappeared from the client & plugin hub.

Hey ZeiiKz,
There awas a recent breaking change in Runelite.
I’ve submitted a fix which can be tracked here:
https://github.com/runelite/plugin-hub/pull/4058
It’s unfortunately still pending approval by the Runelite team and I don’t
think I’m allowed to chase the devs up for approval, so I’m not sure how
long it will take.
On Fri, 17 Mar 2023 at 03:35, ZeiiKz @.***> wrote:

Hi, is this plugin still available?
It has disappeared from the client & plugin hub.
—
Reply to this email directly, view it on GitHub
https://github.com/NathanQuayle/max-skill-trim/issues/4, or unsubscribe
https://github.com/notifications/unsubscribe-auth/AIRASP2F33QGWIQILSFYLITW4PLW7ANCNFSM6AAAAAAV6AQQX4
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>

Hey ZeiiKz,
There awas a recent breaking change in Runelite.
I’ve submitted a fix which can be tracked here:
https://github.com/runelite/plugin-hub/pull/4058
It’s unfortunately still pending approval by the Runelite team and I don’t think I’m allowed to chase the devs up for approval, so I’m not sure how long it will take.


Add inputstream.adaptive as dependency, without videos fail to play.

Types of changes

[x ] Bug fix (non-breaking change which fixes an issue)

Netflix failed to play videos unless inputstream.adaptive was installed.

Kodi 18 comes with inputstream.adaptive preinstalled as system library, so you dont need to do anything if you are on Kodi 18, but if you are trying to don it on other versions or uf you are compilling it by yourself, you sholud add it before compilling, so thats is why it is named Netflix addon for Kodi 18...
:)

Kodi 18 comes with inputstream.adaptive preinstalled as system library

I don't think that's the case, actually (some versions of Kodi may bundle inputstream.adaptive but I don't think it's the norm). Adding inputstream.adaptive as a Netflix dependency (and the same for the Amazon and other inputstream.adaptive-based addons) would make sense IMHO.

We already use inputstream.helper to handle it.
Adding this to dependency will not automatically install/enable it for you.
From the helpers description:
"It is recommended to not add your InputStream add-on as a dependency in addon.xml. It can cause confusion with users not being able to install your add-on because the InputStream add-on is disabled. InputStream Helper addresses issues such as these and helps the user to install/enable required InputStream components."

@JinRonin inputstream.helper won't install inputstream.adaptive, users are surely in a worse position if you follow that advice as the Netflix add-on will install successfully (along with inputstream.helper) but then the Netflix add-on will fail to play a video (as described in this issue) because inputstream.adaptive isn't installed/enabled. Adding inputstream.adaptive as a dependency would install the inputstream.adaptive add-on automatically, and probably enable it if already installed but disabled. So I don't see the downside, to be honest.
But I'm not an expert on add-ons so will leave it to you - I just wanted to post that Kodi distributions will not normally include inputstream.adaptive (disabled or not), so this is likely to be a bigger issue in future.

True, it wont install it, but give a more detailed information that something is missing or will enable it in case its installed and disabled.
Inputstream adaptive is a binary addon that can not be automatically installed when you add it as dependency.
The user always have to install it manually if its not included.


Serenity test report error in mac OS

@jan-molak Hi Jan- Good day ! When I try to execute the command "serenity-bdd run --features ./e2e" in Mac OS, I get the following java error
I already installed and configured JDK 11 and Maven 3.6.3
Please help !
Spawning: /usr/bin/java -Dserenity.compress.filenames=true -DLOG_LEVEL=warn<EMAIL_ADDRESS>-jar<EMAIL_ADDRESS>--features ./e2e --destination target/site/serenity --source target/site/serenity --project bb8-automation
-------------------------------
SERENITY COMMAND LINE INTERFACE
-------------------------------
Loading test outcomes from target/site/serenity
Writing aggregated report to target/site/serenity

Mar 15, 2023 10:02:46 AM com.google.inject.internal.MessageProcessor visit
INFO: An exception was caught and reported.


Non-spec / AWS Lambda Detector / Add escape hatch for synchronous resource detection

Is your feature request related to a problem? Please describe

We want to get telemetry running for our AWS Lambdas.
If resource detection is asynchronous, then:

So should the SDK initialization
Can't run the initialization with node -r (otherwise setup might not be done before the lambda has actually run)
Has to change application code (I have hundreds and hundreds of lambdas...)
Need to create one new handler file for each lambda (very impractical)

Describe the solution you'd like to see
Luckily, the lambda detector is actually synchronous. As it turns out, in my case, it's the only asynchronous resource detection I'd like to run.
So until the opentelemetry-js core developers figure out how they want to handle asynchronous resources, I'd love to get a simple escape-hatch for the lambda resource detector, that would be out-of-spec, but would allow synchronous detection of the resource.
File: https://github.com/open-telemetry/opentelemetry-js-contrib/blob/main/detectors/node/opentelemetry-resource-detector-aws/src/detectors/AwsLambdaDetector.ts
It could look something like:

export class AwsLambdaDetector implements Detector {
  detectSync(_config?: ResourceDetectionConfig): Resource {

    // same implementation as now
  }

  async detect( _config?: ResourceDetectionConfig): Promise<Resource> {
    return this.detect(_config);
  }
}

Describe alternatives you've considered
When node 19+ can be used as runtime in AWS Lambda, then we can use the --import cli option and a top-level await.
I'll happily open a PR if you'd consider it.

As alternative you could use @opentelemetry/sdk-trace-node instead @opentelemetry/sdk-node.
It's a lower layer part of SDK for traces only used internally by NodeSDK and requires a bit more lines to write to set it up. For example you have to provide Resource as config. But this has exactly the advantage that you can do your sync resource detection and then create the NodeTracerProvider,...

There was some discussion about sync resource detection: https://github.com/open-telemetry/opentelemetry-js/issues/3055
And also a PR which looked quite promising as far as I remember: https://github.com/open-telemetry/opentelemetry-js/pull/2933
but both were closed by the stale bot...

Well it's what I do, e.g. for EKS
    const resource = Resource.default()
      .merge(
        new Resource({
          [SemanticResourceAttributes.SERVICE_NAME]: options.serviceName,
        })
      )
      .merge(
        await detectResources({
          detectors: [awsEksDetector],
        })
      );

    /********* TRACING */
    const tracingProvider = new NodeTracerProvider({
      resource,
    });

That's the whole point isn't it ? I want to get rid of the detectResources and only use a synchronous call, like such:
const _awsLambdaDetector = new AwsLambdaDetector()
const resource = Resource.default()
  .merge(
    new Resource({
      [SemanticResourceAttributes.SERVICE_NAME]: options.serviceName,
    }).merge( _awsLambdaDetector .detectSync() ) })

I've been through all those stales issues. I didn't necessarily want to get into that topic so I thought, at least for AWS Lambdas there's no need to solve the underlying issue before getting it to work...

Ah well sorry. Forgot that's already the detectors API which is async in all cases. I thought that it's the NodeSDK which introduces the  async part in some case.
But actually running the AwsLambdaDetector via -r should work. I know it's async but there is no network request or similar which lets the event loop reach idle - it's just a microtask. I'm quite sure it will finish before your handler is called the first time.

The async resource detection is one of the pain points left to be solved. OTel spec requires resource to be immutable so detection needs to be done before the first span is started as resource is a config of the TracerProvider.
Some detectors are really async as they do HTTP request. They "infected" all other detectors by using a common API.
See above linked issue/PR for more details, in depth discussions and started solutions. I'm sure there will be some movement in this at some time but for now be happy that your detector is not "too async" :o).
Actually I think you could implement a true async lambda init via extension as you have a async init phase. But I doubt this is worth the effort in your case.

Yes well we are actually extensions to load the dependent packages and to provide -r cli flag via NODE_OPTIONS
But you may be right, I will check if a true async would be possible. So far we've only used external extensions, where this wouldn't apply. But perhaps internal ones... I'll investigate.

It's me again !
Surprisingly, what we thought didn't work.
Given the following code:

// Asynchronous
const setup = async () => {

 const resource = Resource.default().merge(
      new Resource({
        [SemanticResourceAttributes.SERVICE_NAME]: options.serviceName,
      })
    )
    .merge(
      await detectResources({
        detectors: [awsLambdaDetector],
      })
    );
    // Rest of init...
    opentelemetry.diag.info("Finished loading the OTLP tracer");

}

setup();

I get:

| 2022-11-08T20:09:24.870+01:00 | 2022-11-08T19:09:24.870Z undefined WARN @opentelemetry/instrumentation-aws-lambda Module /var/task/getAssetsEndpoint.js has been loaded before @opentelemetry/instrumentation-aws-lambda so it might not work, please initialize it before requiring /var/task/getAssetsEndpoint.js
-- | -- | --
  | 2022-11-08T20:09:24.907+01:00 | 2022-11-08T19:09:24.907Z undefined INFO Finished loading the OTLP tracer

Given the synchronous version:

// Asynchronous
const setup = () => {

 const resource = Resource.default().merge(
      new Resource({
        [SemanticResourceAttributes.SERVICE_NAME]: options.serviceName,
      })
    );
    // Rest of init...
    opentelemetry.diag.info("Finished loading the OTLP tracer");
}

setup();

I get proper initialization (and instrumentation)

And on a sidenote, discussing lambda extensions, it sounded good but doesn't work as well.
Given an internal extension (runtime modification), I thought it would be possible to run:
#!/bin/bash
args=("$@")
OWN_FILENAME="$(basename $0)"
LAMBDA_EXTENSION_NAME="$OWN_FILENAME"
echo "${LAMBDA_EXTENSION_NAME}  launching extension"
node /opt/node_modules/path/to/my/otel/extension/code
echo "Finished setting up extension"
exec "${args[@]}"

(Obviously) it doesn't work because the process (the first call to the node executable) finishes and all libraries unload.
Instead, what is needed is:
#!/bin/bash

args=("$@")
OWN_FILENAME="$(basename $0)"
LAMBDA_EXTENSION_NAME="$OWN_FILENAME" # (external) extension name has to match the filename
echo "${LAMBDA_EXTENSION_NAME}  launching extension"
NODE_PATH=NODE_PATH:/opt/node_modules
extra_args=("-r" "/opt/node_modules/path/to/otlp/extension/code")
args=("${args[@]:0:$#-1}" "${extra_args[@]}" "${args[@]: -1}")
echo "Executing ${args[@]}"
exec "${args[@]}"

Which is just the same thing as setting the -r cli option, and therefore needs the synchronised init.

Waw that's very interesting:
const doSmth = async() => {
  console.log("doSmth");
}

const main = async () => {
  await Promise.all( [ doSmth() ]);
  console.log( "done");
}

main();
console.log("afterMain");

/*
doSmth
afterMain
done
*/

const doSmth = async() => {
  console.log("doSmth");
}

const main = async () => {
  await Promise.all( [ doSmth() ]);
  console.log( "done");
}

main();
console.log("afterMain");

/*
doSmth
afterMain
done
*/

const doSmth = async() => {
  console.log("doSmth");
}

const main = async () => {
  Promise.all( [ doSmth() ]); // <== Notice here the lack of await
  console.log( "done");
}

main();
console.log("afterMain");

/* Notice here the inverted logs
doSmth
done
afterMain
*/

Sees your ran into https://github.com/open-telemetry/opentelemetry-js/issues/3146. Unfortunately NodeSDK instantiates instrumentations late these days... Workaround is to move this part into the sync startup path instead delegating this task to NodeSDK.
Regarding extensions I was thinking about one implemented in JS. So your JS code registers as internal extension and says done once SDK startup is finished.
If you don't await Promise.all() it means you don't wait until it is finished. your second sample above creates a Promise which is never used. Usually you need the result of doSmth() and this is within the Promise returned by Promise.all which is settled once all promises in the list are settled.

I absolutely agree. But basically all of this is to justify the associated PR.
In javascript, the internal extension could do something like

setupOTLP().then( () => {
  require("/** process the AWS lambda env variable to determine the script path */");
});

I could certainly do that, but it requires processing the CLI flags in bash (which is doable of course) and reuse them to launch the opentelemetry wrapper.
But I'm not sure how brittle this approach would be.


⚠ Samsung has degraded performance

In 1ab75e3, Samsung (https://samsung.com) experienced degraded performance:

HTTP code: 200
Response time: 3934 ms

Resolved: Samsung performance has improved in 2b8df2c.


Needs to be more OO

This ties into #6 - testing a straight script is tricky, and besides that, it makes testing the individual pieces of the app (currently: information gathering, validation, posting) impossible.
Muda should be refactored into more OO style to ease testing, debugging, and any future enhancements.

Very, very fixed with the rewrite.


error: failed to push some refs to

File "c:\users\username\appdata\local\programs\python\python36\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 600, in urlopen
chunked=chunked)
File "c:\users\username\appdata\local\programs\python\python36\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 356, in _make_request
conn.request(method, url, **httplib_request_kw)
File "c:\users\username\appdata\local\programs\python\python36\lib\http\client.py", line 1239, in request
self._send_request(method, url, body, headers, encode_chunked)
File "c:\users\username\appdata\local\programs\python\python36\lib\http\client.py", line 1285, in _send_request
self.endheaders(body, encode_chunked=encode_chunked)
File "c:\users\username\appdata\local\programs\python\python36\lib\http\client.py", line 1234, in endheaders
self._send_output(message_body, encode_chunked=encode_chunked)
File "c:\users\username\appdata\local\programs\python\python36\lib\http\client.py", line 1065, in _send_output
self.send(chunk)
File "c:\users\username\appdata\local\programs\python\python36\lib\http\client.py", line 986, in send
self.sock.sendall(data)
File "c:\users\username\appdata\local\programs\python\python36\lib\ssl.py", line 965, in sendall
v = self.send(data[count:])
File "c:\users\username\appdata\local\programs\python\python36\lib\ssl.py", line 935, in send
return self._sslobj.write(data)
File "c:\users\username\appdata\local\programs\python\python36\lib\ssl.py", line 636, in write
return self._sslobj.write(data)
socket.timeout: The write operation timed out

Environment Configuration:
Windows 10 64
git version 2.9.2.windows.1
git-remote-dropbox@latest

looks like a network issue

going to assume it was a network issue

It does look like a network issue (nothing to do with git-remote-dropbox).
Does anything point to this being an issue with git-remote-dropbox itself?


Feature/edit transcription interface

Sorry @hhen0005 this is quite a large PR...
Why is this change needed?
This is needed to display the transcript on the project page so the user can edit the video. Also includes functionality to delete section of the transcript.
What did you change?

Added backend logic to pre process the transcription model and add fields to the object that are required for rendering the transcript in the front end and for generating the edl
Added backend logic to post processes the transcript and get it ready for export
Calls the preprocess function before adding the transcription to store
Added a TranscriptionBlock that takes a Transcript object and renders it as text
Added functionality to delete text from the transcript and update the transcript in store
Cleaned up the Project page UI (note this is still not final)
Changed SampleTranscript.json back to snake_case to be inline with the correct output from the ML model.

Definitely not in this PR:
Just wanted to say, I'm now really leaning towards gaps between words being treated as their own 'word' object.

100% on this - I think we also need to consider line breaks and punctuation.


A Guide to Run your React Native Apps with Typescript

Formatting and structure checks

[x] Have you used the correct folder and file structure? - see Contribution Guidelines

[x] Is your article properly formatted in Markdown? - see Github Markdown guide

[x] Have you used our preferred heading structure? - H3 (###) and up

[x] Does your article follow any of the suggested structure formats? - see example formats

[x] Is your article over 750 words? - Tool: Wordcounter.net

[x] Is the article you are submitting an in-depth and unique article? Does it go beyond what is in the official docs and what is covered in other blog sites. See these articles as examples.

[x] Does your article provide enough value and detail about your topic? - Articles should be clear, accurate, and fully explained.

[x] Can your article be understood by beginners? - Assume the audience is smart but has no prior exposure to the common terminology in your article.

[x] Have you included a hero image that is 600x400 pixels, under 300KB in size, and have the copyright to use it? - Tools: Pixlr Image Editor for resizing and Unsplash for Creative Commons images

Grammar & plagiarism checks

[x] Have you spellchecked and grammar checked your article? - Tools: Write&Improve - ProWritingAid - Grammarly
[x] Please place your article through a 3rd party plagiarism checker. We suggest using Quetext, this tool is free and has a daily limit. We typically accept articles with 10% or less.
[x] Have you checked your article for readability? - Tool: Hemmingway
[x] Have you added sources for quotes and images that aren't yours?

Technical checks

[x] Are your code snippets properly formatted for syntax highlighting - see Syntax guide
[x] Have you checked your code runs correctly and you've highlighted all necessary dependencies for installation?
[x] Are the software programs and packages you're highlighting in your article up to date, using current versions and not deprecated?

This closes #5851

In your TypeScript objects, please use original content rather than the current ones. They are showing a high level of plagiarism. Thanks
New Scan 5_49 PM Copyleaks Report.pdf

In your TypeScript objects @kimkimani , please use original content rather than the current ones. They are showing a high level of plagiarism. Thanks
New Scan 5_49 PM Copyleaks Report.pdf

@kimkimani Make the edits so that I can carry on with the review process.

Hi @kimkimani
Well done for coming up with such an amazing article but however, there're a few grammatical errors. Please use 2nd person singular "You" instead of "We", also I highly suggest you use tools like Grammarly and ProWritingAid  to edit your work.
Make these changes and I will continue the review process.
Thanks.

@Jethro-magaji Check this out

Merged #6293 into master

@Jethro-magaji ensure that you put the correct author name in the front matter.

@Jethro-magaji ensure that you put the correct author name in the front matter.

Noted, thanks


Find Out Key Names

It seems to be possible to bind Meta/Command/Windows and Menu. No idea what the key-names are though.
Any ideas @loopuleasa @sembrani?

Closed as the key names are known now, yay.


Extract og:image link from html body and add to return object

Image inclusion with article object
I have used a rather complex regex match function to extract the link to the article's og:image from the head
It does come back, but it needs validation/sanitization a little further.
Feel free to take a look and see if you can add to it or improve it in some way.
Closes #16

maybe we could use this https://www.npmjs.com/package/meta-og-scrape

maybe we could use this https://www.npmjs.com/package/meta-og-scrape

From having a look through that package a little, it looks like it is just a wrapper around what the regex is already doing. Dependencies are almost the same and the structure of the main function already looks similar to what we have for building the article object, so that says to me that we can just cherry-pick the functionality we need without taking on the weight of the package as a whole.
For example, their method of extracting the <meta> tags is a lot cleaner, so I will try out something based on this in place of what we have already. 👇
meta = $('head').find('meta[property*="og:"], meta[property*="fb:"], meta[property*="twitter:"], meta[property*="al:"], meta[name*="twitter:"]'),

The .find() method was unknown to me before. I was hoping to come across something like it in the cheerio docs but I never did, hence the regex on steroids.
It's a good find though, thank you! It didn't even occur to me to check npm.

I have used parts of the suggestion made regarding the meta-og-scrape package and removed the crazy long regex pattern. Makes for much easier to read code now.
Included the returned image source with the article object if it exists and provided a default of our great logo if it doesn't exist.
sorted out the bug with the single-source endpoints so closes #74 also

Thing to note
I am only returning the og:image of the parent site, not the individual article, so it's just a logo really. Ideally we'd return the image from the individual article itself


Changes week 3

This pull request contains exercise 1 of week 2 and all exercises of week 3 solved in my own way. I hope it helps :)

LGTM!


Cleaned up example code and description of CkReduction::set in manual

Original author: Nicolas Bock
Original issue: https://charm.cs.illinois.edu/redmine/issues/282

The existing description and example are missing some vital information (at least for me). The example was incorrect, the CkReduction::data field is private, and can't be accessed directly. I have added example code for the reduction method and also for the reductiontarget method.

Original author: Nicolas Bock
Original date: 2013-08-29 18:13:12

Small fix of language. I have attached a slightly modified patch.

Original author: Nicolas Bock
Original date: 2013-08-29 18:14:55

Sorry, attached the wrong file.

Original author: Nicolas Bock
Original date: 2013-08-29 18:19:13

OMG, I should really be more careful before I attach anything. Fixed the curly braces in the tex file.

Original date: 2013-08-30 18:01:03

Patch revised and incorporated. Thanks!


Design System > Component >enhancement of the alert popup and in otp input

enhancement of the alert popup and in otp input

Check OTP Verification alignment issue.

Fixed on staging


Avoid int underflow in BLEWriter::write_value()

This fixes a panic if write_value() is called on a closed connection. See #90.
Not sure if BLE_HS_ENOTCONN is the best error code to use for such a situation, though.

The ble_gattc_write_no_rsp_flat function (used after ble_att_mtu) returns BLE_HS_ENOTCONN when unconnected.
Therefore, I belive that BLE_HS_ENOTCONN is the best error code.


Allow user-customizable source baseUrl

Describe your suggested feature
Ability to remap base url would be nice for extensions like komga where the base url might change based on what network you are on.
Also from original:
It would be nice, if user could view/add/remove mirrors (mirror-links) for extensions. This will increase availability in case if some extensions' sites are blocked.
Other details
Usage example:
Resource https://exam.ple is blocked (tachiyomi shows java.net.SocketException: Connection reset)
Go to 'Browse -> Extensions -> unavailable_ext'
See the list of links (only basic link now)
Add mirror resource https://example.mirror.com to the list
Check switch-button of available resource (mirror) in the list
Use this link to download manga

~Reference: https://github.com/tachiyomiorg/tachiyomi/issues/9928~
Reference: http://web.archive.org/web/20240130121643/https://git.mihon.dev/tachiyomi/tachiyomi/issues/9928
Acknowledgements

[X] I have searched the existing issues and this is a new ticket, NOT a duplicate or related to another open or closed issue.
[X] I have written a short but informative title.
[X] If this is an issue with an official extension, I should be opening an issue in the extensions repository.
[X] I have updated the app to version 0.16.1.
[X] I will fill out all of the requested information in this form.

I suggest the same thing and this idea will be so useful to URL change reports, and other report regarding to website errors.


TS-4861: Turn ECONNRESET into an end-of-file.

If you do traffic_ctl server restart, then traffic_manager is getting
an ECONNRESET error on the management socket after traffic_server
exits. traffic_manager takes this as a fatal error and exits too.
The fix is to turn ECONNRESET into an EOF (0) return from
mgmt_read_pipe() so that traffic_manager correctly sees that
traffic_server has gone away.

FreeBSD build successful! See https://ci.trafficserver.apache.org/job/Github-FreeBSD/796/ for details.

Linux build successful! See https://ci.trafficserver.apache.org/job/Github-Linux/692/ for details.

FreeBSD build successful! See https://ci.trafficserver.apache.org/job/Github-FreeBSD/797/ for details.

Linux build successful! See https://ci.trafficserver.apache.org/job/Github-Linux/693/ for details.

FreeBSD build successful! See https://ci.trafficserver.apache.org/job/Github-FreeBSD/798/ for details.

Please test on docs, cursory code review looks good.
:+1:

This is running on docs on top of latest master.

👍 - Looks good


Export/Import doesn't transfer Preview Lines setting

Checklist

[X] I have used the search function to see if someone else has already submitted the same bug report.
[X] I will describe the problem with as much detail as possible.

App version
6.603
Where did you get the app from?
Google Play
Android version
12
Device model
Moto Play 2023
Steps to reproduce
I was transferring to a new phone.

Export settings on old phone.
Copy file to new phone.
Import settings.
Enter passwords
Look at Unified Inbox. Old phone showed 1 line of preview, New shows 2.

Expected behavior
The Preview lines from the old phone should have moved to the new.
This is obviously an incredibly trivial issue.
Actual behavior
It used the default value of 2 lines for preview.
Logs
No response

This is fixed and available in our beta version: 6.711
If you are interested, you could become a tester to get an early look at new versions.


Update C API to allow user to enable caching of feeds and fetches info across calls to Run

Add ability to enable caching to the C API, and update the internals to pass the feed names and MLValue instances in vectors so the order is deterministic (so cache entry matching works as expected).

LGTM 👍

As an aside, I'm wondering if we've to have a new function for every single option we introduce. Well known APIs like setsockopt, curl_easy_opt do it differently. You've only one API to set the options and just use an enum for the various options.