WT command in Windows Explorer does not work anymore

Environment
Windows build number: Win32NT 10.0.19041.0 Microsoft Windows NT 10.0.19041.0
Windows Terminal version (if applicable): 1.1.2021.0

Any other software?

Steps to reproduce
Open Windows Explorer in any directory. Enter wt in the "adress bar", and press "Enter".
Expected behavior
The Windows Terminal opens in the current directory.
Actual behavior
An error message appears "Windows cannot access the specified device, path, or file. You may not have the appropriate permissions to access the item".
When looking in the Windows App directory, there is no path corresponding to the error title, instead ther is a folder Microsoft.WindowsTerminalPreview_2020.720.2337.0_neutral_~_8wekyb3d8bbwe.
Maybe there is an error in the directory name.

I had the same issue using the Win-R run box.
It only occurred for me when both Windows Terminal and Windows Terminal Preview are installed.
Removing the Preview allows wt to work again.

I can reproduce with Windows Terminal Preview 1.2.2022.0. However, if I rename the following Registry keys, then it works OK.

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\wt.exe
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\wt.exe

Those keys are automatically created by AppXSvc when I install Windows Terminal Preview. Seems related to https://github.com/microsoft/terminal/issues/6748 and https://github.com/microsoft/terminal/pull/6860.

@KalleOlaviNiemitalo, thanks for the investigation. I'm gonna feed this straight into the app deployment team's hands :smile:

Tracking MSFT:28217948

Same issue with Win+R when running "wt" ("wt" works when typing into cmd.exe)

If I enable the wt.exe app execution alias of Windows Terminal Preview, then wt in File Explorer starts Windows Terminal Preview. ✔

I only need to quickly start Windows Terminal, Can you show me how to "enable the wt.exe app execution alias of Windows Terminal Preview"?

I cannot reproduce in 1.1.2233.0, but Windows Terminal always opens in C:\Users\%USERNAME% directory regardless of where explorer is opened
Note: cmd.exe set as default profile

@long-nguyenxuan

@PrOF-kk you'll need to use wt -d . to get wt to start in the current working directory.

@zadjii-msft that doesn't appear to be documented here:

Should I open an issue for that?

@ntindle  Nope, no need. That flag is technically part of the new-tab command:

when no command is explicitly passed to wt, it assumes the command to be new-tab.

I do not have Windows Terminal Preview installed, just Windows Terminal, and I started running into this.

PS C:\Users\Hayden> Get-AppPackage -Name "*terminal*"

Name              : Microsoft.WindowsTerminal
Publisher         : CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US
Architecture      : X64
ResourceId        :
Version           : 1.1.2233.0
PackageFullName   : Microsoft.WindowsTerminal_1.1.2233.0_x64__8wekyb3d8bbwe
InstallLocation   : C:\Program Files\WindowsApps\Microsoft.WindowsTerminal_1.1.2233.0_x64__8wekyb3d8bbwe
IsFramework       : False
PackageFamilyName : Microsoft.WindowsTerminal_8wekyb3d8bbwe
PublisherId       : 8wekyb3d8bbwe
IsResourcePackage : False
IsBundle          : False
IsDevelopmentMode : False
NonRemovable      : False
IsPartiallyStaged : False
SignatureKind     : Store
Status            : Ok

FWIW I do not see a wt.exe key under HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths, but I do see one under HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths.

^^ this was quite a helpful clue, @haydenmc
I have both  Windows Terminal Preview  and  Windows Terminal, both installed via the store.
wt -d . from the address bar in Windows Explorer was broken completely, with the same error dialog from Windows Terminal Preview in the original post.  I have the preview installed, but I'm not using it at the moment.  I was trying to invoke vanilla Windows Terminal.
The settings in the "App Execution Aliases" panel looked right.  The one for Windows Terminal was turned on, and the one for Windows Terminal Preview was turned off.
But when I checked under
HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths , and
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths,
I saw that Windows Terminal Preview was "hogging the spotlight" by having it configured under HKEY_CURRENT_USER.  So, I renamed it from wt.exe to wtp.exe , just so that it wouldn't interfere with my use of wt -d . from the Windows Explorer address bar to invoke  vanilla Windows Terminal.   (Windows Terminal Preview is still broken in this regard, but I just wanted to be able to get working again).
The existing entry for Windows Terminal under HKEY_LOCAL_MACHINE was working fine, so I left it where it was.  I guess these are supposed to be under HKCU now?
    Hive: HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths
Name                           Property
----                           --------
wtp.exe                        (default) : C:\Program Files\WindowsApps\Microsoft.WindowsTerminalPreview_1.3.2382.0_x64__8wekyb3d8bbwe\wt.exe
^^ was wt.exe                  Path      : C:\Program Files\WindowsApps\Microsoft.WindowsTerminalPreview_1.3.2382.0_x64__8wekyb3d8bbwe

    Hive: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths
Name                           Property
----                           --------
wt.exe                         (default) : C:\Program Files\WindowsApps\Microsoft.WindowsTerminal_1.2.2381.0_x64__8wekyb3d8bbwe\wt.exe
                               Path      : C:\Program Files\WindowsApps\Microsoft.WindowsTerminal_1.2.2381.0_x64__8wekyb3d8bbwe

Caveat:   wt new-tab -d .  is broken for me; it simply launches a new copy of Windows Terminal instead of creating a new tab in an existing instance.  (Perhaps it requires a single instance for the new-tab functionality to work?)

Received a store update for Windows Terminal today and things seem happy again for my situation.

When I enter wt in the address bar of Windows Explorer it opens wt, but in the wrong directory (C:\Users<username>). Expected behavior: The Windows Terminal opens in the current directory, like powershell and cmd do.

@stmax82    You might already know this, but to get the behavior you want, you can do one of:

wt -d .
wt --startingDirectory .
wt new-tab -d .
wt new-tab --startingDirectory .

These all mean exactly the same thing.
-d is an alias for -startingDirectory, and new-tab is the default argument to wt.exe, when the user does not provide an argument.

Im having this problem but a different error and nothing in this issue solved it.

Any ideas?

As I mentioned here, I'm also running into the same issue, and it seems many others are as well.
I installed Windows Terminal via chocolatey (I can't install via the Windows Store due to organization restrictions) a few months ago and it had been working fine until recently, as it fails to launch with the same error message that @chiniara received.
I've tried reinstalling and resetting permissions on C:\Program Files\WindowsApps, but nothing seems to be working.

I agree, being able to run "wt" and open in the current directory would be ideal. This works if you run cmd or powershell.

I agree, being able to run "wt" and open in the current directory would be ideal. This works if you run cmd or powershell.

@xal1983 You're looking for wt -d ., and #878. This issue is tracking a totally other issue where the OS seemingly invokes the wrong thing, and causes some other unexpected failures. Generally, wt -d . in the explorer address bar should work.

@xal1983 You're looking for wt -d ., and #878. This issue is tracking a totally other issue where the OS seemingly invokes the wrong thing, and causes some other unexpected failures. Generally, wt -d . in the explorer address bar should work.

Im having this problem but its a different error and nothing in this issue solved it. I don't have preview installed

Any ideas?
When i run from the start menu it works fine, its just when i try to run using wt.exe
It also ran fine before, it started doing that a few days ago

Not sure if this will work for you, but what I did was I removed this path under System Variables C:\Windows\system32\config\systemprofile\AppData\Local\Microsoft\WindowsApps and added %USERPROFILE%\AppData\Local\Microsoft\WindowsApps under User Variables. 0xc0000022 error went away and I was able to use wt command in Windows Explorer.

previously I fixed it by uninstalling from store and installing via choco. after installing the preview, the problem appeared again

I believe that this is, in part, due to #9452. If any of you are still running into this issue, would you mind following the reporting steps over there?
@KalleOlaviNiemitalo - I reported your app paths findings to the app deployment team as mentioned above and have not heard back in some time. Discussions still unfolding I guess.

when I write wt in win+r or directory, it warning me "the system can't find the wt.exe", but the wt.exe exist.  and i can turn on in menu.

I need to disable and enable alias after latest terminal update, because it couldn't find when running wt from explorer path input 😕

I need to disable and enable alias after latest terminal update, because it couldn't find when running wt from explorer path input 😕

Can confirm; that did the trick for me. (Thanks for posting about App Execution Aliases, Kalle).
I have a bat file running it linked up as Streamdeck shortcut (they're a brilliant macro launcher for dev!) and couldn't figure out why it stopped working; a reboot actually resolved it temporarily last week, then it stopped working again today.

I need to disable and enable alias after latest terminal update, because it couldn't find when running wt from explorer path input 😕

This fixed my issue.
As referenced above by Kalle, the path is defined in the registry keys for "App Paths". There was a discrepancy where the path pointed to a previously installed version of wt C:\Program Files\WindowsApps\Microsoft.WindowsTerminal_1.8.1444.0_x64__8wekyb3d8bbwe> when actually the app was updated so the correct path would be C:\Program Files\WindowsApps\Microsoft.WindowsTerminal_1.8.1521.0_x64__8wekyb3d8bbwe>. Re-enabling wt.exe under 'App execution aliases' settings fixed it.

I need to disable and enable alias after latest terminal update, because it couldn't find when running wt from explorer path input 😕

Also experienced this from a recent update and this solution worked for me.
As explained above by Kalle, the path is defined in the registry keys for "App Paths". There was a discrepancy where the path pointed to a previously installed version of wt C:\Program Files\WindowsApps\Microsoft.WindowsTerminal_1.8.1444.0_x64__8wekyb3d8bbwe> when actually the app was updated so the correct path would be C:\Program Files\WindowsApps\Microsoft.WindowsTerminal_1.8.1521.0_x64__8wekyb3d8bbwe>. Re-enabling wt.exe under 'App execution aliases' settings fixed it.
So most likely somehow the update was installed without updating the correct path.

For me the store updated it in background while an older version was running. Then I found this issue and tried the re-enable which works.

For me the store updated it in background while an older version was running. Then I found this issue and tried the re-enable which works.

This might've been the cause for me. I've been running some scripts on wt non-stop for a couple of days until i closed wt and suddenly can't open it from run again

wt works for me but it doesn't seem to launch in the current working directory but the Open in Windows Terminal option opens in the current working directory.

Toggling "Windows Terminal" under Application Aliases as @zadjii-msft pointed out fixed my issue of not being able to launch wt.exe.

Maybe you can try and check the steps on https://github.com/microsoft/terminal/issues/7081#issuecomment-1065833836.

notes from internal bug: This should have been fixed in OS build 21307, which I think should have been released in Windows 11 RTM (alas, build numbers got confusing right around then)

Anyone who was seeing this before on Windows 10, and has since updated to Windows 11 - are you still seeing this?

Typing wt does not work for me in Run (Start+R) or Windows Explorer, but it does work when I type wt in cmd. Disabling and enabling the alias in alias settings had no effect.


Swiper with minimalSize 0 loads forever when swipe to next slide

Which OS ?
iOS
Version
Which versions are you using:

react-native-swiper v1.5.13
react-native v0.55.4

Expected behaviour
I create a Swiper with loadMinimal and loadMinimalSize={0}. I want this because i only want to load the current slide, which gets filled with data. When I enter to the page with the swiper I want to swipe and be able to load each slide correctly
Actual behaviour
When I enter to the swiper page the first slide loads correctly however when I slide to the left the second slide shows the ActivityIndicator forever and when i slide to the left again I go to the first slide, and then the swiper starts working correctly as i expected. Loading each slide with the custom data fetched from the server.
How to reproduce it>
<Swiper
          style={styles.wrapper}
          showsButtons={false}
          showsPagination={false}
          ref={(swiper) => { this.swiper = swiper; }}
          index={0}
          loadMinimal
          loadMinimalSize={0}
          onIndexChanged={this.onIndexChange}
        >
          { channels.map(channel => <EpgList channel={channel} />) }
        </Swiper>

import React, { PureComponent } from 'react';
import { View, FlatList } from 'react-native';
import PropTypes from 'prop-types';

import Program from '../Program';
import styles from './styles';

class EpgList extends PureComponent {
  componentDidMount() {
    const { channel, getEpg } = this.props;
    getEpg(channel['content-id']);
  }

  renderRow(item) {
    return <Program program={item} />;
  }

  render() {
    const { epg } = this.props;

    return (
      <View style={styles.container}>
        <FlatList
          ref={(list) => {
            this.channels = list;
          }}
          initialNumToRender={5}
          data={epg}
          renderItem={({ item }) => (
            this.renderRow(item)
          )}
        />
      </View>
    );
  }
}

export default EpgList;

EpgList.propTypes = {
  navigator: PropTypes.object.isRequired,
  channel: PropTypes.object.isRequired,
  getEpg: PropTypes.func.isRequired,
  epg: PropTypes.array.isRequired,
};

Solved it! just do loop={false}


Add accordion to pipeline parameter headers

Issue: https://github.com/nf-core/website/issues/1200
I have not gotten the href to the header to work, now sure why it isn't working 🤔

Ah, I know why it isn't working, it's in the SidebarToc.svelte file, line 62

@nf-core-bot fix linting


IndexError:list index out of range

while running the code i get this message
patients = list(os.walk(BASE_DIR))[0][1] # list of patient folder names
IndexError: list index out of range
can you tell me what is the problem?

BASE_DIR should be pointed correctly.

thanks sir i think now it is working

cool :)
On Sun, Jun 10, 2018 at 9:05 PM, afmsaif<EMAIL_ADDRESS>wrote:

thanks sir i think now it is working
—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub
https://github.com/pyaf/DenseNet-MURA-PyTorch/issues/3#issuecomment-396058303,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AQqgNVgwZ3jbSgThKZS2rhqSVQBJMu3yks5t7TyugaJpZM4UhnpQ
.

--
Regards
Rishabh Agrahari
Third Year Undergraduate(IDD)- Part-III
Department of Electrical Engineering
Indian Institute Of Technology (BHU), Varanasi
LinkedIn https://in.linkedin.com/in/rishabh-agrahari | GitHub
https://github.com/pyaf

where should it point to the wrist directory or to the train and val directory?


protobuf: add cmake builder, protobuf3_20: init

Description of changes
Add cmake protobuf builder, so that we can expose *.cmake and *.pc files.
This is important because packages such as grpc expose .cmake files, which assume that protobuf exposes cmake files as well.
3.20 changelog: https://github.com/protocolbuffers/protobuf/releases/tag/v3.20.0
Things done

Built on platform(s)

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

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

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

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

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

[ ] Fits CONTRIBUTING.md.

related upstream PR: https://github.com/protocolbuffers/protobuf/pull/9822

First commit message needs s/cmake/protobuf/: "cmake: add cmake generic builder"

thanks @bjornfor, addressed :)

