Update focusmanager_tryfocusasync_1779533284.md

Fix typo

@lyahdav : Thanks for your contribution! The author(s) have been notified to review your proposed change.

Thanks.


Graph-node stopped syncing with error "Option::unwrap() on a None value ... "

Do you want to request a feature or report a bug?
Bug
What is the current behavior?

Graph-node 0.19.2 (2020-11-24) -DockerImage:graph-node:latest
Uniswap-Subgrapv-V2 : master branch

Not sure if this error is related to Graph-node or UniswapSubgraph.
Using local graph-node docker container with deployed Uniswap-Subgraph-V2.
Today it stucked with error :
INFO Done processing Ethereum trigger, waiting_ms: thread 'mapping-QmQkfiA1MRv4WQRfxgVgi7PCZ6gziNhXwJkjD1NYfRHwHt-24a75a94-b7ab-44c7-b700-e1d06221edf7'
panicked at 'called `Option::unwrap()` on a `None` value', graph/src/components/ethereum/types.rs:323:41
stack backtrace:
0, handler: handleSwap, total_ms: 100, trigger_type: Log, address: 0x583c…01f1,
signature: Swap(indexed address,uint256,uint256,uint256,uint256,indexed address),
runtime_host: 1/1,
block_hash: 0xaf7f22c74a9a83291286644015369af80f5fb97afbe5692a82f2d3bff3614726,
block_number: 10637439, subgraph_id: QmQkfiA1MRv4WQRfxgVgi7PCZ6gziNhXwJkjD1NYfRHwHt,
component: SubgraphInstanceManager
   0:     0x55a4e288aef0 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h2e8cb764b7fe02e7
   1:     0x55a4e28aef1c - core::fmt::write::h7a1184eaee6a8644
   2:     0x55a4e2882f32 - std::io::Write::write_fmt::haeeb374d93a67eac
   3:     0x55a4e288d33d - std::panicking::default_hook::{{closure}}::hde0cb80358a6920a
   4:     0x55a4e288cfe8 - std::panicking::default_hook::h9b1a691049a0ec8f
   5:     0x55a4e288da21 - std::panicking::rust_panic_with_hook::h2bdec87b60580584
   6:     0x55a4e288d5c9 - std::panicking::begin_panic_handler::{{closure}}::h101ca09d9df5db47
   7:     0x55a4e288b35c - std::sys_common::backtrace::__rust_end_short_backtrace::h3bb85654c20113ca
   8:     0x55a4e288d589 - rust_begin_unwind
   9:     0x55a4e28ac391 - core::panicking::panic_fmt::h48c31e1e3d550146
  10:     0x55a4e28ac2dd - core::panicking::panic::h184ede6dd822ffb4
  11:     0x55a4e20be197 - <graph::components::ethereum::types::EthereumTransactionData as core::convert::From<&web3::types::transaction::Transaction>>::from::hf2a1e5089dee2ab5
  12:     0x55a4e1b00927 - graph_runtime_wasm::module::WasmInstance::handle_ethereum_log::h24c562be7979de0d
  13:     0x55a4e1ab1aaf - <futures::stream::for_each::ForEach<S,F,U> as futures::future::Future>::poll::ha68e3d047783eb9a
  14:     0x55a4e1aa943c - futures::task_impl::std::set::h76fc19cee70f9909
  15:     0x55a4e1b2bc36 - futures::task_impl::Spawn<T>::poll_future_notify::hc5d3e4e72c577123
  16:     0x55a4e1ab109e - futures::future::Future::wait::h369d8faf2f596bdf
  17:     0x55a4e1ae617e - tokio::runtime::context::enter::h1d4ac43047ca276b
  18:     0x55a4e1ad7b07 - std::sys_common::backtrace::__rust_begin_short_backtrace::hb6cb81cfdd6e0805
  19:     0x55a4e1ad8d16 - core::ops::function::FnOnce::call_once{{vtable.shim}}::h37e5ce076cefb8c2
  20:     0x55a4e28914fa - std::sys::unix::thread::Thread::new::thread_start::h4afaeade0da13617
  21:     0x7f68cc9defa3 - start_thread
  22:     0x7f68ccc764cf - clone
  23:                0x0 - <unknown>

ERRO Subgraph instance failed to run: Failed to process trigger in block #10637439 (af7f22c74a9a83291286644015369af80f5fb97afbe5692a82f2d3bff3614726),
transaction 156fea9ee3d5d2806dd05b4d6cec0e6002c3f7367837843165fc152fa11a6de9:
Mapping terminated before handling trigger: oneshot canceled, code:
SubgraphSyncingFailure, id: QmQkfiA1MRv4WQRfxgVgi7PCZ6gziNhXwJkjD1NYfRHwHt,
subgraph_id: QmQkfiA1MRv4WQRfxgVgi7PCZ6gziNhXwJkjD1NYfRHwHt,
component: SubgraphInstanceManager

How can this issue be resolved ?
What version of Graph-node (docker-image) is deployed in https://thegraph.com ??
If the current behavior is a bug, please provide the steps to reproduce and if possible a minimal demo of the problem.
What is the expected behavior?

What is the Ethereum client this Graph Node is connected to?

What is the Ethereum client this Graph Node is connected to?

Tested with :

infura.io
quicknode.io (geth)
archivenode.io (geth)

same error for above clients.

I've had same error on customized unisvap-v2 subgraph local node but on block 11595723. Ii've removed all entities except Pairs from original uniswap subgraph and hardcoded initial Pairs state at recent block to avoid long syncing. Error happened when i was on graph-node v19.2. I've upgraded graph-node to v20.0 and error still persists. But after i cleaned postgres volume and re-synced my subgraph error gone!

I've had same error on customized unisvap-v2 subgraph local node but on block 11595723. Ii've removed all entities except Pairs from original uniswap subgraph and hardcoded initial Pairs state at recent block to avoid long syncing. Error happened when i was on graph-node v19.2. I've upgraded graph-node to v20.0 and error still persists. But after i cleaned postgres volume and re-synced my subgraph error gone!

I've gotten other reports of this happening with archivenode.io. It must be a turbo-geth bug. To workaround this, there is no need of resetting the entire DB, simply:

Shutdown the Graph Node.
Run on the DB the following SQL: DELETE FROM ethereum_blocks WHERE ethereum_blocks.number = <AFFECTED_BLOCK_NUMBER> if you know the affected block number or simply DELETE FROM ethereum_blocks; to clear the entire block cache.
Start Graph Node again.

I've gotten other reports of this happening with archivenode.io. It must be a turbo-geth bug. To workaround this, there is no need of resetting the entire DB, simply:

Shutdown the Graph Node.
Run on the DB the following SQL: DELETE FROM ethereum_blocks WHERE ethereum_blocks.number = <AFFECTED_BLOCK_NUMBER> if you know the affected block number or simply DELETE FROM ethereum_blocks; to clear the entire block cache.
Start Graph Node again.

I've gotten other reports of this happening with archivenode.io. It must be a turbo-geth bug. To workaround this, there is no need of resetting the entire DB, simply:

Shutdown the Graph Node.
Run on the DB the following SQL:

DELETE FROM ethereum_blocks WHERE ethereum_blocks.number = <AFFECTED_BLOCK_NUMBER>`

if you know the affected block number or simply DELETE FROM ethereum_blocks; to clear the entire block cache.
3. Start Graph Node again.

Thanx @leoyvens  , issue resolved

I've gotten other reports of this happening with archivenode.io. It must be a turbo-geth bug. To workaround this, there is no need of resetting the entire DB, simply:

Shutdown the Graph Node.
Run on the DB the following SQL:

DELETE FROM ethereum_blocks WHERE ethereum_blocks.number = <AFFECTED_BLOCK_NUMBER>`

if you know the affected block number or simply DELETE FROM ethereum_blocks; to clear the entire block cache.
3. Start Graph Node again.

Thanx @leoyvens  , issue resolved


Keypresses also register on Files pane immediately after switching files

Describe the bug
Immediately after switching files, the Files pane is simultaneously focused (indicated by highlight).
In this state, keypresses also register as interactions with the Files pane. This becomes problematic when:

Typing a filename for a newly created file
Editing a Canvas file by selecting cards

To Reproduce
Assuming that TagRoutes release 1.1.4 is enabled in a new Obsidian vault, do either of the following:

Create a new Markdown file

The text cursor should be focused on the filename in the markdown tab.
Do not click anywhere. Type a word or letter, then press Space.

Create a new Canvas file

Double-click the canvas to create a new card.
The text cursor should be focused within the card in the canvas tab.
Do not click anywhere. Type a word or letter, then press Space.
Alternatively, click outside the card. Click once to select the card, then press Delete.

Expected behavior
Space/Delete should not interrupt typing/editing due to also interacting with the Files pane.
Desktop (please complete the following information):

OS: Windows 11

Additional context
Add the option to toggle automatic highlighting on the current file in the Files pane.

Thank you for the feedback! I understand what you described, and I will incorporate this fix in the next release.

You can check the new version now: https://github.com/kctekn/obsidian-TagsRoutes/releases/tag/1.1.5

I can confirm that, with auto-focus enabled, keypresses no longer register in context to the Files pane; however, new files cannot be renamed immediately, and new canvas cards are unfocused when created.
Still, the issues no longer occur when performing the steps to reproduce it, so I would consider it technically fixed.

I can confirm that, with auto-focus enabled, keypresses no longer register in context to the Files pane when creating new files or canvas cards; however, new files cannot be renamed immediately, and new canvas cards are unfocused when created.
Still, the issues no longer occur when performing the steps to reproduce it, so I would consider it technically fixed.

Thank you for the feedback! I revisited the issue and I believe it's now resolved. I've made the necessary changes and published a pre-release version: v1.1.7.
Could you please test it out and let me know if everything works as expected? If all is good, I'll mark it as the latest release.
Thanks again!


Updated: webcatalog 20.0.6

$notices:
- Updated `repo`

d82a826f-a8b3-4f5c-ab92-9f1535afb8de

Newer version of webcatalog (20.1.1) is now available in master. 86810109ea1fc55b261b58a658eb3be4689ce4e6


How can i prevent property removal on hide expression?

If I hide fields with expressions hide, they are completely removed from the model. What can I do so that this does not happen and the corresponding values are retained?
Example:
I have an input field and a textarea. if I hide these 2 using a checkbox and then show them again by clicking on the checkbox again, the previously entered values must be present again.
Was kann ich tun? What can I do?
Versions:
Angular: 16.0.0
ngx-formly: 6.1.4
https://stackblitz.com/edit/ngx-formly-ui-material-lbcajp?file=src%2Fapp%2Fapp.component.ts,src%2Fapp%2Fapp.component.html

and to apply it for all fields you can set the following config:
FormlyModule.forRoot({
  extras: {
+   resetFieldOnHide: true
  },
}),


Code for Generator

May I ask where is the code for Generator in the paper?
"the level generator is a generative model that is optimized to produce regret-maximizing levels"

The generative model mentioned here is from the definition of Dual Curriculum Design, which describes a class of UED methods consisting of a generator and a curator. We base GROOVE on Prioritized Level Replay, which doesn't optimise a generator and instead curates randomly-sampled levels (see end of Section 3.3).
Hope this helps!


CAN NOT Set GEO Location

Expected Behavior
Go to the exact latitude and longitude
Actual Behavior
Nearby place,But I can't get what I want.
For example: There are many Dratini in "-34.916767 138.595291", but “Memorial Drive Tennis Club War Memorial Dr Adelaide SA 5006” did not, Although the distance is not far.
Steps to Reproduce
$ python pokecli.py -a google -u **** -p **** -l "-34.916767 138.595291"
2016-07-24 15:05:38 [x] PokemonGO Bot v1.0
2016-07-24 15:05:38 [x] Configuration initialized
[2016-07-24 15:05:40]
[2016-07-24 15:05:40] [x] Address found: Memorial Drive Tennis Club War Memorial Dr Adelaide SA 5006
[2016-07-24 15:05:40] [x] Position in-game set as: (-34.9150856,<PHONE_NUMBER>, 0.0)

