entry point detection (crude)

Codecov Report

Merging #471 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master     #471   +/-   ##
=======================================
  Coverage   70.07%   70.07%
=======================================
  Files          42       42
  Lines       13706    13706
=======================================
  Hits         9604     9604
  Misses       4102     4102

Continue to review full report at Codecov.

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


Add analyzers to WsTrust Assembly

Add  "Microsoft.CodeAnalysis.FxCopAnalyzers" and fix issues.

fixed: https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/commit/6e5fb12bdc5f0fe225499f098f0e627d4c563831


How to use Logger

Hey there,
first thanks for the great library!
We're using https://github.com/robertcepa/toucan-js to log to sentry. Sadly we need the FetchEvent or at least the request + waitUntil to use it. Did you plan on expose these or add a Logger plugin?
Also could it be instantiated as a composed Handler? In a vanilla worker you would instantiate it before you go for a route to keep the code dry.
Thanks
Alex

The extend method on each request is an alias for event.waitUntil
Maybe this will do?
// inside a route handler
const sentry = new Toucan({
    dsn: "dsn...",
    // remap req.extend back to event.waitUntil
    event: { waitUntil: req.extend },
    allowedHeaders: ["user-agent"],
    allowedSearchParams: /(.*)/,
  });

Yeah, something like that! Haven't had a chance to play with Toucan myself yet, but a quick look at the source makes it seem like this might be necessary:
// inside a route handler
new Toucan({
  event: {
    request: req,
    waitUntil: req.extend
  },
  // ...
});

Note: not tested

The major problem is that the request object itself is not available on worktop. I've tried already to use the extend method as event.waitUntil but the request ist still needed.
Creating a new logger in every handler seams not as a good solution, that's why I'd build a prepare function like you have done with the CORS. This prepare function could set the logger as a property of the request. Just would have to cast the Request (ideally the type would get adjusted by the prepare function)

but the request ist still needed.

Did you see my snippet, with the request added?

Creating a new logger in every handler seams not as a good solution

Judging by the toucan readme, that's the only way to use toucan.

Did you see my snippet, with the request added?

Yes but the req is the worktop ServerRequest here isn't it? I think the raw request of the FetchEvent is nor accessible in a worktop route handler.

Yes, but as mentioned, it should have all the properties that toucan is looking for. If it doesn't, then I'll mark this as a duplicate of #52

Has anyone got this to work? I am still having an issue with the responseContent not being defined.

As of #83, which is currently shipped as worktop@next, this can be achieved natively using Toucan's Module (.mjs) Documentation.
A worktop + Toucan example, using the Module Worker format would look like this:
import { Router } from 'worktop';
import { reply } from 'worktop/modules';
import Toucan from 'toucan-js';

const API = new Router;

API.prepare = function (req, context) {
  context.sentry = new Toucan({
    dsn: 'dsn...',
    context: context,
    request: req,
    allowedHeaders: ['user-agent'],
    allowedSearchParams: /(.*)/,
  });
}

API.onerror = function (req, context) {
  if (context.error) {
    context.sentry.captureException(context.error);
  }
  return new Response('Oops', {
    status: context.status || 500
  });
};

API.add('GET', '/users/:id', async (req, context) => {
  // ...
});

export default reply(API.run);

Note: This snippet relies on the current worktop@next release.

Hope that helps~!


chore: release 1.3.0

:robot: I have created a release *beep* *boop*
1.3.0 (2019-09-06)
Features

load protos from JSON, grpc-fallback support (86df420)

This PR was generated with Release Please.

Release is at https://github.com/googleapis/nodejs-bigquery-data-transfer/releases/tag/v1.3.0

The release build has started, the log can be viewed here. :sunflower:

:egg: You hatched a release! The release build finished successfully! :purple_heart:


Get versions

Continuation of #23 , needs that one to be merged first

Ok, I've marked this ready now that #23 is in master.
Unfortunately the diff from #23 is still showing but if I close and re-open we lose the discussion :/

Ah, there might be a workaround: https://stackoverflow.com/a/26986320/1444152

This is fantastic progress!


[BUG] - Table Data Render

NextUI Version
2.4.6
Describe the bug
Basically I am having a problem when updating the information inside the table, passing the information through the props.
The problem is when inside the TableBody using the prop items={data} the problem occurs, but when you render the information using a .map the problem doesn't happen.
This video shows when i am using the items props to render the data that comes from props
https://github.com/user-attachments/assets/6ae3f1b8-64d9-43fd-a23d-d19d3b49b659
This video is when i am rendering the info using a map of the info
https://github.com/user-attachments/assets/57d8e864-fcc4-4c9f-9119-597ce5f01c3a
Please let me know if you need more info.
Your Example Website or App
No response
Steps to Reproduce the Bug or Issue

Create the child component ProductList.tsx

import { Button, Table, TableBody, TableCell, TableColumn, TableHeader, TableRow, Tooltip } from '@nextui-org/react';
import React from 'react';

type Props = {
  onChange: (product: any) => void;
  products: any[];
  total: number;
  view: boolean;
};

const columns = [
  { label: 'Product ID', key: 'product_id' },
  { label: 'Name', key: 'product_name' },
  { label: 'Unit', key: 'unit' },
  { label: 'Unit price', key: 'unit_price' },
  { label: 'Quantity', key: 'quantity' },
  { label: 'Subtotal', key: 'subTotal' },
  { label: 'Actions', key: 'actions' },
];

const ProductList = ({ products, onChange }: Props) => {

  const renderCell = React.useCallback((product: any, columnKey: React.Key) => {
    const cellValue = product[columnKey as keyof any];

    switch (columnKey) {
      case "actions":
        return <Button onClick={() => onChange(product)}>Delete</Button>
      default:
        return cellValue;
    }

  }, [products])

  return (

    <TableHeader columns={columns}>
      {(column) => (
        <TableColumn key={column.key}> {column.label} </TableColumn>
      )}
    </TableHeader>
    <TableBody items={products}>
      {(item) => (
        <TableRow key={item.product_id}>
          {(columnKey) => <TableCell>{renderCell(item, columnKey)}</TableCell>}
        </TableRow>
      )}
    </TableBody>
    {/* <TableBody>
      {
        products.map((product) =>
          <TableRow key={product.product_id}>
            {(columnKey) => <TableCell>{renderCell(product, columnKey)}</TableCell>}
          </TableRow>
        )
      }
    </TableBody> -> THIS ONE WORKS OK PLEASE UNCOMMENT*/}

  );
};

export default ProductList;

Create the parent component (With fake data)

'use client';
import ProductList from '@/components/global/ProductList'; // PLEASE UPDATE THE PATH
import React from 'react';

const Page = () => {
    const [products, setProducts] = React.useState<any>([
        {
            product_id: '1',
            product_name: 'Water',
            unit: 'ml',
            unit_id: '123',
            quantity: '2',
            unit_price: '30.50',
            subTotal: 70,
        },
        {
            product_id: '2',
            product_name: 'Banana',
            unit: 'gram',
            unit_id: '41231',
            quantity: '1',
            unit_price: '0.50',
            subTotal: 0.50,
        },
        {
            product_id: '3',
            product_name: 'Milk',
            unit: 'ml',
            unit_id: 'XXX',
            quantity: '1',
            unit_price: '30.50',
            subTotal: 30.50,
        },
        {
            product_id: '4',
            product_name: 'Water',
            unit: 'ml',
            unit_id: 'XXX',
            quantity: '2',
            unit_price: '30.50',
            subTotal: 70,
        },
        {
            product_id: '5',
            product_name: 'Banana',
            unit: 'gram',
            unit_id: 'XXXXX',
            quantity: '1',
            unit_price: '0.50',
            subTotal: 0.50,
        },
        {
            product_id: '6',
            product_name: 'Milk',
            unit: 'ml',
            unit_id: 'XXX',
            quantity: '1',
            unit_price: '30.50',
            subTotal: 30.50,
        },
    ]);
    const [total, setTotal] = React.useState(0);
    const handleOnDeleteProduct = (deletedProduct: any) => {
        setProducts(products.filter((p: any) => p.product_id !== deletedProduct.product_id));
        setTotal(total - deletedProduct.subTotal);
    };
    return (

            <ProductList
                products={products}
                total={total}
                view={false}
                onChange={handleOnDeleteProduct}
            />

    );
};

export default Page;

Try uncommenting the block of the child component (Highlighted in step 1 and you'll see the bug.)

Expected behavior
As a user i expect to just render the info that i pass to the table.
Screenshots or Videos
No response
Operating System Version
macOS
Browser
Chrome

@DanielReyes03  I have debugged your issue. There are two imp things (upper two) to understand here

correct dependency use of useCallback hook.  you have used products as dependency which re-renders the whole table every time handleDeleteChange is called, refreshing the products  value, hence the only the pressed item was being deleted only. So replace that with onChange itself
Return the filtered products list: In your handleOnDeleteProduct function, ensure you return the new products list when updating the state.
Check for empty state: Ensure that the products state is always an array, even if it's empty.

So after making correct changes your code should be like this
import React, {useCallback} from "react";

type Props = {
  onChange: (product: any) => void;
  products: any[];
  total: number;
  view: boolean;
};

const cols = [
  {label: "Product ID", key: "product_id"},
  {label: "Name", key: "product_name"},
  {label: "Unit", key: "unit"},
  {label: "Unit price", key: "unit_price"},
  {label: "Quantity", key: "quantity"},
  {label: "Subtotal", key: "subTotal"},
  {label: "Actions", key: "actions"},
];

const ProductList = ({products, onChange}: Props) => {
  const renderCell = React.useCallback(
    (product: any, columnKey: React.Key) => {
      const cellValue = product[columnKey as keyof any];

      switch (columnKey) {
        case "actions":
          return <Button onClick={() => onChange(product)}>Delete</Button>;
        default:
          return cellValue;
      }
    },
    [onChange],  // Corrected the dependency array
  );

  return (

        <TableHeader columns={cols}>
          {(column) => <TableColumn key={column.key}> {column.label} </TableColumn>}
        </TableHeader>
        <TableBody items={products}>
          {(item) => (
            <TableRow key={item.product_id}>
              {(columnKey) => <TableCell>{renderCell(item, columnKey)}</TableCell>}
            </TableRow>
          )}
        </TableBody>
        {/* <TableBody>
        {products.map((product) => (
          <TableRow key={product.product_id}>
            {(columnKey) => <TableCell>{renderCell(product, columnKey)}</TableCell>}
          </TableRow>
        ))}
      </TableBody> */}

  );
};

const Page = () => {
  const [products, setProducts] = React.useState<any>([
    {
      product_id: "1",
      product_name: "Water",
      unit: "ml",
      unit_id: "123",
      quantity: "2",
      unit_price: "30.50",
      subTotal: 70,
    },
    {
      product_id: "2",
      product_name: "Banana",
      unit: "gram",
      unit_id: "41231",
      quantity: "1",
      unit_price: "0.50",
      subTotal: 0.5,
    },
    {
      product_id: "3",
      product_name: "Milk",
      unit: "ml",
      unit_id: "XXX",
      quantity: "1",
      unit_price: "30.50",
      subTotal: 30.5,
    },
    {
      product_id: "4",
      product_name: "Water",
      unit: "ml",
      unit_id: "XXX",
      quantity: "2",
      unit_price: "30.50",
      subTotal: 70,
    },
    {
      product_id: "5",
      product_name: "Banana",
      unit: "gram",
      unit_id: "XXXXX",
      quantity: "1",
      unit_price: "0.50",
      subTotal: 0.5,
    },
    {
      product_id: "6",
      product_name: "Milk",
      unit: "ml",
      unit_id: "XXX",
      quantity: "1",
      unit_price: "30.50",
      subTotal: 30.5,
    },
  ]);
  const [total, setTotal] = React.useState(0);
  const handleOnDeleteProduct = (deletedProduct: any) => {
    setProducts((prevProducts) => {
      const newProducts = prevProducts.filter((p) => p.product_id !== deletedProduct.product_id);

      if (newProducts.length === 0) {
        console.log("No more products");
      }

      return newProducts; // Ensure to return the new products array
    });
    setTotal((prevTotal) => prevTotal - deletedProduct.subTotal);
  };

  return (

      <ProductList
        products={products}
        total={total}
        view={false}
        onChange={handleOnDeleteProduct}
      />

Total: {total}

      {products.map((product) => (

{product.product_name}

      ))}

  );
};

There are some difference from your original code but you can adjust them very easily :)