added protobuf 3.21 as well

I'm going to merge this in a few days. Unless someone protests.

Was also able to verify that the cross builds still work by doing nix-build -A pkgsCross.aarch64-multiplatform.protobuf3_21

accidentally pushed from the wrong computer

Going to merge this as it has almost been 3 months. Additional fixes can be handled in later PRs


Compile gauge-java for Java 17

In order to utilize modern libraries in combination with gauge, compiled only for Java 17, gauge-java needs to be compiled for Java 17 as well.

Hi @levitin, do you have any examples that's causing a conflict. I'm personally using gauge-java within a java21 project with no problems.

Closing as no response :-) Can re-open if more clarity is given.


[bug] Unable to install System Dependencies

Describe the bug
Unable to install System Dependencies
Reproduction
sudo apt update && sudo apt install libwebkit2gtk-4.0-dev \     build-essential \     curl \     wget \     libssl-dev \     libgtk-3-dev \     libappindicator3-dev \     librsvg2-dev
Error message
The following packages have unmet dependencies:
libgtk-3-dev : Depends: libpango1.0-dev (>= 1.41) but it is not going to be installed
libwebkit2gtk-4.0-dev : Depends: libwebkit2gtk-4.0-37 (= 2.32.4-0ubuntu<IP_ADDRESS>) but 2.34.1-0ubuntu<IP_ADDRESS> is to be installed
Depends: gir1.2-webkit2-4.0 (= 2.32.4-0ubuntu<IP_ADDRESS>) but 2.34.1-0ubuntu<IP_ADDRESS> is to be installed
Depends: libsoup2.4-dev (>= 2.40) but it is not going to be installed
Depends: libjavascriptcoregtk-4.0-dev (= 2.32.4-0ubuntu<IP_ADDRESS>) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
Expected behavior
System Dependencies should get installed
Platform and versions
.-/+oossssoo+/-.               ashu@Ashu
        `:+ssssssssssssssssss+:`           ---------
      -+ssssssssssssssssssyyssss+-         OS: Ubuntu 20.04.3 LTS x86_64
    .ossssssssssssssssssdMMMNysssso.       Host: TUF Gaming FX505DT_FX505DT 1.0
   /ssssssssssshdmmNNmmyNMMMMhssssss/      Kernel: 5.11.0-41-generic
  +ssssssssshmydMMMMMMMNddddyssssssss+     Uptime: 2 hours, 25 mins
 /sssssssshNMMMyhhyyyyhmNMMMNhssssssss/    Packages: 2723 (dpkg)
.ssssssssdMMMNhsssssssssshNMMMdssssssss.   Shell: zsh 5.8
+sssshhhyNMMNyssssssssssssyNMMMysssssss+   Resolution: 1920x1080
ossyNMMMNyMMhsssssssssssssshmmmhssssssso   DE: Plasma
ossyNMMMNyMMhsssssssssssssshmmmhssssssso   WM: KWin
+sssshhhyNMMNyssssssssssssyNMMMysssssss+   WM Theme: McMojave
.ssssssssdMMMNhsssssssssshNMMMdssssssss.   Theme: McMojave [Plasma], Breeze [GTK3]
 /sssssssshNMMMyhhyyyyhdNMMMNhssssssss/    Icons: McMojave-circle-dark [Plasma], McMojave-circle-dark [GTK2/3]
  +sssssssssdmydMMMMMMMMddddyssssssss+     Terminal: konsole
   /ssssssssssshdmNNNNmyNMMMMhssssss/      Terminal Font: DroidSansMono Nerd Font 14
    .ossssssssssssssssssdMMMNysssso.       CPU: AMD Ryzen 5 3550H with Radeon Vega Mobile Gfx (8) @ 2.100GHz
      -+sssssssssssssssssyyyssss+-         GPU: NVIDIA GeForce GTX 1650 Mobile / Max-Q
        `:+ssssssssssssssssss+:`           GPU: AMD ATI 05:00.0 Picasso
            .-/+oossssoo+/-.               Memory: 5361MiB / 15435MiB

Stack trace
No response
Additional context
No response

Well, this looks like a problem with your (specific) system. No idea how to help you here 🤔

sudo aptitude install <packagename>
This fixed it for me by downgrading the versions of the packages. find more details here

sudo aptitude install <packagename> This fixed it for me by downgrading the versions of the packages. find more details here

This solve my problem, I'm also using ubuntu 22.04.


[BUG]: Attempting to register an existing view type ""

Contact details
No response
What the essence of the bug
On a fresh new vault, as soon as I enable Unitade without modifying anything I get :

VM208 plugin:unitade:930 Error: Attempting to register an existing view type ""
at t.registerView (app.js:1:1986259)
at t.registerView (app.js:1:2237447)
at _UNITADE_PLUGIN.__apply (VM208 plugin:unitade:924:14)
at _UNITADE_PLUGIN.eval (VM208 plugin:unitade:905:12)
at Generator.next ()
at fulfilled (VM208 plugin:unitade:60:24)

When I disable all community plugins the error change :

VM217 plugin:unitade:885 Error: Attempting to register an existing file extension ".md"
at t.registerExtensions (app.js:1:1986648)
at t.registerExtensions (app.js:1:2237808)
at _UNITADE_PLUGIN.eval (VM217 plugin:unitade:883:14)
at Generator.next ()
at eval (VM217 plugin:unitade:73:61)
at new Promise ()
at __async (VM217 plugin:unitade:57:10)
at _UNITADE_PLUGIN.onunload (VM217 plugin:unitade:879:12)
at e.unload (app.js:1:1167525)
at e. (app.js:1:2244246)

Do have I an issue with my obsidian installation ?
Thanks for this plugin and thanks in advance for helping.
Version of an project's essence
2.1.1
On what OS you have encountered the bug.
Windows
Code of conduct

[X] I agree to follow this project's code of conduct

Issue policy

[X] I agree to follow this project's issue policy

I don't know what kind of anomaly happened, but this issue hasn't existed since april and "opened" only in this month.
In the latest version, these problems were solved in two ways: wiki specifies how the input mode works and where this error comes from, as well as about the error mode itself, I recommend reading.
https://github.com/Falcion/UNITADE.md/issues/70
And the wiki article:

"Silencing error" option

[!Note]
I'll close this issue, still don't understand how it could slipped through time and space and only show in the repository at the end of the year.


Refactor permissions to take advantage of invenio-access

As done in app ILS, refactor permissions.py to remove permissions classes and functions that are already available on invenio-access.

solved in #119


zsh: illegal hardware instruction  bin/opensfm reconstruct data/berlin

When I run bin/opensfm_run_all data/berlin on osx
evan@evanui-MacBookPro OpenSfM-0.1.0 % bin/opensfm_run_all data/berlin
objc[20764]: Class CaptureDelegate is implemented in both /usr/local/lib/python2.7/site-packages/cv2/cv2.so (0x12958f960) and<EMAIL_ADDRESS>(0x12e4cefe0). One of the two will be used. Which one is undefined.
2019-12-09 12:26:36,280 Extracting focal lengths for image 01.jpg
2019-12-09 12:26:36,284 Extracting focal lengths for image 03.jpg
2019-12-09 12:26:36,287 Extracting focal lengths for image 02.jpg
objc[20766]: Class CaptureDelegate is implemented in both /usr/local/lib/python2.7/site-packages/cv2/cv2.so (0x12401f960) and<EMAIL_ADDRESS>(0x128f5efe0). One of the two will be used. Which one is undefined.
2019-12-09 12:26:36,785 Extracting ROOT_HAHOG features for image 01.jpg
2019-12-09 12:26:36,785 Extracting ROOT_HAHOG features for image 03.jpg
2019-12-09 12:26:36,785 Extracting ROOT_HAHOG features for image 02.jpg
objc[20776]: Class CaptureDelegate is implemented in both /usr/local/lib/python2.7/site-packages/cv2/cv2.so (0x132182960) and<EMAIL_ADDRESS>(0x1370c1fe0). One of the two will be used. Which one is undefined.
2019-12-09 12:26:37,383 Matching 3 image pairs
2019-12-09 12:26:37,395 Matching 02.jpg  -  1 / 3
2019-12-09 12:26:37,395 Matching 01.jpg  -  2 / 3
2019-12-09 12:26:37,396 Matching 03.jpg  -  3 / 3
2019-12-09 12:26:37,973 02.jpg - 03.jpg has 976 candidate matches
2019-12-09 12:26:37,974 Robust matching time : 0.000489950180054s
2019-12-09 12:26:37,974 Full matching 904 / 976, time: 0.579134941101s
2019-12-09 12:26:38,015 01.jpg - 03.jpg has 405 candidate matches
2019-12-09 12:26:38,016 Robust matching time : 0.000454902648926s
2019-12-09 12:26:38,016 Full matching 373 / 405, time: 0.620386123657s
2019-12-09 12:26:38,558 01.jpg - 02.jpg has 1447 candidate matches
2019-12-09 12:26:38,559 Robust matching time : 0.000426054000854s
2019-12-09 12:26:38,559 Full matching 1359 / 1447, time: 0.54302406311s
objc[20786]: Class CaptureDelegate is implemented in both /usr/local/lib/python2.7/site-packages/cv2/cv2.so (0x130478960) and<EMAIL_ADDRESS>(0x1353b7fe0). One of the two will be used. Which one is undefined.
2019-12-09 12:26:39,130 reading features
2019-12-09 12:26:39,170 Merging features onto tracks
2019-12-09 12:26:39,184 Good tracks: 1913
objc[20788]: Class CaptureDelegate is implemented in both /usr/local/lib/python2.7/site-packages/cv2/cv2.so (0x127aad960) and<EMAIL_ADDRESS>(0x12c9ecfe0). One of the two will be used. Which one is undefined.
2019-12-09 12:26:39,716 Starting incremental reconstruction
2019-12-09 12:26:39,768 Starting reconstruction with 01.jpg and 02.jpg
2019-12-09 12:26:39,769 Common tracks: 1371
2019-12-09 12:26:39,827 Two-view reconstruction inliers 1371
2019-12-09 12:26:39,886 Triangulated: 1356
bin/opensfm_run_all: line 12: 20788 Illegal instruction: 4  $DIR/opensfm reconstruct $1
what can i do

