Explore proxy controller in notebooks

We want to explore how we can build extensions which contribute a kernel/controller resolver that when selected provides functional notebook controllers for execution. The resolver handles necessary authentication for users and should be responsible for spinning up the real kernel/servers and work with controller extensions (e.g. Jupyter) to register notebook controllers (or register controllers themselves)

I attempted to register an async notebook controller to represent lazy controller / controller resolver and quite a few UX and technical questions occurred to me which I might or might not have answers for yet, some notes for myself:

When should the kernel resolving happen, on quick pick selection or first cell execution?

Based on current design, we will start the resolver when users select it from the quick pick
When there is no other available kernel, should the lazy kernel be the selected/suggsted kernel

If we show it on the status bar, how would we trigger the "resolver"? We can start the resolver on execution but we might also want to allow users to start the resolver through a single mouse click

Lazy kernel becomes the active/selected "kernel" while it's resolving. However it should not be cached as the selected kernel for the notebook.
What is the expected result of the lazy kernel "resolution"? Should it silently finish (as it can pass all the remote server info to Jupyter) or should it tell VS Code which kernel should now be used? What should we do if there are more than one available kernels behind that remote server?

If it silently finishes and doesn't tell which non-lazy kernel it delegates to, the core wouldn't know how to pick a kernel as there might be more than one "suggested" kernel available.

Initial connection: select and run
Based on exploration/mockups @misolori put together, here is a prototype of how the kernel resolver would work with integration with Jupyter

In the recording:

Users have selected a remote server from GitHub
Run code
The server initializes, get Jupyter server endpoint from remote, pass it to Jupyter extension
Jupyter extension resolves kernels from the endpoint and contributes the controllers to VS Code
The cell is executed against the resolved kernel

To archive above, we would need following APIs

Kernel resolver API in VS Code side, which allows github extension to register a lazy/proxy kernel entry. When this lazy kernel is picked and being requested code execution, it will spin up remote machines (which has Jupyter server installed and launched), do the proper authentication, and lastly get a remote jupyter server url.

export interface NotebookProxyController {
    readonly id: string;
    readonly notebookType: string;
    label: string;
    kind?: string;
    resolveHandler: () => NotebookController | string | Thenable<NotebookController | string>;
    readonly onDidChangeSelectedNotebooks: Event<{ readonly notebook: NotebookDocument; readonly selected: boolean }>;
    dispose(): void;
}

export namespace notebooks {
    export function createNotebookProxyController(id: string, notebookType: string, label: string, resolveHandler: () => NotebookController | string | Thenable<NotebookController | string>): NotebookProxyController;
}

The Jupyter extension will allow extensions to register/contribute remote Jupyter servers with proper authentication support, resolve kernels from the remote Jupyter server, register notebook controllers to VS Code.

export interface IJupyterServerUri {
    baseUrl: string;
    token: string;
    authorizationHeader: any; // JSON object for authorization header.
    expiration?: Date; // Date/time when header expires and should be refreshed.
}

export type JupyterServerUriHandle = string;

export interface IJupyterUriProvider {
    readonly id: string; // Should be a unique string (like a guid)
    onDidChangeHandlers: Event<void>;
    getHandles(): Promise<JupyterServerUriHandle[]>;
    getServerUri(handle: JupyterServerUriHandle): Promise<IJupyterServerUri>;
}

export interface IExtensionApi {
    registerRemoteServerProvider(serverProvider: IJupyterUriProvider): void;
    selectJupyterUrl(id: string, handle: JupyterServerUriHandle): vscode.NotebookController;
}

Lazy kernel resolver extension is responsible for setting up remote Jupyter servers and contributing to Jupyter (through registerRemoteServerProvider). It will tell Jupyter which servers are available and when a server is picked, Jupyter extension will request the resolver extension for authorization details (getServerUri) since that's the knowledge only available to the resolver extension.
Todos/notes

[ ] Implement IJupyterUriProvider
[ ] Jupyter only allows one remote server to be selected but we want to allow users to connect to different server from different notebook documents.

selectJupyterUrl should probably be addJupyterServerHandleAndGetPreferred

[ ]  Currently we only support token based authentication but if we want to support others, we may need to extend IJupyterServerUri.

Reload and reconnect
Workspace reload/reconnect is more complicated than the initial connection. Let's say the first time users open notebook, the kernel quick pick has two options
- Connect to GitHub
- Install kernels from marketplace

After users pick Connect to GitHub, go through authentication, waiting for the server to start up and launch Jupyter server, the kernel quick pick now has one more entry Python 3.9, which is the selected remote kernel
- Python 3.9 (selected)
- Connect to GitHub
- Install kernels from marketplace

The Python 3.9 kernel is offered by a remote service, which means it might not be available all the time. If users have the notebook editor idle (or even close the workspace) for a day, and when they reopen the notebook next day, the remote Jupyter kernel might already be paused/killed, or even worse, the VM/server hosting the remote Jupyter server might be released. Now if users open the kernel quick pick, what kernels are available to them? We have three different options:

It behaves the same as initial connection, users need to connect to a new remote server
- Connect to GitHub

There would be two options in the quick pick, one is the remote server used last time and the other option is connecting a new remote server
- GitHub (...)
- Connect to GitHub

Users see two options in the quick pick, but the first one is the kernel they used last time
- Python 3.9
- Connect to GitHub

All 3 options are valid and the 3rd one meets users' expectation the most, but it has high chances to fail as there is no guarantee the same kernel users use last time is still available (like the server is released). As we discussed offline, we would want to conditionally show option 1 and 3, it would require the github extension and the Jupyter extension coordinate with each other