If you find this solution helpful and your issue was resolved, kindly close the issue. Have a nice coding :)

It works perfectly, @abhinandan-verma  thanks for the explanation. Happy coding 🚀

It works perfectly, @abhinandan-verma thanks for the explanation. Happy coding 🚀


Support streams

Would you be open to allowing input to be a stream?
In an Electron app, I have a little save-url module that looks like this:
const fs = require('fs');
const path = require('path');
const got = require('got');
const tempfile = require('tempfile');

const saveUrl = (urlStr) => {
    const filePath = tempfile(path.extname(urlStr));

    return new Promise((resolve, reject) => {
        got.stream(urlStr)
            .pipe(fs.createWriteStream(filePath))
            .on('error', reject)
            .on('finish', () => {
                resolve(filePath);
            });
    });
};

I based this on some very similar code from you in wallpaper-cli.
Both of these would benefit if temp-write supported taking a stream as input.
In my case, my module would be reduced to:
const path = require('path');
const got = require('got');
const tempWrite = require('temp-write');

const saveUrl = (urlStr) => {
    return tempWrite(got.stream(urlStr), path.basename(urlStr));
};

Great idea. Pull request welcome ;)


Different view on browser

Great product here and thank you so much for giving it for free.
I just want to raise an issue I noticed while using it for the first time today. I totally depended on the atom-html-preview but when my code was opened on a browser, I couldn't believe my eyes

I couldn't believe my eyes

LOL


Add gradle support

Add gradle/maven support for faster include in projects

its coming they say . coming so very soon :p

Add more custom attributes

Gradle Support is now present in version 1.1 check the readme

I'm getting:
Error:(40, 13) Failed to resolve: com.borax12.materialdaterangepicker:library:1.1

build.gradle:

repositories {
    jcenter()
    maven { url "https://clojars.org/repo/" }
}
dependencies {
    ...
    compile 'com.borax12.materialdaterangepicker:library:1.1'
}