We have seen Illegal instruction errors before on some machines while using docker. That time the problem was with the RDRAND instruction. The compilation of opengv used those instructions and they were not available on those machines. We solved the problem by compiling opengv with target architecture core2. The cmake command used was
    cmake .. -DBUILD_TESTS=OFF \
             -DBUILD_PYTHON=ON \
             -DPYBIND11_PYTHON_VERSION=3.6 \
             -DPYTHON_INSTALL_DIR=/usr/local/lib/python3.6/dist-packages/ \
             -DBUILD_ARCH=core2

Your problem might not be the same but it is something you can try.


Reproducible builds via Docker

This PR extends the cargo risczero tool with a new build command.
It is based on a docker image built with this Dockerfile and (temporarily) pushed to the risczero Docker hub account.
Installation
To install the tool just run:
cargo install --path risc0/cargo-risczero/

Example usage
# Build the factors example
cargo risczero build --manifest-path examples/factors/methods/guest/Cargo.toml

This will generate an output similar to:
ELFs ready at:
./elfs/multiply/multiply - ImageID: 9ee1612b0a7e270f8df248e47dc85d9908ff4c1e7df42f398a65ca878b57a23d

Packages that generate multiple ELFs are supported as well:
# Build the chess example
cargo risczero build --manifest-path risc0/zkvm/methods/guest/Cargo.toml

This will generate an output similar to:
ELFs ready at:
./elfs/risc0_zkvm_methods_guest/hello_commit - ImageID: eb12f9b97d8759327f651afeb09ae9a5713e7dbc428284d453b8cf56e8dadd5a
./elfs/risc0_zkvm_methods_guest/multi_test - ImageID: 761900e766a4ae1d8edcb2b49dc9aee54b94e42c9b0d6421cfb112314c4e3efc
./elfs/risc0_zkvm_methods_guest/slice_io - ImageID: 3f2ad1a2d500ab4ab927eebe241d872d3f598065b8987b182410cf01f350f74c

This is great! I think cargo risczero build (drop the -guest) is a better name.

Yeah I agree. I'm all open for testing suggestions. So far I came up with the following idea:

Build a few guests on Linux and on Mac and check that both result into same values. This requires having Docker installed on both. I'm not sure though if would be feasible to compare a GitHub job (on Linux) result to another job (on Mac)

What if we did a manual build locally on any platform, then we checked in the resulting IMAGE_ID. Then in CI, we just run the build and compare?

Great idea! that would work! However we must be sure that the Cargo.lock used to do the local build is the same that gets checked in CI. I can try to put together a test for this 👍

Here's an idea for testing - We have the fault checker guest code that will be a part of the zkvm when #736 lands. We could have some sort of check that runs the build on the fault checker and ensure that the elf and the image ID matches on each CI run.

@heavypackets had some concerns around potential entropy introduced by crates.io. @heavypackets would be great to hear from you on whether the particular approach here should be impacted?

Talked to @hmrtn a bit, might be worth checking that the source we copy from the users manifest location includes a Cargo.lock (assuming its a lock file for the guest code). Then throwing a warning to the user if its not included to prevent crates.io drift.

The docker container already uses --locked as a manifest-path option to ensure that the Cargo.lock (of the guest package) is up-to-date. We can surely add a check even before starting the docker build to make sure the Cargo.lock file is indeed present

My first thought it that we're using the term "reproducible build" in a non-standard way. For an example of historical context, the organization I've supported since my Docker days goes into the motivations: https://reproducible-builds.org.
A reproducible build implies: identical source code -> identical binary via a deterministic compiler, a guarantee that is portable across disparate environments into perpetuity. This is important for distributing applications that can be rebuilt anywhere with guaranteed security, a primary motivation behind reproducible builds in OSS.
This is not the contract we are implying with our tool. We are concerned about Image ID stability. As I understand, the Image ID ignores parts of the ELF that are unimportant to the program semantics, so binary comparison is unimportant in the zkVM security model. In our model, rustc could produce binaries who's binary hashes do not match but have the same Image ID -- that distinction might not be important in our VM security model, but that is not generalizable to meet the same bar implied by a "reproducible build" of a compiled program.
So, I'd recommend renaming this feature, preferably avoiding anything that implies a deterministic build. Then document it heavily, so people aren't confused what we are/aren't guaranteeing.

So, I'd recommend renaming this feature, preferably avoiding anything that implies a deterministic build. Then document it heavily, so people aren't confused what we are/aren't guaranteeing.

I am confused about this because we can emit a MemoryImage object reproduce-ably and deterministically using this system (ideally assuming we squash most of the entropy bugs). The ELF might not be, but you don't need a ELF, you can skip right to the memory image as your primary input on both the ZKVM and Bonsai.

So, I'd recommend renaming this feature, preferably avoiding anything that implies a deterministic build. Then document it heavily, so people aren't confused what we are/aren't guaranteeing.

I am confused about this because we can emit a MemoryImage object reproduce-ably and deterministically using this system (ideally assuming we squash most of the entropy bugs). The ELF might not be, but you don't need a ELF, you can skip right to the memory image as your primary input on both the ZKVM and Bonsai.

I just double checked and while the ImageID is derived from most members of the MemoryImage object, I think its possible to have the data on disk change without the ImageID change because of the PageTableInfo but I would wanna double check with @flaub first.
If that is the case then I think my above comment is probably not accurate.

The ImageID is a function that has a type like: fn compute_image_id(used_elf_pages, page_size, page_table_addr, pc) where:

used_elf_pages: the set of pages that are read by the ELF binary (this means that some ELF pages are not accessed and not needed)
page_size: The circuit is currently hard coded to 1024 bytes.
page_table_addr: The linear address where the page table exists in the runtime memory image. This is also hard coded in the circuit.
pc: Program counter, this is the starting address to begin execution.

If any of the parameters change, you get a different ImageID. The part that we're concerned with here for a "reproducible build" is just the used_elf_pages.
With this approach (using docker) or any other approach we attempt, the goal is to be able to ensure that if multiple users submit the same source code, they get identical use_elf_pages. Thus, to me this satisfies the requirements of a "reproducible build system". So I do think we imply "identical source code -> identical binary via a deterministic compiler". It just so happens that the "deterministic compiler" has to be wrapped in a docker image until rustc and cargo itself can satisfy this requirement.