I have also tried these lists are not what I want
-l "-34.916767,138.595291"
-l "138.595291,-34.916767"
-l "138.595291 -34.916767"

AndI also deleted the location line in config.json
Other Information
OS: OSX 10.11.5
Git Commit: stable form download zip

I'm noticing this as well too recently. I think the issue is coord truncation. will look into it.

Maybe it's because config.json
I have now re installed the project, did not enable config.json, it seems to be right.

location is set in config.json


Unable to Marshal function parameters

PSReflect does not have the ability to use the MarshalAs attribute on function parameters.
Below is an example P/Invoke definition where the MarshalAs attribute is used on the pgActionID parameter:
[DllImport("wintrust.dll", ExactSpelling = true, SetLastError = false, CharSet = CharSet.Unicode)]
static extern WinVerifyTrustResult WinVerifyTrust(
	[In] IntPtr hwnd,
	[In] [MarshalAs(UnmanagedType.LPStruct)] Guid pgActionID,
	[In] WinTrustData pWVTData
);

Should be doable using the ParameterBuilder.SetCustomAttribute method in a similar fashion to how I do it with struct members. Before I dive into this, could you offer some additional use cases where you might need this? In the example above, you can get away without the MarshalAs attribute by specifying pgActionID as [Guid].MakeByRefType().

I have a similar issue where I can't marshal return values
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool EnumChildWindows(IntPtr hwndParent, EnumWindowsProc lpEnumFunc, IntPtr lParam);

For this example can't you specify the return type as [bool]? I think the marshaling would happen automatically.
Something like:
(func user32 EnumChildWindows ([bool]) @(
[IntPtr],
[IntPtr],
[IntPtr]
))
Sent from my iPhone

On Jul 4, 2017, at 5:32 PM, jambonmcyeah<EMAIL_ADDRESS>wrote:
I have a similar issue where I can't marshal return values
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool EnumChildWindows(IntPtr hwndParent, EnumWindowsProc lpEnumFunc, IntPtr lParam);
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or mute the thread.

Well, what there is a function where marshaling won't happen automatically? I remembered a while ago I neede a function with a UnmanagedType.LPArray return type. Forgot which function though.


Usage with TypeScript

How to use it with TypeScript?
My approach doesn´t work, i get an error:
Error: Webpack Compilation Error
/Users/user/Projekte/project/app/projects/registrieren/e2e/integration/email.spec.ts
./projects/registrieren/e2e/integration/email.spec.ts
[tsl] ERROR in /Users/user/Projekte/project/app/projects/registrieren/e2e/integration/email.spec.ts(11,6)
      TS2339: Property 'mailosaurGetMessage' does not exist on type 'cy & EventEmitter'.

Cypress version: 6.2.1
Cypress-mailsaur version: 2.1.1
Same as here https://github.com/mailosaur/cypress-mailosaur/issues/6
UPDATE:
It seems to work, when the types be declared separately in global module.
import 'cypress-mailosaur';
import { Cypress as MailosaurCypress } from 'cypress-mailosaur/src/mailosaurCommands';

declare global {
  namespace Cypress {
    interface Chainable extends MailosaurCypress.Chainable {}
  }
}

@Chernitsov Great thanks! :clap:
Do not hesitate to tell us when you will publish this fix to npm :blush:.

@adjerbetian I'm not the repo owner, I just fixed the issue I had, so we'll need to wait for the owners to merge it and release it 🙂

@miluoshi My bad, I thought this was already merged since the issue was closed.
I'll watch the PR then, thanks!


dataclass are not supported

@dataclass is a pretty good feature and unfortunatelly is not supported.
https://github.com/marazt/object-mapper/blob/9d62e9bf00cd78afdaccd6e950a6bb4a1dd1cc06/mapper/object_mapper.py#L171
Example
class ObjectMapperTest(unittest.TestCase):
    """
    Unit tests for the `ObjectMapper` module.
    """
    @dataclass
    class FromTestDataClass:
        a: int
        b: str

    @dataclass
    class ToTestDataClass:
        a: int
        b: str

    def test_mapping_creation_without_mappings_correct_using_dataclass(self):
        """ Test mapping creation without mappings with dataclass"""

        # Arrange
        from_class = FromTestClass()
        mapper = ObjectMapper()
        mapper.create_map(FromTestDataClass, ToTestDataClass)

        # Act
        result = mapper.map(FromTestDataClass(a=1, b='2'))

        # Assert
        self.assertTrue(isinstance(result, ToTestDataClass), "Target types must be same")
        self.assertEqual(result.name, from_class.name, "Name mapping must be equal")
        self.assertEqual(result, ToTestDataClass(a=1, b='2'), "Class instance must be equal")

There is a pull request for this: #26

Nice addition, when would we publish it?

The PR is not merged yet. @marazt could you merge this PR?


is it possible not to reuse forks (static evil)

hi,
i'm in a situation where i have static webdriver because of specific design (not using cucumber dependency injection). i'm experiencing problems with parallel execution (still under investigation) and my first worry is about the static web driver.
i know that using the cucumber-jvm-parallel-plugin , it uses surefire forks(JVMs) instead of threads which means separate JVM for each feature file BUT it is configured to reuse the forks which may prove problematic with static variables. is it true that its not possible to set reuseForks=false ? (will be ignored by the plugin?)
not reusing the JVM forks will ensure full separation in parallel execution in the current design I have.
Thanks

You need to change your webDriver as Shared.

Actual execution is outside the scope of the parallel plugin - it only generates the test files.
Execution is generally performed using the surefire/failsafe plugin, so using reuseForks=false should be picked up.


Does you consider to add function that conver osgb to b3dm

can you enhence the tools , support convert osgb to b3dm?