[ ]  Jupyter extension would cache the lastly used kernel (kernel id/path and which Jupyter server it's from)
[ ] GitHub extension would cache remote servers used for notebook documents, check if they are still available on notebook document open. If they still exist, register the remote server urls to Jupyter registerRemoteServerProvider
[ ] Jupyter extension periodically checks if the remote server for the cached kernel is available (through registered remoteServerProviders), if it exists, create notebook controller for the cached kernel. if it doesn't exist yet, no-op

Extension snippet code for contributing a lazy kernel which can launch a local jupyter server. The code demonstrates how the lazy kernel integrates with VS Code and Jupyter extension:

register lazy kernel to VS Code createNotebookProxyController
register remote server provider jupyterApi.registerRemoteServerProvider and the provider will handle authentication
jupyter.selectjupyteruri to ask Jupyter to use the server created by the lazy kernel extension.

interface ICachedServer {
    serverProcess: any;
    baseUrl: string;
    token: string;
}

function registerLazyKernels(context: IExtensionContext, api: IExtensionApi) {
    const servers = new Map<String, ICachedServer>();

    api.registerRemoteServerProvider({
        get id() {
            return 'github';
        },
        getQuickPickEntryItems: () => {
            return [] as QuickPickItem[];
        },
        handleQuickPick: (_item, _back) => {
            return Promise.resolve(undefined);
        },
        getServerUri: (handle: string) => {
            // github to do the auth
            const server = servers.get(handle);
            if (server) {
                // resume the machine/vm
                const token = server.token;
                return Promise.resolve({
                    authorizationHeader: { Authorization: `token ${token}` },
                    displayName: 'GitHub',
                    baseUrl: server.baseUrl,
                    token: token
                });
            }

            return Promise.reject();
        }
    });

    const createServer = () => {
        return new Promise<ICachedServer>(resolve => {
            const server = spawn('C:\\Users\\rebor\\.conda\\envs\\testenv\\python.exe', ['-m', 'jupyter', 'lab', '--no-browser']);

            const handleData = (data: string) => {
                const buffer = data.split(/\r|\n|\r\n/g) as string[];
                for (let i = 0; i < buffer.length; i++) {
                    const matches = /(http(s)?:\/\/(.*))\/\?token=(.*)/.exec(buffer[i]);
                    if (matches) {
                        const baseUrl = matches[1];
                        const token = matches[4];
                        resolve({
                            serverProcess: server,
                            baseUrl,
                            token
                        });
                        break;
                    }
                }

            }
            server.stdout.on('data', (data: any) => {
                handleData(data.toString());
            });

            server.stderr.on('data', (data: any) => {
                handleData(data.toString());
            });
        })
    }

    const controller = notebooks.createNotebookProxyController('lazy_kernel', 'jupyter-notebook', 'GitHub Server', async () => {
        return new Promise(async (resolve, reject) => {
            const server = servers.size === 0 ? (await createServer()) : [...servers.values()][0];
            servers.set(server.baseUrl, server);
            commands.executeCommand(
                'jupyter.selectjupyteruri',
                false,
                { id: 'github', handle: server.baseUrl },
                window.activeNotebookEditor?.document
            ).then(p => {
                if (p) {
                    resolve(p as NotebookController);
                } else {
                    reject()
                }
            });
        });
    });
    controller.kind = 'GitHub';
    context.subscriptions.push(controller);
}

@kieferrm and I had offline discussions of the two common scenarios: initial connection and reload. The initial connection is simple as the proxy kernel will spin up the jupyter server on a remote machine, provides a jupyter server url to Jupyter extension and lastly a notebook controller is created and used to execute code.
The "Reload" scenario is not that straight forward. When the window/page reloads (e.g., install an extension which requires reloading the window), VS Code workbench restores the same notebook editor opened before, we need to figure out if we should allow users to run code against the jupyter server/kernel just used before. In all 3 options described in https://github.com/microsoft/vscode/issues/146942#issuecomment-1097405365, the 3rd one is the most natural one:

Jupyter extension caches all kernels from the jupyter server created by github
After the window reloads, Jupyter extension create notebook controllers from the cache data. Users would see the kernel used before the window reload.

If the jupyter server has more than one kernel, users will see them available in the kernel quick pick.

Execution will work since Jupyter extension already has the server endpoint and its auth info.

The catch here is the cached jupyter server might be deallocated/released. When that happens, Jupyter won't be able to connect to the server anymore and execution will fail. A nicer experience will be the GitHub extension launch a new jupyter server under the hood with the same kernel specs. An alternative is GitHub provides the availability of jupyter servers to Jupyter extension in advance, and Jupyter extension can clear the cache if the jupyter servers are no longer available.

We also found that the same concept/UX could be expanded to remote jupyter server support in Jupyter on VS Code desktop:

Currently users need to open the server picker from the status bar, manually type in a jupyter server url or choose AZML to create jupyter server on the fly.

Once a jupyter server url is provided to Jupyter, users can now see the list of kernels available in that jupyter server.
This is already some sort of Proxy Kernel but the user needs to launch jupyter server manually and paste the url in the server pick myself, other than having an extension (e.g., GitHub) handling that for us all automatically. If we leverage the Proxy kernel concept we can move the options in the server quick pick into the kernel picker.

Disconnect
Assume I connect to a a Github, Azure ML and/or Existing remote server, how would I now be able to disconnect from them?
Based on the current API there doesn't seem to be a way to disconnect.
> An alternative is GitHub provides the availability of jupyter servers to Jupyter extension in advance, and Jupyter extension can clear the cache if the jupyter servers are no longer available.

Based on the latest notes, the only way to get rid of them is to wait for github to kill the remote servers, reload vscode and they'll disappear at some point in time. I think there should be a way to disconnect them. Its possible that some of these resources are not free (Azure ML, Github or the like) & I'd like to remove them.
Another reason to allow disconnecting is for security reasons, much like signing out of an account.

Display names
Based on the screenshots, the GitHub lazy kernel is still available. This leads me to believe one can possibly start multiple github servers. If this is the case, then each server would have to have to have its own display name. E.g. Github Remote Server 1, Github Remote Server 2, etc.
The existing API supports this and IJupyterServerUri has a property named displayName that could be used for this purpose. Issue and notes updated accordingly.

Change API of selectJupyterUrl(id: string, handle: JupyterServerUriHandle): vscode.NotebookController; to be async.
The return value needs to be async, as Jupyter extension will need to query the remote kernels (which happens to be an IO operation). Hence changed the API accordingly in the issue.

Remove Lazy Controller or Leave it once connected

Lets assume the lazy controller is removed as soon as the remote kernels have been resolved (after clicking this). Lets assume this to be the case in the case of Azure ML or another lazy kernel contributed by another extension. I'm assuming this would be removed to reduce confusion. why leave it there once you've already connected to the azure compute.
Next time VS Code is reloaded, now what? Should Azure ML extension add the same lazy kernel into the list?
The 3rd party extension should know that the controllers have been loaded for this remote uri.
I believe this can be achieved by the 3rd party extension proactively calling the method IExtensionApi.selectJupyterUrl(id: string, handle: JupyterServerUriHandle): vscode.NotebookController;. If something is returned, then it knows that the Jupyter extension is aware of the controllers and it can chose to hide/remove the lazy controller.
Lets discuss this.

Be sure to account for this issue.
https://github.com/microsoft/vscode-jupyter/issues/9865


Web UI Session Timer customization needs to be documented

User Story
Web UI session timer is set by default as "3m" if SAML is not configured as connector.
In case SAML is configured as connector the session timer is "24h"
As an admin, I should be able to change the default configuration.
Although this is currently possible, the steps to change the default values is not documented in the public facing document docs.chef.io
We need to document these steps properly and following the documentation guideline.
Acceptance Criteria

This only talks about the documentation perspective
No user interface is available to set the changes
For a deployed instance, the admin has to patch the config. That would cause a small amount of time needed for Dex to restart when UI will be unreachable.
In scenarios with multiple concurrent Automate instances, the patch has to run on every instance

Definition of Done

Documentation should be following the public web doc structure
The PR should be reviewed and approved by at least two approvals for docs team
Netlify preview should be reviewed before merging
All pipelines should be green

Demo Script / Repro Steps

We will add the documentation part once we fix the UI idle session timeout.

@dishanktiwari2501 We are planning to get #5381 merged in the current sprint.


Browser history

Fixes https://github.com/Fysikteknologsektionen/chalmers-course-stats/issues/20. Every update in the main page gets saved in the browser history. Now you are able to iterate through each change. Coming back from a detailed course view lets you resume your previous query.

This branch is a continuation of the other pull request https://github.com/Fysikteknologsektionen/chalmers-course-stats/pull/22.


Fix: typo

@cristineguadelupe apparently there's a test with the same typo, can you fix it as well? :)

@cristineguadelupe apparently there's a test with the same typo, can you fix it as well? :)

Done! Thanks :)


dirty flag of embedded hasMany is not reset when saving parent.

I couldn't trace the maze around states/store/adapter/model to create a patch, but when a parent entity is saved, its embedded children should probably be marked as not dirty. And probably the parent should be marked as dirty if any of its embedded children are dirty. A bit like aggregation/composition in standard object parlance.

Fixed in #249


[Button] Add autowrap feature.

Implements https://github.com/godotengine/godot-proposals/issues/8823

Thanks for doing this PR, @bruvzg - hope it gets accepted soon.
While I agree that the label's autowrap property is a glaring omission from Button, it's just one of potentially hundreds of properties we need to access regarding the label. I suggest exposing the label in the buttons API, so all the properties can be accessed at least through code. Currently, even subclassing Button doesn't give you access to the label.

@klootas Buttons don't use labels internally. They draw the text directly.

@klootas Buttons don't use labels internally. They draw the text directly.

Oh, I see - thanks for the clarification. Then I think this PR fixes a pretty big shortcoming in a really good way.👍

Needs a rebase.

Poke :)

Thanks!

Was this added at all in Godot 4.2.2 .NET? Not seeing anything equating what this PR is surrounding in my editor.

There's only the "Text Overrun Behavior," which only allows for trimming, not wrapping.


Enhancement: instead of blocking, use a threaded queue both on transmitter and receiver

This has the potential to avoid warnings and also provide more stability.
A nice example is continuously trying to send data ~~ stability testing in #5 .

Completed for beethowen_transmitter.


Have a question.

Did you compile aapt by yourself? From AOSP source ? And how?

Yes compile it from source, i use cmake for build recipeb by converting android.bp to cmake build system

@rendiix alright it would be great if you share in detail . closing the q


Theorical explanation

Hello, very interesting project. Is there any paper or deeper explanation of mixing process ?
Is there a way of mixing 2 images but preserving informations from an image when mixing ?
for example mixing a QR code with an image but preserving the QR Code modules.