used_elf_pages: the set of pages that are read by the ELF binary (this means that some ELF pages are not accessed
If any of the parameters change, you get a different ImageID. The part that we're concerned with here for a "reproducible build" is just the used_elf_pages.

This highlights my concern. We aren't concerned about the resulting binary on disk being identical through separate builds and we aren't testing binary hashes in our build system. In this scenario, we could have different binaries on disk produce the same ID because parts are ignored -- that would be an example of a violation of reproducible builds as I've seen understood in OSS and in PL/compiler space.
For the Web3 example, the NEAR documentation linked in Slack does claim to build identical binaries: https://docs.near.org/sdk/rust/building/reproducible-builds

To verify your contract user can build it themselves and check that the binaries are identical.

In the NEAR case, two slightly different on disk but identical semantically contracts would not meet their definition of reproducibility.
We are claiming that some derivative of those compiled binaries + other inputs will be identical. That's a different definition, and one that requires its own terminology IMO. Or, at least, very careful explanation how/why our definition is different.

In fact, I think we should also tell users that they should check that their ELF binary is identical after using this docker build. I'm also fine with doing this comparison in our CI tests.

Is there any difference between different operate system? I recently build the same guest code in my macos and linux server,  but I got two different ImageID of the code? However the ImageID should not be changed for the same code. Please tell me some solutions or debug method?

Is there any difference between different operate system? I recently build the same guest code in my macos and linux server, but I got two different ImageID of the code? However the ImageID should not be changed for the same code. Please tell me some solutions or debug method?

no, there shouldn't be any differences regardless of operating system if you're using the reproducible build system. What command are you using to build the guest?

Is there any difference between different operate system? I recently build the same guest code in my macos and linux server, but I got two different ImageID of the code? However the ImageID should not be changed for the same code. Please tell me some solutions or debug method?

no, there shouldn't be any differences regardless of operating system if you're using the reproducible build system. What command are you using to build the guest?

Sorry for replying to you late. I just use "cargo run -F cuda" to run the host code and the guest code is built automatically. The guest image ID is found at target/debug/build/methods-.../out/method.rs. The image IDs are indeed different.


initial work on PoC for pagination/filtering/sorting in leveldb store

This is awesome, I didn't run into any issues while testing locally. I just want to recap my understanding of how this is all tied together and ask a few general questions:
All filterable fields are stored in their own LevelDB store (db.index_date etc)?

I really like this solution, it's clean and straightforward. My only question is will there performance overhead to initializing each DB, but if there ever is we can partition a single LevelDB with one of these strategies.
Also, there's no need for the metadata in the "main" DB (eg. __attribute__...) anymore right?
Is each index DB is roughly equivalent to a GSI in Dynamo?

This doesn't remove stale index values yet, right?
The strategy I'd been implemented dealt with this from within the database.put function, we talked about how that responsibility should probably be at the store level instead, so this makes perfect sense to me. Seems like this logic can all go away
The multi-column index are implicitly an AND clause, do you have any thoughts on supporting OR clauses?
Along those same lines, do you have any thoughts about filtering "IN" an array of items?
Instead of the index key, can we namespace the indexes?
I'm not sure this is better, but want to clarify that it'd be doable:
{
  getPostsList(filter: {
    publishByDate: {
      published: {
        eq: true
      },
      date: {
      	after: "2021-03-12T07:00:00.000Z"
      }
    }
  }) {...}

}

Doing it this way auto-complete works and we can infer the index from that key. And for single-column filters we could just use the field's name:
{
  getPostsList(filter: {
    title: {
      startsWith: "Just"
    }
  }) {...}
}

That would require a "graphql-friendly" name so instead of "published-by-date" it'd have to be "publishedByDate".

Other thoughts
We have a hard limit on GSI with Dynamo, and if that means we can only have 20 filters, and from where we are right now that seems ok, but then I also think about the fact that a reference will be an implicit filter:
"Get all posts where the author is "pedro.md"
So would that inflate the number of indexes depending on how many relationships our schema has? Or would those all be considered the same GSI?

This is awesome, I didn't run into any issues while testing locally. I just want to recap my understanding of how this is all tied together and ask a few general questions:
All filterable fields are stored in their own LevelDB store (db.index_date etc)?

I really like this solution, it's clean and straightforward. My only question is will there performance overhead to initializing each DB, but if there ever is we can partition a single LevelDB with one of these strategies.

I'll look into this - I was using a different library to simulate secondary indexes but had issues and discovered it was super old, so I pivoted to separate files but I think if one of these other libs allows partitioning, a single file should be fine.

Also, there's no need for the metadata in the "main" DB (eg. __attribute__...) anymore right?

I think so.. that's on my list to clean-up before this is ready to merge. I am wondering if something like this might still be useful for the FK relationships

Is each index DB is roughly equivalent to a GSI in Dynamo?

yes, that's the way it is modeled now

This doesn't remove stale index values yet, right?

Correct, that's a todo item

The strategy that had been implemented dealt with this from within the database.put function, we talked about how that responsibility should probably be at the store level instead, so this makes perfect sense to me. Seems like this logic can all go away

👍🏻

The multi-column index are implicitly an AND clause, do you have any thoughts on supporting OR clauses?

We are limited by the dynamodb expression only allowing a single comparison (eq, gt, lt, startsWith, etc), so I think without some really clever indexing, OR probably won't be possible in dynamo without post-processing at the application level.

Along those same lines, do you have any thoughts about filtering "IN" an array of items?

I think if you mean something like  in [val1, val2, val3], that would not be possible for the same reason - as it can be translated into an OR ( == val1 OR  == val2 ...)

Instead of the index key, can we namespace the indexes?
I'm not sure this is better, but want to clarify that it'd be doable:
{
  getPostsList(filter: {
    publishByDate: {
      published: {
        eq: true
      },
      date: {
      	after: "2021-03-12T07:00:00.000Z"
      }
    }
  }) {...}

}

I like this - I am not sure how exactly it would be done, but it seems like it would be a better experience

Doing it this way auto-complete works and we can infer the index from that key. And for single-column filters we could just use the field's name:
{
  getPostsList(filter: {
    title: {
      startsWith: "Just"
    }
  }) {...}
}

That would require a "graphql-friendly" name so instead of "published-by-date" it'd have to be "publishedByDate".
Other thoughts
We have a hard limit on GSI with Dynamo, and if that means we can only have 20 filters, and from where we are right now that seems ok, but then I also think about the fact that a reference will be an implicit filter:
"Get all posts where the author is "pedro.md"
So would that inflate the number of indexes depending on how many relationships our schema has? Or would those all be considered the same GSI?

Yeah, I've been thinking about this and I'm thinking it might be a case for keeping the attributes (writing them to the primary index as additional entries), at least for references. It may make sense to do the same for the other fields as well, and then just reserve the user defined indexes for multi-column values.  I'm going to be looking into this today and will follow-up with you.

I'll look into this - I was using a different library to simulate secondary indexes but had issues and discovered it was super old, so I pivoted to separate files but I think if one of these other libs allows partitioning, a single file should be fine.

I would expect that we could also just prefix within the same store, too right?

We are limited by the dynamodb expression only allowing a single comparison (eq, gt, lt, startsWith, etc), so I think without some really clever indexing, OR probably won't be possible in dynamo without post-processing at the application level.

I think if you mean something like in [val1, val2, val3], that would not be possible for the same reason - as it can be translated into an OR ( == val1 OR == val2 ...)

So in your mind if we want to support these things in "post-processing" that means, "get the data in the first pass, get another data set in the second pass" and look at them together. At this point, are we doing sorting and pagination on our own (ie. in memory)?
I have been really curious about how we're going to tackle this kind of problem. Due to the nested nature of GraphQL, this "post-processing" (or round-trips to the DB as I've been referring to them) is somewhat unavoidable (and is one of the reasons SQL works better with GraphQL). It's possibly avoidable in these 2 scenarios because we can just say those features aren't supported, but the fact that you can do getPostList.edges.node.data.author.name (stepping through each post and getting the associated author's name) poses the same kind of problem. On the flip side, one of our core tenets so far has been that SQL will be hard to support in a way that fully normalizes the data (since schemas are dynamic and differ from one repo to the next).
I think there's a whole topic here to discuss, and the direction it goes can really vary wildly. A few thoughts I want to put out for how we might want to think about this

This is a problem specific to any non-SQL strategy that I know of. So even if we moved to Elastic for this we'd still need "round-trips". SQL would handle this, but at what cost to our infrastructure (managing migrations, how many tables?)
I'd be willing to bet we can afford to to pay that "round-trip" penalty at some level of degraded performance. The point I want to stress is that this system is for content management, which by it's nature is high read-volume (for queries that don't often change) and relatively low write-volume. So a good caching mechanism can make up for a whole host of N+1 problems. If this something we need to address, I'd like to at least see what turning on DAX (and putting our API in a VPC) does for us here.

I like this - I am not sure how exactly it would be done, but it seems like it would be a better experience

This shouldn't be too hard, at least worth playing around with.

Yeah, I've been thinking about this and I'm thinking it might be a case for keeping the attributes (writing them to the primary index as additional entries), at least for references. It may make sense to do the same for the other fields as well, and then just reserve the user defined indexes for multi-column values. I'm going to be looking into this today and will follow-up with you.

My expectation for foreign keys has been that it's identical to our needs for filters, so maybe in your pattern we'd have a db.index_reference where the keys are: { key: 'posts:content/authors/pedro.md', value: [ 'posts/document_1' ] }. There would be some limitations there, at first glance we wouldn't be able to say what field the reference is on, so in this example, post references pedro.md, but we don't know which field (ie. post.data.author) so maybe there's a better pattern.

Hey! So I was wondering if having to define indexes might be a hurdle for the average user (and potential for issues if they forget about an index).
I wonder if things might be more foolproof if:

Suggest a best practice, where users put their queries in a queries directory
We generate a set of indexes based on their defined queries
Devs could also optionally provide their own set of indexes, and use queries outside of the queries directory (at their own risk of poor performance).

What this might look like:
Let's say I want to show my "featured" posts on my homepage
Inside .tina/queries.gql, I write the following query:
query featuredPostsQuery($featured: Boolean!, $date: Datetime!) {
  getPosts(filter: { featured:$featured}, sort: { date: $date }) {
    id
    data {
      ...PostsParts
    }
  }
}

This now generates the following in my .tina/generated/indexes.ts
export const indexes = {
  post: [{ date, featured }],
};

Now in my page, I can use the above query:
import {  featuredPostsQuery } from '../.tina/_generated_/types'

export const getStaticProps = async ({ params }) => {

    // Down the road, maybe the user just uses a prisma-like client for fetching, instead of importing the query
    const featuredPosts = (await staticRequest({
          query: , featuredPosts
    }));
    // ...
})

In the above case, I never have to worry about indexing.
Also, we could provide a separate .tina/indexes.ts (outside of the autogenerated directory), where the advanced users are free to add any explicit indexes that they choose. That way, they can go back to inlining their queries in getStaticProps, they can mess around in altair with custom queries (that may or may not be indexed appropriately), etc.
Thoughts @kldavis4 @jeffsee55 ?

In the above case, I never have to worry about indexing.

My general feeling is that this concern is premature. We're not sure this will be a problem, and we're even less sure about all the various ways we may be able to solve it. From a technical perspective there are a couple of issues with this:

GraphQL variables can be an entire filter:

query MyQuery($filter: PostsFilter) {
  getPostsList(filter: $filter) {
    edges {
      cursor
      node {
        data {
          title
        }
      }
    }
  }
}

The variables you'd need to provide here at runtime:
{
  "filter": {
    "title": {
      "eq": "Hello"
    }
  }
}

Allowing filters to be "flat" like this (ie no index key or no namespacing) means we can't really tell what index you want, which order should this be in? Because the order of the index matters, would we assume that if featured came first, that's the order you want? What if another one of your queries accidentally reversed the order.

GraphQL variables can be an entire filter:

query MyQuery($filter: PostsFilter) {
  getPostsList(filter: $filter) {
    edges {
      cursor
      node {
        data {
          title
        }
      }
    }
  }
}

The variables you'd need to provide here at runtime:
{
  "filter": {
    "title": {
      "eq": "Hello"
    }
  }
}

Right, so in your example, you're passing in dynamic filter shapes, however you still need to know what these possible shapes of your filters can be at build-time. If that were me, I'd be scared that I'd miss defining an index, and later change my filter which would break things. However, if you REALLY want to do what you're proposing, you can with my second option, of using the explicit .tina/indexes.ts

Allowing filters to be "flat" like this (ie no index key or no namespacing) means we can't really tell what index you want, which order should this be in? Because the order of the index matters, would we assume that if featured came first, that's the order you want? What if another one of your queries accidentally reversed the order.

I don't exactly know the answer to this, (and I have no idea if my indexes.ts data structure makes sense, it's really just a fuzzy example) but if we're also expecting users to take this into consideration while manually defining indexes, then I think that's potentially a pretty significant DX hurdle.

If that were me, I'd be scared that I'd miss defining an index

I'm not sure what the issue is here, the GraphQL API will tell you that you've passed an invalid filter if it's not defined. And if you've got intellisense working (or your in a client like Altair) you'd see errors as you type it.

we're also expecting users to take this into consideration while manually defining indexes

My feeling is that there's a much more explicit step here, we can give Typescript hints and document it. Whether this is actually harder seems pretty subjective at this stage.

I'll look into this - I was using a different library to simulate secondary indexes but had issues and discovered it was super old, so I pivoted to separate files but I think if one of these other libs allows partitioning, a single file should be fine.

I would expect that we could also just prefix within the same store, too right?

That's correct. It's a little tricky because you need to think about the defaults for gt/lt when they aren't specified, but its still pretty simply

@jeffsee55
Just pushed up the following changes:

Allow filtering on unindexed fields (There is logic which uses the index for filtering if possible, otherwise it fetches the document and performs application layer filtering on the full doc)
Change 'index' parameter to 'sort'. This is optional - when not specified, items will be sorted according to whatever the natural order is (I think filesystem order). If specified, results are sorted according to the associated index. If sort is specified and the fields being filtered are on the index, the query will execute faster because it doesn't need the full doc for filtering.
Got rid of the separate leveldb files and now have a single partitioned database
Support for IN operator and filtering on Referenced objects

I think the main thing that is missing now is nested object filtering which I'm working on now
Here are some sample queries (experimental-examples/tina-cloud-starter + yarn dev-data):
Get posts by author:
        query GetPostsList(
            $filter: PostsFilter!,
            $first: Float,
            $after: String,
            $last: Float,
            $before: String,
            $sort: String) {
          getPostsList(filter: $filter, first: $first, after: $after, last: $last, before: $before, sort: $sort) {
            edges {
              node {
                data {
                  title
                  date
                  published
                  author {
                      ...on AuthorsDocument {
                          id
                      }
                  }
                }
              }
            }
          }
        }

{
    "filter": {
        "author": {
            "authors": {
                "name": {
                    "in": ["Napolean", "Pedro"]
                }
            }
        }
    }
}

published by date:
        query GetPostsList(
            $first: Float,
            $after: String,
            $last: Float,
            $before: String,
            $sort: String, $filter: PostsFilter!) {
          getPostsList(first: $first, after: $after, last: $last, before: $before, sort: $sort, filter: $filter) {
            edges {
              cursor
              node {
                data {
                  title
                  date
                  published
                }
              }
            }
            pageInfo {
                hasNextPage
                endCursor
            }
          }
        }
{
    "filter": {
        "date": {
            "after": "2021-03-12T07:00:00.000Z",
            "before": "2022-08-03T07:00:00.000Z"
        },
        "published": {
            "eq": false
        }
    },
    "sort": "published-by-date"
}

(Note this is still keeping sort and filter separate)
filter on rating sort by date:
        query GetPostsList(
            $first: Float,
            $after: String,
            $last: Float,
            $before: String,
            $sort: String,
            $filter: PostsFilter!) {
          getPostsList(first: $first, after: $after, last: $last, before: $before, sort: $sort, filter: $filter) {
            edges {
              cursor
              node {
                data {
                  title
                  rating
                  date
                  published
                }
              }
            }
            pageInfo {
                hasNextPage
                endCursor
            }
          }
        }
{
    "filter": {
        "rating": {
            "eq": 4
        }
    },
    "sort": "date"
}