The 3D Tiles Tools are generally working with 3D Tiles (and 3D Tiles content data). The scope of the 3D Tiles tools is not any form of conversion/tiling from other formats. (There are just too many of them, and creating a good conversion program for any format into 3D Tiles is challenging.
You could try to export your model in a format that is supported by Cesium ion, and then upload it as described in https://cesium.com/platform/cesium-ion/3d-tiling-pipeline/ to create 3D Tiles data.


Does email sending work?

Does sending transactional emails like password resets work? I have opened port 25 for outward traffic but emails don't arrive.

Unfortunately it does not, you'll have to use an SMTP plugin and a third party service like Mailgun. Most likely it'll be using port 587.


SSH extention Cannot reconnect. Please reload window.

VSCode Version: 1.38.1
OS Version: Windows 10

I try to connect to linux machine using the ssh extention
using a local tunnel and sshkey
the tunnel is working if I use a putty with the same key and tunnel the connection works
Steps to Reproduce:

my ssh config file:
Host config-2
HostName <IP_ADDRESS>
Port 2223
User XXXXXXX
IdentityFile C:\Users\u0051113\Documents\keys\XXXXXXX
connect to host in new window
get the error "Cannot reconnect. Please reload window."

Does this issue occur when all extensions are disabled?: No

So you see "Cannot reconnect" before it ever connects successfully? Can you share the log from the Remote-SSH output channel?


Nested .get()

It would be mighty handy to be able to .get() more than one level down. So instead of:
promiseReturningFunc()
  .get('a')
  .get('b')
  .get('c')
  .get('d')
  .then(doSomethingToD)

you could use:
promiseReturningFunc()
  .get(['a', 'b', 'c', 'd'])
  .then(doSomethingToD)

or even:
promiseReturningFunc()
  .get('a.b.c.d')
  .then(doSomethingToD)

like lodash's _.get().
Thanks for making such an awesome library.

I would recommend writing a combinator for this in the style of ramda
function into(o, key) {
  return o[key];
}
function gett(props) {
  if (typeof props === 'string') props = props.split('.')
  return function(obj) {
    return props.reduce(into, obj);
  }
}

The benefit of writing it like this is that you can then reuse it with anything, e.g.
list.map(gett('a.b.c.d'))
promise.then(gett('a.b.c.d'))

and so on

Appreciate the tip, @spion. Using .then() with another function is an option, for sure.
It would be even handier to add the support for an passing an array to promise.prototype.get(), so no extra functions or .then are necessary. Since .get() doesn't currently work if you pass it an array, this can be backwards compatible.

Is it that big of a difference in terms of how handier it is? The issue is that every single library ends up implementing every single such helper over and over again, growing in size and the increasing the complexity of its API documentation
At least in this case the function is clearly reusable across all mappable things (arrays, observables, promises etc) so implementing it in a separate library seems like the right choice to me.
Though its definitely true that Bluebird already includes a lot of additional functionality that is similarly separable get itself is Ramda's prop
import {prop} from 'ramda'
promise.then(prop('a'))

Totally on the same page as you weighing the pros & cons of bloating the library.
In this particular case, bluebird already has a .get() method. It accepts any 'string', just not ['nested', 'strings'] to go more than one level down. So it's not a question of adding yet another helper method, just an easier way to use an existing helper method.
This is very handy when parsing RESTful apis, for example elasticsearch, which returns Bluebird promises that resolve into heavily nested objects like:
{
    "_shards":{
        "total" : 5,
        "successful" : 5,
        "failed" : 0
    },
    "hits":{
        "total" : 1,
        "hits" : [
            {
                "_index" : "twitter",
                "_type" : "tweet",
                "_id" : "1",
                "_source" : {
                    "user" : "kimchy",
                    "postDate" : "2009-11-15T14:12:12",
                    "message" : "trying out Elasticsearch"
                }
            }
        ]
    }
}

I'm not sure the API documentation would have to get all that more complex in this case. The addition could read:

You can pass an array of property names to go multiple levels down:
.get(['hits', 'hits', 0, '_source', 'message']

instead of
.get('hits').get('hits').get(0).get('_source').get('message')

It would reduce complexity of code written and shared among our team. It's easier to read, and consistent with other examples of .get(), such as lodash's.

ok let's do it

Cool, I can work on a PR this weekend.

I'm for support lodash-style of .get:
http://devdocs.io/lodash/#get

@konstruilo that affects the performance of the common case as now every string needs to be parsed for a path expression

It also fails for:
var obj = { ["a.b.c.d"] : 15 }

Closing for inactivity. Feel free to post something here if you're still interested and we'll reopen.


kubectl 1.21 and containerd fail to follow stream_idle_timeout

Description

Steps to reproduce the issue:

Create a cluster with containerd.
Use a version 1.21 kubectl
Exec into a pod and see that it will not follow the stream_idle_timeout limit

Describe the results you received:
Did not get kicked out.
Describe the results you expected:
kicked out after the stream_idle_timeout time.
What version of containerd are you using:
1.5.2 and 1.4.6
Any other relevant information (runC version, CRI configuration, OS/Kernel version, etc.):
I've created an issue with Kubernetes about this issue as well. https://github.com/kubernetes/kubernetes/issues/102569

runc --version
$ runc --version
runc version 1.0.0-rc95
commit: b9ee9c6314599f1b4a7f497e1f1f856fe433d3b7
spec: 1.0.2-dev
go: go1.16.4
libseccomp: 2.5.1

crictl info
$ crictl info
```
{
  "status": {
    "conditions": [
      {
        "type": "RuntimeReady",
        "status": true,
        "reason": "",
        "message": ""
      },
      {
        "type": "NetworkReady",
        "status": true,
        "reason": "",
        "message": ""
      }
    ]
  },
  "cniconfig": {
    "PluginDirs": [
      "/opt/cni/bin"
    ],
    "PluginConfDir": "/etc/cni/net.d",
    "PluginMaxConfNum": 1,
    "Prefix": "eth",
    "Networks": [
      {
        "Config": {
          "Name": "cni-loopback",
          "CNIVersion": "0.3.1",
          "Plugins": [
            {
              "Network": {
                "type": "loopback",
                "ipam": {},
                "dns": {}
              },
              "Source": "{\"type\":\"loopback\"}"
            }
          ],
          "Source": "{\n\"cniVersion\": \"0.3.1\",\n\"name\": \"cni-loopback\",\n\"plugins\": [{\n  \"type\": \"loopback\"\n}]\n}"
        },
        "IFName": "lo"
      },
      {
        "Config": {
          "Name": "k8s-pod-network",
          "CNIVersion": "0.3.1",
          "Plugins": [
            {
              "Network": {
                "type": "calico",
                "ipam": {
                  "type": "calico-ipam"
                },
                "dns": {}
              },
              "Source": "{\"container_settings\":{\"allow_ip_forwarding\":true},\"datastore_type\":\"kubernetes\",\"ipam\":{\"type\":\"calico-ipam\"},\"kubernetes\":{\"kubeconfig\":\"/etc/cni/net.d/calico-kubeconfig\"},\"log_file_path\":\"/var/log/calico/cni/cni.log\",\"log_level\":\"info\",\"mtu\":1480,\"nodename\":\"<IP_ADDRESS>\",\"policy\":{\"type\":\"k8s\"},\"type\":\"calico\"}"
            },
            {
              "Network": {
                "type": "portmap",
                "capabilities": {
                  "portMappings": true
                },
                "ipam": {},
                "dns": {}
              },
              "Source": "{\"capabilities\":{\"portMappings\":true},\"snat\":true,\"type\":\"portmap\"}"
            },
            {
              "Network": {
                "type": "bandwidth",
                "capabilities": {
                  "bandwidth": true
                },
                "ipam": {},
                "dns": {}
              },
              "Source": "{\"capabilities\":{\"bandwidth\":true},\"type\":\"bandwidth\"}"
            }
          ],
          "Source": "{\n  \"name\": \"k8s-pod-network\",\n  \"cniVersion\": \"0.3.1\",\n  \"plugins\": [\n    {\n      \"type\": \"calico\",\n      \"log_level\": \"info\",\n      \"log_file_path\": \"/var/log/calico/cni/cni.log\",\n      \"datastore_type\": \"kubernetes\",\n      \"nodename\": \"<IP_ADDRESS>\",\n      \"mtu\": 1480,\n      \"ipam\": {\n          \"type\": \"calico-ipam\"\n      },\n      \"container_settings\": {\n          \"allow_ip_forwarding\": true\n      },\n      \"policy\": {\n          \"type\": \"k8s\"\n      },\n      \"kubernetes\": {\n          \"kubeconfig\": \"/etc/cni/net.d/calico-kubeconfig\"\n      }\n    },\n    {\n      \"type\": \"portmap\",\n      \"snat\": true,\n      \"capabilities\": {\"portMappings\": true}\n    },\n    {\n      \"type\": \"bandwidth\",\n      \"capabilities\": {\"bandwidth\": true}\n    }\n  ]\n}"
        },
        "IFName": "eth0"
      }
    ]
  },
  "config": {
    "containerd": {
      "snapshotter": "overlayfs",
      "defaultRuntimeName": "runc",
      "defaultRuntime": {
        "runtimeType": "",
        "runtimeEngine": "",
        "PodAnnotations": null,
        "ContainerAnnotations": null,
        "runtimeRoot": "",
        "options": null,
        "privileged_without_host_devices": false,
        "baseRuntimeSpec": ""
      },
      "untrustedWorkloadRuntime": {
        "runtimeType": "",
        "runtimeEngine": "",
        "PodAnnotations": null,
        "ContainerAnnotations": null,
        "runtimeRoot": "",
        "options": null,
        "privileged_without_host_devices": false,
        "baseRuntimeSpec": ""
      },
      "runtimes": {
        "runc": {
          "runtimeType": "io.containerd.runc.v2",
          "runtimeEngine": "",
          "PodAnnotations": [],
          "ContainerAnnotations": [],
          "runtimeRoot": "",
          "options": {
            "BinaryName": "",
            "CriuPath": "",
            "IoGid": 0,
            "IoUid": 0,
            "NoNewKeyring": false,
            "NoPivotRoot": false,
            "Root": "",
            "ShimCgroup": "",
            "SystemdCgroup": false
          },
          "privileged_without_host_devices": false,
          "baseRuntimeSpec": ""
        },
        "untrusted": {
          "runtimeType": "io.containerd.runc.v2",
          "runtimeEngine": "",
          "PodAnnotations": [],
          "ContainerAnnotations": [],
          "runtimeRoot": "",
          "options": null,
          "privileged_without_host_devices": false,
          "baseRuntimeSpec": ""
        }
      },
      "noPivot": false,
      "disableSnapshotAnnotations": true,
      "discardUnpackedLayers": false
    },
    "cni": {
      "binDir": "/opt/cni/bin",
      "confDir": "/etc/cni/net.d",
      "maxConfNum": 1,
      "confTemplate": ""
    },
    "registry": {
      "configPath": "",
      "mirrors": {
        "docker.io": {
          "endpoint": [
            "https://registry-1.docker.io"
          ]
        }
      },
      "configs": null,
      "auths": null,
      "headers": null
    },
    "imageDecryption": {
      "keyModel": "node"
    },
    "disableTCPService": true,
    "streamServerAddress": "<IP_ADDRESS>",
    "streamServerPort": "0",
    "streamIdleTimeout": "15m",
    "enableSelinux": false,
    "selinuxCategoryRange": 1024,
    "sandboxImage": "registry.ng.bluemix.net/armada-master/pause:3.5",
    "statsCollectPeriod": 10,
    "systemdCgroup": false,
    "enableTLSStreaming": false,
    "x509KeyPairStreaming": {
      "tlsCertFile": "",
      "tlsKeyFile": ""
    },
    "maxContainerLogSize": 16384,
    "disableCgroup": false,
    "disableApparmor": false,
    "restrictOOMScoreAdj": false,
    "maxConcurrentDownloads": 3,
    "disableProcMount": false,
    "unsetSeccompProfile": "",
    "tolerateMissingHugetlbController": true,
    "disableHugetlbController": true,
    "ignoreImageDefinedVolumes": false,
    "netnsMountsUnderStateDir": false,
    "containerdRootDir": "/var/data/cripersistentstorage",
    "containerdEndpoint": "/run/containerd/containerd.sock",
    "rootDir": "/var/data/cripersistentstorage/io.containerd.grpc.v1.cri",
    "stateDir": "/run/containerd/io.containerd.grpc.v1.cri"
  },
  "golang": "go1.16.4",
  "lastCNILoadStatus": "OK"
}
```

uname -a
$ uname -a
```
Linux test-c2rtj9f20cra25h0c80g-testingexec-default-0000029e 4.15.0-143-generic #147-Ubuntu SMP Wed Apr 14 16:10:11 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
```

https://github.com/kubernetes/kubernetes/pull/97083

One perspective on this. We use the containerd stream idle timeout to implement a requirement that kubectl exec sessions be killed after being idle for 15 minutes.  On the surface it seems like this issue exposes a problem on the server side (containerd or Kubernetes) as anyone with existing 1.21 versions of kubectl is unwittingly circumventing the timeout. Or are we misusing the stream idle timeout?

I would propose making the keep alive change at the client side a client option. I'd like to discuss if that change was done to relive some deeper issue that was causing timeouts in test, if it was a temporary fix etc.

@mikebrow is it also possible to add a server side option to ignore such keep alive requests?

@mikebrow is it also possible to add a server side option to ignore such keep alive requests?

the server side to this is actually in the container runtime.. :-)

@mikebrow is it also possible to add a server side option to ignore such keep alive requests?

yes it is possible.. not sure if it's adviseable

@mikebrow With our 15m stream_idle_timeout exec and logs seem to be behaving without the keep alive requests.  Given that, would it be safe / less inadvisable to ignore keep alive requests?
I'm guessing at some point you need them, or the Kubernetes change wouldn't have been made.  Hopefully the point at which you need them it would be unlikely that someone would also care about the stream_idle_timeout.
Better yet would be for the keep alive to not count for the stream_ide_timeout.  Ping every 5 minutes but still timeout at 15 minutes if there has been no other traffic.  Does that makes sense?

I think the point of the keep alive.. is to make sure there is no timeout. So, I think we need to figure out why these sig-node changes went  in to understand why they don't want to support timeout on attach/exec into a pod/container. I suspect a client side switch is/was in order. And if we don't want to allow that feature from a cloud provider, we would need some way to "reject" the switch request and let them know the cloud provider does not support autonomous keep alive per the obvious resource issue of dangling streams/code running in the containers when no longer in use. Anyhow just my opinion.
@Random-Liu @aojea Thoughts?

I think the point of the keep alive.. is to make sure there is no timeout.

I'm not sure about how stream_idle_timeout works, but let me explain the rationale:
The goal of https://github.com/kubernetes/kubernetes/pull/97083 is to have keepalives to keep the TCP connections alive, so no intermediate device close them because they are idle.
These connections use to go through different systems that have short timeouts, i.e. a router with NAT, that will close the TCP connection after 60 seconds but none of the endpoints will notice this and the connections will have to timeout (this can takes 16 minutes by default in Linux) and the user will have a "hanging" connections, this is the same as ServerAliveInterval option in ssh.
My reading from this issue that we want to have a "session timeout", that seems to happen a layer above, what I don't know if we mixed things and applied the "ping" in the wrong place :sweat_smile:

Ok, I see it, containerd conflates the TCP session and the exec session
https://github.com/containerd/containerd/blob/261c107ffc4ff681bc73988f64e3f60c32233b37/pkg/cri/streaming/remotecommand/httpstream.go#L163
https://github.com/containerd/containerd/blob/261c107ffc4ff681bc73988f64e3f60c32233b37/pkg/cri/streaming/remotecommand/websocket.go#L113
As I explained in the previous comment, I personally think that they belong to different layers.
Checking at the code I think that I can submit a patch to containerd to make stream_idle_timeout a context cancellation on timeout, so we make this paremeter session oriented instead of TCP oriented, what do you think?

/assign

I think that current client behaviour keeping the TCP session alive with SPDY pings is desirable because it solves a lot of issues for people using those commands, mainly in cloud environments when connections are closed silently. And kubecetl exec and port-forward are heavily used
If we want to keep the client as is, I see 2 possible solutions to maintain stream_idle_timeout working on the CRIs:

one in the spdy library, if we consider that SetIdleTimeout doesn't  take ping frames into account, only the data related to the connection.

// SetIdleTimeout sets the amount of time the connection may sit idle before
// it is forcefully terminated.
func (s *Connection) SetIdleTimeout(timeout time.Duration) {
      s.framer.setIdleTimeout(timeout)
}

A Timeout implemented in the container runtime, since this is the place used by the users to configure it.

Option 1 solves the problem for all the implementations but requires to agree on the semantics of SetIdleTimeout meaning idle is "no data related to the connection".
I think that will be similar to the linux TCP TCP_USER_TIMEOUT and TCP_KEEPALIVES behaviour, and will maintain the compatibility
TCP_USER_TIMEOUT The maximum amount of time in milliseconds that transmitted data may remain unacknowledged before TCP will forcibly close connection.

@dmcgowan @dims @adisky you are maintainers on the moby/spdystream project, what do you think?
I can PR there if you agree

@aojea related to changing spdystream...

@aojea related to changing spdystream...
Are you suggesting here just avoiding the idle reset when a ping frame is set? https://github.com/moby/spdystream/blob/master/connection.go#L161
I think that change seems reasonable, but not sure how safe that is to do without explicitly enabling in the interface. That library is stable and not expecting changes at this point. Could find a way to inject options or add a function to enable it. The issue is that it might change the "idle timeout" the client is setting, since previously it was just idle between pings.

. Could find a way to inject options or add a function to enable it. The issue is that it might change the "idle timeout" the client is setting, since previously it was just idle between pings.

@dmcgowan I've sent a PR implementing a new method that ignores the ping frames to detect idle sessions
https://github.com/moby/spdystream/pull/86
It doesn't modifies current behaviour, if that is accepted, CRIO (@mrunalp, @saschagrunert  ) and Containerd ( @mikebrow ) will just need to vendor the spdystream library with the change replace conn.SetIdleTimeout(idleTimeout)   by conn.SetUserIdleTimeout(idleTimeout) in their code, so stream_idle_timeout will not be affected by the new  kubectl exec/port-forward SPDY pings
https://github.com/containerd/containerd/issues/5563#issuecomment-860728172
Does it make sense to all of you?

Hi team. Any prognosis on this?  It looks like things kind of came to a halt two week ago.

Hey guys, any progress on this?

@dmcgowan @aojea Can we expect this fix implemented into 1.5?

not following exactly what the ask is.. the behavior changed at the stream client and now all stream servers are expected to block the client change to fix the client?

@dmcgowan @aojea @mikebrow  Can we expect this fix implemented into 1.5?

@dmcgowan  @aojea  @mikebrow  Can we expect this fix implemented into 1.5 or even 1.6?

@dmcgowan @aojea @mikebrow I just tested this in 1.6 and it still does not kick me out after stream_idle_timeout time is up

@dmcgowan  @aojea  @mikebrow Can I get the status of this?

Can we please get some kind of update or indicator that this is even being tracked at all?

Does it make sense to all of you?

Hello @aojea .. it makes sense to either

have a keep alive pattern that works under the overarching streaming protocol with timeouts longer than the ping cycle (not sure what happened to your SPDY PR )
or to have a higher level change to our shared CRI streaming api for the client to request a server side no progress timeout

https://kubernetes.io/blog/2024/08/20/websockets-transition/ should resolve this by transitioning from SPDY to WebSockets.


[Machine Learning] Using TensorFlow.js and Fingerpose for AI Gesture Recognition

Proposal Submission
Proposed title of article
Your title should be descriptive of the article/tutorial. Be Specific.
Use keyword research to improve your article's SEO.
Using TensorFlow.js and Fingerpose for AI Gesture Recognition
Proposed article introduction
We're looking for the first 2-3 paragraphs of your article that appropriately summarize what your article will be about.
We will use this writing snippet to help us assess the overall quality before approval so ensure it has been proofread, spellchecked and grammarchecked.
Gesture recognition is a technique that allows you to determine hand gestures from the MediaPipe's Handpose model. It could be used to control computer input, to detect sign language, and for active gameplay.
This tutorial will teach us how to leverage the fingerpose model and tensorflow.js to build an AI gesture recognition app.
Key takeaways
What are the 3-5 most important things the reader should understand or be able to do after reading this article?
Use this area to get your ideas down on the bulk of your article or tutorial.
By the end of this tutorial, a reader should be able to:

Understand gesture recognition
How to install the fingerpose model.
Learn how to detect gestures from different handposes
Using the detected gestures, control web applications

Article quality
How is your article unique? Tell us what makes your approach different from similar articles that have published on the same topic?
Is yours more in-depth? Does it cover additional topics? Do you provide handy tips or anecdotal advice?
References
Please list links to any published content/research that you intend to use to support/guide this article.

Fingerpose

Good afternoon and thank you for submitting your topic to the EngEd program.
After some careful consideration, it struck us that this topic may be a bit over-saturated throughout other blog sites and official documentations.
We typically refrain from publishing content that is covered widely on the net or other blogs. We're more interested in original, practitioner-focused content that takes a deeper dive into programming-centric concepts.
But in order to approve the topic, it has to serve value to the larger developer community at large.
An option and a great way to write this as an in-depth article and make it more add value to the greater developer community at large would be to walk the reader through the USE of methods and functions by building a unique, different, useful project.

We would love to learn your thought process behind the solution you arrived at using these concepts and topics.

That way a developer could see them in action.
As mentioned above - we believe this topic is widely covered on other blog sites.
The best way for students to build a great portfolio is by building what does not exist and what can provide the most value.


undefined method `name' for "example.com":String (NoMethodError)

the DNS Imple gem is crashing when i try to add a record:
~$ dnsimple record:create example.com redacted CNAME redacted.example.com
/Users/ben/Developer/.rvm/gems/ruby-1.9.2-p180/gems/dnsimple-ruby-1.2.1/lib/dnsimple/record.rb:77:in `create': undefined method `name' for "example.com":String (NoMethodError)
	from /Users/ben/Developer/.rvm/gems/ruby-1.9.2-p180/gems/dnsimple-ruby-1.2.1/lib/dnsimple/commands/create_record.rb:12:in `execute'
	from /Users/ben/Developer/.rvm/gems/ruby-1.9.2-p180/gems/dnsimple-ruby-1.2.1/lib/dnsimple/cli.rb:15:in `execute'
	from /Users/ben/Developer/.rvm/gems/ruby-1.9.2-p180/gems/dnsimple-ruby-1.2.1/bin/dnsimple.rb:147:in `<top (required)>'
	from /Users/ben/Developer/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
	from /Users/ben/Developer/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
	from /Users/ben/Developer/.rvm/gems/ruby-1.9.2-p180/gems/dnsimple-ruby-1.2.1/bin/dnsimple:4:in `<top (required)>'
	from /Users/ben/Developer/.rvm/gems/ruby-1.9.2-p180/bin/dnsimple:19:in `load'
	from /Users/ben/Developer/.rvm/gems/ruby-1.9.2-p180/bin/dnsimple:19:in `<main>'

Here's the gem list:
~$ gem install dnsimple-ruby
Fetching: multi_json-1.0.4.gem (100%)
Fetching: multi_xml-0.4.1.gem (100%)
Fetching: httparty-0.8.1.gem (100%)
When you HTTParty, you must party hard!
Fetching: dnsimple-ruby-1.2.1.gem (100%)
Successfully installed multi_json-1.0.4
Successfully installed multi_xml-0.4.1
Successfully installed httparty-0.8.1
Successfully installed dnsimple-ruby-1.2.1

Happens on 1.8.7 too.

This is fixed in the latest push and release 1.2.2.


[Bug]: Vite exception for the new laravel npm module setup

What happened?
Your package is among a lot of packages that got affected by the new module type in packages.json:
https://github.com/laravel/laravel/blob/84991f23011dfde4bc3ae3db04343c3afb3bc122/package.json#LL3C22-L3C22
Laravel-Wave now throws this exception:
Uncaught SyntaxError: The requested module '/node_modules/.vite/deps/laravel-wave.js?v=f42660d9' does not provide an export named 'default' (at echo.js:9:8)

How to reproduce the bug
Just install it in a new Laravel project, I guess?!
Package Version
^0.7.1
PHP Version
8.1.7
Laravel Version
10.13.5
Which operating systems does with happen with?
Linux
Notes
I'm using the TALL stack. (blade preset with Laravel Breeze)

Try to use named import:
import { Wave } from "laravel-wave"

I will adopt the docs. Thanks for your attention 👍


Migrated OSS , MD and Auth Code

Closing as this has already been implemented with the latest beta version of the SDKs.


Add investors to team page

From matt in discord:

now that we have announced our strategic sale
we should add our investors to the website
not super high priority compared to product design
but once we finalize a design it can also be a "good first issue" for someone to implement
i want to stress the international nature of our strategic partners
because we are trying to build a global community

@andrewhyde you want this?

Yep!

Good initial list:

Foundation Capital, venture investor in sharing economy companies like Uber, Luxe, and Peerspace
Garry Tan, former Y Combinator partner and first investor in Coinbase and Instacart
Alexis Ohanian, founder and former CEO of Reddit (the original community site)
Gil Penchina, AngelList’s top syndicate lead
Kamal Ravikant, investor in Protocol Labs (creator of IPFS and Filecoin)
Steve Jang, Uber’s founding advisor and early angel
Randall Kaplan, co-founder of Akamai
In addition to leading cryptocurrency VC and hedge fund Pantera Capital (that led our $3M Advisor round in 2017), we also welcome top investment funds from all around the world:
BlockTower Capital, Turing Capital, Cypher Capital (United States)
Smart Contract Japan, Red Robot (Japan)
FBG, Danhua Capital, Continue Capital, PreAngel Fund (China)
Hashed (South Korea)
Kenetic Capital, Sora Ventures (Hong Kong)
BlockAsset, Spartan Group, Iconic, Beyond Blocks (Southeast Asia)
1kx fund (Germany)
KBW Ventures (Middle East)
Finally, we are also grateful to be supported by the founders and companies of other top projects tackling some of the most challenging technology problems in blockchain. Our alliances with them will further speed up the development of features integral to the Origin platform.
OmiseGo, leading development of the Ethereum scaling solution Plasma
Enigma, building privacy-enabled computations
Fragments, launching a new stable-coin that can be used for peer-to-peer transactions
Shapeshift, building democratized currency exchange

Alphabetized list:
Funds:
1kx fund
Beyond Blocks
BlockAsset
BlockTower Capital
Continue Capital
Cypher Capital
Danhua Capital
Enigma
FBG
Foundation Capital
Fragments
Hashed
Iconic
KBW Ventures
Kenetic Capital
OmiseGo
Pantera Capital
PreAngel Fund (China)
Red Robot
Shapeshift
Smart Contract Japan
Sora Ventures
Spartan Group
Turing Capital
People:
Steve Jang
Randall Kaplan
Alexis Ohanian
Gil Penchina
Kamal Ravikant
Garry Tan

Current logo is 157x139px. Should we make that a bit more uniform?
200 x 200 sounds good to me.

Agree they should be uniform, and should have at lest equal visual "weight" to the profile pics. But that's an aure decision.
Actually: Now that we have more investors, would we think of breaking this off into it's own page, /investors?

@matthewliu will disagree with me, but my preference would be to keep everything on the team page for now since most people don't click around that much. I get that there's a lot of information to squeeze into one page, but we can do a progressive reveal with either a "show more" button (like we currently have on the partners page) or a section with the logos scrolling by.
This is more of a comment for when we do a bigger redesign, but when people come to our landing page, there's a few key pieces of information I'd like folks to get in the first 30 seconds without having to click anywhere:

What Origin is and why we're building it
Experienced team w/ our HQ in SF (seems to carry a lot of weight when we travel)
Backed by top investors
Tons of partners are already committed to building on Origin
Logos from press, etc

Each of these points lend real credibility to our work but unfortunately a lot of people visit our site and miss one or more of these details due to our current organization of this information. We obviously can't show everything all on one page, but we can use progressive reveals to give people a taste and then let them click to see more.

I’m ok with team and investors being on the same page right now. Actually
have never been opposed to that.
I do think in a rebranding I want our website to be more pages/have
information hierarchy closer to a Stripe (yes I know I am obsessed) vs.
typical marketing landing pages. I think we’ve earned that right. Doesn’t
mean we can’t have investor and team highlights but I disagree that we
should have a giant scrolling page.
Anyways that’s a discussion for later date anyways.
For now, all I’m requesting is that we do something cleaner with investors
(and Aure already has some concepts) vs yet another giant logo board (eg
partners page).
On Fri, Apr 27, 2018 at 2:41 AM Josh Fraser<EMAIL_ADDRESS>wrote:

@matthewliu https://github.com/matthewliu will disagree with me, but my
preference would be to keep everything on the team page for now since
most people don't click around that much. I get that there's a lot of
information to squeeze into one page, but we can do a progressive reveal
with either a "show more" button (like we currently have on the partners
page) or a section with the logos scrolling by.
This is more of a comment for when we do a bigger redesign, but when
people come to our landing page, there's a few key pieces of information
I'd like folks to get in the first 30 seconds without having to click
anywhere:

What Origin is and why we're building it
Experienced team w/ our HQ in SF (seems to carry a lot of weight
when we travel)
Backed by top investors
Tons of partners are already committed to building on Origin
Logos from press, etc

Each of these points lend real credibility to our work but unfortunately a
lot of people visit our site and miss one or more of these details due to
our current organization of this information. We obviously can't show
everything all on one page, but we can use progressive reveals to give
people a taste and then let them click to see more.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/OriginProtocol/company-website/issues/171#issuecomment-384748485,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AEuxN5x1XgEH-DarPgjbFI3PSJUuMNvrks5tshS9gaJpZM4TlUuH
.

--
Cofounder of Origin http://www.originprotocol.com
Join our Telegram http://t.me/originprotocol.com

Done via #197 ✅


Option::unwrap panic in parser when ENABLE_HEADING_ATTRIBUTES is set

I have come bearing gifts. (When looking up the spelling of that, I just learned the phrase was about the trojan horse. Neat.)
But inside of the horse is a fuzzer panic.
#[test]
fn test_bad_heading_attribute() {
    let mut opts = pulldown_cmark::Options::empty();

    opts.insert(Options::ENABLE_HEADING_ATTRIBUTES);

    let data = "[[][({][}\n-";

    for _ in pulldown_cmark::Parser::new_ext(data, opts) {};
}

This took a whole 10k seconds of CPU time, or 2 hours of wall clock time to find. So we are definitely making progress!

(This was fuzzed directly against the #564 PR, commit 209b248)

This should be fixed by that PR now as well. I have since fuzzed myself for a few hours, and found nothing!

Cool! Probably best to get that PR in sooner than later, there may be more bugs, but long running PRs are no fun, personally.
Your call, but I tend to avoid em.

I am in agreement with you. I will ask Raph Levien if he has time to review when he has time.

Merged! Thanks again for helping us get started with fuzzing :)
If you find any more, please do send em to us!


Inference demo or  custom dataset inference script

Thanks for your great work！ Is there any plan to release an Inference demo (single image or image folder) or interactive script(bash or  UI).

Hi, thanks for your interest.
We have added an inference demo (for single image classification) in Google Colab. We hope this could be helpful.
For inference on your custom dataset, we recommend you to write dataset prepare codes like food101.py and dataset config file like food101.yaml, then import your dataset in train.py.
After that, you can eval on your custom dataset by using eval.sh.

thanks a lot!

Hi, thanks for your interest.
We have added an inference demo (for single image classification) in Google Colab. We hope this could be helpful.
For inference on your custom dataset, we recommend you to write dataset prepare codes like food101.py and dataset config file like food101.yaml, then import your dataset in train.py. After that, you can eval on your custom dataset by using eval.sh.

Is there any plan to release an Inference demo (for single image detection) or interactive script(bash or UI).


[Influxdb-0.9.5] invalid memory address or nil pointer dereference

When running influxdb-0.9.5 we met with nil pointer deference problem:
[http] 2015/12/22 05:38:17 <IP_ADDRESS> - root [22/Dec/2015:05:38:17 +0000] POST /write?consistency=one&db=tenant_e6299a62235a4096af5090c326d634be&p=%5BREDACTED%5D&precision=n&rp=default&u=root HTTP/1.1 204 0 - okhttp/2.4.0 3424514d-a86e-11e5-bf01-000000000000 824.953µs
[wal] 2015/12/22 05:38:18 Flush due to idle. Flushing 810 series with 24631 points and 2664775 bytes from partition 1
[wal] 2015/12/22 05:38:18 Flush due to idle. Flushing 810 series with 24704 points and 2670344 bytes from partition 1
[wal] 2015/12/22 05:38:18 Flush due to idle. Flushing 518 series with 24739 points and 2900824 bytes from partition 1
[wal] 2015/12/22 05:38:18 Flush due to idle. Flushing 2430 series with 73652 points and 7964326 bytes from partition 1
[wal] 2015/12/22 05:38:18 Flush due to idle. Flushing 550 series with 24537 points and 2871095 bytes from partition 1
[wal] 2015/12/22 05:38:18 Flush due to idle. Flushing 810 series with 24341 points and 2631873 bytes from partition 1
[wal] 2015/12/22 05:38:19 Flush due to idle. Flushing 810 series with 24484 points and 2646698 bytes from partition 1
unexpected fault address 0x7f8187c80040
unexpected fault address 0x7f81b0386040
unexpected fault address 0x7f81d4396040
unexpected fault address 0x7f81e5e12040
panic: runtime error: invalid memory address or nil pointer dereference
	panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xb code=0x1 addr=0x0 pc=0x7a62af]