Hey.

There is not paper or deeper explanation. I just came up with this when I saw the code from clip_guided_stable_diffusion_img2img pipeline.
For images mixing with preserving information (QR Code or other) it is better to use approaches with controlnet or ip-adapter.

Hey Denk, thank you for the insights
I was wondering, is it possible to mix images without prompts ? I see that even if you take 2 images as inputs, the coca model create captions that serves as prompt to guide the generation. Do you think the diffusion process can rely on image embeddings in latent space ? using a vision encoder

Hi @wadie999 :)
If I understand you correctly there is a  jupyter-notebook example which does not use coca model. So you can pass empty string.
Also if you interested in mix images you try to use Kandinsky model for this purpose.


fix: update probot to 10

Codecov Report

Merging #70 into main will not change coverage.
The diff coverage is 85.71%.

@@           Coverage Diff           @@
##             main      #70   +/-   ##
=======================================
  Coverage   66.66%   66.66%
=======================================
  Files           5        5
  Lines         162      162
  Branches       25       25
=======================================
  Hits          108      108
  Misses         53       53
  Partials        1        1

Impacted Files
Coverage Δ

src/solidarity.ts
47.47% <80.00%> (ø)

src/annotate.ts
93.93% <100.00%> (ø)

Continue to review full report at Codecov.

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


Add a type supporting dates.

What problem does this PR solve?

Add a date type DateStdT which supports date functionalities using only std::chrono libraries.
Add corresponding test cases.
Remove C types from test for existing date type DateT.

Type of change

[x] New Feature (non-breaking change which adds functionality)
[x] Test cases

If the new type is ready for application, you can edit internal_types.h:
// Date and Time
// Date and Time
using DateT_Old = DateType;
using DateT = DateTypeStd;


Request adaptation 1.20.1

Is there any plan to adapt the new version 1.20.1？
My server core version is 1.20.1, and I feel a need for this plugin.
It works so well that I can't even find a replacement for it.
I really want you to succeed.

PlugManX should work just fine on 1.20.1.
Currently running a 1.20.1 server myself and haven't encountered any issues


Library Format Extension - Spectrast, Fragpipe, Prosit

While some code was implemented to account for Fragpipe- or Prosit-generated libraries, this was not thoroughly tested or implemented. Many assumptions based on spectrast-generated libraries, including decoy generation in library files, were wrapped up in the original implementation. I'm creating this issue to track progress in fleshing out library format compatibility with these other "table" formats.
At present, my plan is to create a class for each library generation program. They all have table-based inputs, but adding nuance to, say, decoy labelling suggests that more will need to be implemented than simply accounting for differing column names. This will include generating decoys when none are present in a given library file.

Pull request #73 implemented a decoy generation method that enables non-spectrast library file use. There's still a potential issue with Prosit, which near as I can tell does not have the same modification syntax as spectrast and fragpipe (they use Unimod syntax).


Getting "...Error while loading shared libraries: libssl.so.1.1..." on WSL Ubuntu

I've been trying to use install aftman on my ubuntu WSL system using the provided binary for linux. I unzip the linux file and attempt to run  ./aftman self-install, and soon after I am unfortunately greeted with the error:
./aftman: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory
Any ideas on how to fix this?

The cause and solution to the issue is talked about here: #43
I had the same issue using ArchWSL and Ubuntu, I'd just recommend building from source as it's pretty trivial in this case.

The fix for this is probably to stop depending on OpenSSL and to instead make the pivot to rustls, as some other Rust CLI tools have done.


refactor: move wallet to a separate crate

Extracts wallet code from aries_vcx_core and moves it to a separate crate.

Finally 🟢


Replace makefile with build.rs

I don't really like having to use two separate build tools, so I replaced the Makefile with a build.rs script that does essentially the same thing i.e. build the resources to a .gresource file.
This has the added benefit that the developer does not have to think when building. Running cargo build or cargo run this should autobuild the app.gresource file if any of the included files changes. If files are added, they have to be added in the build.rs file, such as:
println!("cargo:rerun-if-changed=src/some.new.file");

Closing as the changes are now included in #4


feat: Read toolsId from Adaptation Projects ui5.yaml file in telemetry package

Feat for #1847.

Enhances source template retrieval for Adaptation Projects. If the ui5.yaml file does not have a support section default values will be returned (i.e NO_TOOLS_ID).

I would suggest waiting until this one gets approved and merged: https://github.com/SAP/open-ux-tools/pull/1794. But this PR does not break anything to be fair.

Hello, @devinea. Would you mind re-reviewing or re-approving this one so it could get merged?


[Doc] Validate Siddhi Java library, Local, Docker and Kubernetes Microservice

Description:
Run and validate on 5.1.0 (not sure the email config is correct in the doc)
Siddhi Java library
Siddhi Local Microservice
Siddhi Docker Microservice
Siddhi Kubernetes Microservice

Verified,
Siddhi Java library
Siddhi Local Microservice
@BuddhiWathsala Could you check the other two.


Stache only gives Laredo legendaries

Stache in the Tracker's Alliance will only give the player Laredo gear if you have joined the Freestar Rangers.

Details
This issue is explained in depth here: https://www.reddit.com/r/Starfield/comments/1ebfh9y/psa_stache_the_astra_vendor_laredo_weapons_bug/
The fix provided puts a condition on the ByNPCFaction leveled lists to exclude the player from them, which ensures that joining the Freestar Rangers does not change the items you get from Stache.
Game Version
1.13.61
Language
English (EN)
New Game
Yes
Reproduction Steps
Join the Tracker's Alliance and the Freestar Rangers, and shower Stache in Astras. He will only give you Laredo weapons.

Fix provided by h495: https://next.nexusmods.com/profile/h495/
SFCP_1117.zip

Seems like this one may actually no longer be needed... I get gear of any type now, without any fix.


CUDA out of memory

Thanks for your great job!
The se3-transformer is powerful, but seems to be memory exhaustive.
I built a model with the following parameters, and got "CUDA out of memory error" when I run it on the GPU(Nvidia V100 / 32G).
model = SE3Transformer(
dim = 20,
heads = 4,
depth = 2,
dim_head = 5,
num_degrees = 2,
valid_radius = 5
)
num_points = 512
feats = torch.randn(1, num_points, 20)
coors = torch.randn(1, num_points, 3)
mask = torch.ones(1, num_points).bool()

Does this error relate to the version of pytorch? and how can I fix it?

Same problem, our GPU is A100/80, but can not run the above code.

Same here, A100/40G Vram, (125 points, 20 dim features) seems to be the upper bound
May I ask you have found the solution yet?


Make this work with RN56

Similar to https://github.com/joeferraro/react-native-cookies/pull/102 but uses the variables RN now sets up to allow the user to drive the versions

@joeferraro any chance you can merged this and make a release? Thanks so much!

can we get this or something like it merged? blocking us from upgrading to 0.56, which is blocking other things.......


Open directory with a selected item from command line

Resolved / Related Issues
Items resolved / related issues by this PR.

Closes #6263

Details of Changes

Added the ability to open a directory with a selected item from the command line

Introduced "Select" command argument, through which the name of the file or folder to select on startup can be provided (selected item is part of the opened directory which has to be provided with the "Directory" command argument)

Known issues

Details Layout View doesn't scroll into view the selected item (part of a different bug - first keyboard letter press in this layout, doesn't scroll into view either)

Validation
How did you test these changes?

[x] Built and ran the app

Example usage:
files.exe -Direcroty "D:\Downloads" -Select "image.png"
files.exe -Directory "D:\Downloads" -Select "Some Folder"

This works but only on small folder with few files, on my Download folder which contains hundreds of files it just open the folder but doesn't select the file... (please fix)

@neoOpus could you check if the file gets selected, and the issue actually being that the list does not scroll down to it?

@neoOpus could you confirm whether the file gets selected, the issue actually being that the list does not scroll down to it?

you are right, it get selected but doesn't scroll to it.


Awful performance on mounting caused by the iframe