filter on title using IN operator
        query GetPostsList(
            $first: Float,
            $after: String,
            $last: Float,
            $before: String,
            $sort: String,
            $filter: PostsFilter!) {
          getPostsList(first: $first, after: $after, last: $last, before: $before, sort: $sort, filter: $filter) {
            edges {
              cursor
              node {
                data {
                  title
                  date
                  published
                }
              }
            }
            pageInfo {
                hasNextPage
                endCursor
            }
          }
        }
{
    "filter": {
        "title": {
            "in": ["Salmon and Moonshine"]
        }
    },
    "sort": "title"
}


Peer-to-Peer (P2P) TLS Communications does not work with signed certificates from TLSCA

The procedure to enable Peer-to-Peer (P2P) TLS communications is not clear.  My assumption is that once a peer was enrolled and had obtained all of the necessary certificates and keys, then it could then participate in P2P TLS communications.  The peer's enrollment id's keystore contains, among other keys and certificates, a tls.cert file and a tls.key file, both of which I had assumed could be used for TLS communications.  However, as can be seen below, not everything went as expected.  In the example scenarios below, the root node is up and running with P2P communications enabled, and the 2nd peer is then started (P2P TLS communications has been enabled).  Security is enabled on both peers and the concensus module is set to "noops".
openchain.yaml file for the root node (peer.tls section)
 # TLS Settings for p2p communications     tls:         enabled: true         cert:             file: /var/openchain/production/crypto/validator/test_vp0/ks/raw/tls.cert         key:             file: /var/openchain/production/crypto/validator/test_vp0/ks/raw/tls.key         # The server name use to verify the hostname returned by TLS handshake         server-host-override: tlsca
openchain.yaml file for the 2nd peer (peer.tls section)
TLS Settings for p2p communications
`tls:
    enabled: true
    cert:
        file: /var/openchain/production/crypto/validator/test_vp1/ks/raw/tls.cert
    key:
        file: /var/openchain/production/crypto/validator/test_vp1/ks/raw/tls.key
    # The server name use to verify the hostname returned by TLS handshake
    server-host-override: tlsca`