Is the namespace incorrect?
Earlier it told me something about erroneous metadata (and something about it found "material-datetime-picker" instead of "library" - but putting the former didn't work either).

Hey - issue is fixed - write this as the group id and artificact id - compile 'com.borax12.materialdaterangepicker:library:1.2'

Thanks, Gradle inclusion works perfectly now!
Thank you for the very swift reply and for making this library.


improve xcm types

@eldargab I guess the only problem with types was typos in V2, thay you already have fixed in prev commits. I added Versioned* types to index.ts and prefixed all other types with Xcm.
How can I generate interfaces?

@belopash , to generate interfaces run
node ops/xcm-typegen/lib/main.js


translation: fixing one missing line

Fix for https://github.com/carlosperate/ardublockly/pull/85
Signed-off-by: Thibaut VIARD<EMAIL_ADDRESS>

Thanks @aethaniel !


Edge cluster agent installation on IBM Kubernetes Service (IKS) cluster

What is the current documentation state?
There are no instructions how to install an Open Horizon / IEAM edge cluster agent on an IBM Kubernetes Service (IKS) cluster.  Also , there are no instructions how to install an Open Horizon edge cluster agent on a MicroShift cluster.
I reviewed the following edge cluster install documentation pages.  They list steps to install an Open Horizon edge cluster agent on OCP, microk8s, k3s.

https://www.ibm.com/docs/en/eam/4.3?topic=clusters-installing-agent#install_kube
https://open-horizon.github.io/docs/installing/edge_cluster_agent.html

@SanjeevKGupta wrote up install steps on IKS and Microshift.  This ticket will track the documentation update.
Also, Tom Vivano suggested some clarification on how to log into a OCP cluster in IBM Cloud using
oc login --token=<token> --server=https://<api_endpoint_host>:<port>

With the addition of IKS and Microshift to this page, there will be 5 different techniques for installing the edge cluster agent. This particular page is getting unwieldy.  @Rene-Ch1  would you suggest that we split it into an overview page and then 5 separate documents?


Cmake can't build project.

I want to run this demo project in my wsl vm.
But after I ran "sudo yarn build" I got some error message below.
@rapidsai/core: =====================================================
@rapidsai/core: PARALLEL_LEVEL=4
@rapidsai/core: =====================================================
@rapidsai/core: info TOOL Using g++ compiler, because preferGnu option is set, and g++ is available.
@rapidsai/core: info TOOL Using Unix Makefiles generator.
@rapidsai/core: info CMD CONFIGURE
@rapidsai/core: info RUN cmake "/home/ann/node/modules/core" --no-warn-unused-cli -G"Unix Makefiles" -DCMAKE_JS_VERSION="6.0.0" -DCMAKE_BUILD_TYPE="Release" -DCMAKE_LIBRARY_OUTPUT_DIRECTORY="/home/ann/node/modules/core/build/Release/Release" -DCMAKE_JS_INC="/home/ann/node/modules/core/.cmake-js/node-x64/v16.17.0/include/node;/home/ann/node/node_modules/nan" -DCMAKE_JS_SRC="" -DNODE_RUNTIME="node" -DNODE_RUNTIMEVERSION="16.17.0" -DNODE_ARCH="x64" -DCMAKE_LIBRARY_OUTPUT_DIRECTORY="/home/ann/node/modules/core/build/Release" -DCMAKE_CXX_COMPILER="g++" -DCMAKE_C_COMPILER="gcc"
@rapidsai/core: info CMD BUILD
@rapidsai/core: info RUN cmake --build "/home/ann/node/modules/core/build/Release" --config Release
@rapidsai/core: make[3]: warning: -j4 forced in submake: resetting jobserver mode.
@rapidsai/core: make[3]: *** No rule to make target 'rapidsai_core.node'.  Stop.
@rapidsai/core: make[2]: *** [CMakeFiles/rapidsai_core_60.dir/build.make:71: CMakeFiles/rapidsai_core_60] Error 2
@rapidsai/core: make[1]: *** [CMakeFiles/Makefile2:162: CMakeFiles/rapidsai_core_60.dir/all] Error 2
@rapidsai/core: make: *** [Makefile:156: all] Error 2
@rapidsai/core: ERR! OMG Process terminated: 2
@rapidsai/core: [
@rapidsai/core:   '/usr/bin/node',
@rapidsai/core:   '/home/ann/node/modules/core/node_modules/.bin/cmake-js',
@rapidsai/core:   'build',
@rapidsai/core:   '-g',
@rapidsai/core:   '-O',
@rapidsai/core:   'build/Release',
@rapidsai/core:   '--CDCMAKE_LIBRARY_OUTPUT_DIRECTORY=/home/ann/node/modules/core/build/Release'
@rapidsai/core: ]
@rapidsai/core: Not searching for unused variables given on the command line.
@rapidsai/core: -- The C compiler identification is GNU 9.4.0
@rapidsai/core: -- The CXX compiler identification is GNU 9.4.0
@rapidsai/core: -- Detecting C compiler ABI info
@rapidsai/core: -- Detecting C compiler ABI info - done
@rapidsai/core: -- Check for working C compiler: /usr/bin/gcc - skipped
@rapidsai/core: -- Detecting C compile features
@rapidsai/core: -- Detecting C compile features - done
@rapidsai/core: -- Detecting CXX compiler ABI info
@rapidsai/core: -- Detecting CXX compiler ABI info - done
@rapidsai/core: -- Check for working CXX compiler: /usr/bin/g++ - skipped
@rapidsai/core: -- Detecting CXX compile features
@rapidsai/core: -- Detecting CXX compile features - done
@rapidsai/core: -- RAPIDS core include: /home/ann/node/modules/core/include
@rapidsai/core: -- Enabling the GLIBCXX11 ABI
@rapidsai/core: -- Using GPU architectures from CUDAARCHS env var: 60-real;70-real;75-real;80-real;86
@rapidsai/core: -- Found CUDAToolkit: /usr/local/cuda/include (found version "11.7.99")
@rapidsai/core: -- Looking for pthread.h
@rapidsai/core: -- Looking for pthread.h - found
@rapidsai/core: -- Performing Test CMAKE_HAVE_LIBC_PTHREAD
@rapidsai/core: -- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
@rapidsai/core: -- Looking for pthread_create in pthreads
@rapidsai/core: -- Looking for pthread_create in pthreads - not found
@rapidsai/core: -- Looking for pthread_create in pthread
@rapidsai/core: -- Looking for pthread_create in pthread - found
@rapidsai/core: -- Found Threads: TRUE
@rapidsai/core: -- BUILD_FOR_DETECTED_ARCHS: FALSE
@rapidsai/core: -- BUILD_FOR_ALL_CUDA_ARCHS: FALSE
@rapidsai/core: -- CMAKE_CUDA_ARCHITECTURES: 60-real;70-real;75-real;80-real;86
@rapidsai/core: -- The CUDA compiler identification is NVIDIA 11.7.99
@rapidsai/core: -- Detecting CUDA compiler ABI info
@rapidsai/core: -- Detecting CUDA compiler ABI info - done
@rapidsai/core: -- Check for working CUDA compiler: /usr/local/cuda/bin/nvcc - skipped
@rapidsai/core: -- Detecting CUDA compile features
@rapidsai/core: -- Detecting CUDA compile features - done
@rapidsai/core: -- CMAKE_JS_INC: /home/ann/node/modules/core/.cmake-js/node-x64/v16.17.0/include/node;/home/ann/node/node_modules/nan
@rapidsai/core: -- NAPI_INCLUDE_DIR: /home/ann/node/modules/core/node_modules/node-addon-api
@rapidsai/core: -- NAPI_INCLUDE_DIRS: /home/ann/node/modules/core/.cmake-js/node-x64/v16.17.0/include/node;/home/ann/node/node_modules/nan;/home/ann/node/modules/core/node_modules/node-addon-api
@rapidsai/core: -- NODE_RAPIDS_CMAKE_C_FLAGS: -D__linux__;-DNAPI_EXPERIMENTAL;-DNAPI_CPP_EXCEPTIONS;-DNODE_ADDON_API_DISABLE_DEPRECATED
@rapidsai/core: -- NODE_RAPIDS_CMAKE_CXX_FLAGS: -Wall;-Werror;-Wno-unknown-pragmas;-Wno-error=deprecated-declarations;-D__linux__;-DNAPI_EXPERIMENTAL;-DNAPI_CPP_EXCEPTIONS;-DNODE_ADDON_API_DISABLE_DEPRECATED
@rapidsai/core: -- NODE_RAPIDS_CMAKE_CUDA_FLAGS: -D__linux__;-Werror=cross-execution-space-call;--expt-extended-lambda;--expt-relaxed-constexpr;-Xcompiler=-Wall,-Werror,-Wno-error=deprecated-declarations;-DNAPI_EXPERIMENTAL;-DNAPI_CPP_EXCEPTIONS;-DNODE_ADDON_API_DISABLE_DEPRECATED
@rapidsai/core: -- get_cpm: Using CPM source cache: /home/ann/node/.cache/source
@rapidsai/core: -- get_cpm: Using CPM BINARY cache: /home/ann/node/.cache/binary/Release
@rapidsai/core: -- get_cpm: Using CMake FetchContent base dir: /home/ann/node/.cache/binary/Release
@rapidsai/core: -- Configuring done
@rapidsai/core: -- Generating done
@rapidsai/core: -- Build files have been written to: /home/ann/node/modules/core/build/Release
@rapidsai/core: [ 50%] Building CXX object CMakeFiles/rapidsai_core.dir/src/addon.cpp.o
@rapidsai/core: [100%] Linking CXX shared library rapidsai_core.node
@rapidsai/core: [100%] Built target rapidsai_core
@rapidsai/core: real    0m5.932s
@rapidsai/core: user    0m4.595s
@rapidsai/core: sys     0m0.561s
lerna ERR! yarn run build exited 1 in '@rapidsai/core'
lerna WARN complete Waiting for 1 child process to exit. CTRL-C to exit immediately.

Can some one help me to solve this problem?
Ubuntu 20.04 (WSL 2)
Node v16.17.0
npm v8.15.0
yarn v1.22.19
cmake v3.21.7

Hey @LiaoAnn, if building the modules is not a priority, I'd recommend trying out installing via npm. @trxcllnt recently published npm packages for all the node-rapids modules.
You can find them here: https://www.npmjs.com/search?q=%40rapidsai

Hey @LiaoAnn, if building the modules is not a priority, I'd recommend trying out installing via npm. @trxcllnt recently published npm packages for all the node-rapids modules.
You can find them here: https://www.npmjs.com/search?q=%40rapidsai

So after I install those package in root directory and run "sudo yarn demo", it will run successfully?

@LiaoAnn It looks like you're using make, which I honestly haven't tested. We use ninja in our images, so it's possible I'm generating a rule that make runs in a different order than ninja. I'd try installing ninja-build and seeing if that works.
You shouldn't need to use sudo for any of the commands in the repo, and that could actually be messing things up. The root user doesn't always have the same things on the path. And lastly, you can try yarn rebuild instead of yarn build, as the former will clean the build dir before configuring CMake.
But generally yes, as @AjayThorve mentioned, unless you're doing development (in which case I recommend using our docker images and not building on bare metal) installing the packages from npm will likely be faster in most cases.

@LiaoAnn It looks like you're using make, which I honestly haven't tested. We use ninja in our images, so it's possible I'm generating a rule that make runs in a different order than ninja. I'd try installing ninja-build and seeing if that works.
You shouldn't need to use sudo for any of the commands in the repo, and that could actually be messing things up. The root user doesn't always have the same things on the path. And lastly, you can try yarn rebuild instead of yarn build, as the former will clean the build dir before configuring CMake.
But generally yes, as @AjayThorve mentioned, unless you're doing development (in which case I recommend using our docker images and not building on bare metal) installing the packages from npm will likely be faster in most cases.

Actually I have download and run your docker image. But I don't know how to use than image to demonstration.

If you just want to run the demos, you can use the runtime images (full details in USAGE.md):
docker run --rm \
    --runtime=nvidia \
    -e "DISPLAY=$DISPLAY" \
    -v "/etc/fonts:/etc/fonts:ro" \
    -v "/tmp/.X11-unix:/tmp/.X11-unix:rw" \
    -v "/usr/share/fonts:/usr/share/fonts:ro" \
    -v "/usr/share/icons:/usr/share/icons:ro" \
    ghcr.io/rapidsai/node:22.8.0-runtime-node16.15.1-cuda11-ubuntu20.04-demo \
    npx @rapidsai/demo-graph

But running this, it looks like we currently have a broken image! I'll make a PR and rebuild these here shortly.

If you just want to run the demos, you can use the runtime images (full details in USAGE.md):
docker run --rm \
    --runtime=nvidia \
    -e "DISPLAY=$DISPLAY" \
    -v "/etc/fonts:/etc/fonts:ro" \
    -v "/tmp/.X11-unix:/tmp/.X11-unix:rw" \
    -v "/usr/share/fonts:/usr/share/fonts:ro" \
    -v "/usr/share/icons:/usr/share/icons:ro" \
    ghcr.io/rapidsai/node:22.8.0-runtime-node16.15.1-cuda11-ubuntu20.04-demo \
    npx @rapidsai/demo-graph

But running this, it looks like we currently have a broken image! I'll make a PR and rebuild these here shortly.

Wow thanks!
But if I want to develop with rapidsai/node, what should I do?

But if I want to develop with rapidsai/node, what should I do?

Do you mean use the libraries in your code, or develop on the rapidsai/node libraries themselves?
If the former, you can list the modules in your package.json "dependencies" list and run yarn:
{
  "dependencies": {
    "@rapidsai/cudf": "~22.6.2"
  }
}

If the later, it should be enough to clone the repo and follow these instructions:
git clone https://github.com/rapidsai/node.git

# Make a local .env file of envvar overrides for the container
cp .env.sample .env
# Modify the .env file to match your system's parameters
nano .env

# build the development container locally
yarn docker:build:devel:main

# Start the main development container
yarn docker:run:devel

# Inside the development container, run these to build everything:
yarn
yarn rebuild
# or optionally, to build a project individually:
yarn workspace @rapidsai/core rebuild

# note for building projects individually -- the projects depend on each other,
# so you must build the projects in the correct order. The top-level `yarn rebuild` does
# this automatically, or you can get the dependency order from lerna via:
# yarn lerna exec --scope "@rapidsai/*" 'echo $LERNA_PACKAGE_NAME' | grep -v demo

@LiaoAnn The runtime images are rebuilding now, which I've verified locally will fix the above docker run command. After this I'll publish new 22.8.0 packages to npm.

@LiaoAnn The runtime images are rebuilding now, which I've verified locally will fix the above docker run command. After this I'll publish new 22.8.0 packages to npm.

But after I ran
REPO=ghcr.io/rapidsai/node
VERSIONS="22.8.0-runtime-node16.15.1-cuda11-ubuntu20.04"
docker run --rm --gpus=0 $REPO:$VERSIONS-cudf \
   -p "const {Series, DataFrame} = require('@rapidsai/cudf');\
       new DataFrame({ a: Series.new([0, 1, 2]) }).toString()"

in my wsl vm, I got some error message below.
Error: Fatal CUDA error encountered at: /opt/rapids/node/.cache/source/cudf/2011600dae8dfdcf9bcef6866b9bb6f542e62759/cpp/src/bitmask/null_mask.cu:94: 801 cudaErrorNotSupported operation not supported
    at Float64Series._castAsString (/home/node/node_modules/@rapidsai/cudf/build/js/series/float.js:27:52)
    at CastVisitor.visitUtf8 (/home/node/node_modules/@rapidsai/cudf/build/js/series.js:50:44)
    at CastVisitor.visit (/home/node/node_modules/apache-arrow/visitor.js:27:48)
    at Float64Series.cast (/home/node/node_modules/@rapidsai/cudf/build/js/series.js:166:54)
    at /home/node/node_modules/@rapidsai/cudf/build/js/data_frame.js:406:105
    at Array.reduce (<anonymous>)
    at DataFrame.castAll (/home/node/node_modules/@rapidsai/cudf/build/js/data_frame.js:406:41)
    at DataFrameFormatter._preprocess (/home/node/node_modules/@rapidsai/cudf/build/js/dataframe/print.js:68:20)
    at new DataFrameFormatter (/home/node/node_modules/@rapidsai/cudf/build/js/dataframe/print.js:40:24)
    at DataFrame.toString (/home/node/node_modules/@rapidsai/cudf/build/js/data_frame.js:232:37)
Thrown at:
    at _castAsString (/home/node/node_modules/@rapidsai/cudf/build/js/series/float.js:27:52)
    at visitUtf8 (/home/node/node_modules/@rapidsai/cudf/build/js/series.js:50:44)
    at visit (/home/node/node_modules/apache-arrow/visitor.js:27:48)
    at cast (/home/node/node_modules/@rapidsai/cudf/build/js/series.js:166:54)
    at /home/node/node_modules/@rapidsai/cudf/build/js/data_frame.js:406:105
    at castAll (/home/node/node_modules/@rapidsai/cudf/build/js/data_frame.js:406:41)
    at _preprocess (/home/node/node_modules/@rapidsai/cudf/build/js/dataframe/print.js:68:20)
    at DataFrameFormatter (/home/node/node_modules/@rapidsai/cudf/build/js/dataframe/print.js:40:24)
    at toString (/home/node/node_modules/@rapidsai/cudf/build/js/data_frame.js:232:37)
    at [eval]:1:107

What should I do to solve this problem?

@LiaoAnn what version of the CUDA driver and toolkit are you using, and what's your GPU?
It looks like that line is a simple cudaMemsetAsync() call, which sounds like a driver or docker/WSL2 problem?
Can you run a simpler smoke test, like this?
docker run --rm --gpus=0 \
  ghcr.io/rapidsai/node:22.8.0-runtime-node16.15.1-cuda11-ubuntu20.04-cudf \
  -p '(new (require("@rapidsai/cuda").Uint8Buffer)(8)).fill(1).toArray()'

# Should print:
# Uint8Array(8) [
#   1, 1, 1, 1,
#   1, 1, 1, 1
# ]

GPU: GTX 1060
I ran /usr/local/cuda/bin/nvcc --version and get result below.
Cuda compilation tools, release 11.7, V11.7.99
Build cuda_11.7.r11.7/compiler.31442593_0
I ran that test successfully, the result is same as yours.

I see in https://docs.nvidia.com/cuda/wsl-user-guide/index.html#wsl2-system-requirements it says this:

With the NVIDIA Container Toolkit for Docker 19.03, only --gpus all is supported.
On multi-GPU systems it is not possible to filter for specific GPU devices by using specific index numbers to enumerate GPUs.

Does it make a difference if you pass --gpus all instead of --gpus 0?

I see in https://docs.nvidia.com/cuda/wsl-user-guide/index.html#wsl2-system-requirements it says this:

With the NVIDIA Container Toolkit for Docker 19.03, only --gpus all is supported.
On multi-GPU systems it is not possible to filter for specific GPU devices by using specific index numbers to enumerate GPUs.

Does it make a difference if you pass --gpus all instead of --gpus 0?

The result is almost same.

Ah, actually I found this issue: https://github.com/rapidsai/cudf/issues/9427#issuecomment-975902493
It sounds like Pascal generation GPUs in WSL2 is not supported :disappointed: .

Okay. I'm looking forward to you guys fixing it.😀


Unit Test are Not working

I clone the project and ran the test Load a file which is not working

Hello @b4dw017,
Can you give bit more details on the steps you did to reproduce the issue?  If you were using the shell script provided in the /bin folder, it had an older version of the jar that does not work with the latest Postman collection format.  I just updated it to latest jar and should be compatible with Postman collection 2.1 format.

I just realized what you are referring to.  I've fixed the issue.

Hey sorry, for the late response what I'm talking about is that if I clone the project and run the included test, it fails due to not being able to find the file


balena-yocto-scripts: Update to v1.17.0

Update balena-yocto-scripts from v1.16.3 to v1.17.0
Change-type: patch
Changelog-entry: Update balena-yocto-scripts to v1.17.0
Signed-off-by: Alex Gonzalez<EMAIL_ADDRESS>

@resin-jenkins retest this please

@resin-jenkins retest this please

@balena-ci I self-certify!


Incompatible with C2me and VMP

When switching dimensions, after 60s the server crashes to a watchdog error. Now the dimension the player is in seems to run fine, but I assume the other dimension is completely locked up. Here is the logs, but it doesn’t seem to be of any use https://mclo.gs/WRalwD4
Also, I asked Ishland (the dev of these two mods) and he said this: “Yeah i make assumption that the server thread should do all the ticking logic. Task queue for specific world dont really exist except worldgen mainThreadExecutor”. If you want to talk to him directly, here’s their discord https://discord.gg/Kdy8NM5HW4
(Also, you were right when you said C2me is only mentioned when there is an issue 😆)

Hmm, it works for me.

1.19.4

Mod list

Yes, I went into the portal

I used to crash too, but it looks like after the update 10.41 or 10.51 now they work


Originate MTLS with egress gateway not working when client and server are signed by different CAs

Bug Description
The example desribed at https://istio.io/latest/docs/tasks/traffic-management/egress/egress-gateway-tls-origination/#perform-mutual-tls-origination-with-an-egress-gateway uses the same CA for the authenticating client and the server.
The documented example works fine as long as the client certificate and the server to which one connects to, has the same CA. But in real life that will seldom be the case.  If i try the setup with a client certificate that is not signed by the same CA as the server SSL certificate, the egress gateway logs
"TLS_error:_268435581:SSL_routines:OPENSSL_internal:CERTIFICATE_VERIFY_FAILED}"
In the latter case, I've used the the CA certificate belonging to the client certificate as the ca.crt in the secret provided to the destination rule ("originate-mtls-for-b2b-t") .
If I instead put in the CA certificate that belongs to the remote server, egress gateway logs
"TLS error:268436504:SSL routines:OPENSSL_internal:TLSV1_ALERT_UNKNOWN_CA".
So obviously, the secret "client-credential" in the example is meant to hold the CA certificate of the client, and not the server (?)
I also tried to concatenate both CA-certificates (CA certificates for server and client)  and put into the ca.crt in the "client-credential" secret, with no luck.
The setup is similar to the example in the Istio doc:
apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
  name: b2b-t.storebrand.no
  namespace: platform
spec:
  hosts:
  - b2b-t.storebrand.no
  ports:
  - number: 80
    name: http
    protocol: HTTP
  - number: 443
    name: https
    protocol: HTTPS
  resolution: DNS
---
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: istio-egressgateway
  namespace: platform
spec:
  selector:
    istio: egressgateway
  servers:
  - port:
      number: 443
      name: https
      protocol: HTTPS
    hosts:
    - b2b-t.storebrand.no
    tls:
      mode: ISTIO_MUTUAL
---
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: egressgateway-for-b2b-t
  namespace: platform
spec:
  host: istio-egressgateway.istio-system.svc.cluster.local
  subsets:
  - name: b2b-t
    trafficPolicy:
      loadBalancer:
        simple: ROUND_ROBIN
      portLevelSettings:
      - port:
          number: 443
        tls:
          mode: ISTIO_MUTUAL
          sni: b2b-t.storebrand.no
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: direct-b2b-t-through-egress-gateway
  namespace: platform
spec:
  hosts:
  - b2b-t.storebrand.no
  gateways:
  - istio-egressgateway
  - mesh
  http:
  - match:
    - gateways:
      - mesh
      port: 80
    route:
    - destination:
        host: istio-egressgateway.istio-system.svc.cluster.local
        subset: b2b-t
        port:
          number: 443
      weight: 100
  - match:
    - gateways:
      - istio-egressgateway
      port: 443
    route:
    - destination:
        host: b2b-t.storebrand.no
        port:
          number: 443
      weight: 100
---
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: originate-mtls-for-b2b-t
  namespace: platform
spec:
  host: b2b-t.storebrand.no
  trafficPolicy:
    loadBalancer:
      simple: ROUND_ROBIN
    portLevelSettings:
    - port:
        number: 443
      tls:
        mode: MUTUAL
        credentialName: client-credential
        sni: b2b-t.storebrand.no
        subjectAltNames:
        - b2b-t.storebrand.no

Where client-credential is created like:
kubectl create secret -n istio-system generic client-credential --from-file=tls.key=server.key.pem --from-file=tls.crt=chain.pem  --from-file=ca.crt=ca.cert.pem
Where:
server.key.pem is the private key of the client
chain.pem is the client certificate and its intermediate certificate
ca.cert.pem is the ca/root certificate corresponding to the intermediate certificate (of the client)
Thought maybe it was necessary to set "caCertificates" in the DestinationRule to validate the server side, but when credentilaName is set, "caCertificates" directive is not allowed.
Version
Istio version 1.13.2

Additional Information
No response

:+1: seeing the same behaviour when configuring the Istio egress gateway with mtls origination, where the server cert is signed by a public authority (let's encrypt for example) and the client cert is signed by a private CA, what is the right configuration for the credentialName setting? we assumed that not setting cacert key in the secret would default to the system cacerts, but is there a way to explicitly say to use the public certs? we're confident about the egress rerouting being correct as it looks right in envoy config and Kiali so we're pretty sure it's about loading the right TLS context on the leg between the egress gateway and external api, any pointers for debugging appreciated!

not stale

I've also seen this error show up a little differently as:
upstream connect error or disconnect/reset before headers. reset reason: connection failure, transport failure reason: TLS error: Secret is not supplied by SDS

istioctl pc secret istio-egressgateway-668b78544c-tn56t
RESOURCE NAME                             TYPE           STATUS      VALID CERT     SERIAL NUMBER                               NOT AFTER                NOT BEFORE
kubernetes://client-credential-cacert                    WARMING     false
default                                   Cert Chain     ACTIVE      true<PHONE_NUMBER>93821891402613658200886190431     2022-10-27T13:50:44Z     2022-10-26T13:48:44Z
kubernetes://client-credential            Cert Chain     ACTIVE      true<PHONE_NUMBER>62644692277260923097063584183     2023-01-24T13:00:33Z     2022-10-26T13:00:33Z
ROOTCA                                    CA             ACTIVE      true<PHONE_NUMBER>6463395674153699702860565713      2032-10-22T13:58:28Z     2022-10-25T13:58:28Z
seems like it's expecting a secret called client-credential-cacert, i will try and stick the let's encrypt root in there?

Seems to have gotten fixed as soon as i added the let's encrypt root to client-credential-cacert secret, this is baffling behaviour and definitely undocumented, for example the egress gateway secret config now looks like so:
istioctl pc secret istio-egressgateway-668b78544c-tn56t -n istio-system
RESOURCE NAME                             TYPE           STATUS     VALID CERT     SERIAL NUMBER                               NOT AFTER                NOT BEFORE
default                                   Cert Chain     ACTIVE     true<PHONE_NUMBER>93821891402613658200886190431     2022-10-27T13:50:44Z     2022-10-26T13:48:44Z
kubernetes://client-credential            Cert Chain     ACTIVE     true<PHONE_NUMBER>62644692277260923097063584183     2023-01-24T13:00:33Z     2022-10-26T13:00:33Z
kubernetes://client-credential-cacert     CA             ACTIVE     true<PHONE_NUMBER>69790476064670243504169061120     2035-06-04T11:04:38Z     2015-06-04T11:04:38Z
ROOTCA                                    CA             ACTIVE     true<PHONE_NUMBER>6463395674153699702860565713      2032-10-22T13:58:28Z     2022-10-25T13:58:28Z


Skype doesn't work unless manually excluded in advanced settings

@COOLak commented on Sun Aug 18 2019

Steps to reproduce

Open Skype with protection enabled
See that online statuses will not load for your contacts, you can't send/receive messages and can't update Skype.

Expected behavior
Everything works "out of the box".
Actual behavior
Everything works only after manually adding Skype's full path into Exceptions field in the Advanced Settings.
Your environment

Operating system and version: Windows 7, AdGuard 7.1.2898 nightly

@COOLak commented on Thu Aug 29 2019
Weird, nobody has taken on this. Couldn't you reproduce this issue?

@zzebrum commented on Fri Aug 30 2019
@COOLak sorry for late reply.
So far I can not confirm the problem on the latest AdGuard nightly and Skype <IP_ADDRESS> windows 7
Please, change the logging level to debug, reproduce the issue and send log files to devteam[at]adguard[dot]com

Не знаю как у других, у мня со статусами и сообщениями всё хорошо, не работает только обновление.

Added two packs of logs in NCloud

Короче на 7.2 всё то же самое...

Logs in NCloud

Ну что там с решением проблемы? Просто интересно уже, чем эпопея закончится, которая идёт больше года...

Skype is closing some of its TLS connections right after the handshake. Probably some sort of certificate pinning. Adding download.skype.com to HTTPS exclusions fixes the update issue. Other issues: can't reproduce.


withRovingTabindex as hook

After rewriting everything to hooks, it should be possible to use it without findDomNode easily.

Then, we can use it for EditorMenu as well. But wait for https://github.com/necolas/react-native-web/issues/1189 fix.

Viz code comment


update readme to make sample code working

the first example from readme file does not work out of box as there is implicit missing

Good catch ;-)


Update akka-stream to 2.6.11

Updates com.typesafe.akka:akka-stream from 2.6.9 to 2.6.11.
GitHub Release Notes - Version Diff
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

Ignore future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "com.typesafe.akka", artifactId = "akka-stream" } ]