In v2, when dynamically adding multiple charts (let's say 15), the performance is awful.
This seems to be caused by the helpers.addResizeListener, which is taking an awful lot of time, blocking everything.
Here are some screenshots where I also have the AdBlockPlus extension installed, which is doing some things on the iframe's element:

After uninstalling the extension, there is less time spent on Parse HTML, but the execution of helpers.addResizeListener still takes way too long.

Is this being throttled/debounced?

@niemyjski, I find it weird to have to throttle the creation of 15 elements; also, that would only spread it over a longer period of time, which is still really bad in my opinion. Each creation blocks the ui for a pretty long time. In that time the ui interactions / animations / transitions, even the react lifecycle methods aren't working.

@IonutLaceanu thanks for the detailed bug report. I can confirm that helpers.addResizeListener is slow on my machine (~4.5ms).
It looks like a lot of the time is spent in insertBefore. Further, I noticed a typo that classlist should be classList. I'm sure that doesn't help performance either.

We debounce our resize events in our rickshaw control: https://github.com/exceptionless/Exceptionless.UI/blob/master/src/components/rickshaw/rickshaw-directive.js#L24
If you don't, I think you are asking for problems.

@niemyjski, if you look closely, you'll see that my issue is not with the resize events; this issue is about the attaching of the resize listener, more specifically about the creation of the iframe.

@simonbrunel has been working on some potential changes to resize behaviour. One of the thoughts we are having is that the iframe does not need to be attached for charts that are not responsive.
@simonbrunel any thoughts on how to make adding the iframe faster?

I'm really in favor to avoid injecting the iframe if responsive is false. But users must be aware that in this case the canvas render size will not be adapted if the canvas display size changes (which is fine for fixed size charts). That also means that the responsive value can't be changed after the chart creation, but I can't really see any use cases where the user want to dynamically change that option?! (cc @decherneyge)
I didn't look at performance yet, but would be very helpful if @IonutLaceanu provide an example that we can use for profiling. I know there are other ways to detect that a DOM element size has changed (e.g. based on scroll events). I can have a look at how to implement that similar approach in Chart.js. @etimberg, did you already try a different method than the iframe one?

@simonbrunel i tried a library for element resize, but when i looked at the source it was just doing polling. One cade that comes up a lot is display: none; to something else. Any solution we try needs to work in this case.

I don't really get the display: none point, can you elaborate? is it working with the current iframe solution, and if so, why?

in v1 there were a lot of problems when charts were initially in something that was display: none because the size is 0 but then would not properly resize when displayed. The v1 resizing didn't have the iframe and therefore couldn't detect when the container became visible.
So a non responsive chart that fills its initial parent dimensions won't work if the parent is not displayed. Maybe we can fix that with clear documentation. I just don't want us to break charts that might currently work if the iframe removed. This case would actually make a good unit test.

This repository contains a good resize sensor:
https://github.com/marcj/css-element-queries

also worth keeping an eye on (but not usable yet): https://developers.google.com/web/updates/2016/10/resizeobserver


feat(pagination): updates to V3 styling

Codecov Report

Merging #679 (a39d5b8) into dev (b737f6c) will decrease coverage by 1.03%.
The diff coverage is 78.44%.

@@            Coverage Diff             @@
##              dev     #679      +/-   ##
==========================================
- Coverage   88.96%   87.92%   -1.04%
==========================================
  Files         174      174
  Lines        4242     4324      +82
  Branches     1408     1447      +39
==========================================
+ Hits         3774     3802      +28
- Misses        241      266      +25
- Partials      227      256      +29

Impacted Files
Coverage Δ

...ma-dom/src/components/Accordion/AccordionPanel.tsx
100.00% <ø> (ø)

...es/react-magma-dom/src/components/Banner/index.tsx
100.00% <ø> (ø)

...es/react-magma-dom/src/components/Button/index.tsx
100.00% <ø> (ø)

...om/src/components/Dropdown/DropdownSplitButton.tsx
100.00% <ø> (ø)

...ges/react-magma-dom/src/components/Label/index.tsx
83.33% <ø> (ø)

...magma-dom/src/components/Pagination/PageButton.tsx
100.00% <ø> (ø)

...magma-dom/src/components/Pagination/Pagination.tsx
87.50% <ø> (-5.69%)
:arrow_down:

...t-magma-dom/src/components/PasswordInput/index.tsx
100.00% <ø> (ø)

packages/react-magma-dom/src/theme/magma.ts
100.00% <ø> (ø)

...react-magma-dom/src/components/InputBase/index.tsx
78.20% <40.00%> (-5.58%)
:arrow_down:

... and 15 more

Continue to review full report at Codecov.

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


segmentation fault (core dumped) on particular, large html input

Hey! First of all, thanks a lot for this cool project, it's really very convenient and speedy.
However, I have encountered an issue that python just dies when selectolax tries to get the text from some particular, quite large HTML inputs.
It doesn't throw an exception, it just dies. (I guess there is probably something going wrong in the C extension, not in the python parts of this package?)
I've attached an example file.
selectolax_bug.log
Some things I've already tried that don't seem to be the problem:

incomplete html tags (the attached file just terminates suddenly without properly closing all tags, however selectolax seems to handle those cases just fine otherwise)
raw file/input size (I've seen selectolax successfully handle inputs of even double the size of the attached file, so that doesn't seem to be the issue either)

One idea I'm currently having:

it might be related to the number of nodes (the test file contains several thousands of small option nodes) -> maybe selectolax chokes on the amount of nodes?

Code to recreate the issue:
with open('selectolax_bug.log') as f:
    html = f.read()

from selectolax.parser import HTMLParser
tree = HTMLParser(html)
text = tree.body.text() # here it just dies for me

What version of the selectolax and Python are you running on?
I tried your example and it works fine for me.
I changed the open command, since Python 3 is very strict about this.
open('selectolax_bug.log', encoding='utf-8')

       Eintrag hinzufügen
      |  Administration

     Donnerstag, 16. August 2018 02:03Willkomen in unserem Gästebuch. Hier können Sie einen Beitrag hinterlassen.

Gästebuch
606911-606920
606901-606910
606891-606900
606881-606890
606871-606880
606861-606870
606851-606860
606841-606850
606831-606840
....
....
....

I'll check it this weekend.

perfect, thanks in advance for your time and effort

I pushed the fix, it's not very clever and depends on the compiler, but it should work on most of the systems. I will rewrite my text parsing algorithm in the future. Currently, it uses recursion approach and fails on your example because of the stack size limits.
You can fix the old version by simply increasing the stack size:
➜  ~ ulimit -s
8192
➜  ~ ulimit -s 16000
➜  ~ ulimit -s
16000

Please try the new version:

pip install --no-cache-dir selectolax==0.1.8

My fix relies on a compiler and it can ignore my instruction. I will fix this issue later.
For the time being you could use something like this:
>>> import resource
>>> soft, hard = resource.getrlimit(resource.RLIMIT_STACK)
>>> resource.setrlimit(resource.RLIMIT_STACK, (soft * 4, hard))
>>>

The code above increases the stack limit from 8kb to 32kb.

that works, perfect.
Again, thanks a lot for your time and effort.

@rushter was there any work done on this since the ticket was closed?

Yes, using selectolax 0.1.10 with python 3.6.6 (on CentOS 7 kernel 4.18) and html content that's ~14mb.
Using the rlimit hack in the python code has worked so far.

@mindscratch I've fixed the problem. Can you please check?

Hello, i tried steps for my Centos 7. I couldn't install.

@lemonsoftltd You need to install the python-devel package.
Something like yum install python-devel or yum install python3-devel should fix the problem.

Thanks for reply. They are already installed. However I tried to install.
[root@dhpc09 ehealth]# yum install python-devel
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: repo.boun.edu.tr
 * epel: repo.boun.edu.tr
 * extras: repo.boun.edu.tr
 * remi-php70: mirrors.uni-ruse.bg
 * remi-php72: mirrors.uni-ruse.bg
 * remi-safe: mirrors.uni-ruse.bg
 * updates: repo.boun.edu.tr
Package python-devel-2.7.5-76.el7.x86_64 already installed and latest version
Nothing to do
You have new mail in /var/spool/mail/root
[root@dhpc09 ehealth]# yum install python3-devel
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: repo.boun.edu.tr
 * epel: repo.boun.edu.tr
 * extras: repo.boun.edu.tr
 * remi-php70: mirrors.uni-ruse.bg
 * remi-php72: mirrors.uni-ruse.bg
 * remi-safe: mirrors.uni-ruse.bg
 * updates: repo.boun.edu.tr
No package python3-devel available.
Error: Nothing to do

Can I copy files from my Windows 10? In windows, it is installed and working.


storage account diagnostics log format missing

it would be great to explain/show how storage account diagnostics logs look like.
e.g. what is each element, what sample values are expected, what error codes are there.

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 8196beea-f457-3813-6135-71c5ec2dbf05
Version Independent ID: 119a21e3-be2f-b981-6b5d-f57c2f555c97
Content: Monitor, diagnose, and troubleshoot Azure Storage
Content Source: articles/storage/common/storage-monitoring-diagnosing-troubleshooting.md
Service: storage
GitHub Login: @fhryo-msft
Microsoft Alias: fhryo-msft

@peledins Thank you for the feedback! We are investigating this and will get back to you shortly.

@peledins Thanks for the feedback! I have assigned the issue to the content author to investigate further and update the document as appropriate.

Addressing in https://github.com/MicrosoftDocs/azure-docs-pr/pull/70428

#please-close

Cannot open the link somehow.
Peteris
From: fhryo-msft<EMAIL_ADDRESS>Sent: Thursday, March 21, 2019 2:05 PM
To: MicrosoftDocs/azure-docs<EMAIL_ADDRESS>Cc: Peteris Ledins<EMAIL_ADDRESS>Mention<EMAIL_ADDRESS>Subject: Re: [MicrosoftDocs/azure-docs] storage account diagnostics log format missing (#27359)
Addressing in MicrosoftDocs/azure-docs-pr#70428https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FMicrosoftDocs%2Fazure-docs-pr%2Fpull%2F70428&data=02|01|peledins%40microsoft.com|c716718cf6f84da0227908d6ae40e354|72f988bf86f141af91ab2d7cd011db47|1|0|636887991054472960&sdata=qitwTx2yahShqaWv8MZAS%2FR7cXosh7eauPEPCizufgo%3D&reserved=0
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FMicrosoftDocs%2Fazure-docs%2Fissues%2F27359%23issuecomment-475401837&data=02|01|peledins%40microsoft.com|c716718cf6f84da0227908d6ae40e354|72f988bf86f141af91ab2d7cd011db47|1|0|636887991054472960&sdata=Qs91EEUTclCacPZomy77W22BmEnkV%2FiSNj5WLxp1xNw%3D&reserved=0, or mute the threadhttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAr7DrhiCo-Xz8oKjH9v_Q34fxWsu2uZuks5vY_P_gaJpZM4b3jq_&data=02|01|peledins%40microsoft.com|c716718cf6f84da0227908d6ae40e354|72f988bf86f141af91ab2d7cd011db47|1|0|636887991054482964&sdata=JmGvxPGHHC6kwhTIipdyzsx0eRiZ4q7Rru1yMtau4uo%3D&reserved=0.

The PR is commit and I will let you know once the change goes live.

@peledins , it's live now:
https://docs.microsoft.com/en-us/azure/storage/common/storage-monitoring-diagnosing-troubleshooting?toc=%2Fazure%2Fstorage%2Fblobs%2Ftoc.json#next-steps

The link is not correct –
Instead of
https://docs.microsoft.com/en-us/rest/api/storageservices/storage-analytics-metrics-table-schema.md
should be without .md at the end.
Peteris
From: fhryo-msft<EMAIL_ADDRESS>Sent: Thursday, March 21, 2019 4:14 PM
To: MicrosoftDocs/azure-docs<EMAIL_ADDRESS>Cc: Peteris Ledins<EMAIL_ADDRESS>Mention<EMAIL_ADDRESS>Subject: Re: [MicrosoftDocs/azure-docs] storage account diagnostics log format missing (#27359)
@peledinshttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fpeledins&data=02|01|peledins%40microsoft.com|229461ce599a49a7c60608d6ae52f151|72f988bf86f141af91ab2d7cd011db47|1|0|636888068603234613&sdata=yaE873EFI408RRyPXHSvQhLRFC68lgXLr6IUjErfz0U%3D&reserved=0 , it's live now:
https://docs.microsoft.com/en-us/azure/storage/common/storage-monitoring-diagnosing-troubleshooting?toc=%2Fazure%2Fstorage%2Fblobs%2Ftoc.json#next-stepshttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fazure%2Fstorage%2Fcommon%2Fstorage-monitoring-diagnosing-troubleshooting%3Ftoc%3D%252fazure%252fstorage%252fblobs%252ftoc.json%23next-steps&data=02|01|peledins%40microsoft.com|229461ce599a49a7c60608d6ae52f151|72f988bf86f141af91ab2d7cd011db47|1|0|636888068603244626&sdata=RkTicUBNImeUkYms1hjnUzcOAtVbmK009yK4kskzvQE%3D&reserved=0
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FMicrosoftDocs%2Fazure-docs%2Fissues%2F27359%23issuecomment-475437808&data=02|01|peledins%40microsoft.com|229461ce599a49a7c60608d6ae52f151|72f988bf86f141af91ab2d7cd011db47|1|0|636888068603244626&sdata=E90DwYRKxZcDQz9%2FELED9xPPFG%2FMZXO7DQ0dKlaeNVM%3D&reserved=0, or mute the threadhttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAr7DrsRTDiXXouisv-tH6X-ElT-EBT2Xks5vZBJJgaJpZM4b3jq_&data=02|01|peledins%40microsoft.com|229461ce599a49a7c60608d6ae52f151|72f988bf86f141af91ab2d7cd011db47|1|0|636888068603254635&sdata=6mg1UOyZJgyW9hglNIj0%2B7daaDp5LpKkvrYA6omUE1c%3D&reserved=0.

Can you check again? https://docs.microsoft.com/en-us/azure/storage/common/storage-monitoring-diagnosing-troubleshooting?toc=%2Fazure%2Fstorage%2Fqueues%2Ftoc.json#next-steps
@peledins , thanks for correction.


Endless loop in query history implementation

https://github.com/databricks/databricks-sdk-py/blob/9af2630672c866610248243eb53898c16c452960/databricks/sdk/service/sql.py#L4513-L4514
Hi, I was trying to use query history API to fetch all queries that were made last # days. Unfortunately the pagination within the loop seems to be endless even if there is no more results to fetch as next_page_token is always present. Is this on purpose?
Ended up reengineering the loop to finish when has_next_page is False and that worked for my use case.

Thanks for reporting. I've raised this issue with the responsible team. In general, APIs must not include a next_page_token in the response if there are no more pages, so I've asked if that change can be made.


Fix fail requests

Fix bad API Domain (slow but working)

Fix bad API Domain (slow but working)

Sadly, the tool recently got patched by TikTok, that's why requests fail or are slow.

Fix bad API Domain (slow but working)

Sadly, the tool recently got patched by TikTok, that's why requests fail or are slow.

Yes but that work

edited thanks


Excuse me, does alluxio support cdp hadoop3.1 and how to compile

Alluxio Version:
What version of Alluxio are you using?
Describe the bug
A clear and concise description of what the bug is.
To Reproduce
Steps to reproduce the behavior (as minimally and precisely as possible)
Expected behavior
A clear and concise description of what you expected to happen.
Urgency
Describe the impact and urgency of the bug.
Are you planning to fix it
Please indicate if you are already working on a PR.
Additional context
Add any other context about the problem here.
Excuse me, does alluxio support cdp hadoop3.1 and how to compile?
We want to use alluxio to integrate with hadoop3.1

@jingwenouyang Please take a look, thanks

@mjh568412187 can you ask this question in Alluxio slack channel https://slackin.alluxio.io/
internally we have more details about CDH hadoop but CDH hadoop is currently unavailable in Alluxio OS repo

@mjh568412187 this is a question better suitable for alluxio.io/slack #troubleshooting channel.
Greg (Email<EMAIL_ADDRESS>@gregpa) has more information about the CDP hadoop, feel free to contact him directly.


unexpected error message on programming a wiped card with UID privacy

related issue #25
Steps to reproduce:

Create a card with the -uid_privacy flag set
Wipe the card
Create the same card with the -uid_privacy flag set
The app indicates an error on the 'Test PICC' stage but the card works fine.

I think this is due to the UID being decrypted not being the same as the UID read from the card.
This is to be expected and can show as ok (green tick).

I think branch random-uid can be merged to main for a new release once this is fixed
I've tested (and fixed) the server side
( issue https://github.com/boltcard/boltcard/issues/26 )

Done


Fix fallback favicon contrast issues

Description (required)
Updates our fallback favicon (a .ico file used by browsers that don’t support SVG favicons — primarily Safari) to a variant with a background colour.
The current fallback favicon uses a transparent background, making the white “A” in the Astro logo more or less invisible in light mode browsers (see #5792). In the main SVG favicon the “A” switches colour automatically based on user colour scheme, but we can’t use the same approach for the static fallback.
I opted for a solid background colour as the cleanest solution here. I also experimented with a dark outline around the logo, but at the small scale used for favicons, this looks pretty ugly.
Here’s a quick before/after side-by-side, which also helpfully demonstrates the contrast issue:

Related issues & labels (optional)

Closes #5792

Looking good!

Should i be able to see this in the preview? I still see this @delucis

Couldn't seem to force a reload on my end, but I'll trust you and will report back if it doesn't eventually work!


Ternary operator type daemon failed

🔎 Search Terms
any
🕗 Version & Regression Information

This is a crash
This changed between versions 4.9.5 and 4.9.5_____
This changed in commit or PR _______
This is the behavior in every version I tried, and I reviewed the FAQ for entries about _________
I was unable to test this on prior versions because _______

⏯ Playground Link
No response
💻 Code
i had use confition like   item.data && typeof item.data === 'object' , but ts error still exist
<div
     options={

                          (item.data && typeof item.data === 'object'
                            ? Object.keys(item.data).map((key) => ({
                                label: key,
                                value: item.data[key],
                              }))
                            : null)
                        }
</div>

🙁 Actual behavior
<div
     options={

                          (item.data && typeof item.data === 'object'
                            ? Object.keys(item.data).map((key) => ({
                                label: key,
                                value: item.data[key],
                              }))
                            : null)
                        }
</div>

🙂 Expected behavior

Additional information about the issue
No response

sigh #9998

Good news everyone! The expected behavior is the actual behavior.

Duplicate #11498
"daemon" ?


Cannot install on Domain Controller

I cannot install Windows Admin Center on Windows 2019 server with AD controller. Why ? My server is only one replacing previous SBS server.

Hi, please why are you blocking installation ?

Seconded, this needs to be installable on a domain controller, or at least a reply as to why this can't be the case.

Thanks for your dedication to our documentation. If we have been unable to review your issue in a timely manner, we sincerely apologize for the delayed response. We have captured the informtion you have provided for review. We are closing this issue for now, but if you feel that it's still a concern, please respond and let us know. If you determine another possible update to our documentation, please don't hesitate to reach out again. #please-close


Update api GET /home to be replaced wtih /folders/personal.

GET /home api is being deprecated and we need to update the api and sdk to GET /folders/personal.
See thread in sdk_maintainers for more info.

Also, please give examples to @kfansler when done for api docs.


Request: Git features should be available when working on a project that's below the git repo root

Howdy!
Due to some unfortunate circumstances I'm currently stuck working on a project that's a subdirectory in part of a larger git repo. To open the entire repo directory would be a bit of a pain as well. I can work on the project just fine otherwise but none of the git features are currently available which is a disappointment.
What's preventing Code from being able to use Git regardless of the opened project folder location (relative to the git root)?
The contrived example layout:
/projects/engine/ <--- root of the repo
/projects/engine/tools/my_application/ <--- here sits a package.json, gulpfile.js, etc etc

This is actually already implemented, will come with the next update! Duplicate of #57

That is awesome @joaomoreno! :open_mouth:

:tada:

Sneak in https://github.com/Microsoft/vscode/issues/507 while we are at it? :)


correction ?

https://github.com/selineriz/DynamicVisualExpectations/blob/70b21715bd723eab4039ba7432142cdee795a737/DATS.json#L8
Was this not supposed to be Andrew Marin to match ? @selineriz

resolved


slow loading of media files

Hey,
upgrading to 1.0 seems to cause slow downloading of media files into browser. They are loaded in batches of aprox. six images and there is always a long pause between loading of each batch. Here is screenshot from chrome developer tools:

With debug toolbar disabled, this doesn't happen and images are all loaded almost immediatelly.
I am always cleaning the browser cache between individual tries to get the results.

I think I have tracked this down:
The slowness can be eliminated by removing the call to get_staticfiles_finders from StaticFilesPanel.process_response. The problem is just that this method takes a non-trivial amount of time to run when you have a lot of media files, for instance (3000+ on my current project).
A further problem is that this expensive method is run for every request, including ones that will never need it, because they don't return HTML - including requests for the media files themselves. So, for media heavy sites (where the total number of media files is large, and the number per page is likely to be large), you get hit on both counts.
Digging deeper, Panel.process_response is run for every panel, whether or not the response can have the toolbar inserted. This seems like a very unnecessary performance hit! The current design allows Panel.process_response to return its own response, but this is only used once, by the redirect panel.
So it seems that for most of the panels, the process_response method should be empty and there should be a generate_stats method instead, which is called only conditionally after DebugPanelMiddleware.process_response has decided that it is going to insert the toolbar.

@spookylukey Nice digging! That makes sense (yikes, 3k files!), your proposed API changes make sense to me, too.

Bump! Running in to this on a rather large site, wondering if it's slated to be fixed any time soon?

It probably won't be any time soon, but I'll try to get a solution together the next time I spend a large chunk of time on the project.

@spookylukey When you said most of the panels' process_response methods should be empty, were you referring to the RedirectsPanel as the one exception? If so, I think we may want to change your design so that the current process_response only gets called when it's going to be inserted and then create a interrupt_response method that panels like RedirectsPanel need to be called before.
The reasoning is that if we change the purpose of process_response and use a different method to handle that logic, it will impact most of the third party panels. Since development on the toolbar is slow, I'd rather keep the API as stable as possible. Obviously any third party panels that return a response would still need to be updated and I think that's only https://github.com/joymax/django-dtpanel-htmltidy.

@tim-schilling it's exactly because of the compatibility problem with 3rd parties that I made the suggestion that way round. Existing Panel subclasses may assume that their process_response method gets called for every request (for example, something that is a drop-in replacement for the current RedirectsPanel). If you want to keep full compatibility with them (which you might not care about), you can't change it so that process_response is only called sometimes.
With my suggestion, those 3rd party panels wouldn't be affected - they would be using process_response for the wrong purpose, but they would still work. The upgrade notes would say "For best performance, if you are not returning an actual response in process_response, you should rename it to generate_stats" (or choose some better name).
How you want to handle this is entirely up to you, though.

Ah, gotcha. That makes sense, thank you for clarifying!

Can someone test out #731 to verify that it's improved the loading of media files before I merge it in?

Closing as #731 was merged.


Update TOC.yml ("Azure DB for"→"Azure Database for")

https://learn.microsoft.com/en-us/azure/search/search-howto-index-mysql
https://github.com/MicrosoftDocs/azure-docs/blob/main/articles/search/TOC.yml
#PingMSFTDocs

@hyoshioka0128 - we'll leave it like this in the TOC. thanks


Bad accessibility on https://k8s.io

This is a Bug Report

Problem:
Lots of the images on https://k8s.io/ (the front page for the whole site) have alt attributes that are the filename, or something else not so helpful.
Proposed Solution:
Change the alt attributes to be either the empty string (if not relevant), or to be meaningful to someone hearing the web page.
Page to Update:
https://kubernetes.io/

Additional Information:
/area web-development

Improving accessibility is crucial. Let's update these alt attributes for a better overall user experience.
/triage accepted
/priority backlog

/assign

/assign

/triage accepted


Another round of v1alpha2 cleanup

What type of PR is this?
/kind cleanup
What this PR does / why we need it:
This takes care of another big chunk of feedback from #780 as well as some of the items in #790.
Does this PR introduce a user-facing change?:
* "Controller" has been renamed to "ControllerName"
* "Admitted" condition has been renamed to "Accepted" and now defaults to an "Unknown" state instead of "False"

@youngnick @hbagdi @howardjohn Thanks for the great feedback on this! I think I've responded to everything, PTAL.

I think you got it @robscott, nice work.
/lgtm
/hold
for another lgtm though.

Just a couple of formatting nits.
/lgtm

/lgtm
/hold cancel


added DDoS-Guard challenge text (anidex.info)

Substantially the same issue as flaresolverr pr 692, fixes #15. I tried it with Jackett and it works.

Closed by #17


Incorrect info (traffic analytics)

[Enter feedback here]

Your account must meet one of the following to enable traffic analytics:
Your account must have any one of the following Azure roles at the subscription scope: owner, contributor, reader, or network

I would just like to verify this information. Can an account on the reader level enable traffic analytics? Surely readers cannot enable, disable or modify information right?
Thanks

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 6a3b799a-7429-813c-c630-e6242c39b77f
Version Independent ID: 8ad04d57-6370-c8dd-1049-1826a823bd12
Content: Azure traffic analytics frequently asked questions
Content Source: articles/network-watcher/traffic-analytics-faq.yml
Service: network-watcher
GitHub Login: @damendo
Microsoft Alias: damendo

@KevinInch -
Thanks for brining this to our attention. We will investigate it further and update you shortly.

@KevinInch , thank you for your feedback. This issue is already raised and assigned to author on https://github.com/MicrosoftDocs/azure-docs/issues/77499 to validate & update the doc accordingly.
We are closing this issue as duplicate of #77499. If there are further questions regarding this matter, please reply and we will gladly continue the discussion.


Move the snake

Next step the movement ? :)
I have found the G packet, but i don't know how to use correctly do u have any idea ?

hello how can i learn my port

@eralpcicekdagi default port is 8080
@nightwolf93 i think i will have the movement done tomorrow :) It should be make with packet "e"

The "e" ? Is for the the direction right ? With the "g" i can move my snake but it's slow xD

is new update work?

No. But now data is sendig correctly. We need to do a lot of more math...

anyone find out smth new?

i think i know why you cannot move you are actually always out the circle of the map

@GrumpyOet no, you are into the circle, the mini-map is just buggy. You can install this script and you can see your X and Y axis.

this is also a good point. we should find out, how we can display the snake correctly on the minimap

var incX = ((float)Math.Cos((Math.PI / 180) * this.MySnake.CurrentAngle));
var incY = ((float)Math.Sin((Math.PI / 180) * this.MySnake.CurrentAngle));
That for calculate the good increase vector for snake direction
(You need to convert you angle to radian like this)

I just found this out at the moment. Now I read your comment ^^ Could save me hours if a had read this earlier. Damn

Read your github notification haaha :+1:

not really. I had the Problems with the movement (wich is working now but not perfect at all). The next Thing i want to try is the minimap. Because theres something wrong too

My minimap work i think

IDK.
oh your movements looks good :D I only see a moving head in our server

I think we have the same, just i have put some part in my snake haha

Yes i added some parts and now i see the tail

Also when u send the update position of the snake, the position is incorrect for u too ? is not the same of the new snake packet ?

We have some problems with the position. On 2 clients the position of the snakes are not the same. Maybe only visual idk. Also the Rotation of the snake is missing. So the snake is head banging the hole time and the follows not correctly.

Okay we need some more informations for understand how its work

@nightwolf93 did you found something out?

Yeah, how to set the speed of the snake correctly. But nothing more i didn't have the time :/

The movement is still very buggy and it says that my snake spawned outside the map. It also says my score on the leaderboards 23k but the score in the bottom left is 150

we know that. The readme of this repo also says that we are still in development.


Set opening direction?

Is there a way to tell the datepicker in what direction it should open?
I encounter this problem:

No... I used to measure the available space then open above or below but that messed up the SSR users.
Might be a nice addition to pass this in as a prop though...

could i do this with the wrapper class?

This is a nice feature that I need just now

wow, anyone has done this feature?

There is also a problem when the input is close to the right edge of the window... then only the half calendar is shown...
This is a big problem for responsive design

I too would like this feature. I've got a datepicker near the bottom of the page, and it adds a scrollbar when opened. Top/right/bottom/left would be great :+1:

I too would like this feature. I've got a datepicker near the bottom of the page, and it adds a scrollbar when opened. Top/right/bottom/left would be great :+1:

No... I used to measure the available space then open above or below but that messed up the SSR users.
Might be a nice addition to pass this in as a prop though...

@charliekassel i've tried to look in the commits to find where this code was removed and replicate it but I can't. Could you possibly point it out?

This is the most rated Vue Datepicker component that I have found so far, which is why I cannot believe that opening direction or position has not been resolved.  Component still opens off screen.  I will add it to my to do list, but it's not a high priority to me, since I'm pretty sure I can just find another component that has this built-in already.

This is the most rated Vue Datepicker component that I have found so far, which is why I cannot believe that opening direction or position has not been resolved.  Component still opens off screen.  I will add it to my to do list, but it's not a high priority to me, since I'm pretty sure I can just find another component that has this built-in already.

Maybe add an option to display datepicker in the modal like https://mariomka.github.io/vue-datetime/

I also need this auto detect feature because I am currently experiencing the same problem, for now I solved it with css overide
.vdp-datepicker__calendar {
width: 230px !important;
}

It's working, just use this css.
.vdp-datepicker__calendar {
bottom: 100%;
}


Logging error while closing connection

Hello, I am using databricks-sql-connector==2.7.0
I have an error regarding my logger (file) while exiting my script.

2023-07-04 18:25:36,806 - client - Successfully opened session 01ee1a87-684a-156f-add7-795029623668
Exception ignored in: <function Connection.del at 0x7f1543b17820>
Traceback (most recent call last):
File "/mypath/.venv/lib/python3.8/site-packages/databricks/sql/client.py", line 209, in del
File "/mypath/.venv/lib/python3.8/site-packages/databricks/sql/client.py", line 251, in _close
File "/usr/lib/python3.8/logging/init.py", line 1446, in info
File "/usr/lib/python3.8/logging/init.py", line 1589, in _log
File "/usr/lib/python3.8/logging/init.py", line 1599, in handle
File "/usr/lib/python3.8/logging/init.py", line 1661, in callHandlers
File "/usr/lib/python3.8/logging/init.py", line 954, in handle
File "/usr/lib/python3.8/logging/init.py", line 1186, in emit
File "/usr/lib/python3.8/logging/init.py", line 1176, in _open
NameError: name 'open' is not defined

This is just opening a databricks sql connection, and then make an exit. There is no error code:
$ echo $?
0

How can I avoid this tracecall at the exit of my script?

Thanks for this report. I'm investigating right now.

Here is a minimal code that reproduce my error.
import logging
import os
from datetime import datetime
from pathlib import Path

log_file_name = "test"
log_dir = "logs"
log_level = "INFO"

if not os.path.exists(log_dir):
    os.mkdir(log_dir)

base = Path(log_file_name).stem
extension = Path(log_file_name).suffix

log_file_path = os.path.join(
    log_dir,
    datetime.now().strftime(base + "_%Y_%m_%d_%H_%M_%S" + extension),
)

# Root Logger -> Will disable all loggers called after this
logger = logging.getLogger()
logger.setLevel(log_level)

# Set File Logger
file_handler = logging.FileHandler(log_file_path)
file_handler.setLevel(log_level)

# Stream handler
stream_handler = logging.StreamHandler()
stream_handler.setLevel(log_level)

# Formatter
formatter = logging.Formatter("%(asctime)s - %(module)s - %(message)s")
file_handler.setFormatter(formatter)
stream_handler.setFormatter(formatter)

logger.addHandler(file_handler)
logger.addHandler(stream_handler)

################

logging.info("testing")
from databricks import sql as dbsql

connection = dbsql.connect(
        server_hostname="your databricks server url",
        http_path="/sql/1.0/warehouses/xxxxxxxxx",
        access_token="dapi************************",
    )
with connection.cursor() as cursor:
    cursor.execute("Select 1")
    result = cursor.fetchall()

logging.info(result)

That will output me:

2023-07-05 17:11:04,087 - test_sql_logger - testing
2023-07-05 17:11:05,995 - client - Successfully opened session 01ee1b46-29e5-1464-a820-6f2e72cf1e08
2023-07-05 17:11:08,308 - test_sql_logger - [Row(1=1)]
Exception ignored in: <function Connection.del at 0x7f80dc9ab3a0>
Traceback (most recent call last):
File "/mypath/.venv/lib/python3.8/site-packages/databricks/sql/client.py", line 209, in del
File "mypath/.venv/lib/python3.8/site-packages/databricks/sql/client.py", line 251, in _close
File "/usr/lib/python3.8/logging/init.py", line 1446, in info
File "/usr/lib/python3.8/logging/init.py", line 1589, in _log
File "/usr/lib/python3.8/logging/init.py", line 1599, in handle
File "/usr/lib/python3.8/logging/init.py", line 1661, in callHandlers
File "/usr/lib/python3.8/logging/init.py", line 954, in handle
File "/usr/lib/python3.8/logging/init.py", line 1186, in emit
File "/usr/lib/python3.8/logging/init.py", line 1176, in _open
NameError: name 'open' is not defined

An other information, when running my pytests in my project, I do not see this Traceback, Maybe due that pytests spawns threads or processes and they don't catch the Traceback. So this "error" is not showned when running any CI tools that tests the code. And even if it would, it does return an exit code 0.

Following up on this. I appreciate the reproduction steps. I'm running your exact script locally with version 2.7.0. I tested on Python 3.11.x and on Python 3.8.x
I'm confident this is not a bug in our connector.
It looks like you're using the system Python and moreover the error is not being raised by databricks-sql-connector but by your standard library logging module. We recommend running databricks-sql-connector within a dedicated virtual environment to isolate execution from side-effects caused by other installations. Please try that.
I'm closing your issue for now but feel free to reopen if the issue persists.

This is very strange, because in local I am always using venv with python 3.8 python -m venv .venv and source .venv/bin/activate. I never code without venvs.
More over, we also have this inside Azure Machine Learning Computer Instances with the default docker image. And Computes clusters with the custom Dockerfile (but only openJDK 19 installed):
dockerfile = rf"""
        FROM mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu22.04:latest

        RUN mkdir -p /usr/share/man/man1

        RUN apt-get -y update \
        && apt-get install  openjdk-19-jdk -y \
        && rm -rf /var/lib/apt/lists/*
        """

So this feels odd that you cannot reproduce this, because all our departement at the company that uses databricks-sql-connector==2.7.0 have this symptoms. Most of them work with Computes instances in Azure Machine Learning, and other in local (WLS1).
I did more testings with the versions, and the issue are only for the version 2.6.0 and above. For the version 2.5.2 I do not have this issue.
For me it's linked to this change (src/databricks/sql/client.py, line 251 ):

I think that at this time of the code, when we delete the object by quitting the script, the logger calls __del__ before the __del__ of the Databricks's client. Thus will make the line 251 logger.info(f"Closing session {self.get_session_id_hex()}") fail this there are no loggers.
In the code from the tag 2.5.2 there is no logging in the _close method:
    def _close(self, close_cursors=True) -> None:
        if close_cursors:
            for cursor in self._cursors:
                cursor.close()
        self.thrift_backend.close_session(self._session_handle)
        self.open = False

So I tested to close the connexion juste before exiting the script, and indeed it removes the logging error.
import logging
import os
from datetime import datetime
from pathlib import Path

log_file_name = "test.log"
log_dir = "logs"
log_level = "INFO"

if not os.path.exists(log_dir):
    os.mkdir(log_dir)

base = Path(log_file_name).stem
extension = Path(log_file_name).suffix

log_file_path = os.path.join(
    log_dir,
    datetime.now().strftime(base + "_%Y_%m_%d_%H_%M_%S" + extension),
)

# Root Logger -> Will disable all loggers called after this
logger = logging.getLogger()
logger.setLevel(log_level)

# Set File Logger
file_handler = logging.FileHandler(log_file_path)
file_handler.setLevel(log_level)

# Stream handler
stream_handler = logging.StreamHandler()
stream_handler.setLevel(log_level)

# Formatter
formatter = logging.Formatter("%(asctime)s - %(module)s - %(message)s")
file_handler.setFormatter(formatter)
stream_handler.setFormatter(formatter)

logger.addHandler(file_handler)
logger.addHandler(stream_handler)

################

logging.info("testing")
from databricks import sql as dbsql

connection = dbsql.connect(
        server_hostname="your databricks server url",
        http_path="/sql/1.0/warehouses/xxxxxxxxx",
        access_token="dapi************************",
    )
with connection.cursor() as cursor:
    cursor.execute("Select 1")
    result = cursor.fetchall()

connection.close()

logging.info(result)

2023-07-11 09:50:05,117 - logging_tests - testing
2023-07-11 09:50:06,198 - client - Successfully opened session b'\x01\xee\x1f\xbf\x8d\x19\x18\xe5\x97\xb4\x96\xa4c6\xb9\xe4'
2023-07-11 09:50:06,613 - logging_tests - [Row(1=1)]

So maybe it's just a "timing" issue, or I should always close the connexion before the natural __del__ of the databricks.sql.client.Connection object. But it still feels odds that the users must manually close the connexion.

Issue seems to be resolved with this changes you made: https://github.com/databricks/databricks-sql-python/commit/8d70f6c046feda90402c713c8e47125da36ba55a


Amalgamation for Android Changes Model Behavior

I am running amalgamation for Android and noticed some strange behavior.  I wrote a unit test for Leliana/WhatsThis and discovered that the libmxnet_predict.so amalgamated from the most recent master branch changes the behavior of the model.
For the same model, params and input, feedforward results in different output using the freshly amalgamated .so.  I am using an image of a guinea pig, which resulted in 'hamster' using the WhatsThis model, but now outputs 'nematode.  In fact, updating the .so for WhatsThis outputs 'nematode' for most images.
master branch amalgamated: 1ff820a03846b84fc370850ed3770ce52d8169dd
Can anyone help me find out if this is my issue, an amalgamation issue, or simply an artifact of the WhatsThis model?  I can upload my test if needed.
Thanks!

@antinucleon add a test for amalgamation like tests/python/gpu/test_forward.py?

@piiswrong @antinucleon Update: the issue only appears when using the model.params and symbol.json from WhatsThis.  I have gotten squeezenet_v1.1 working successfully using the amalgamated .so from the now current dc1a36064d7166c359110bc297ef9ec174eb63d0.
I have complete unit tests (Android) for WhatsThis that I am happy to contribute.  Please let me know if you can use my help.

@d4wud Hi， I have the same problem, did you solve this, please help me!!! Thanks a lot~

@ydmo I believe the problem is that the model in Leliana/WhatsThis is incompatible with the current state of mxnet amalgamation.  Re-amalgamate and replace the params and symbol.json with those from Squeezenet v1.1 and it should work.

@d4wud yeah! it works! Thanks a lot!

@piiswrong should I close this issue?


added bench for eval at point

This change is

[!WARNING]
This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more

#508  👈
#506
dev

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @ohad-starkware and the rest of your teammates on  Graphite

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 95.43%. Comparing base (b4637ec) to head (418ef6b).

Additional details and impacted files
@@                         Coverage Diff                          @@
##           ohad/optimizations/eval_at_point     #508      +/-   ##
====================================================================
- Coverage                             95.44%   95.43%   -0.01%
====================================================================
  Files                                    58       58
  Lines                                  8996     8990       -6
  Branches                               8996     8990       -6
====================================================================
- Hits                                   8586     8580       -6
  Misses                                  361      361
  Partials                                 49       49

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


keys.json "end of file" error handler

When debugging 'fs' and keys.json exists but is empty, 'end of file' error is thrown.

Delete keys.json contents and reproduce issue
build error handler

Fixed in 944d493a7ec59862b3a02a4679cb638d96d04022