obc-peer log for root node
2016/03/31 13:55:27 grpc: Server.Serve failed to complete security handshake.
obc-peer log for 2nd peer
13:55:27.868 [peer] chatWithPeer -> DEBU 03b Initiating Chat with peer address: <IP_ADDRESS>:30303 2016/03/31 13:55:28 grpc: ClientConn.resetTransport failed to create client transport: connection error: desc = "transport: x509: certificate is valid for test_vp0-e7ae7e66-9f9c-4880-a141-a0650ff5433e, not tlsca"; Reconnecting to "<IP_ADDRESS>:30303" 2016/03/31 13:55:30 grpc: ClientConn.resetTransport failed to create client transport: connection error: desc = "transport: x509: certificate is valid for test_vp0-e7ae7e66-9f9c-4880-a141-a0650ff5433e, not tlsca"; Reconnecting to "<IP_ADDRESS>:30303" 13:55:30.537 [peer] chatWithPeer -> ERRO 03c Error creating connection to peer address=<IP_ADDRESS>:30303:  grpc: timed out trying to connect
Here are the contents of test_vp0's tls.cert file (root node):
openssl x509 -noout -text -in tls.cert
Certificate:     Data:         Version: 3 (0x2)         Serial Number: 1 (0x1)     Signature Algorithm: ecdsa-with-SHA384         Issuer: C=US, O=IBM, CN=tlsca         Validity             Not Before: Mar 31 17:29:37 2016 GMT             Not After : Jun 29 17:29:37 2016 GMT         Subject: C=US, O=IBM, CN=test_vp0-e7ae7e66-9f9c-4880-a141-a0650ff5433e         Subject Public Key Info:             Public Key Algorithm: id-ecPublicKey                 Public-Key: (384 bit)                 pub:                     04:41:06:e4:5f:08:9e:4b:da:26:16:67:23:88:1f:                     5f:a1:83:e5:3d:ac:e4:21:a0:da:69:25:24:d2:cc:                     68:c5:34:a1:dd:6f:ff:b5:5a:d4:d8:70:5b:1d:eb:                     b4:ec:62:49:6a:1c:e9:a1:4f:08:4e:96:4f:53:03:                     b5:7f:73:11:3b:42:a3:2d:6f:8f:2d:2f:56:6e:ba:                     89:5d:fb:4a:4d:13:26:2b:d5:e6:f8:f2:ac:31:8a:                     3a:1d:79:eb:ef:0f:d1                 ASN1 OID: secp384r1         X509v3 extensions:             X509v3 Key Usage: critical                 Digital Signature             X509v3 Basic Constraints: critical                 CA:FALSE             X509v3 Subject Key Identifier:                 01:02:03:04             X509v3 Authority Key Identifier:                 keyid:01:02:03:04
Signature Algorithm: ecdsa-with-SHA384
30:65:02:31:00:8e:cd:77:22:43:d6:00:df:90:1a:91:11:d8:
e8:e8:62:a0:58:c8:fd:84:67:60:c6:71:c5:46:d2:85:a8:23:
45:18:3c:d9:b4:90:13:2d:90:43:4b:94:d5:5c:88:ea:63:02:
30:33:54:6c:5e:9b:8c:f2:a8:15:b4:57:10:c6:f4:b5:82:3e:
02:58:19:70:2c:4f:1a:f0:c5:88:c3:da:12:96:77:60:9e:47: `
Now if you change the server-host-override parameter to match the common name of the root node's tls.cert -- test_vp0-e7ae7e66-9f9c-4880-a141-a0650ff5433e -- within the 2nd peer's openchain.yaml file, the following errors occur:
obc-peer log for root node:
2016/03/31 14:08:42 grpc: Server.Serve failed to complete security handshake.
obc-peer log for 2nd peer (non-root node):
14:08:42.710 [peer] chatWithPeer -> DEBU 03b Initiating Chat with peer address: <IP_ADDRESS>:30303 2016/03/31 14:08:43 grpc: ClientConn.resetTransport failed to create client transport: connection error: desc = "transport: x509: certificate signed by unknown authority (possibly because of \"x509: invalid signature: parent certificate cannot sign this kind of certificate\" while trying to verify candidate authority certificate \"test_vp1-00991115-8e2e-4895-b3c8-8f5b55f85316\")"; Reconnecting to "<IP_ADDRESS>:30303" 2016/03/31 14:08:45 grpc: ClientConn.resetTransport failed to create client transport: connection error: desc = "transport: x509: certificate signed by unknown authority (possibly because of \"x509: invalid signature: parent certificate cannot sign this kind of certificate\" while trying to verify candidate authority certificate \"test_vp1-00991115-8e2e-4895-b3c8-8f5b55f85316\")"; Reconnecting to "<IP_ADDRESS>:30303" 14:08:45.379 [peer] chatWithPeer -> ERRO 03c Error creating connection to peer address=<IP_ADDRESS>:30303:  grpc: timed out trying to connect
To enable P2P TLS communications, it appears that the only solution is to use the tlsca.cert and tlsca.priv files for the peer.tls.cert.file and peer.tls.key.file parameters, respectively, in all of the peer openchain.yaml files.  Also, the server-host-override must be set to tlsca to match the common name (CN) of the tlsca.cert certificate.
TLS Settings for p2p communications
   tls:        enabled: true        cert:            file: /path/tlsca.cert  # path may vary from peer to peer        key:            file: /path/tlsca.priv  # path may vary from peer to peer        # The server name use to verify the hostname returned by TLS handshake        server-host-override: tlsca
Perhaps I have implemented P2P TLS communications incorrectly, but if this is the procedure, while I can understand how the tlsca.cert root certificate could be used in checking the TLS certificate chain, I'm not sure if it is a good security practice to have all participating peers have access to the tlsca.priv private key file.

@raullaprida What is the current status of this?

Well,have you fixed this issue?


Add API documentation

Validate the current api is working well when integrating into js-libp2p-swarm
Document it

It is validated. Only missing docs :)


Cannot make it to work?

Hi, I followed the configuration, watcher works fine if I modify files it adds stuff to the queue but then what? If I manually run the worker, the first few times it seems like it's running the test but it never proceeds? I.e it stays on 1 test if I turn off and turn back on it moved to another one? also the dashboard is not actually showing any of the test results. Also is it possible to define the tester route in a middleware inside web.php?
vagrant@liveandnow:~/liveandnow$ php artisan ci:work
Laravel Tests-Watcher - Worker
RUNNING: /usr/bin/script -q /tmp/tw-m9354O vendor/bin/phpunit  /home/vagrant/liveandnow/tests/Unit/ResponseTest.php

♥
vagrant@liveandnow:~/liveandnow$ php artisan ci:work
Live & Now Tester - Worker
RUNNING: /usr/bin/script -q /tmp/tw-S4f2Xe vendor/bin/phpunit  /home/vagrant/liveandnow/tests/Unit/ApiResponseTest.php
vagrant@liveandnow:~/liveandnow$

♥
vagrant@liveandnow:~/liveandnow$ php artisan ci:work
Live & Now Tester - Worker
RUNNING: /usr/bin/script -q /tmp/tw-qThe7l vendor/bin/phpunit  /home/vagrant/liveandnow/tests/Unit/ResponseTest.php
vagrant@liveandnow:~/liveandnow$
♥
vagrant@liveandnow:~/liveandnow$ php artisan ci:work
Live & Now Tester - Worker
RUNNING: /usr/bin/script -q /tmp/tw-YKED20 php artisan dusk  /home/vagrant/liveandnow/tests/Browser/LoginTest.php
vagrant@liveandnow:~/liveandnow$
♥
vagrant@liveandnow:~/liveandnow$ php artisan ci:work
Live & Now Tester - Worker
RUNNING: /usr/bin/script -q /tmp/tw-PTWgeT php artisan dusk  /home/vagrant/liveandnow/tests/Browser/RegisterTest.php
vagrant@liveandnow:~/liveandnow$

[1]+  Stopped                 php artisan ci:work
vagrant@liveandnow:~/liveandnow$ cd liveandnow
-bash: cd: liveandnow: No such file or directory
vagrant@liveandnow:~/liveandnow$ php artisan ci:work
Live & Now Tester - Worker
idle...
♥
vagrant@liveandnow:~/liveandnow$ php artisan ci:work
Live & Now Tester - Worker
idle...

watch:
vagrant@liveandnow:~/liveandnow$ php artisan ci:watch
Live & Now Tester - Watcher
Loading testers...
TESTER: phpunit
TESTER: dusk
TESTER: codeception
TESTER: phpspec
TESTER: behat
TESTER: atoum
TESTER: tester
TESTER: jest
TESTER: react-scripts
TESTER: rake
TESTER: ava
Loading projects and suites...
Project 'PhPUnit'
  -- suite 'feature'
  -- suite 'unit'
Project 'Dusk'
  -- suite 'browser'
EXCLUDED: /home/vagrant/liveandnow/tests/Browser/console/
EXCLUDED: /home/vagrant/liveandnow/tests/Browser/screenshots/
Loading tests...
BOOT: booting watchers...
WATCHING /home/vagrant/liveandnow/app
WATCHING /home/vagrant/liveandnow/tests
WATCHING /home/vagrant/liveandnow/app
WATCHING /home/vagrant/liveandnow/tests/Browser
WATCHING CONFIG: /home/vagrant/liveandnow/config/ci.php
Loading testers...
TESTER: phpunit
TESTER: dusk
TESTER: codeception
TESTER: phpspec
TESTER: behat
TESTER: atoum
TESTER: tester
TESTER: jest
TESTER: react-scripts
TESTER: rake
TESTER: ava
Loading projects and suites...
Project 'PhPUnit'
  -- suite 'feature'
  -- suite 'unit'
Project 'Dusk'
  -- suite 'browser'
EXCLUDED: /home/vagrant/liveandnow/tests/Browser/console/
EXCLUDED: /home/vagrant/liveandnow/tests/Browser/screenshots/
Loading tests...
FILE CHANGED: /home/vagrant/liveandnow/app/Helpers/Parsers.php was modified
QUEUE: adding all tests for the feature suite
QUEUE: adding all tests for the unit suite
QUEUE: adding all tests for the browser suite

I finally managed to get it to work but something is wrong:
test like this:
    public function testBasicTest()
    {
        $response = $this->get('/');

        $response->assertStatus(200);
    }

Takes 7 minutes and it is still going. It works properly when I run phpunit


The latest versions no longer working (MM inside Docker is fine)

Hi,
I can't get the container working in the latest versions, using Docker Desktop <IP_ADDRESS> (latest version) win64 (no other version tested).
When I try to access it, I get the following:

Firefox: Fehler: Verbindung unterbrochen / The connection was reset
Chrome: ERR_EMPTY_RESPONSE

without Container/portsharing the errors are:

Firefox: Fehler: Verbindung fehlgeschlagen / connection failed
Chrome: ERR_CONNECTION_REFUSED

Inside the container MM is running correctly, tested with wget localhost:8080 and also the logs show no error either:

[...]
[11:27:13.574] [LOG]    Sockets connected & modules started ...
[11:27:13.574] [LOG]
Ready to go! Please point your browser to: http://localhost:8080

When i use an old version everything works (same configuration and default).
Working Image (30th dec):

bastilimbach/docker-magicmirror@sha256:8ef61d7a60009c34b1b1a2e4d3a427a4fe1da58b84af697f5bfad5333b1ef718

Not working (for example):

bastilimbach/docker-magicmirror@sha256:b02a7034893816ad964f7c975b07907ffcdcb9ff0b3a08e1b84e5e5dda771e26

Used command (working with old version):

docker run  -d  --publish 80:8080 --restart always --env TZ=Europe/Berlin --volume c:/magic_mirror/config:/opt/magic_mirror/config --volume c:/magic_mirror/modules:/opt/magic_mirror/modules --volume c:/magic_mirror/css:/opt/magic_mirror/css --name magic_mirror bastilimbach/docker-magicmirror

Hi 👋
Can you please provide you config?

Hi,
thanks for replying :)
Which config do you mean exactly? The MM config?
For testing I have removed almost everything:
config.js
/* Magic Mirror Config Sample
 *
 * By Michael Teeuw http://michaelteeuw.nl
 * MIT Licensed.
 *
 * For more information how you can configurate this file
 * See https://github.com/MichMich/MagicMirror#configuration
 *
 */

var config =
{
    address: "", // Address to listen on, can be:
    // - "localhost", "<IP_ADDRESS>", "::1" to listen on loopback interface
    // - another specific IPv4/6 to listen on a specific interface
    // - "", "<IP_ADDRESS>", "::" to listen on any interface
    // Default, when address config is left out, is "localhost"
    port: 8080,
    ipWhitelist: [], // Set [] to allow all IP addresses
    // or add a specific IPv4 of <IP_ADDRESS> :
    // ["<IP_ADDRESS>", "::ffff:<IP_ADDRESS>", "::1", "::ffff:<IP_ADDRESS>"],
    // or IPv4 range of <IP_ADDRESS> --> <IP_ADDRESS> use CIDR format :
    // ["<IP_ADDRESS>", "::ffff:<IP_ADDRESS>", "::1", "::ffff:<IP_ADDRESS>/28"],

    language: "de",
    timeFormat: 24,
    units: "metric",

    modules: [
        {
            module: "alert",
        },
        {
            module: "updatenotification",
            position: "top_bar"
        },
        {
            module: "clock",
            position: "top_left",
            config:
            {
                timezone: 'Europe/Berlin',
            }
        },
    ]

};

/*************** DO NOT EDIT THE LINE BELOW ***************/
if (typeof module !== "undefined") {module.exports = config;}

custom.css
/*****************************************************
 * Magic Mirror                                      *
 * Custom CSS                                        *
 *                                                   *
 * By Michael Teeuw http://michaelteeuw.nl           *
 * MIT Licensed.                                     *
 *                                                   *
 * Add any custom CSS below.                         *
 * Changes to this files will be ignored by GIT. *
 *****************************************************/

 body {

 }

Log
[19:42:01.716] [LOG]    Starting MagicMirror: v2.10.0
[19:42:01.718] [LOG]    Loading config ...
[19:42:01.722] [LOG]    Loading module helpers ...
[19:42:01.724] [LOG]    No helper found for module: alert.
[19:42:01.738] [LOG]    Initializing new module helper ...
[19:42:01.739] [LOG]    Module helper loaded: updatenotification
[19:42:01.740] [LOG]    No helper found for module: clock.
[19:42:01.740] [LOG]    All module helpers loaded.
[19:42:01.741] [LOG]    Starting server on port 8080 ...
[19:42:01.743] [INFO]   You're using a full whitelist configuration to allow for all IPs
[19:42:01.745] [LOG]    Server started ...
[19:42:01.745] [LOG]    Connecting socket for: updatenotification
[19:42:01.745] [LOG]    Sockets connected & modules started ...
[19:42:01.746] [LOG]
Ready to go! Please point your browser to: http://localhost:8080

You need specify address: "<IP_ADDRESS>", to force to listen on all interfaces.
https://github.com/xbgmsharp/docker-MagicMirror/commit/1fe37ada760db6bc391d492259c8cd65bae0f73d

That's it, thank you! So MM after all...
Quite strange, because it worked like this in the past and according to the documentary both should have the same function?
But what the heck, thanks.

Maybe a bug was introduced. Might need to adapt the readme. Thanks @xbgmsharp!

Just tested it on a raspberry (not the docker version) and there is the same behavior.
In the new published Documentation on the website not github only address: "<IP_ADDRESS>" is left.
I think more important than the readme is the mm-docker-config.js, because at the moment the container does not work by default.
Took the opportunity to create a Pull request #32 and gather some github experience.

Thanks @chris-kwl for the PR. This is what open source is all about 🎉
Merged it!


feat: gracefully shutdown prometheus server

Fixes #7587

@onbjerg Struggling a bit, can I get a few more insights?

Hey @rupam-04, I can see you are struggling a bit. I took the liberty to push a commit that finishes the PR: 2e55785
Please take a look and let me know what you think! If you have feedback for the docs or the general directions I gave, please also let me know.

Yeah I was struggling a bit but your commit makes sense now and I understand where I was being wrong. Thanks @onbjerg


Add Convenience Methods

There are a bunch of places that extra methods would make usage more efficient or cleaner.

Nice 1
We have Bytes.writeTo(ByteBuffer) which is nice but I have no way to pass to a MessageDigest without a copy. So can we please add:
Bytes.writeTo(MessageDigest) which calls MessageDigest.update() with the internal byte[] of Bytes.

Nice 2
We have Bytes.writeTo(ByteBuffer) which is nice but I have no way to pass to a OutputStream without a copy. So can we please add:
Bytes.writeTo(OutputStream) which calls OutputStream.write() with the internal byte[] of Bytes.

Nice 3
It would be really helpful in Codec and hence <GeneratedRecord>.PROTOBUF class to add a method toBytes() that writes the object out in protobuf format and returns it as a Bytes object.
it could be implemented like this to start with, adding a more optimal implementation later
public Bytes toBytes(@NonNull T item) {
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        WritableStreamingData writableStreamingData = new WritableStreamingData(byteArrayOutputStream);
        try {
            write(item, writableStreamingData);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        return Bytes.wrap(byteArrayOutputStream.toByteArray());
}

Addressed with https://github.com/hashgraph/pbj/pull/43


ITokenStore for local in-memory storage

Hey guys
Can you provide an ITokenStore implementation for local in-memory storage (for example MemoryCache or EF Core in-memory DB)?

Thanks, @anatolii-bohdanov  for your contribution. Our C# SDK comes with built-in support for File Persistence, which stores your tokens in a file at a location of your choosing, and DB Persistence, which stores your tokens in a MySQL database. However, if these options don't align with your specific requirements, or if you want to use a database other than MySQL or any other storage method, you can leverage Custom Persistence, where you can define your own storage logic through the ITokenStore interface. To do this, you need to implement the ITokenStore interface and override its methods accordingly.


Contact page added

Description
contact page with contact forum including (name , email ,text content)
linked the contact us button of home page to the footer area of the home page instead of the new contact us page
Fixes #26  [ISSUE]
Type of Change:
Delete irrelevant options.

Code
User Interface

How Has This Been Tested?
tested on my local system
screenshots

Checklist:
Delete irrelevant options.

[x] My PR follows the style guidelines of this project
[x] I have performed a self-review of my own code or materials
[x] I have commented my code or provided relevant documentation, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation

lgtm.
@aryamanpuri any issues.

Looking good.
Nice patch @vinayaksh42


Research ingestion alternative architectures

Details TBD, but this will include researching SWIPE, Databricks, Dask (and possibly others) as alternatives and will include a POC and feasibility study. Q4 scope will not include replacing the current ingestion pipeline.

To be replaced by a proper epic with stories in the future!


source OmniSharp timeout after 5000ms

Hi,
I've copied/pasted the .vimrc file from another pc and I can't get Omnisharp working.
In the other pc is working as expected, but in this is giving me a timeout.
I'm installing like this:
Plug 'OmniSharp/omnisharp-vim'
And I have this mappings:
nnoremap u :OmniSharpFindUsages
nnoremap gd :OmniSharpGotoDefinition
nmap  oi :OmniSharpFindImplementations
nnoremap pd:OmniSharpPreviewDefinition
nnoremap run  :cd %:p:h:!dotnet run
inoremap {      {}
inoremap {  {}O
inoremap {{     {
inoremap {}     {}
When opening a .cs file, after a few seconds, I'm getting the timeout error:

What I'm doing wrong?
Thanks for your help.

I don't think that error is coming from OmniSharp-vim - can you please share your full .vimrc?

Yes, of course:
set path=.**
set number
set mouse=a
set numberwidth=1
set clipboard=unnamed
syntax enable
set showcmd
set ruler
set encoding=utf-8
set showmatch
set sw=2
set relativenumber
set laststatus=2
set noshowmode
set wildmenu
set wildmode=list:longest,full
call plug#begin('~/.vim/plugged')
" Themes
Plug 'morhetz/gruvbox'
" IDE
Plug 'easymotion/vim-easymotion'
Plug 'scrooloose/nerdtree'
Plug 'christoomey/vim-tmux-navigator'
Plug 'neoclide/coc.nvim', {'branch': 'release'}
Plug 'OmniSharp/omnisharp-vim'
call plug#end()
colorscheme gruvbox
let g:gruvbox_contrast_dark = "hard"
let NERDTreeQuitOnOpen=1
let mapleader=" "
nmap s (easymotion-s2)
nmap nt :NERDTreeFind
nmap w :w
nmap q :q
nmap  :bn
nmap  :bp
nmap d :bd
nmap m :find
"===========CoC============
" TextEdit might fail if hidden is not set.
set hidden
" Some servers have issues with backup files, see #649.
set nobackup
set nowritebackup
" Give more space for displaying messages.
set cmdheight=2
" Having longer updatetime (default is 4000 ms = 4 s) leads to noticeable
" delays and poor user experience.
set updatetime=300
" Don't pass messages to |ins-completion-menu|.
set shortmess+=c
" Always show the signcolumn, otherwise it would shift the text each time
" diagnostics appear/become resolved.
if has("patch-8.1.1564")
" Recently vim can merge signcolumn and number column into one
set signcolumn=number
else
set signcolumn=yes
endif
" Use tab for trigger completion with characters ahead and navigate.
" NOTE: Use command ':verbose imap ' to make sure tab is not mapped by
" other plugin before putting this into your config.
inoremap
\ pumvisible() ? "<C-n>" :
\ check_back_space() ? "<TAB>" :
\ coc#refresh()
inoremap  pumvisible() ? "<C-p>" : "<C-h>"
function! s:check_back_space() abort
let col = col('.') - 1
return !col || getline('.')[col - 1]  =~# '\s'
endfunction
" Use  to trigger completion.
if has('nvim')
inoremap   coc#refresh()
else
inoremap  <c-@> coc#refresh()
endif
" Use  to confirm completion, <C-g>u means break undo chain at current
" position. Coc only does snippet and additional edit on confirm.
"  could be remapped by other vim plugin, try :verbose imap <CR>.
if exists('*complete_info')
inoremap   complete_info()["selected"] != "-1" ? "<C-y>" : "<C-g>u<CR>"
else
inoremap   pumvisible() ? "<C-y>" : "<C-g>u<CR>"
endif
" Use [g and ]g to navigate diagnostics
" Use :CocDiagnostics to get all diagnostics of current buffer in location list.
nmap  [g (coc-diagnostic-prev)
nmap  ]g (coc-diagnostic-next)
" GoTo code navigation.
nmap  gd (coc-definition)
nmap  gy (coc-type-definition)
nmap  gi (coc-implementation)
nmap  gr (coc-references)
" Use K to show documentation in preview window.
nnoremap  K :call show_documentation()
function! s:show_documentation()
if (index(['vim','help'], &filetype) >= 0)
execute 'h '.expand('')
else
call CocAction('doHover')
endif
endfunction
" Highlight the symbol and its references when holding the cursor.
autocmd CursorHold * silent call CocActionAsync('highlight')
" Symbol renaming.
nmap rn (coc-rename)
" Formatting selected code.
xmap f  (coc-format-selected)
nmap f  (coc-format-selected)
augroup mygroup
autocmd!
" Setup formatexpr specified filetype(s).
autocmd FileType typescript,json setl formatexpr=CocAction('formatSelected')
" Update signature help on jump placeholder.
autocmd User CocJumpPlaceholder call CocActionAsync('showSignatureHelp')
augroup end
" Applying codeAction to the selected region.
" Example: <leader>aap for current paragraph
xmap a  (coc-codeaction-selected)
nmap a  (coc-codeaction-selected)
" Remap keys for applying codeAction to the current buffer.
nmap ac  (coc-codeaction)
" Apply AutoFix to problem on the current line.
nmap qf  (coc-fix-current)
" Map function and class text objects
" NOTE: Requires 'textDocument.documentSymbol' support from the language server.
xmap if (coc-funcobj-i)
omap if (coc-funcobj-i)
xmap af (coc-funcobj-a)
omap af (coc-funcobj-a)
xmap ic (coc-classobj-i)
omap ic (coc-classobj-i)
xmap ac (coc-classobj-a)
omap ac (coc-classobj-a)
" Use CTRL-S for selections ranges.
" Requires 'textDocument/selectionRange' support of LS, ex: coc-tsserver
nmap   (coc-range-select)
xmap   (coc-range-select)
" Add :Format command to format current buffer.
command! -nargs=0 Format :call CocAction('format')
" Add :Fold command to fold current buffer.
command! -nargs=? Fold :call     CocAction('fold', )
" Add :OR command for organize imports of the current buffer.
command! -nargs=0 OR   :call     CocAction('runCommand', 'editor.action.organizeImport')
" Add (Neo)Vim's native statusline support.
" NOTE: Please see :h coc-status for integrations with external plugins that
" provide custom statusline: lightline.vim, vim-airline.
set statusline^=%{coc#status()}%{get(b:,'coc_current_function','')}
" Mappings for CoCList
" Show all diagnostics.
nnoremap  a  :CocList diagnostics
" Manage extensions.
nnoremap  e  :CocList extensions
" Show commands.
nnoremap  c  :CocList commands
" Find symbol of current document.
nnoremap  o  :CocList outline
" Search workspace symbols.
nnoremap  s  :CocList -I symbols
" Do default action for next item.
nnoremap  j  :CocNext
" Do default action for previous item.
nnoremap  k  :CocPrev
" Resume latest coc list.
nnoremap  p  :CocListResume
nnoremap u :OmniSharpFindUsages
nnoremap gd :OmniSharpGotoDefinition
nmap  oi :OmniSharpFindImplementations
nnoremap pd:OmniSharpPreviewDefinition
nnoremap run  :cd %:p:h:!dotnet run
inoremap {      {}
inoremap {  {}O
inoremap {{     {
inoremap {}     {}
I appreciate your help.

Thanks - do you mind editing that and wrapping the .vimrc in ``` regions? Some of the vimscript is being lost in the markdown translation.