labels: library-update, semver-patch

Superseded by #546.

Superseded by #546.


Missing 'Bufferutil' after browserify

Cannot find module 'bufferutil' from '../app-root/runtime/repo/node_modules/aria2/node_modules/ws/lib'
My site is giving this error after deployment

@Progyan1997 sorry for the late reply, how are you using aria2.js? (ie including it in your web app)


Extract pubkey crate

Problem
solana_program::pubkey can get its own crate once #2015 is merged
Summary of Changes

move pubkey.rs to its own crate and re-export in solana-program
move relevant syscall definitions to the new crate and re-export them in their old location
make the code requiring curve25519-dalek and sha2 optional (these are methods so they can't be moved to separate crates)
make bytemuck and serde optional
make std optional but enable it by default

For checking the feature powerset I've used cargo hack check --feature-powerset --exclude-features frozen-abi --all-targets and  cargo hack check --feature-powerset --exclude-features frozen-abi --all-targets --at-least-one-of 'std,'  --target wasm32-unknown-unknown

crate-check passed!


set a default selected item for the select component

I propose some changes to the useSelect hook to provide more flexibility:
1 - The hook can accept a defaultSelectedItem property, so it is not restricted to use null as the default value.
https://github.com/zakodium-oss/react-science/blob/ca1af0eb1d0d727f1c0b0b6712e5afd72044f62e/src/components/hooks/useSelect.tsx#L6
2- Additionally, you can specify which object serves as the label, instead of assuming that the label object is always used. This allows for more customization and avoids the need to remap the list.
https://github.com/zakodium-oss/react-science/blob/ca1af0eb1d0d727f1c0b0b6712e5afd72044f62e/src/components/hooks/useSelect.tsx#L26
https://github.com/zakodium-oss/react-science/blob/ca1af0eb1d0d727f1c0b0b6712e5afd72044f62e/src/components/hooks/useSelect.tsx#L26
https://github.com/zakodium-oss/react-science/blob/ca1af0eb1d0d727f1c0b0b6712e5afd72044f62e/src/components/hooks/useSelect.tsx#L49

The hook can accept a defaultSelectedItem property, so it is not restricted to use null as the default value.

SGTM

Additionally, you can specify which object serves as the label, instead of assuming that the label object is always used. This allows for more customization and avoids the need to remap the list.

I think that to allow this, the hook should be more generic and accept any type of shape for option. A custom render function can be passed which takes the option and can do any logic it wants on it.


Dots messing syntax highlight.

In this script I am getting that the ending ] is invalid. I have found out that it is because of the dots in xxx.definition.makeStack(i). Is it possible to have a fix?
If i put it all in one line, it still happens