goroutine 219422326 [running]:
github.com/boltdb/bolt.(*Tx).rollback(0xc97969f2b0)
	/tmp/build/src/github.com/boltdb/bolt/tx.go:224 +0xdf
github.com/boltdb/bolt.(*DB).Update.func1(0xc97969f2b0)
	/tmp/build/src/github.com/boltdb/bolt/db.go:539 +0x2c
github.com/boltdb/bolt.(*Tx).rollback(0xc97969f2b0)
	/tmp/build/src/github.com/boltdb/bolt/tx.go:224 +0xdf
github.com/boltdb/bolt.(*Tx).Commit(0xc97969f2b0, 0x0, 0x0)
	/tmp/build/src/github.com/boltdb/bolt/tx.go:152 +0x205
github.com/boltdb/bolt.(*DB).Update(0xc8a24d0000, 0xc9e8c1da50, 0x0, 0x0)
	/tmp/build/src/github.com/boltdb/bolt/db.go:554 +0x11d
github.com/influxdb/influxdb/tsdb/engine/bz1.(*Engine).WriteIndex(0xc94d330a00, 0xc973055e30, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
	/tmp/build/src/github.com/influxdb/influxdb/tsdb/engine/bz1/bz1.go:254 +0x86
github.com/influxdb/influxdb/tsdb/engine/wal.(*Partition).flushAndCompact(0xc9a6753680, 0x2, 0x0, 0x0)
	/tmp/build/src/github.com/influxdb/influxdb/tsdb/engine/wal/wal.go:1029 +0x731
github.com/influxdb/influxdb/tsdb/engine/wal.(*Log).triggerAutoFlush(0xc866f3ea80)
	/tmp/build/src/github.com/influxdb/influxdb/tsdb/engine/wal/wal.go:589 +0xf8
github.com/influxdb/influxdb/tsdb/engine/wal.(*Log).autoflusher(0xc866f3ea80, 0xc8daba08a0)
	/tmp/build/src/github.com/influxdb/influxdb/tsdb/engine/wal/wal.go:609 +0x17d
created by github.com/influxdb/influxdb/tsdb/engine/wal.(*Log).Open
	/tmp/build/src/github.com/influxdb/influxdb/tsdb/engine/wal/wal.go:240 +0x627

Is This a known influxdb bug or issue?

@itachi90 can you provide more context?
What kind of load was on the system at the time?
Did it recover after a restart?
Was there missing data?
How much RAM is on the machine?

Load around 8K points/Sec
Did not recover after restart, terminated when writing wal indices
The node has 240G memory.

This is an issue with the bz1 storage engine. That engine is deprecated and has been replaced by the tsm1 engine in 0.10.0.  There is a conversion tool that you can use to convert your shards in bz1 format to tsm1 when upgrading to 0.10.0..


ci(engine): update restart policy in docker compose tpl

What problem does this PR solve?

Issue Number: ref #7380
What is changed and how it works?

Change docker compose restart policy to unless-stopped
Check whether panic happens in master and executor logs, if it does, fail the test directly.

Check List
Tests

Unit test
Integration test

Questions
Will it cause performance regression or break compatibility?
Do you need to update user documentation, design documentation or monitoring documentation?
Release note
None

/run-engine-integration-test

/run-engine-integration-test

/run-engine-integration-test

/run-engine-integration-test

Codecov Report

Merging #7466 (5a16ba1) into master (f4754e1) will increase coverage by 0.0354%.
The diff coverage is 9.8039%.

Additional details and impacted files

Flag
Coverage Δ

cdc
67.5303% <ø> (+0.0827%)
:arrow_up:

dm
51.9931% <ø> (-0.0151%)
:arrow_down:

engine
60.9333% <9.8039%> (-0.0353%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.
@@               Coverage Diff                @@
##             master      #7466        +/-   ##
================================================
+ Coverage   59.8150%   59.8504%   +0.0354%
================================================
  Files           803        803
  Lines         92129      92290       +161
================================================
+ Hits          55107      55236       +129
- Misses        32213      32242        +29
- Partials       4809       4812         +3

/run-engine-integration-test

/merge


Add move (note mv) command

Resolves #79
Checklist

[*] I have made a change to this repository, be it functionality, testing, documentation, spelling, or grammar.
[*] I updated my branch with the master branch.
[*] I have added the necessary testing to prove my fix is effective/my feature works (or I did not modify functionality).
[*] I have added necessary documentation about the functionality in an appropriate .md file.
[*] I have appropriately commented any code I have modified.  For  and  I chose for relative paths only, since I think it would be weird to move a note out of your notes directory.

Note that  may be an absolute path. For  and  I chose for relative paths only, since I think it would be weird to move a note out of your notes directory.

Perfect, thanks! :+1:

Perfect, thanks! :+1:


Issue with html render

Description
The paper doesnt pop up and it shows the arxiv template with lorem ipsum
(Optional:) Please add any files, screenshots, or other information here.

(Required) What is this issue most closely related to? Select one.
Other
Internal issue ID
d83f84dc-43e5-497d-a465-63a2a576ffa8
Paper URL
https://arxiv.org/html/2409.11952v1
Browser
Chrome/<IP_ADDRESS>
Device Type
Desktop

The normal PDF render works fine


Infinite loop in rubocop -a for ruby/csv

Failure to perform RuboCop autocorrect in https://github.com/ruby/csv.git project

Actual behavior
Take a pretty long time
Infinite loop detected in /home/user/sources/csv/test/lib/test/unit.rb.
/home/user/.rvm/gems/ruby-2.5.0/gems/rubocop-0.52.1/lib/rubocop/runner.rb:234:in `block in iterate_until_no_changes'
/home/user/.rvm/gems/ruby-2.5.0/gems/rubocop-0.52.1/lib/rubocop/runner.rb:230:in `loop'
/home/user/.rvm/gems/ruby-2.5.0/gems/rubocop-0.52.1/lib/rubocop/runner.rb:230:in `iterate_until_no_changes'
/home/user/.rvm/gems/ruby-2.5.0/gems/rubocop-0.52.1/lib/rubocop/runner.rb:201:in `do_inspection_loop'
/home/user/.rvm/gems/ruby-2.5.0/gems/rubocop-0.52.1/lib/rubocop/runner.rb:111:in `block in file_offenses'
/home/user/.rvm/gems/ruby-2.5.0/gems/rubocop-0.52.1/lib/rubocop/runner.rb:121:in `file_offense_cache'
/home/user/.rvm/gems/ruby-2.5.0/gems/rubocop-0.52.1/lib/rubocop/runner.rb:109:in `file_offenses'
/home/user/.rvm/gems/ruby-2.5.0/gems/rubocop-0.52.1/lib/rubocop/runner.rb:100:in `process_file'
/home/user/.rvm/gems/ruby-2.5.0/gems/rubocop-0.52.1/lib/rubocop/runner.rb:78:in `block in each_inspected_file'
/home/user/.rvm/gems/ruby-2.5.0/gems/rubocop-0.52.1/lib/rubocop/runner.rb:75:in `each'
/home/user/.rvm/gems/ruby-2.5.0/gems/rubocop-0.52.1/lib/rubocop/runner.rb:75:in `reduce'
/home/user/.rvm/gems/ruby-2.5.0/gems/rubocop-0.52.1/lib/rubocop/runner.rb:75:in `each_inspected_file'
/home/user/.rvm/gems/ruby-2.5.0/gems/rubocop-0.52.1/lib/rubocop/runner.rb:67:in `inspect_files'
/home/user/.rvm/gems/ruby-2.5.0/gems/rubocop-0.52.1/lib/rubocop/runner.rb:39:in `run'
/home/user/.rvm/gems/ruby-2.5.0/gems/rubocop-0.52.1/lib/rubocop/cli.rb:150:in `execute_runner'
/home/user/.rvm/gems/ruby-2.5.0/gems/rubocop-0.52.1/lib/rubocop/cli.rb:78:in `execute_runners'
/home/user/.rvm/gems/ruby-2.5.0/gems/rubocop-0.52.1/lib/rubocop/cli.rb:38:in `run'
/home/user/.rvm/gems/ruby-2.5.0/gems/rubocop-0.52.1/bin/rubocop:13:in `block in <top (required)>'
/home/user/.rvm/rubies/ruby-2.5.0/lib/ruby/2.5.0/benchmark.rb:308:in `realtime'
/home/user/.rvm/gems/ruby-2.5.0/gems/rubocop-0.52.1/bin/rubocop:12:in `<top (required)>'
/home/user/.rvm/gems/ruby-2.5.0/bin/rubocop:23:in `load'
/home/user/.rvm/gems/ruby-2.5.0/bin/rubocop:23:in `<main>'
/home/user/.rvm/gems/ruby-2.5.0/bin/ruby_executable_hooks:15:in `eval'
/home/user/.rvm/gems/ruby-2.5.0/bin/ruby_executable_hooks:15:in `<main>'

Steps to reproduce the problem

git clone https://github.com/ruby/csv.git
cd csv && git checkout 2cc4f858a2dcad54dc8c5e346ae691ac9a88f2a3
rubocop -a

RuboCop version
$ rubocop -V
0.52.1 (using Parser <IP_ADDRESS>, running on ruby 2.5.0 x86_64-linux)

Probably it is related to https://github.com/bbatsov/rubocop/issues/5547
I can reproduce this problem with --only BlockEndNewline option, and the related issue cause is the BlockEndNewline cop.

I was able to make a reduced test case using test/lib/test/unit.rb (from the above csv repo).
begin
  gem 'minitest', '< 5.0.0' if defined? Gem
rescue Gem::LoadError
end
require 'minitest/unit'
require 'test/unit/assertions'

def foo
  report.each {|r| 0 + \
  0 }
end

For whatever reason, this reduced case will only give the infinite loop error when explicitly specifying the --only BlockEndNewline option.

I believe this issue has been fixed by #5590.

Found another one infinite loop in ruby/csv - probably not related to current one, in another file https://github.com/bbatsov/rubocop/issues/5628


[SPARK-49369][CONNECT][SQL] Add implicit Column conversions

What changes were proposed in this pull request?
This introduces an implicit conversion for the Column companion object that allows a user/developer to create a Column from a catalyst Expression (for Classic) or a proto Expression (Builder) (for Connect). This mostly recreates they had before we refactored the Column API. This comes at the price of adding the an import.
Why are the changes needed?
Improved upgrade experience for Developers and User who create their own Column's from expressions.
Does this PR introduce any user-facing change?
No.
How was this patch tested?
I added it to a couple of places in the code and it works.
Was this patch authored or co-authored using generative AI tooling?
No.

cc @EnricoMi

Shout-out to @larsk-db and @vkorukanti for this idea!

Thanks for the public helper method, will test this once it is in the snapshot.

I will update this once https://github.com/apache/spark/pull/48146 is merged.

Merging to master.


Example architectures e.g Intranet and DMS

Article suggestion
From a discussion at a SharePoint Saturday, a question was asked about example implementations e.g.

multisite modern intranet, example architecture and suggested departments.
multisite document repositories.

These are more around architectural examples, what combination of features can be used to form these types of implementations.

This would be a great article for the Scenarios section.

@sympmarc  - I've been doing a lot of work around Intranets / Document management solutions - 'when to use what', and covered off example information architecture scenarios with my customers as part of the engagement (Home Sites, Hub Sites, etc.)
I would be happy to contribute to this; if you feel its still relevant.

@aaronrendell - Absolutely! If you'd like to take a crack at it, we'd love your contribution. Let us know if you need any assistance.

Hello @aaronrendell, just checking in to see if you need any support on this one and if you are still interested in writing. Thanks so much for volunteering your time for this effort!


Gtm 1

Please always provide the GitHub issue(s) your PR is for, as well as test URLs where your change can be observed (before and after):
Fix #
Test URLs:

Before: https://main--icicidirect--aemsites.hlx.live/research/equity

After: https://--icicidirect--aemsites.hlx.live/research/equity

[ ] New Blocks introduced in this PR
If yes, please provide details below

Block Name
Documentation

For e.g. carousel
doc-link

Maybe I'm missing the requirements of this ticket, but as I remember the referrer comes out-of-the-box in GTM which user can use {{referrer}} in the console. Do we have any specific use case that need to pass it by customization?

@JiangLong2019  sorry I was trying to do some testing , this PR was not ready for the review yet. I have updated the draft lablel
Passing referrer in the method was to sure referrer does not change basis on future event in case of lazy loading the script

@anagarwa Got it, thanks


Use django-jsonfield-backport (and move build env to github actions)

Well... this PR started with the discussion in #449
Because I was annoyed by the extremely slow build times on TravisCI, I decided to move the build env to GitHub actions.
Not a big deal I tought...
(Sidenote: Travis will more or less remove it's free tier, so the migration would have been necessary at some point in the future anyway)
During implementation I found out that the current build is broken for Django 3.0/3.1, see https://github.com/justquick/django-activity-stream/blob/04db1ed1fd8d355fd77e24741725d917f78e8928/tox.ini#L13-L14
This is now implicitly fixed by the move to GitHub actions.
The build env also defined django-jsonfield>=1.0.1, see https://github.com/justquick/django-activity-stream/blob/04db1ed1fd8d355fd77e24741725d917f78e8928/tox.ini#L17
which will break tests on postgres because it doesn't deserialize JSON anymore after it's 1.3.0 release on newer Django >= 3.1 which is also mentioned in #457
Long story short: There is no easy and proper way to make all of this work smoothly. Therefore I decided to include the next step and replace all currently used libs with django-jsonfield-backport.
This change addresses #472, #449 and #437
The library gets installed by the jsonfield extra of actstream and will be dynamically loaded when necessary.
Everything should be fully compatible with existing setups.

This will also make #473 obsolete. Sorry.

This will also make #473 obsolete. Sorry.

Updated postgres to 13 and mysql to 8

Updated postgres to 13 and mysql to 8


QueenNormalAnnotationNode.java: Write some unit tests for Que...

The puzzle -1812424467 originating from #10 has to be resolved:
https://github.com/jvmqueen/queen-of-java/blob/65f11fdd91f570dcc754e429bd85c31005bd1ae5/src/main/java/org/queenlang/transpiler/nodes/QueenNormalAnnotationNode.java#L41-L41
"Write some unit tests for QueenNormalAnnotationNode.".
The puzzle was created by amihaiemil at 2022-12-03 20:42:30 +0200.
Estimation is 60 minutes.
If you have any technical questions, don't ask me, I won't be able to help. Open new issues instead.

@amihaiemil this is your task now, please go ahead. Deadline (when this ticket should be closed) is 2022-12-13T18:50:27.841912.
Estimation here is 60 minutes, that's how much you will be paid.
Remember, you don't have to solve everything in this ticket - you can solve it partially and leave todo markers in the code, which will become future tasks.
If you have any questions don't ask me, I'm not a technical person. Open new tickets instead.
If you don't have time or simply don't want to work on this, you can always resign.

@amihaiemil Don't forget to close this ticket before the deadline (2022-12-13T18:50:28). You are past the first half of the allowed period.

@amihaiemil Looks like you've missed the task deadline (2022-12-13T18:50:28). You are now resigned from this task.
Please stop working on it, you will not be paid. I will assign it to someone else soon.

@amihaiemil I couldn't find any assignee for this task. This is either because there are no contributors with role DEV available or because the project does not have enough funds.
Please, make sure there is at least one available contributor with the required role and the project can afford to pay them.

Puzzle disappeared from the code, that's why I closed this ticket.


SUBMARINE-297. Using the specify maven version in travis build system

What is this PR for?
The travis build system used the latest version (3.6.2) of maven, but now it failed to build TonY (SUBMARINE-273), so we should using the fixed version (3.6.1).
What type of PR is it?
[Improvement]
Todos
What is the Jira issue?
https://issues.apache.org/jira/browse/SUBMARINE-297
How should this be tested?
https://travis-ci.org/jiwq/submarine/builds/615996957
Screenshots (if appropriate)
Questions:

Does the licenses files need update? No
Is there breaking changes for older versions? No
Does this needs documentation? No

Thanks for @liuxunorg help to review and commit.


⚠ Bofrost.fr has degraded performance

In 7c17ccd, Bofrost.fr (https://www.bofrost.fr) experienced degraded performance:

HTTP code: 200
Response time: 1625 ms

Resolved: Bofrost.fr performance has improved in 4e4d81e after 7 minutes.


Fix DRY violation of Condition repr

TODO: Change language of Condition to ChoiceRule to use proper domain language
TODO: Change language of "clause" to "Data-test Expression Choice Rule" to use proper domain language.
There's a lot of different Data-test Expression Choice Rules to implement, so removing the code duplication for the repr will mean less lines of code to change per addition.
I made some changes to how repr works for ReferencePath. I know it violates the rule that a repr should be an init, but practically this works better in this case. I know SpaCy also violates this rule so maybe it's not so bad :see_no_evil: It matches the domain language better in this way as Reference Paths are just strings in the domain.

Codecov Report

Merging #95 into master will not change coverage.
The diff coverage is 100.00%.

@@            Coverage Diff            @@
##            master       #95   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files            8         8
  Lines          580       570   -10
  Branches        92        87    -5
=========================================
- Hits           580       570   -10

Impacted Files
Coverage Δ

src/awsstepfuncs/state.py
100.00% <ø> (ø)

src/awsstepfuncs/visualization.py
100.00% <ø> (ø)

src/awsstepfuncs/abstract_state.py
100.00% <100.00%> (ø)

src/awsstepfuncs/choice.py
100.00% <100.00%> (ø)

src/awsstepfuncs/reference_path.py
100.00% <100.00%> (ø)

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 741f1ed...a133fe4. Read the comment docs.


Don't execute work on the main thread

For simplicity and homogeneous stack traces.

@bot-gradle test this

OK, I've already triggered ReadyForMerge build for you.

@bot-gradle test QFL

OK, I've already triggered QuickFeedbackLinux build for you.

@bot-gradle test QF

OK, I've already triggered QuickFeedback build for you.

@bot-gradle test QF

OK, I've already triggered QuickFeedback build for you.

Your PR is queued. See the queue page for details.

OK, I've already triggered a build for you.

Pre-tested commit build failed.


_find_parent_helper / _find_soa DNSCheck::Lookup::DNS pretend empty non terminals are the parent

https://github.com/fobser/dnscheck/commit/22bf5563a1f475011c053ad64bf98fe75cdf78f0
Fixes
ok($dns->find_parent("narnia.pp.se", "IN") eq "se");
in t/find_parent.t
(On the other hand pp.se might not be an empty non terminal. The check fails because it has no soa record)

Just send a pull request for this issue, I updated the commit from the one linked above, moved the "# "Handle" CNAMEs at zone apex" into the for loop

Can you share / give examples where it breaks differently than before? I'm interested and might look into it. Thanks!

For example <IP_ADDRESS>.<IP_ADDRESS>.<IP_ADDRESS>.<IP_ADDRESS>.7.e.<IP_ADDRESS>.f.f.8.d.<IP_ADDRESS>.0.2.ip6.arpa.
Before it returned the name with the leftmost label removed, now it returns undef. I believe the current algorithm used (which is since before my time) is misguided, and the method should be rewritten rather than changed. The DNS tree is not intended to be traversed from the leaves to the root, and trying to do so will never work reliably.

I've pushed a new branch, find_parent, that finds parent zones by tracing the down-recursing path from the root and taking the last step in the chain that isn't the zone itself. I'd appreciate it you'd give it a try. It should be more reliable than the old method, but it might fail if the zone being tested and it's grand-parent (or higher) zone have non-disjoint sets of authoritative servers.

Thanks! I'm giving the find_parent branch a spin on our nagios installation now. It does approximately 30k checks which takes 12-18 hours. And then I have to somehow parse / diff the nagios retention.dat... I'll come back with results at the end of the week or next week.


Xanthus58.StillAliveReforged version 0.5.0

[x] Have you signed the Contributor License Agreement?
[x] Have you checked that there aren't other open pull requests for the same manifest update/change?

[x] Does your manifest conform to the 1.1 schema?

Note: <path> is the name of the directory containing the manifest you're submitting.

Microsoft Reviewers: Open in CodeFlow

This appears to require the VC Runtime on my local attempt.

This appears to require the VC Runtime on my local attempt.

The program is built and compiled with rust and cargo respectively. I'm unaware of any dependency's needed to make it run on windows. As I've only just started learning the language a day or two ago. I did test it on a cloud vm; and it worked there without me downloading rust or cargo in any form.

If anyone has any possible suggestions I'll be more than happy to work on it, but as of right now I don't have any ideas. I'm currently researching the subject to see if there's a way for me to fix the issue.


Installing with cargo install?

I like this project! I agree, I think this is the better way to compile shaders. Personally I think it makes it more intuitive when you're actually using a separate tool to do the SPIRV compiling.
I tried installing it with cargo install --git https://github.com/expenses/rust-gpu-cli-builder, but when running the global binary I get:
Could not find librustc_codegen_spirv.so in library path
I'm still relatively new to Rust, so maybe this is an easy fix, I'm not sure. Anyway, it works totally fine when just doing the normal git clone .. then cargo run ...

Hey! Glad you like it. So to my understanding, spirv-builder puts the librustc_codegen_spirv.so library in the rust-gpu-cli-builder target directory and dynamically links with it. This means that you can't currently use rust-gpu-cli-builder with cargo install because this librustc_codegen_spirv.so isn't there.
The way I've been using this crate is to cd into the rust-gpu-cli-builder directory to compile shaders. It's not very elegant but it does work. I would love to get cargo install working though. Perhaps this would be possible by copying librustc_codegen_spirv.so about?
I'm pretty busy at the moment, but I think I'll try and add a note to the readme about cargo install not currently working and when I have more time I'll look into this more. Thanks for filing the issue :)

Sure, that makes sense. And exactly, it still works perfectly for me just using cargo run, so no rush! 😊


[BUG] bug in NaiveForecaster variance formulae?

From https://github.com/alan-turing-institute/sktime/pull/3435/files which I've merged and only now noticed potential issues in the formula for predict_var.
The main issue (which I missed on first read) was that I think we need rolling forecasts, no?

should the mean strategy not have rolling mean predictions used, instead of the single prediction at the cutoff? So, y.rolling(window_length).mean instead of y_pred? With an appropriate shift per fh?
last seems correct only for fh indices that are smaller or equal to sp.
the slope strategy should use window_length instead of T, and also do this on rolling basis?

FYI @topher-lo

So, for instance, for "last":
if self.strategy == "last":
    for h in fh:  # this may need conversion to integer index first
        sp = self.sp
        numsp = h // sp
        y_res[h] = y - y.shift(numsp * sp)

@fkiraly An oversight on our part as my team haven't used window_length in our existing codebase and I don't think it's an argument in the R implementation either. We will sort this issue out before the end of the day. Seems relatively straightforward imo.

mean: Use pandas rolling mean
last: This is interesting. I never thought of it this way that fh > sp should cycle through the most recent sp observations. We will add this in as well!
drift: We can make it rolling 👍

One last point, I think last and drift rolling operations can be expressed purely in matrix notation. We will implement this in a fully vectorized way without the need for for loops.
Apologies for the oversight!

For last method with fh > sp, we compared the result from our implementation with R and both produced the same result.
Refer to screenshots below for results from R and our implementation respectively, tested using sp=24 and fh=30.

From R:

From sktime:

To reproduce, please refer to below:

From R:

library(fpp3)
library(tsibbledata)

# export y to csv from sktime example below
data <- read.csv("y.csv")
data$X <- seq(as.POSIXct("1980-01-01 00:00:00"), as.POSIXct("1991-05-29 16:00:00"), by="hour")
data <- as_tsibble(data, index=X)

y_pred <- data %>% model(SNAIVE(X0 ~ lag(24))) %>%
  forecast(h=30) %>%
  hilo(90)

From sktime:

n_timepoints = 100000
mu, sigma = 0.0, 10.0
fake_idx = pd.date_range("1980", periods=n_timepoints + 1, freq="H")
np.random.seed(42)
y = pd.Series(np.random.normal(mu, sigma, size=n_timepoints), index=fake_idx[:-1])

fh = list(range(1, 31))
window_length = None
coverage = 0.90
forecaster = NaiveForecaster("last", sp=24, window_length=window_length)

y_pred_ints = forecaster.fit(y).predict_interval(fh=fh, coverage=coverage)

should the mean strategy not have rolling mean predictions used, instead of the single prediction at the cutoff? So, y.rolling(window_length).mean instead of y_pred? With an appropriate shift per fh?

I think the appropriate shift here is just step_length = 1 for any fh. From what I've seen in practice (in productionized finance forecasting pipelines), naive methods are cheap computationally and are almost always retrained for every period.

@jasmineliaw Could you link over code from the R implementation for computing residuals for the last (with sp > 1) method?

@jasmineliaw Could you link over code from the R implementation for computing residuals for the last (with sp > 1) method?

We have referred to R implementation from below:

https://github.com/robjhyndman/forecast/blob/master/R/naive.R#L27

fitted <- ts(c(rep(NA, lag), head(fits, -lag)), start = start(y), frequency = m)

https://github.com/robjhyndman/forecast/blob/master/R/naive.R#L39

    res <- y - fitted

@fkiraly Do let us know if you have any other suggestions for the last method.

hm... ok, if it agrees with the R version, I would say, let's fix window_length and leave the PR merged in - but continue discussing here until we have satisfied ourselves that the implemented formulae are indeed correct.
Given the agreement with the R version, this will probably mean that either none of the two implementations have buggy math, or both. The latter is acceptable as a temporary state since forecast is a "referene" package.
We were planning to advertise this as a highlight, but let's also hold off on that until we have clarified the situation.
I'll continue in deriving the math and then we can make a comparison.

For math, let's first analyze a stationary process (or one with stationary forecast residuals), say, the actual/observable time series is $$s(t) = a(t) + \epsilon(t)$$ for time stamps $$t\in T$$ (regularly spaced), with stochastic centered noise $$\epsilon$$ (all quantities are time series valued random variables).
Let's consider an algorithm that produces forecasts at horizon $$h$$, i.e., we have forecasts $$\widehat{s}(t)$$ for all $$t$$ that depend
deterministically on all $$s(t')$$ with $$t'\le t-h$$. Write $$r_h(t) := s(t) - \widehat{s}(t)$$ for the forecast residuals at horizon $$h$$.
Note these are all residuals at a forecast horizon $$h$$. Often it is assumed (and let's do that for simplicity) that $$r_h(t)$$ is stationary, so $$Var r_h(t)$$ does not depend on $$t$$, but it depends on $$h$$, so let's call this $$\sigma_h^2$$.
Let's say we have these residuals at time stamps $$t\in R$$. The typical estimate for $$\sigma_h^2$$ would be $$\frac{1}{# R \cdot \rho } \sum_{t \in R} (r_h(t) - \bar{r}_h)^2$$, where $$\bar{r}_h$$ is the sample mean of the $$r_h(t)$$, ranging over $$t\in R$$, and $$\rho_h$$ is effective sample size correction coefficient of $$r_h$$ (this can be estimated in various ways).
What is important is not how we compute $$\rho_h$$ (there are different ways), but the sum we need to compute (which does not depend on $$\rho_h$$).
For the naive forecaster, the sum would be computed from y - y.shift(h) for "last value carry forward" (in the non-seasonal case), and we get one $$\sigma_h^2$$ per $$h$$ in the sktime forecasting horizon vector fh. Similar for rolling mean etc.
Which is not what the current code does: it does not loop over $$h$$-es, and it does not look at the right residuals.

@fkiraly I just started a long writeup on this issue. Would you be available on Discord for a quick call right now?

I think the problem is more fundamental and on the sktime side.

@fkiraly I just started a long writeup on this issue. Would you be available on Discord for a quick call right now?

Not right now (have to get to work), but the forecasting meet-up and the collab session will take place (see schedule in slack general channel), I'll try to make it. If that doesn't work, we can try later on the day.

I think the problem is more fundamental and on the sktime side.

That's ominous, so it would be great if you could spell out what you mean.

@fkiraly I dug deeper into the R implementation and had a deeper look at the theory behind "naive" methods. I take back my points above. I think there is a more subtle statistical discussion to be had and one which I think sktime has made a crucial mistake in for their NaiveForecaster implementation.

In my mind, a "mean" naive strategy is fundamentally different to a "moving average" forecaster. The former is making a assumption that the time series follows from population "mean" and every deviation from this constant population mean are I.I.D. random shocks. Please correct me if I'm wrong, but it seems that sktime has muddle up this idea with a "K moving average" aka ARIMA(0, 0, K) model, which assumes serial correlation. If you look into the R implementation, you'll notice that they do NOT have an option for window_length in their naive forecaster implementation. Furthermore, if you look at the chart from the FPP3 textbook on the mean method, it's just a straight across across all the whole time series: https://otexts.com/fpp3/simple-methods.html#mean-method

one which I think sktime has made a crucial mistake in for their NaiveForecaster implementation.

Hm, there are eight authors listed. I only did software refactoring when interfaces changed but should probably have looked at the math, too. Generally, we should spell out in the docstring what the math is especially when we implement simple methods and don't interface them.
Pinging everyone listed as author: @mloning, @Piyush1729, @sri1419, @Flix6x, @aiwalter, @IlyasMoutawwakil, @bethrice44 (I think @IlyasMoutawwakil and @bethrice44 are there for NaiveVariance, but doesn't matter since I know they know how to work with math 😄 )

For math, let's first analyze a stationary residuals process, say, the actual/observable time series is s(t)=a(t)+ϵ(t) for time stamps t∈T (regularly spaced), with stochastic centered noise ϵ (all quantities are time series valued random variables).
Let's consider an algorithm that produces forecasts at horizon h, i.e., we have forecasts s^h(t) for all t that depend deterministically on all s(t′) with t′≤t−h. Write rh(t):=s(t)−s^h(t) for the forecast residuals at horizon h.
Note these are all residuals at a forecast horizon h. Often it is assumed (and let's do that for simplicity) that rh(t) is variance stationary, so Var rh(t) does not depend on t, but it depends on h, so let's call this σh2.
Let's say we have these residuals at time stamps t∈R. The typical estimate for σh2 would be 1|R|⋅ρh∑t∈R(rh(t)−r¯h)2, where r¯h is the sample mean of the rh(t), ranging over t∈R, and ρh is effective sample size correction coefficient of rh (this can be estimated in various ways).
What is important is not how we compute ρh (there are different ways), but the sum we need to compute (which does not depend on ρh).
For the naive forecaster, the sum would be computed from y - y.shift(h) for "last value carry forward" (in the non-seasonal case), and we get one σh2 per h in the sktime forecasting horizon vector fh. Similar for rolling mean etc.
Which is not what the current code does: it does not loop over h-es, and it does not look at the right residuals.

I still need more time to digest your point about the last method.
But I also think that your point to make drift rolling for non-null window_length doesn't seem quite right to me intuitively. If we compute residuals in this way, instead of just computing the residuals relative to a SINGLE line, the "naive" drift model becomes something quite complex: a piecewise approximation to a polynomial regresion...

In my mind, a "mean" naive strategy is fundamentally different to a "moving average" forecaster

But would that be a mistake in impementation, or simply a different choice of naive method?
If it were spelled out in the docstring and said explicitly what mean means (pun intended), I would see no problem with assuming a moving average model.
In fact, the windowed moving average model seems more reasonable to assume than just a constant plus i.i.d. shocks.

If we compute residuals in this way, instead of just computing the residuals relative to a SINGLE line, the "naive" drift model becomes something quite complex: a piecewise approximation to a polynomial regresion...

I think the choice of naive method is not a point, there are many choices here, why not have many.
The point is how, given that choice, the predictive variance is computed. Whichever the choice, there should be (a) properly computed rolling residuals and (b) a loop over forecasting horizon elements. In my current opinion, or it's not correct.

Side note, not important but to point out: the "mean over the entire history" is a special case of rolling mean with infinite (or very large) window length.

I think what is for certain is sktime's NaiveForecaster isn't the canomial naive methods as outlined in FPP3.

In my mind, a "mean" naive strategy is fundamentally different to a "moving average" forecaster

But would that be a mistake in impementation, or simply a different choice of naive method?
In fact, the windowed moving average model seems more reasonable to assume than just a constant plus i.i.d. shocks.

In my opinion, after reading deeper into the literature, it was a mistake for sktime to have introduced window_length. Moving average is covered by the ARIMA(0,0,K) model. And perhaps you are right that the "MA" model is more reasonable than the constant mean, but there physical systems in the world that behave in the way that "straight line" mean with IID shocks model assumes.

Side note, not important but to point out: the "mean over the entire history" is a special case of rolling mean with infinite (or very large) window length.

This is true, but many things in statistics and mathematics can be expressed as special cases of other equations and theorems. However, as applied statisticians, it is important to note that some special cases can be different enough (in terms of what they imply about our view of the world) to be considered as a separate "model".

Given the agreement with the R version, this will probably mean that either none of the two implementations have buggy math, or both. The latter is acceptable as a temporary state since forecast is a "reference" package.

@jasmineliaw what you linked should be identical in fable fight?

Given the agreement with the R version, this will probably mean that either none of the two implementations have buggy math, or both. The latter is acceptable as a temporary state since forecast is a "reference" package.

@jasmineliaw what you linked should be identical to fable right?

Yes, fable did the same thing.

https://github.com/tidyverts/fable/blob/master/R/lagwalk.R#L26

fitted <- c(rep(NA, min(lag, n)), utils::head(fits, -lag))

https://github.com/tidyverts/fable/blob/master/R/lagwalk.R#L45

res <- y - fitted

If we compute residuals in this way, instead of just computing the residuals relative to a SINGLE line, the "naive" drift model becomes something quite complex: a piecewise approximation to a polynomial regresion...

I think the choice of naive method is not a point, there are many choices here, why not have many (mean overall, mean rolling, etc).
The point is how, given that choice, the predictive variance is computed. Whichever the choice, there should be (a) properly computed rolling residuals and (b) a loop over forecasting horizon elements. In my current opinion, or it's not correct.

I am all for your idea of computing residuals across many windows (i.e. in the spirit of cross validation), but the variance equations that we have implemented and is in the R implementation as well relies on strong parametric assumptions about the time series's data generating process for the population (past, present, future). For better or for worse...
What you are suggesting (which I use in practice for all forecasting workflows) is more in the tradition of bootstrap or even conformal intervals, but it's a fundamentally different model of the underyling DGP.

@fkiraly I agree with your assessment for the last method. But I think r(t)=y(t)−y(t−1), which I assume you got here:

only refers to the equation for the residuals for the last AKA first differences method of the naive forecaster. I can't see any point in that section of the textbook that suggests the "mean" forecaster and "drift" forecasters have their residuals computed using this "first differences" equation. Nor does it suggest all residuals for every forecaster are estimated in that way. In my mind, the most general equation for "residuals" is this:

(https://otexts.com/fpp3/residuals.html#residuals-1)
We should probably clarify what we mean by "naive"! We seem to be covering too many different models into this one forecasters.

only refers to the equation for the residuals for the last AKA first differences method of the naive forecaster.

Yes, I was using it as an example only.
In teh context of section 5.5, in general, $\widehat{y}t$ needs to be the forecast made from cutoff $t-1$ at horizon $h=1$, i.e., after applying the forecasting algorithm to the partial series $y_1, \dots, y{t-1}$.
So, another example: if you are forecasting the mean of the series observed, you would have to take $\widehat{y}t = \frac{1}{t-1} \sum{i=1}^{t-1} y_i,$ and not $\widehat{y}t = \frac{1}{T} \sum{i=1}^{T} y_i$
(using the notation from the Hyndman book throughout)

something isn't going well with the TeX renderer here. probably the underscores.
Using bracket notation, $y(t)$ etc, the above would read:
In the context of section 5.5, in general, $\widehat{y}(t)$ needs to be the forecast made from cutoff $t-1$ at horizon $h=1$ ,
i.e., after applying the forecasting algorithm to the partial series $y(1), \dots, y(t-1)$.
So, another example: if you are forecasting the mean of the series observed, you would have to take $\widehat{y}(t)= \frac{1}{t-1} \sum^{t-1}_{i=1} y(i),$
and not $\widehat{y}(t) = \frac{1}{T} \sum_{i=1}^{T} y(i)$

It makes sense but I don't think it's what the R code assumes. I think the R implementation assumes the residuals are the distance between the observed y and the fitted y, without any concept of "forecasting" or data spillage. Happy to follow your interpretation but the R comparison test will break.

@fkiraly How do you suggest we move forward?

I think the R code doesn't help either. The "last" method clearly follows your equations for residuals which includes the idea of rolling forecasts with cutoff, but I don't see it for "mean" nor "drift".

Hm. Is it documented somewhere what the R code assumes?
The answer might be simple, there is a bug in both pieces of code?
We could ask one of its authors.
Either way, I also think we ought to write up somehwere what the methods do, or at least, what we think it should do.
I feel the above discussion has made clear that a reference to a section of Hyndman is not precise enough, since there are too many gaps to fill in.

Hm. Is it documented somewhere what the R code assumes?

@fkiraly Agreed that we need a more detailed breakdown of what each method does. Especially because "naive" methods are often extremely hard to beat and deserve close attention. Here are my findings after a deeper deep dive of the R code.
Question: How are residuals being computed for each "naive" method in R fable?
A) last AKA lag model found in lagwalk module in R fable
fits <- stats::lag(y, -lag)  # line 19
sigma <- stats::sd(y - fitted, na.rm = TRUE)   # line 44
res <- y - fitted  # line   # line 45

Implication: R computes residuals against a single window of observed y. fh does not affect prediction standard errors / variance.
B) mean (AKA mean model in R fable's mean module)
  # Lines 13-28
  n <- length(y)
  window_size <- specials$window[[1]]
  # Case 1. mean of entire training `y`
  if (is.null(window_size)) {
    y_mean <- mean(y, na.rm = TRUE)
    fits <- rep(y_mean, n)  # equivalent to np.repeat in numpy
  }
  # Case 2. rolling mean
  else {
    fits <- slide_dbl(y, mean,
      na.rm = TRUE,
      .size = window_size, .partial = TRUE
    )  # Compute rolling mean
    y_mean <- fits[length(fits)]
    fits <- dplyr::lag(fits)  # equivalent to shift operation in pandas
  }
  res <- y - fits
  sigma <- sd(res, na.rm = TRUE)

Implication: For both null and non-null window_length, R computes residuals against a single window of observed y. fh does not affect prediction standard errors / variance.
C) drift (AKA lag model found in lagwalk module in R fable)
    fitted  <- c(rep(NA, min(lag, n)), utils::head(fits, -lag))  # Line 26
    # Lines 28 - 39
    fit <- summary(stats::lm(y - fitted ~ 1, na.action = stats::na.exclude))
    b <- fit$coefficients[1, 1]
    b.se <- fit$coefficients[1, 2]
    fitted <- fitted + b
  ...
  # Lines 44 - 45
  sigma <- stats::sd(y - fitted, na.rm = TRUE)
  res <- y - fitted

Implication: R assumes the elements in the residuals vector are the distances between a single $y = mb + c$ line and the observed y. fh does not affect prediction standard errors / variance. Therefore, if sktime were to follow this algorithm for computing residuals for drift, the residuals (for any window_length and any fh) would be the distances between a single drift line drawn between points y[-(window_length or len(y))] to y[-1] extrapolated across the whole y i.e. from x=0 to x=len(y).

If we were to follow R fable's algorithm exactly for computing residuals, there are then 2 minor bugs in #3435 to be fixed in 2 lines:

Replace y_pred = np.repeat(np.squeeze(self.predict(fh=1)), T) with y_pred = y.rolling(sp).mean() in [here](y_pred = np.repeat(np.squeeze(self.predict(fh=1)), T))
Replace slope = (y.iloc[-1] - y.iloc[0]) / (T - 1) with slope = (y.iloc[-1] - y.iloc[-(window_length or 0)]) / (window_length - 1)

So I did notice 2 minor bugs in #3435, but if we were to follow R fable's algorithm for computing residuals for the "naive" methods: it would be a simple fix:

Replace y_pred = np.repeat(np.squeeze(self.predict(fh=1)), T) with:

if not window_length:
  if sp > 1:
     y_pred = np.tile(self.predict(fh=list(range(sp)), math.ceil(T // sp))[0:T]
  else:
     y_pred = np.repeat(np.squeeze(self.predict(fh=1)), T)
else:
  if sp > 1:
     seasons = np.mod(np.arange(T), sp)
     y_pred = (
        y.to_frame()
        .assign(__sp__=seasons)
        .groupby("__sp__")
        .rolling(window_length)
        .mean()
        .droplevel("__sp__")
        .sort_index()
     )
  else:
     y_pred = y.rolling(window_length).mean()

(https://github.com/topher-lo/sktime/blob/61708e78c02a29570bd084c82933ef690508eac9/sktime/forecasting/naive.py#L433)
4. Replace slope = (y.iloc[-1] - y.iloc[0]) / (T - 1) with slope = (y.iloc[-1] - y.iloc[-(window_length or 0)]) / (window_length - 1) (https://github.com/topher-lo/sktime/blob/61708e78c02a29570bd084c82933ef690508eac9/sktime/forecasting/naive.py#L438)

#3495 only fixes part of this, not the root problem


Facial recognition example? Contact info? and you now have a dependent on NPM

Facial recognition example:
I've tried many times now to get a vanilla nodeJS environment to work with your example flow but its not been a priority as I've been busy with my own repo. However I do have a working version of facial recognition that works with your face-api in node-red.
If you take a look at my facial-recognition.js line in code 771 to 828.  It allows a user to just name the folder and put images into it. Thought you might find this helpful.
Your Contact info
I wanted to email you a link to a server running the node-red version of Facial recognition based on your face-api so you could play around with it if you wanted, also so i did not have to blast/treat your issues section as a message board.
I think I found your Instagram do you want me to send you a message there?
you now have a dependent on NPM
https://www.npmjs.com/browse/depended/@vladmandic/face-api
I'm proud to be the first one on the list
Thanks again,
Meeki
I'm just so tickled i got this working:

I wanted to email you a link to a server running the node-red version of Facial recognition based on your face-api
so you could play around with it if you wanted, also so i did not have to blast/treat your issues section as a message board.

I'll definitely check it out! Never played with node-red myself.

I think I found your Instagram do you want me to send you a message there?

Yes, you have :)
On the topic of non-issue messages, github recently allows for discussions & i've just enabled it (see top menu line, close to issues)!