I've updated the message, please let me know if you need anything else

Sorry, I got called away - yes that's much easier to read.
Is it possible that CoC is using its coc-omnisharp integration, and it's that that is giving the error?

I have no idea.
The same .vimrc is working on another pc without problems, but maybe I've done something without knowing.
How can I disable coc-omnisharp?

I don't know, I don't use Coc. But I can see someone getting the same error here: https://github.com/coc-extensions/coc-omnisharp/issues/5#issuecomment-525761961

Does CoC have its own configuration file, outside the .vimrc?

I don't have any additional coc file.
I've tried to remove coc and now the timeout dissappeared, but nothing of omnisharp is working.
The OmnisharStatus says everything is running but I can't see anything.
In the PC I have this working, once I open a .cs file, I have colors in code, and I have suggestions while I'm typing.

Can you post the log? :OmniSharpOpenLog

NVIM v0.4.3
OmniSharp server started.
Path: C:\Users\rodri\AppData\Local\omnisharp-vim\omnisharp-roslyn\OmniSharp.exe
Target: C:\repos\test
PID: 4048
    Starting OmniSharp on Windows 6.2.9200.0 (x64)

    DotNetPath set to dotnet

    Located 2 MSBuild instance(s)
        1: Visual Studio Enterprise 2019 16.6.30204.135 - "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin"
        2: StandAlone 16.4 - "C:\Users\rodri\AppData\Local\omnisharp-vim\omnisharp-roslyn\.msbuild\Current\Bin"

    Registered MSBuild instance: Visual Studio Enterprise 2019 16.6.30204.135 - "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin"

    Detecting Cake files in 'C:\repos\test'.

    Could not find any Cake files

    No solution files found in 'C:\repos\test'

    Queue project update for 'C:\repos\test\test.csproj'

    Detecting CSX files in 'C:\repos\test'.

    Could not find any CSX files

    Invoking Workspace Options Provider: OmniSharp.Roslyn.CSharp.Services.CSharpFormattingWorkspaceOptionsProvider, Order: 0

    Loading project: C:\repos\test\test.csproj

    Invoking Workspace Options Provider: OmniSharp.Roslyn.CSharp.Services.RenameWorkspaceOptionsProvider, Order: 100

    Invoking Workspace Options Provider: OmniSharp.Roslyn.CSharp.Services.ImplementTypeWorkspaceOptionsProvider, Order: 110

    Invoking Workspace Options Provider: OmniSharp.Roslyn.CSharp.Services.BlockStructureWorkspaceOptionsProvider, Order: 140

    Configuration finished.

    Omnisharp server running using Stdio at location 'C:\repos\test' on host -1.

    Miscellaneous file: C:\repos\test\Program.cs added to workspace

Replaying requests for buffer 3
info: OmniSharp.MSBuild.ProjectManager
Successfully loaded project file 'C:\repos\test\test.csproj'.
All projects loaded
info: OmniSharp.MSBuild.ProjectManager
Adding project 'C:\repos\test\test.csproj'
info: OmniSharp.MSBuild.ProjectManager
Update project: test
Replaying on-load requests
Reading the log, it's mandatory to have a sln file?

Ah this is neovim on Windows. This is the issue described in the README, and in #499 - it's a neovim bug. The solution is to either use Vim instead of neovim, or use neovim-nightly.

Oh, but the other PC is also with Windows and it's working great.
Well, I'll move to vim and let you know.
Thanks for your help.

Can you check the version of neovim running on the other PC? Could it be a nightly build?

NVIM v0.4.3

Yeah that's a nightly build

Great, I'll install this version on this PC too.
Thanks for all your help.

No worries


apikey:generate throws error

running laravel 6.4.0, laravel-api-key 1.0.3
when calling php artisan apikey:generate app I get
`
Symfony\Component\Debug\Exception\FatalThrowableError  : Call to undefined function Ejarnutowski\LaravelApiKey\Models\str_random()
at /home/vagrant/code/vendor/ejarnutowski/laravel-api-key/src/Models/ApiKey.php:79
75|      */
76|     public static function generate()
77|     {
78|         do {

79|             $key = str_random(64);
80|         } while (self::keyExists($key));
81|
82|         return $key;
83|     }

Exception trace:
1   Ejarnutowski\LaravelApiKey\Models\ApiKey::generate()
/home/vagrant/code/vendor/ejarnutowski/laravel-api-key/src/Console/Commands/GenerateApiKey.php:46
2   Ejarnutowski\LaravelApiKey\Console\Commands\GenerateApiKey::handle()
/home/vagrant/code/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:32
`
I also noticed it complains if I use the readme example of app1

The package has been updated with the fix 2 months ago. But I guess its not been tagged as a new version and hence you are still having the old code under the version 1.0.3.

Till the time the package maintainer does not release the new version, you can use dev-master as a version in composer.json.
"require": {
    ...
    "ejarnutowski/laravel-api-key": "dev-master",
    ...
},

Thanks!


Ciura Cocktail Shell Sort

A semicolon needs to be added to make this compile.

Fixed

Stop it with Gaming32. Use the modern Array Visualizer at https://github.com/yg8ijvjvjv/ModernArrayVisualizer .

Stop it with MusicTheorist and Gaming32. We have the modern Array Visualizer in https://github.com/yg8ijvjvjv/ModernArrayVisualizer, which is the latest version of Array Visualizer.

@yg8ijvjvjv I'm getting sick and tired of this, Piotr.


Spree 3.0

Is spree 3.0 BC enough for this to work? And if not are there plans of updating for 3.0?

This gem has not upgraded for 3.0 yet. I am unsure if you can use 2.4 on 3.0, but I will be working on the upgrade soon.

If you would like to contribute by starting a 3.0 branch let us know.

https://github.com/railsdog/spree_avatax_certified/pull/29

3-0-stable is still in the testing process, but it is looking good if you would like to start setting it up.

Awesome! Thanks!