From the looks it is the same issue as #1

I see, this is happening with vars?

Yep looks like it.

I'll see what I can do about it :D mind sharing that script or a snippet of it? Makes it easier to test against (also I'm lazy :p)

https://gist.github.com/JasonMcRay/15e29ca63206b6d75a51c18b8645f2df - Work in progress :)


refactor: client.css ⚒✨

Close #1383
Description

Refactor client.css styles to improve the codebase and improved the pagination styles

Checklist:

[x] I have linked the PR to the correct issue.
[x] I have read the Contribution Guidelines
[x] I have built and tested the changes, and they do not break or show any errors.

@Vaishnavi-Patil2211 your review is highly appreciated 🙌🏻


[i2c] Consolidate transaction boundary tracking in a bus monitor

Prepare for multi-controller functionality by creating a bus monitor that tracks transaction boundaries, detects Start and Stop symbols, and provides clock timeout functions. Move "bus free" detection to the bus monitor, and block the controller FSM from beginning transmissions unless the bus monitor gives the OK.
Add an optional SMBus bus timeout, which checks if SCL is held low for too long, and make it mux with the target stretch timeout, since it doesn't make much sense for them to both be active. In the general bus timeout case, it doesn't matter which entity is pulling SCL low. In the target stretch timeout case, the controller's contribution to SCL low time is ignored.
Add a control bit for selecting between single-controller and multi-controller monitoring mode. For the single-controller case, the bus monitor starts with the bus assumed to be free, and it only blocks the controller FSM from transmitting during the t_buf window after a Stop condition. For the multi-controller case, the bus monitor begins in a bus busy state, and the controller FSM must wait for at least the idle timeout (which must be set in HOST_TIMEOUT_CTRL) before it is allowed to transmit.
Remove the "SDA is low in Idle" check from the SDA interference interrupt. There are various single-controller scenarios where this may trigger uselessly, and it isn't compatible with multi-controller scenarios.
Finally, fix a couple miscellaneous issues for DV:

Eliminate ACQ_FIFO_NEXT_DATA from auto CSR checks (needs i2c traffic)
Prevent address matching when the mask is 0

I added a little tweak to reggen: For the C header output, it was skipping enums that were only one-bit wide, and I stopped that. I wanted those values in my header! :)

LGTM! Thanks for tweaking the docs, and fixing the reggen bug!

I'm going to merge this so it can get in for regressions. If there are fixups needed, we'll get them in the next PR.


[WIP] k3s: fix for update script

k3s: update script fixed
Changes:

Remove duplication of (I guess this is desirable?):

    "-X github.com/containerd/containerd/version.Version=${containerdVersion}"
    "-X github.com/containerd/containerd/version.Package=github.com/k3s-io/containerd"

Standardize on versions not having 'v', as Nix packages version are standardized to not have 'v'.

Pending:

Decide on a solution for collecting the second vendorSha256 hash.

A possible solution could be to make k3sServer into a discrete package in nixpkgs. And then collect the vendorSha256 from that. But as this is an internal package. It wouldn't be pretty. Ideas?

@euank

diff --git a/pkgs/applications/networking/cluster/k3s/update.sh b/pkgs/applications/networking/cluster/k3s/update.sh
index b9d774847d3..0231fd81ae9 100755
--- a/pkgs/applications/networking/cluster/k3s/update.sh
+++ b/pkgs/applications/networking/cluster/k3s/update.sh
@@ -65,7 +65,6 @@ setKV k3sVersion ${K3S_VERSION}
 setKV k3sCommit ${K3S_COMMIT}
 setKV k3sRepoSha256 ${K3S_REPO_SHA256}

-setKV k3sVendorSha256 "0000000000000000000000000000000000000000000000000000"
 setKV k3sServerVendorSha256 "0000000000000000000000000000000000000000000000000000"

 setKV traefikChartVersion ${TRAEFIK_CHART_VERSION}
@@ -100,14 +99,7 @@ fi
 #         And then collect the vendorSha256 from that. But as this is an internal package.
 #         It wouldn't be pretty. Any other solution?
 #
-# set +e
-# K3S_VENDOR_SHA256=$(nix-build --no-out-link -A k3s 2>&1 >/dev/null | grep "got:" | cut -d':' -f2 | sed 's| ||g')
-# set -e
-# cd - > /dev/null

-# if [ -n "${K3S_VENDOR_SHA256:-}" ]; then
-#   setKV k3sVendorSha256 ${K3S_VENDOR_SHA256}
-# else
-#   echo "Update failed. K3S_VENDOR_SHA256 is empty."
-#   exit 1
-# fi
+K3S_VENDOR_SHA256=$(nix-prefetch -I nixpkgs=./. "{ sha256 }: (import ./. {}).k3s.go-modules.overrideAttrs (_: { vendorSha256 = sha256; })")
+
+setKV k3sVendorSha256 ${K3S_VENDOR_SHA256}

Untested example but should work as the vendor hash from main package. nixpkgs=./. and import ./. do need to be adjusted relative to the script directory.
k3sServerVendorSha256 is a bit harder to do as an internal package though, not sure offhand of the right way use the same method for it.

@zowoq Thanks for the helpful answer. The script seems to be working fine now. But we can only be sure when it is run by the r-bot.
I ask reviewers to review & merge this.

This overall looks good to me!

:)

We could split out the k3sServer derivation into its own file if we wanted, which could allow using nix-prefetch for it too.
The whole setKV dance still seems a bit hacky compared to, say, generating a standalone file we could import with all the bits that change... but I guess there's maybe some other tradeoffs there too.

A standalone file would be useful for offering parallel versions of K3s as well. Which I have missed myself when trying to temporarily avoid a latest Kubernetes change.
Can we merge this as it is and later we put more thought into this?

This pull request has been mentioned on NixOS Discourse. There might be relevant details there:
https://discourse.nixos.org/t/prs-already-reviewed/2617/445


Where is the initialize function for Backbone.Model documented?

Hold on, typing up description, github thought my enter press meant "submit" for some reason

initialize is called at the end of the constructor function, and is passed the same arguments that you've passed to the constructor. The default implementation is to do nothing.
http://backbonejs.org/docs/backbone.html#section-51
This should, indeed, be documented slightly better.

Oh, good to know. This also clarifies a second question I had - whether attributes passed in in the constructor were available in the initialize function. It appears they are. As in, get I do this.get('some_attribute') inside the initialize function.


[1.11] Updated 'requests' dependency to 2.20.0.

@mesosphere-ci run all integration tests

Ci failed on windows with :
bin/env.sh: line 59: 91520 Terminated: 15          ${BUILDDIR}/${VENV}/${BIN}/pip${EXE} install -r ${BASEDIR}/requirements.txt

make: *** [env] Error 143

Sending interrupt signal to process

script returned exit code 2

Is it related?

@mesosphere-ci run all integration tests


Add large LambdaOverlapAdd usage example

Thank you very much for the PR!
I had in mind to put this in the docstring of LambdaOverlapAdd in the section Examples but this is also nice !
Could you add it in the docstrings as well please?

Refs #203

Thanks again ! :smiley:


User Documentation

A user manual is now available: https://www.avereon.com/product/xenon/docs/manual


Enhancement: Add a SessionId property in the TraceLog class.

The purpose of this property is to give the users an identifier of the execution as a session when doing a Trace, as the ITrace interface provides all the Before() and After() methods.
Benefits:

User can save the execution session key from the Before() method and validate it on the After() method.
You can define the execution difference when running in a multi-threading environment.

Is now a part of the latest deployment (RepoDb (v1.11.6)).


Added exception handling.

Sorry I can't reproduce this crash on my device, but here is at least a fix that should work.

Thanks!


Issue in building the code

Hi,
When I try to run the command "idf.py build" in project directory then I get following error and bunch of warnings:
/Volumes/Projects/ESP-Projects/WebRTC-FREERTOS/main/lib/amazon-kinesis-video-streams-webrtc-sdk-c/src/include/kvs/common_defs.h:331:16: error: redefinition of typedef 'UINT32' with different type
then I get
ninja: build stopped: subcommand failed.
ninja failed with exit code 1

@ayazalavi Hey there, I remember having this problem when building with esp-idf v4.4 as well, did you find any solutions here?

Gotcha, I had a feeling I would have to change all the STATUS names. Thanks for the reply


debug target should not cat vendor js

gradle debug is still gulping the vendor js into beakerVendor.js
in debug mode we should use all the js and css as-is.

https://github.com/twosigma/beaker-notebook/issues/1716


Changing "CS" -> "CD"

In basic javascript section "manipulating complex objects"

Pre-Submission Checklist

[x] Your pull request targets the staging branch of freeCodeCamp.
[ ] Branch starts with either fix/, feature/, or translate/ (e.g. fix/signin-issue)
[x] You have only one commit (if not, squash them into one commit).
[x] All new and existing tests pass the command npm test. Use git commit --amend to amend any fixes.

Type of Change

[x] Small bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds new functionality)
[ ] Breaking change (fix or feature that would change existing functionality)
[ ] Add new translation (feature adding new translations)

Checklist:

[ ] Tested changes locally.
[ ] Closes currently open issue (replace XXXX with an issue no): Closes #XXXX

Description

Fixes a small error in the challenge where CS should be CD

Is there an open issue against this? Can you be more specific about the change?
Also since this PR was made from the GitHub interface has this been tested locally?

No.
Change:
var myMusic = [
{
"artist": "Billy Joel",
"title": "Piano Man",
"release_year": 1973,
"formats": [
"CS",
"8T",
"LP" ],
"gold": true
}
// Add record here
];

To:
var myMusic = [
{
"artist": "Billy Joel",
"title": "Piano Man",
"release_year": 1973,
"formats": [
"CD",
"8T",
"LP" ],
"gold": true
}
// Add record here
];

Changes the letter S to D.


[pkg/ansible/runner] Add ability to specify ANSIBLE_INVENTORY env variable

Description of the change:
If the ANSIBLE_INVENTORY environment variable is set, the Ansible Operator will copy it into the runner artifacts directory. This is a placeholder until the --inventory option to runner supports directories, or until it respects the ansible.cfg.
Motivation for the change:
Allows users to specify more complex inventories, should at least partially unblock #954

The first commit contains the changes, the second the tests.


False positive case

Hi!
I was checking out libpostal, and saw something that could be improved.
This the test case I tried