Just tried installing on my 3.0 installation, and got the following error:
$ bundle exec rails g spree_avatax_certified:install
/Users/jacobspizziri/.rvm/gems/ruby-2.1.0/bundler/gems/spree_active_shipping-d8e2e5628b59/app/models/spree/calculator/shipping/active_shipping/base.rb:12:in `<class:Base>': uninitialized constant ActiveMerchant::Shipping (NameError)
	from /Users/jacobspizziri/.rvm/gems/ruby-2.1.0/bundler/gems/spree_active_shipping-d8e2e5628b59/app/models/spree/calculator/shipping/active_shipping/base.rb:11:in `<module:ActiveShipping>'
	from /Users/jacobspizziri/.rvm/gems/ruby-2.1.0/bundler/gems/spree_active_shipping-d8e2e5628b59/app/models/spree/calculator/shipping/active_shipping/base.rb:10:in `<module:Shipping>'
	from /Users/jacobspizziri/.rvm/gems/ruby-2.1.0/bundler/gems/spree_active_shipping-d8e2e5628b59/app/models/spree/calculator/shipping/active_shipping/base.rb:9:in `<module:Spree>'
	from /Users/jacobspizziri/.rvm/gems/ruby-2.1.0/bundler/gems/spree_active_shipping-d8e2e5628b59/app/models/spree/calculator/shipping/active_shipping/base.rb:8:in `<top (required)>'
	from /Users/jacobspizziri/.rvm/gems/ruby-2.1.0/bundler/gems/spree_active_shipping-d8e2e5628b59/app/models/spree/calculator/shipping/canada_post/base.rb:6:in `<module:CanadaPost>'
	from /Users/jacobspizziri/.rvm/gems/ruby-2.1.0/bundler/gems/spree_active_shipping-d8e2e5628b59/app/models/spree/calculator/shipping/canada_post/base.rb:5:in `<module:Shipping>'
	from /Users/jacobspizziri/.rvm/gems/ruby-2.1.0/bundler/gems/spree_active_shipping-d8e2e5628b59/app/models/spree/calculator/shipping/canada_post/base.rb:4:in `<module:Spree>'
	from /Users/jacobspizziri/.rvm/gems/ruby-2.1.0/bundler/gems/spree_active_shipping-d8e2e5628b59/app/models/spree/calculator/shipping/canada_post/base.rb:3:in `<top (required)>'
	from /Users/jacobspizziri/.rvm/gems/ruby-2.1.0/bundler/gems/spree_active_shipping-d8e2e5628b59/app/models/spree/calculator/shipping/canada_post/expedited.rb:4:in `<module:CanadaPost>'
	from /Users/jacobspizziri/.rvm/gems/ruby-2.1.0/bundler/gems/spree_active_shipping-d8e2e5628b59/app/models/spree/calculator/shipping/canada_post/expedited.rb:3:in `<module:Shipping>'
	from /Users/jacobspizziri/.rvm/gems/ruby-2.1.0/bundler/gems/spree_active_shipping-d8e2e5628b59/app/models/spree/calculator/shipping/canada_post/expedited.rb:2:in `<module:Spree>'
	from /Users/jacobspizziri/.rvm/gems/ruby-2.1.0/bundler/gems/spree_active_shipping-d8e2e5628b59/app/models/spree/calculator/shipping/canada_post/expedited.rb:1:in `<top (required)>'
	from /Users/jacobspizziri/.rvm/gems/ruby-2.1.0/gems/activesupport-4.2.0/lib/active_support/inflector/methods.rb:263:in `const_get'
	from /Users/jacobspizziri/.rvm/gems/ruby-2.1.0/gems/activesupport-4.2.0/lib/active_support/inflector/methods.rb:263:in `block in constantize'
	from /Users/jacobspizziri/.rvm/gems/ruby-2.1.0/gems/activesupport-4.2.0/lib/active_support/inflector/methods.rb:259:in `each'
	from /Users/jacobspizziri/.rvm/gems/ruby-2.1.0/gems/activesupport-4.2.0/lib/active_support/inflector/methods.rb:259:in `inject'
	from /Users/jacobspizziri/.rvm/gems/ruby-2.1.0/gems/activesupport-4.2.0/lib/active_support/inflector/methods.rb:259:in `constantize'
	from /Users/jacobspizziri/.rvm/gems/ruby-2.1.0/gems/activesupport-4.2.0/lib/active_support/core_ext/string/inflections.rb:66:in `constantize'
	from /Users/jacobspizziri/.rvm/gems/ruby-2.1.0/bundler/gems/spree_active_shipping-d8e2e5628b59/lib/spree_active_shipping/engine.rb:34:in `block (3 levels) in <class:Engine>'
	from /Users/jacobspizziri/.rvm/gems/ruby-2.1.0/bundler/gems/spree_active_shipping-d8e2e5628b59/lib/spree_active_shipping/engine.rb:33:in `map'
	from /Users/jacobspizziri/.rvm/gems/ruby-2.1.0/bundler/gems/spree_active_shipping-d8e2e5628b59/lib/spree_active_shipping/engine.rb:33:in `block (2 levels) in <class:Engine>'
	from /Users/jacobspizziri/.rvm/gems/ruby-2.1.0/bundler/gems/spree_active_shipping-d8e2e5628b59/lib/spree_active_shipping/engine.rb:32:in `chdir'
	from /Users/jacobspizziri/.rvm/gems/ruby-2.1.0/bundler/gems/spree_active_shipping-d8e2e5628b59/lib/spree_active_shipping/engine.rb:32:in `block in <class:Engine>'
	from /Users/jacobspizziri/.rvm/gems/ruby-2.1.0/gems/railties-4.2.0/lib/rails/initializable.rb:30:in `instance_exec'
	from /Users/jacobspizziri/.rvm/gems/ruby-2.1.0/gems/railties-4.2.0/lib/rails/initializable.rb:30:in `run'
	from /Users/jacobspizziri/.rvm/gems/ruby-2.1.0/gems/railties-4.2.0/lib/rails/initializable.rb:55:in `block in run_initializers'
	from /Users/jacobspizziri/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/tsort.rb:226:in `block in tsort_each'
	from /Users/jacobspizziri/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/tsort.rb:348:in `block (2 levels) in each_strongly_connected_component'
	from /Users/jacobspizziri/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/tsort.rb:418:in `block (2 levels) in each_strongly_connected_component_from'
	from /Users/jacobspizziri/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/tsort.rb:418:in `block (2 levels) in each_strongly_connected_component_from'
	from /Users/jacobspizziri/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/tsort.rb:418:in `block (2 levels) in each_strongly_connected_component_from'
	from /Users/jacobspizziri/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/tsort.rb:427:in `each_strongly_connected_component_from'
	from /Users/jacobspizziri/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/tsort.rb:417:in `block in each_strongly_connected_component_from'
	from /Users/jacobspizziri/.rvm/gems/ruby-2.1.0/gems/railties-4.2.0/lib/rails/initializable.rb:44:in `each'
	from /Users/jacobspizziri/.rvm/gems/ruby-2.1.0/gems/railties-4.2.0/lib/rails/initializable.rb:44:in `tsort_each_child'
	from /Users/jacobspizziri/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/tsort.rb:411:in `call'
	from /Users/jacobspizziri/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/tsort.rb:411:in `each_strongly_connected_component_from'
	from /Users/jacobspizziri/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/tsort.rb:417:in `block in each_strongly_connected_component_from'
	from /Users/jacobspizziri/.rvm/gems/ruby-2.1.0/gems/railties-4.2.0/lib/rails/initializable.rb:44:in `each'
	from /Users/jacobspizziri/.rvm/gems/ruby-2.1.0/gems/railties-4.2.0/lib/rails/initializable.rb:44:in `tsort_each_child'
	from /Users/jacobspizziri/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/tsort.rb:411:in `call'
	from /Users/jacobspizziri/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/tsort.rb:411:in `each_strongly_connected_component_from'
	from /Users/jacobspizziri/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/tsort.rb:417:in `block in each_strongly_connected_component_from'
	from /Users/jacobspizziri/.rvm/gems/ruby-2.1.0/gems/railties-4.2.0/lib/rails/initializable.rb:44:in `each'
	from /Users/jacobspizziri/.rvm/gems/ruby-2.1.0/gems/railties-4.2.0/lib/rails/initializable.rb:44:in `tsort_each_child'
	from /Users/jacobspizziri/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/tsort.rb:411:in `call'
	from /Users/jacobspizziri/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/tsort.rb:411:in `each_strongly_connected_component_from'
	from /Users/jacobspizziri/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/tsort.rb:347:in `block in each_strongly_connected_component'
	from /Users/jacobspizziri/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/tsort.rb:345:in `each'
	from /Users/jacobspizziri/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/tsort.rb:345:in `call'
	from /Users/jacobspizziri/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/tsort.rb:345:in `each_strongly_connected_component'
	from /Users/jacobspizziri/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/tsort.rb:224:in `tsort_each'
	from /Users/jacobspizziri/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/tsort.rb:205:in `tsort_each'
	from /Users/jacobspizziri/.rvm/gems/ruby-2.1.0/gems/railties-4.2.0/lib/rails/initializable.rb:54:in `run_initializers'
	from /Users/jacobspizziri/.rvm/gems/ruby-2.1.0/gems/railties-4.2.0/lib/rails/application.rb:352:in `initialize!'
	from /Users/jacobspizziri/Documents/Projects/scylla/config/environment.rb:5:in `<top (required)>'
	from /Users/jacobspizziri/.rvm/gems/ruby-2.1.0@global/gems/polyglot-0.3.5/lib/polyglot.rb:65:in `require'
	from /Users/jacobspizziri/.rvm/gems/ruby-2.1.0@global/gems/polyglot-0.3.5/lib/polyglot.rb:65:in `require'
	from /Users/jacobspizziri/.rvm/gems/ruby-2.1.0/gems/spring-1.3.3/lib/spring/application.rb:92:in `preload'
	from /Users/jacobspizziri/.rvm/gems/ruby-2.1.0/gems/spring-1.3.3/lib/spring/application.rb:143:in `serve'
	from /Users/jacobspizziri/.rvm/gems/ruby-2.1.0/gems/spring-1.3.3/lib/spring/application.rb:131:in `block in run'
	from /Users/jacobspizziri/.rvm/gems/ruby-2.1.0/gems/spring-1.3.3/lib/spring/application.rb:125:in `loop'
	from /Users/jacobspizziri/.rvm/gems/ruby-2.1.0/gems/spring-1.3.3/lib/spring/application.rb:125:in `run'
	from /Users/jacobspizziri/.rvm/gems/ruby-2.1.0/gems/spring-1.3.3/lib/spring/application/boot.rb:18:in `<top (required)>'
	from /Users/jacobspizziri/.rvm/rubies/ruby-2.1.0/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:54:in `require'
	from /Users/jacobspizziri/.rvm/rubies/ruby-2.1.0/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:54:in `require'
	from -e:1:in `<main>'

The errors are coming from spree active shipping, which isn't even a part of spree avatax certified. I think you need to look into your gemfile about that. You can comment out active shipping, bundle and then try to install spree_avatax_certified


Support nodata values

Potential solution to #34
It's a bit dirty as it modifies the data in place or creates a copy of the integer data to float dtype (potentially expensive).
This is my first pass at this, but I'd like to look into some other ways of going about this that do not have as bad of side effects
cc @giswqs

Codecov Report

Merging #35 (0101820) into main (e19eab1) will decrease coverage by 3.85%.
The diff coverage is 52.17%.

@@            Coverage Diff             @@
##             main      #35      +/-   ##
==========================================
- Coverage   90.73%   86.87%   -3.86%
==========================================
  Files           8        8
  Lines         205      221      +16
==========================================
+ Hits          186      192       +6
- Misses         19       29      +10

Impacted Files
Coverage Δ

pvxarray/accessor.py
80.64% <42.10%> (-15.19%)
:arrow_down:

pvxarray/errors.py
100.00% <100.00%> (ø)

pvxarray/rectilinear.py
97.05% <100.00%> (ø)

pvxarray/structured.py
85.29% <100.00%> (ø)

Help us with your feedback. Take ten seconds to tell us how you rate us.


Environment variables get removed on rancher-compose up --upgrade

Rancher versions:
rancher/server: 1.6.12
Docker version: (docker version,docker info preferred)
12.12.0
I have some production environment variables for my services configured (only) in Rancher. Our CI/CD environment is upgrading the existing service through rancher-compose up -d --upgrade --force-upgrade --pull --confirm-upgrade which works fine because the rancher-compose.yml and docker-compose.yml files are in source control.
However, since the service is re-created, it loses the production value of the environment variables, because these (secret) values are obviously not in source control, nor can our CI/CD environment access them. Basically I'm talking about things like secret keys, passwords etc.
I was hoping that if the environment variable is not defined in the docker-compose.yml that it would merge it with the existing variables (that I configured through the Rancher UI) but it seems to just delete them.
What would be the correct way to upgrade a service (or actually just pull the Docker image and restart the service using the new one) without knowing the values of the current environment variables?

Thanks for your report!
With the release of Rancher 2.0, development on v1.6 is only limited to critical bug fixes and security patches.
If you think we should keep this issue open, please let me know.