from postal.parser import parse_address
text = ("On September 18 I visited microsoft.com and sent an "
...         "email to<EMAIL_ADDRESS> from the IP <IP_ADDRESS>.")
parse_address(text)
[('on september 18 i visited microsoft.com and sent', 'house'), ('an email to<EMAIL_ADDRESS>from the ip <IP_ADDRESS>', 'road')]

not sure why ip address/email combination gets flagged as road.

Hi @abh1nay
I'm not sure what you're trying to do here, but I think the README.md of the project clearly describes your case:
Non-goals

    Verifying that a location is a valid address <-- this is what you're doing, right?
    Actually geocoding addresses to a lat/lon (that requires a database/search index)

Thanks, any pointers on address detection in text that I could use to solve this problem?


ValueError: ..set the option trust_remote_code=True to remove this error

System Info
- `optimum` version: 1.8.8
- `transformers` version: 4.30.2
- Platform: Windows-10-10.0.19045-SP0
- Python version: 3.11.3
- Huggingface_hub version: 0.15.1
- PyTorch version (GPU?): 2.0.1+cpu (cuda availabe: False)
- Tensorflow version (GPU?): not installed (cuda availabe: NA)

Who can help?
Hello,
I am running the optimum cli command
optimum-cli export onnx --model mosaicml/mpt-7b-chat --task text-generation  mpt-7b-chat\
when I am getting this error:
File "C:\Users\dutta\AppData\Local\Programs\Python\Python311\Lib\site-packages\transformers\dynamic_module_utils.py", line 553, in resolve_trust_remote_code
    raise ValueError(
ValueError: Loading mosaicml/mpt-7b-chat requires you to execute the configuration file in that repo on your local machine. Make sure you have read the code there to avoid malicious use, then set the option `trust_remote_code=True` to remove this error.

How to deal with this error?  @michaelbenayoun
Thanks
Information

[ ] The official example scripts
[ ] My own modified scripts

Tasks

[ ] An officially supported task in the examples folder (such as GLUE/SQuAD, ...)
[ ] My own task or dataset (give details below)

Reproduction
Run the same command replacing the output directory name to a name of your choice
Expected behavior
I expect the command to run without error and product the ONNX model and other files in the output directory

Hi, you can try optimum-cli export onnx --help, where the option --trust-remote-code is available. However, mpt is not an architecture officially supported in the ONNX export, as it is not available in transformers yet (see: https://github.com/huggingface/transformers/issues/23174).
One possibility would be to add an argument to the ONNX export that would allow to "mimic" an ONNX config (e.g. use gpt-neo ONNX config for MPT), although there is no guarantee that this will work. Would that help?

Thanks for your offer to add an argument to ONNX export. However, as you have mentioned, it might not work. So  shall wait for the feature request to be addressed.
Meanwhile, some folks have provided the ONNX model for gpt-j-6B-int8-static
https://huggingface.co/Intel/gpt-j-6B-int8-static/tree/main
I am working in Java. Can you give me some pointers as to how to handle the required tokenization for this model in Java?

Maybe @xenova you have some idea?

I recently added support for tokenization for mpt models to transformers.js, so if OP wants to re-implement it, feel free to use Transformers.js as inspiration. mpt-7b uses a Byte-Level BPE tokenizer, which is quite a popular approach, so you can probably find some Java implementation out there already.

@diptenduLF Fixed in https://github.com/huggingface/optimum/pull/1166, feel free to refer to https://huggingface.co/docs/optimum/main/en/exporters/onnx/usage_guides/export_a_model#custom-export-of-transformers-models for the usage!


Cleanup rdb_data folder in milvus

Environment:
K8: 1.30
Milvus version: v2.4.12
Deploy Mode: STANDALONE
Current Behavior
The size of the rdb_data folder keeps increasing and never cleans up auto.

Issue
It seems following config in helm chart is not being supported any more:
standalone:
  rocksmq:
      retentionTimeInMinutes: 60
      retentionSizeInMB: 64
      rocksmqPageSize: "2147483648" ## 2 GB
      lrucacheratio: 0.06 ## rocksdb cache memory ratio

Seems it used to support in helmchart version 3.. and in Helm chart 4.0.0 it stopped supporting. Wonder hoe can we clean up rdb_data folder in milvus  either via helm chart config or via cli some how?

In latest helm I was able to do it like:
extraConfigFiles:
user.yaml: |+
rocksmq:
retentionTimeInMinutes: 4320
retentionSizeInMB: 256
rocksmqPageSize: "67108864" ## 64 MB
lrucacheratio: 0.06 ## rocksdb cache memory ratio
compactionInterval: 86400

@mananpreetsingh Thank you for feedback!


[otel] test trace workflow #ENG-11

Summary
Brief summary of the changes made, ie "what?"
Background
Brief background on why these changes were made, ie "why?"
Changes

List changes which were made.

Testing
How are these changes tested?
Metrics

List out metrics added by PR, delete section if none.

Breaking Changelist

Bulleted list of breaking changes, any notes on migration. Delete section if none.

Related Issues
Link any issues that are related, prefer full github links.
closes

This was a test PR for internal task tracking workflows


Update/avatar

Just wondering: what would be a usecase where you would add a classname to the image (prop imageClassName)?


Sparse

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.0 out of 2 committers have signed the CLA.:x: Sunny Duan:x: sunnyddelightSunny Duan seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.


Implement the actual form builder that produces the form JSON

Overview
Integrate the built form controls to create custom forms. Forms will have sections and sections will have fields.
Requirements

[ ] adequate testing and validation
[ ] support the ability to add sections
[ ] support the ability to add fields to sections
[ ] integrate c-form library for schema validation

depends on #135


Support multiple Dash or Flask apps for "du.configure_upload".

Introduction
This PR preserves all existed APIs. In other words, the modifications are compatible with previous APIs.
This PR is designed for providing the following new API:
du.configure_upload(app, UPLOAD_FOLDER_ROOT, upload_api='my-awesome-API/upload')
du.configure_upload(app, UPLOAD_FOLDER_ROOT, upload_api='my-awesome-API/upload-second', upload_component_ids='second')

where we have:

du.configure_upload could be used several times.
The argument app could be a dash.Dash instance or a flask.Flask instance. The argument type would be checked during the configuration.
A new argument upload_component_ids is provided, it could be

None: This is the default value. It means that this du.configure_upload is designed for default configurations.
str: This is the same as (str, )
tuple or list: A sequence of str. Each str is a component id. The component with the provided id would be configured by the provided configurations.

A simple check has been implemented for upload_component_ids. If it is not None, each item requires to be a non-empty str. And each item should be unique, i.e. repeating configurations for the same component is not allowed.

Example
For dash
import dash
import dash_html_components as html
from dash.dependencies import Output
import dash_uploader as du

app = dash.Dash(
    __name__,
    assets_folder='./assets',
    assets_url_path='/assets',
    assets_ignore=r'.*.js'
)
app.title = 'A testing app.'
du.configure_upload(app, folder='upload', use_upload_id=False)
du.configure_upload(app, folder='upload', use_upload_id=False, upload_api='/api-uploader', upload_component_ids='uploader')

app.layout = html.Div(
    children=[
        du.Upload(
            id='uploader',
            text='Drag & Drop or Select a File',
            filetypes=['csv', 'zip'],
            upload_id='.',
            max_files=1,
            default_style={
                'width': '100%',
                'paddingLeft': '.5rem',
                'paddingRight': '.5rem',
                'minHeight': 'min-content',
                'lineHeight': '50px',
                'borderWidth': '1px',
                'borderStyle': 'dashed',
                'borderRadius': '5px',
                'textAlign': 'center'
            }
        ),
        html.Div(id='trigger-upload')
    ]
)

@du.callback(
    output=Output('trigger-upload', 'children'),
    id='uploader',
)
def trigger_upload(filenames):
    return html.Ul([html.Li(filenames)])

@app.server.after_request
def add_header(response):  # pylint: disable=unused-variable
    response.headers["Cache-Control"] = "no-cache, no-store, must-revalidate"
    response.headers["Pragma"] = "no-cache"
    response.headers["Expires"] = "0"
    response.headers['Cache-Control'] = 'public, max-age=0'
    response.cache_control.no_cache = True
    return response

if __name__ == '__main__':
    import colorama

    colorama.init()
    app.run_server(host='localhost', port=8060, debug=False)

Users could change the upload_component_ids in the second du.configure_upload and check what happens.
For Flask
import os
import flask

import dash_uploader as du

app = flask.Flask('test-uploader')

os.makedirs('upload', exist_ok=True)
du.configure_upload(app, folder='upload', upload_api='/dash-uploader', use_upload_id=False)
du.configure_upload(app, folder='upload', use_upload_id=False, upload_api='/uploader2', upload_component_ids='uploader2')

if __name__ == '__main__':
    import colorama

    colorama.init()
    app.run(host='localhost', port=8061, debug=False)

In this case, actually, we do not need to configure upload_component_ids, because a Flask app does not have components. It should be only used for managing APIs.
For the next step

This PR is required for implementing the next feature (cross-domain) supports. I would not create the next PR before this PR is merged or closed.
If this PR is acceptable, I could start working on the documentation before merging it to the master branch.
We need to consider the following two topics:

Currently, I add a check for the du.callback. If the component is not configured for a dash app (not configured or configured for a flask app), the du.callback would be forbidden. However, it is possible to implement a "Flask callback". We could invoke the callback by using the request handler after the final chunk uploaded. I am wondering whether we need to implement this feature (maybe this feature should be split into another PR).
If we decide to implement the "Flask callback", there is an important problem. Because Flask app does not maintain the component ids, we may have two options for the implementation: (1) Add the component id in the arguments of the request. Then the upload_component_ids should be preserved because the Flask app could identify the component id. (2) Each "Flask callback" is designed for an API. In this case, we only need to add a check for du.configure_upload and forbid users to set upload_component_ids when app is a Flask app.

Update report

Change the format of du.settings.
Move update_upload_api from du.upload to du.configure_upload.
Add an option upload_component_ids to du.configure_upload. This enables users to set different configurations for different components.
Support Flask apps for du.configure_upload.

Thanks for the detailed PR! I'm happy to see this progressing. One thing that I'm considered that there might be some side effects that I cannot foresee, and the complexity of the things this package can do is increasing. This can lead into difficulties in maintaining the dash-uploader in the future. What I would suggest, is that there will be some automatic tests added to all the new features. This way we can see that nothing will break when something is changed.

I have to admit that this PR is large even though the API changes are very small. At least, I could confirm that the two examples I provide (as well as the usage.py in the root folder) could work well.
For the automatic tests stuff, should it be related to the other issue #34? I am guessing that you want to use pytest, but currently, there are no available testing codes in ./test.
I know that pytest could be integrated with Github Actions, and I have tried to do that before. I know how to write testing codes for dash (although I am not an expert on that), but I find that it is difficult to set up Chrome drivers for Github Actions. I guess that a testing container may be required before setting up Github Actions. I am still learning how to do it now. If you do not mind my poor code style, I could try to write some testing codes and start another PR.

I would be delighted to see a PR for some basic testing! :) No need to add GitHub Actions etc. at this stage, just bare minimum to get testing started. This is exactly what issue #34 is about.
One thing what I'm now thinking that the du.configure_upload does a bit different thing on Flask and on Dash apps, right? I know that you had the flask part in a separate function in a previous PR, but I'm now thinking (just initially) that if it would make more sense for the user that it would be different function (if it does a different thing). Something like du.configure_flask. The du.configure_upload could call it internally to prevent duplicate code. But this is just initial thinking. I really should take time to look through the additions in this PR and try to understand the implications from all the possible angles.
One thing I'm thinking is that what is the motivation behind supporting multiple calls to du.configure_upload, if there is still no full support for multiple du.Upload components on same app? (referring to https://github.com/np-8/dash-uploader/issues/35) Or is there some chicken-and-egg -problem here?

If we discard the implementation based on multiple calls to du.configure_upload, we would need to add an argument like service_addr or upload_api to du.Upload, and make the upload_api configured in du.configure_upload become a default value. We need to do that because we need to support cross-domain uploading based on this PR in the next step.
If you think the implementation of multiple calls to du.configure_upload is preferred. I think we may do not need to split du.configure_flask from it. Because in the next step, we may need to provide a du.configure_remote_upload like this
du.configure_remote_upload(app, remote_addr)

because an uploader directed to the remote server only needs to handle the callback. The uploading folder, API, and requests are handled by the remote side.
I have realized that in my case, I do not need to use du.configure_upload or something like du.configure_flask for multiple times, because it is not necessary to configure muliple different APIs for the same app, and it is not possible to server mulitple different apps. But I need to do something like:
du.configure_upload(app, ...)
du.configure_remote_upload(app, remote_addr_1)
du.configure_remote_upload(app, remote_addr_2)
...

For the remote side, I only need to configure something like this
du.configure_upload(flask_app, ...)

So serving multiple calls of du.configure_upload may not be a good choice. But we need to serve multiple calls to something like du.configure_remote_upload.
How do you think of that? If the multiple calls to du.configure_upload is not preferred, I could start another PR and close this one. Before that, we may also need to decide whether it is necessary to split du.configure_flask.

This clearly needs some more thinking with better good night's sleep. Here are some fast notes. These are not necessarily answering to anything, but they can help us later when designing the future API & functionality of dash-uploader.
Dash
The Dash instance will have

url_base_pathname, that will default to /. This is not now used in dash-uploader as the following two give more fine-grained control
request_pathname_prefix.  It is the prefix for AJAX calls from client (browser).  It must end with routes_pathname_prefix. This defaults to url_base_pathname if not given.
routes_pathname_prefix.  It is the prefix for API routes on backend (flask).

There values are read from the dash app instance and saved to du.settings, when du.configure_upload is called.
du.configure_upload
saves some settings

Reads the  request_pathname_prefix and routes_pathname_prefix and saves it to du.settings
Saves app to du.settings.app. This needs to be saved for the du.callback to function.
Saves the UPLOAD_FOLDER_ROOT to du.settings.

opens routes

Opens route for  <routes_pathname_prefix>/<upload_api>  or just <upload_api>, if  routes_pathname_prefix is missing
Also sets the handling of the HTTP GET and POST requests for the routes
The backend could be using dash or flask (as dash is essentially using flask).

du.Upload

Gives the address for the AJAX calls to the JS component. This will be  <request_pathname_prefix>/<upload_api>  or just <upload_api>, if  request_pathname_prefix is missing.
The configuration is read under the hood from du.settings (which are saved when calling du.configure_upload)

HttpRequestHandler

Knows how to handle GET and POST requests.
Does not need to know anything about du.settings or the app sending the requests(?). (Possible problem: How to validate users in multi-server case? Would it be better to route the data through the dash app anyway?)

I was thinking that I would have had more time today to think this through, but unfortunately that did not happen. I wish I had few hours just to think on this, so I could give my opinion. I appreciate your time and contribution.
Authentication
For the authentication case, dash-uploader was first released without any possibility (without changing the source code) of having any kind of authentication. Now there is HttpRequestHandler that I made partly for the support for authentication. I have not much experience on the topic myself either, and as you said, most dash apps are without authentication. I would recommend anyone using dash-uploader or similar to use some sort of authentication and validation for the inputs, and perhaps some upload rate limits per user. I have a feeling that adding authentication to dash-uploader might be a bit complicated, as there might be very different authentication schemes people use. So for now, I think it can be left as the responsibility of the user to subclass the HttpRequestHandler and add their own logic. In the future, perhaps there could be some examples or helper functions, though.
Of course, the dash-uploader should be designed in such a way that authentication is possible (and relatively easy). So the topic is good to be kept in mind.
About this PR
Yeah that is a valid point, do we need multiple calls to du.configure_upload. Actually, what I was thinking what would be really  helpful as the next step, is to make a list of requirements / wishes on what we really wish to accomplish, and how the user of dash-uploader would use the features. In my opinion, having multiple dash-uploader components on same web app would be "nice to have", but I think I remember only one person asking about if it could be made possible. The React component should be only ever sending AJAX calls to one address, that is for sure. But, should it be possible to send them directly cross-domain (to a flask server?). Or, would it be better to make the Javascript always talk with the "main dash app", so that authentication is easy, and then "pipe" the calls forward to somewhere else, if needed?
Here is a simple diagram which explains what I mean:

Some random thoughts

If the requests would be sent from the browser directly to some other place than the main Dash app, then it would not be possible (or it would be really difficult) to have callbacks that will do something visible to the user (to browser). Or would it?
If requests are sent through Dash app, they are "quite easy" to be authenticated
There might be possibility to extend dash-uploader to support uploading to some 3rd party service like AWS S3 or Dropbox.  This should be even now possible with custom HttpRequestHandler.
Configuring callbacks (browser callbacks) needs the du.configure_upload to be called. This means that if there would be multiple du.Upload components on same app, there should be one call to du.configure_upload per component.


GitHub integration

Problem
App does not provide organization open-source development activity and its contributors data.
Solution
Use github organization data through github api.
Alternatives
There are probably enough alternative solutions, but the proposed solution seens as the most native and promising.
More
Github REST API

There is a reason why people keep certain codes closed. Cause its secret recipe for our own good. You don't want people to copy and go out there just duplicating our work and change UI and become theirs. Plus opensource also means invitation to hackers to inject stuffs

There is a reason why people keep certain codes closed. Cause its secret recipe for our own good. You don't want people to copy and go out there just duplicating our work and change UI and become theirs. Plus opensource also means invitation to hackers to inject stuffs

To do open source you need to be confident and strong enough in spirit. Not everyone is capable of this. :smile:

yes we can. But its also like open a restaurant. They have their secret recipe and at the same time serve other common food to others.


Delete dead check_pkgs_availability

I was looking through the source, and as far as I can tell, check_pkgs_availability is not used anywhere. Perhaps it can be removed?

Thanks for that, indeed, that function is not necessary anymore


jdk-11.0.7+10 MacOS tar.gz cannot be self bundled in a notarized pkg

Platform:
macOS
When trying to create an app bundle that bundles the jdk-11.0.7+10-jre tar.gz bundle, it is not possible to notarize as the the libjli.dylib does not verify
So it seems the issue is that the Contents/MacOS/libjli.dylib fails to codesign --verify:
UNKNOWN:jdk-11.0.7+10-jre andrewleonard$ codesign --verify Contents/MacOS/libjli.dylib
Contents/MacOS/libjli.dylib: code has no resources but signature indicates they must be present

However.. if I simply move the libjli.dylib to a different directory, it verifies fine! so it seems to be the location of this library that’s the issue.
I then discovered if I do a codesign -dv on the jre, it shows this libjli.dylib as the “Executeable”:
UNKNOWN:uu andrewleonard$ codesign -dv jdk-11.0.7+10-jre
Executable=/Users/andrewleonard/Downloads/uu/jdk-11.0.7+10-jre/Contents/MacOS/libjli.dylib
Identifier=libjli
Format=bundle with Mach-O thin (x86_64)
CodeDirectory v=20500 size=786 flags=0x10000(runtime) hashes=16+5 location=embedded
Signature size=9037
Timestamp=28 Apr 2020 at 09:36:30
Info.plist=not bound
TeamIdentifier=VDX7B37674
Runtime Version=10.14.0
Sealed Resources=none
Internal requirements count=1 size=168

Could this be related? causing the codesign --verify to fail on the libjli.dylib ??

running xattr -cr . should fix this:
➜  tmp xattr -cr .
➜  tmp codesign --verbose=4 --deep --force -s "Developer ID Application: London Jamocha Community CIC" jdk-11.0.7+10
jdk-11.0.7+10: replacing existing signature
jdk-11.0.7+10: signed bundle with Mach-O thin (x86_64) [net.java.openjdk.11.0.7.jdk]

Hi,
I'm the one that found this.  Are you suggesting that I do this to the signed package?  Wont that break your signing of the file?  Wont this also effect the notarization of the bundle?

@hoytk Hi Kevin, so from talking with @gdams the implication is we re-sign the libraries to allow it to be bundled into a new package. As it stands if I understand it correctly, the ..tar.gz contains all AdoptOpenJDK signed libaries and the whole thing is signed as a Bundle with libjli.dylib as the executable. It seems if someone wants to bundle this into a new package they basically have to remove all that and re-sign it, which begs the question why we need to both signing the tar.gz? I can understand for the .pkg/dmg, but the tar.gz doesn't seem to add any benefit, given bundlers have to remove it. @gdams i've probably got this wrong, but it would be worth setting out the "use cases" for people bundling please?
thanks

@hoykt on the "notarization" aspect, the package that you are creating yourself, will need notarizing as a whole at the end anyway.

What you're shipping is a macOS Application.  If you're not going to sign it, you should be shipping just the directory; there is no value in shipping as an Application.  It may be this way so it works for the .dmg/.pkg installers.  I can use it as is, once the signing is fixed up.
I do NOT need to resign your files.  If done correctly, the signing process detects they are already signed and leaves the signature alone.
"Sat, 25 Apr 2020 00:12:18 GMT                  Task: Iterate Directory Contents (libjsig.dylib.dSYM)",
"Sat, 25 Apr 2020 00:12:18 GMT                   Task: Iterate Directory Contents (Contents)",
"Sat, 25 Apr 2020 00:12:18 GMT                    Task: Iterate Directory Contents (Resources)",
"Sat, 25 Apr 2020 00:12:18 GMT                     Task: Iterate Directory Contents (DWARF)",
"Sat, 25 Apr 2020 00:12:18 GMT                      Task: Sign File (libjsig.dylib)",
"Sat, 25 Apr 2020 00:12:18 GMT                  Task: Sign File (libjvm.dylib)",
"Sat, 25 Apr 2020 00:12:18 GMT                  File already signed.",
I'd don't want take on the responsibility of 'proving' the JDK hasn't been modified by signing it
Shipping a signed package shows the AdoptOpenJDK has not been tampered with since you published it.

@gdams do you know what set the bundle/app attribute/signing? is it this line?
https://github.com/ibmruntimes/openj9-openjdk-jdk11/blob/163e88f2826d2ce6ba74e3fc47174521d0c40cd3/make/MacBundles.gmk#L99

@hoytk @gdams so the issue is caused by the existance of the:
 jdk-11.0.7+10-jre/Contents/Info.plist

Which defines the bundle attributes, if I rename this to Info.plist.old, then libjli.dylib now verifies:
UNKNOWN:Contents andrewleonard$ codesign --verify MacOS/libjli.dylib
UNKNOWN:Contents andrewleonard$

The jdk-11.0.7+10-jre is then no longer a Bundle obviously, so the following will fail:
UNKNOWN:uu andrewleonard$ codesign -dvvv jdk-11.0.7+10-jre
jdk-11.0.7+10-jre: bundle format unrecognized, invalid, or unsuitable

However, I don't think realistically we can do this, as Mac relies on this "bridging" library to know this jdk/jre provides a JVM for Mac Java Applications.
Doing a bit of googling, I found some references that seem interesting, this article talks about some of the issues: http://openjdk.5641.n7.nabble.com/jlink-and-jpackage-not-producing-correct-macOS-packages-td401931.html#a401972
in particular the comment:
The code signature thinks that it’s part of a bundle, and yet it has no `Info.plist` entries or sealed resources.
>
> I’m not sure how it got into this state.  On the one hand, it seems that `/Volumes/Beat Link Trigger/Beat Link Trigger.app/Contents/runtime` was structured to resemble a bundle.  On the other hand, it’s doesn’t have an extension (which is typically a key factor in indicating that something is a bundle) and it’s missing its `runtime/Contents/_CodeSignature/CodeResources` file, which is what contains info about all the resources sealed in the bundle.

If you do a codesign -dvvv MacOS/libjli.dylib it reports:
Info.plist=not bound
Sealed Resources=none

which agrees with what this article is talking about, and is probably why codesign --verify reports error on this library of:
MacOS/libjli.dylib: code has no resources but signature indicates they must be present

So not sure how to proceeed... but to me the Info.plist and Bundle setting/sealed resources do not look correct?

this discussion also indicates the same issue with linjli.dylib:
https://github.com/arduino/Arduino/issues/9713#issuecomment-581598678

also doing a basic codesign deep strict verify on the jre reports the same error:
UNKNOWN:uu andrewleonard$ codesign -vvvv --deep --strict jdk-11.0.7+10-jre
jdk-11.0.7+10-jre: code has no resources but signature indicates they must be present

another useful quote:
If an app has been signed you can look for a Contents/CodeResources file or a Contents/_CodeSignature/CodeResources file in the bundle. This file lists all the signed components and their expected hash values in the bundle.

to me it's increasingly looking like if we want the *.tar.gz to be a valid Mac Bundle that is signed by AdoptOpenJDK, then we need the above CodeSignature/Resources. Otherwise, it looks like the existing codesign'ing is not of any use, and someone bundling the jre must strip it off and re-sign with their own signature?

@gdams I am suspecting we need to codesign the whole Bundle at the very end of the build (it can't be modified afterwards), eg:
codesign -s "<AdoptOpenJDK signing identity>" jdk-11.0.7+10-jre

as per instructions here: https://developer.apple.com/library/archive/documentation/Security/Conceptual/CodeSigningGuide/Procedures/Procedures.html
In particular the section "What to Code Sign" and bullet: Resources
I will try a test build to see if this makes a difference...

@andrew-m-leonard if you run that command you will lock down the binary and generate a _CodeSignature/CodeResources file. As a result, it then means that users will not be able to change the bundle structure or add Cacerts/jmods etc.
I know it's inconvenient for app developers to have to re-sign the bundle but it's better that way because they are the ones with codesign certs that can make the bundle run again.
If we went for the approach that you've mentioned above, all developers would need a codesign cert to be able to re-certify the binary which is not practical.

@gdams Interesting, yes I see what you mean, as adding custom CA certs into the Java keystore is something typically done, so if we were to lock down the bundle then they would not be able to do that...
This implies there's actually no point in signing the tar.gz other than for it being packaged in the .pkg/.dmg. So I think we need to either remove the signing from the .tar.gz artifacts we publish, or document how to remove the signing to correctly..
@hoytk Kevin, so it looks as though you do need to re-sign the jre for this reason, this can be achieved as George mentioned earlier:
xattr -cr jdk-11.0.7+10-jre
codesign --verbose=4 --deep --force -s "<Your codesign identity>" jdk-11.0.7+10-jre

so it looks as though you do need to re-sign the jre

To be very clear this does not re-sign the binaries, it just re signs the bundle

so it looks as though you do need to re-sign the jre

To be very clear this does not re-sign the binaries, it just re signs the bundle

ah thanks George, that wasn't obvious to me!


Introduce per-environment JWKS paths

Urgent hotfix to address authentication issues caused by EDL endpoint changes by introducing per-environment JWKS paths
Closes https://github.com/podaac/swodlr/issues/147

Since we need to get this to ops pretty quick I'm going to do a patch release


immediate-claim/service-worker.js should set max-age 0

Currently the immediate-claim/service-worker.js is being served with this header:
Cache-control: public, max-age=7200
This means when someone runs the demo and clicks the "update" button, they will most likely not see the service worker update.  The browser will check the script to see if its a byte-for-byte match with the installed worker.  Since its in the http cache it will almost always be the same.
To make this demo effective for people visiting the site we should set the max-age to 0 for this script.  (And probably all service worker scripts on this demo site, to be honest.)

Good catch. I will add a custom rule for service worker files.

My PR for this was merged.


Porting FTP Library from CI3

This PR completes the FTP Library port over (#506) from CI3.
I have also added a ftp() function within the Checks Controller and made a successfully connection to one of my private servers where I was also making new directory using the library.
All that needs to be done now is for the library to be added to the User Guide - I will try and get round to doing this tomorrow at some point.

Er, Checks is mistakenly leftover from one of Lonnie's experiments - it is not the testing that would be appropriate ... that would go inside tests/FTP/FTPTest.php, for instance. It doesn't look as though there was any unit testing in CI# -> this is our opportunity to ascertain that it behaves as expected in CI4 :)

@coderste
hey, language file fix key;
key change to ftpUnableToDelete -> ftpUnableToMove.
this fix commit changed key;
https://github.com/bcit-ci/CodeIgniter4/pull/510/commits/a99700a7e30617a278bafe6f0971a6ce03cf7b8b
perfect job :)
take it easy.

So hopefully by the end of the day I will have the Unit Tests for this

@coderste Any luck getting this wrapped up? No hurry, but I am out on vacation next week and had a moment after wrapping up a rough deadline and thought I'd check in. :)

@coderste Are you going to be able to wrap work on this more?

@lonnieezell - yea sure thing, should have some time next weekend to complete the Unit Tests

@coderste Excellent. Just trying to figure out which PRs are abandoned that I need to finish up. :)


⚠ Designation Identifier has degraded performance

In cb7df17, Designation Identifier (https://data.minorplanetcenter.net/api/query-identifier) experienced degraded performance:

HTTP code: 200
Response time: 220 ms

Resolved: Designation Identifier performance has improved in 278185b after 14 minutes.


[Question] - Owin Authentication Middleware for ASP.NET Core 3.0

This is a multi-part question/request.

Where is all the Owin authentication middleware (stuff that used to live in Microsoft.Owin.Security.* packages) for ASP.NET Core 3.0 ? The Microsoft.Owin.Security stuff seems to be targeted at Framework -- multiple packages fly down targeted to Framework !

When is the documentation going to be updated to use the (hopefully updated) ASP.NET Core 3.0 (+ .NET Core 3.0) equivalents to these libraries ?

There is nothing Owin for Core. There never has been. They're all in Microsoft.AspNetCore.Authentication
There's no functional or namespace changes to any authentication middleware in 3.0, so the 2.x documentation should work as is.

Ah, thank you. Closing the issue!


ACRS-20: Add production url

What?
I add the production URL domain name to drone.yml and fix a comment in the file pointing out to the UAT that was the branch environment
Why?
The production URL was pending to be sing off by the stakeholders and the file was created before knowing the domain name. Also, as it is a small changed to familiarize myself with the pull request HO ways of working.
How?
By replacing the commented out production name by the actual name
Testing?
N/A
Screenshots (optional)
N/A
Anything Else? (optional)
N/A
Check list

[x] I have reviewed my own pull request for linting issues (e.g. adding new lines)
[ ] I have written tests (if relevant)
[ ] I have created a JIRA number for my branch
[ ] I have created a JIRA number for my commit
[x] I have followed the chris beams method for my commit https://cbea.ms/git-commit/
here is an example commit
[ ] Ensure drone builds are green especially tests
[ ] I will squash the commits before merging

Hi Babs,
As the change is small, I haven't created a Jira ticket as I've told to don't do it. I personally like to create always tickets to link Jira with Github and keep the trail of changes so welcome your opinion with this one please.
Thank you

Great Work @gadorcruz,
We have a Jira ticket for setting up the production environment. We could use this ticket in creating feature branches. And
https://collaboration.homeoffice.gov.uk/jira/browse/ACRS-20.

Thank you, for next time I will add the ticket number to the commits and branch.


specify the key in the 'null or empty value detected' log

There's no way to know which key is causing the "null or empty value detected" log, so this change makes this log possible to debug.

Thanks for your pull request. Is this your first contribution to a Snowplow open source project? Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA).
:memo: Please visit https://docs.snowplowanalytics.com/docs/contributing/contributor-license-agreement/ to learn more and sign.
Once you've signed, please reply here (e.g. I signed it!) and we'll verify. Thanks.

Thanks for your pull request. Is this your first contribution to a Snowplow open source project? Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA).
:memo: Please visit https://docs.snowplowanalytics.com/docs/contributing/contributor-license-agreement/ to learn more and sign.
Once you've signed, please reply here (e.g. I signed it!) and we'll verify. Thanks.

I signed it

I signed it

Confirmed! @b-ryan has signed the Contributor License Agreement. Thanks so much.

Confirmed! @b-ryan has signed the Contributor License Agreement. Thanks so much.

Thanks for the PR @b-ryan
I'm looking at doing a small release in february so I'll include this then.

Thanks for the PR @b-ryan
I'm looking at doing a small release in february so I'll include this then.

Thanks again for this PR @b-ryan, and sorry for the delay in merging it in. We'll be releasing v0.11.0 including your change soon.


Single installation command for installing binenv

Installing binenv should be simplified to single command.
We can implement it as installer bash script.
wget -O - http://website.com/my-script.sh | bash
or other, as described here: https://serverfault.com/a/890417/638586
Simpler installation is very important for user adoption.

@Nex-Otaku thanks for the suggestion.
However, I consider wget | bash as pretty unsafe.
Also, I'd rather not touch user rc files directly. People may have custom ways to manage them.

This is what installation instructions are for Linux users
wget -q https://github.com/devops-works/binenv/releases/latest/download/binenv_linux_amd64 -O binenv
chmod +x binenv
./binenv update
./binenv install binenv
rm binenv
if [[ -n $BASH ]]; then ZESHELL=bash; fi
if [[ -n $ZSH_NAME ]]; then ZESHELL=zsh; fi
echo $ZESHELL
echo 'export PATH=~/.binenv:$PATH' >> ~/.${ZESHELL}rc
echo "source <(binenv completion ${ZESHELL})" >> ~/.${ZESHELL}rc
exec $SHELL

What I suggest is providing user with ability to run sh script from same repo that does exactly the same as above.
In both options user will copy, paste and run code from documentation. But it should be less copy-pasting actions to simplify process. One step instead of multiple steps.
99% of users will not modify installation steps, just installing as written in docs, and for those who want we can provide more detailed instruction.

Yes, I understand that. But for transparency and educational purposes, I'd rather have clear instructions that users can verify, instead of a shell file  they will probably curl | bash blindly.
I'd rather have people in control of what they are doing, and I do not want to mess with their rc files in their back.
They still can copy those 10 lines and paste them at once, or do it the yolo way with curl -s https://raw.githubusercontent.com/devops-works/binenv/develop/README.md | grep -A15 '## Quick start' | grep -A10 'wget' | bash of they really want to run a one liner ;)
All in all, thanks for the suggestion :+1: