Linked_List_Implementation_of_Stacks.md

Description 📜Linked_List_Implementation_of_Stacks.md
Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context.
Fixes #7538

Type of change 📝Linked_List_Implementation_of_Stacks.md

[X] Doc#umentation (Content Creation in the form of codes or tutorials)

Domain of Contribution 📊

[X] DS#A

Checklist ✅

[X] I follow Contributing Guidelines & Code of conduct of this project.
[X] I have performed a self-review of my own code or work.
[X] I have commented my code, particularly in hard-to-understand areas.
[X] My changes generates no new warnings.
[X] I'm GWOC'21 contributor

@nimisha-yadav Actually i needed your help , here when i try to add my file , it shows that it is being crea added in my repo and askks me in return to create a pr , so that i can merge it . Like my folder isn't even visible . Am i doing it the right way?

@nimisha-yadav Actually i needed your help , here when i try to add my file , it shows that it is being added in my repo and askks me in return to create a pr , so that i can merge it . Further now i went in patch1 branch and created a folder but now it shows 718 files . Is is the right way?

See you're adding file in main itself and then you create a new branch which is creating problem.
In your fork, go to DSA branch and then add the file and create a new branch while commiting the changes and then you're redirected to PR where it says to merge that branch in main. Don't merge. Cancel that window. Open the fork again, go to that branch which you created and create PR pointing to GWOC DSA branch.

@nimisha-yadav I have added the file in new branch varnikarathee-patch.  Just a small doubt , do i need to fetch in patch1 before creating a pr? and do i need to go for compare and pull request or create a new pr  by myself.?

@nimisha-yadav I have added the file in new branch varnikarathee-patch1. Just a small doubt , do i need to fetch in patch1 before creating a pr? and do i need to go for compare and pull request or create a new pr by myself.?

Yes, click on compare and pull request and while creating PR make sure it points to GWOC DSA branch. We fetch the latest commits in DSA branch itself before creating a new branch from there but since you've created a new branch so create the PR, we'll see if it generates any problem :)

@nimisha-yadav This is my new pr https://github.com/girlscript/winter-of-contributing/pull/8522 see if its fine and if i can merge it.


chore(graphql-toolkit): add module documentation

Codecov Report
Attention: Patch coverage is 90.78947% with 35 lines in your changes are missing coverage. Please review.

Project coverage is 89.30%. Comparing base (42efcb8) to head (45fca9f).

Files
Patch %
Lines

graphql-toolkit/src/ser.rs
0.00%
25 Missing :warning:

graphql-toolkit/src/ser/serializer.rs
97.18%
10 Missing :warning:

Additional details and impacted files
@@            Coverage Diff             @@
##             main      #16      +/-   ##
==========================================
- Coverage   92.38%   89.30%   -3.08%
==========================================
  Files           4        5       +1
  Lines         722      767      +45
==========================================
+ Hits          667      685      +18
- Misses         55       82      +27

Flag
Coverage Δ

integration
89.30% <90.78%> (-3.08%)
:arrow_down:

unit
?

Flags with carried forward coverage won't be shown. Click here to find out more.

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


Add WiFi/BT using WL1835MOD based on BeagleBone Blue

Need both WiFi and BT. 2.4GHz is sufficient. Simplest just to replicate a known-good interface.
See https://github.com/beagleboard/beaglebone-blue/blob/master/BeagleBone_Blue_sch.pdf for reference.

How about the WL1837? So we can get the 5Ghz band??? ;)

Bluetooth audio? Remember we need those pull-up's, otherwise remember what happened on teh Green Wireless..

n/m it's +$7 / 1ku premium over wl1835modl

Yeah, the price is the issue. Maybe it doesn't matter so much and we'll use
that one instead. Probably availability is the biggest deciding factor.
Footprint is compatible.
On Mon, Dec 11, 2017 at 9:54 PM Robert Nelson<EMAIL_ADDRESS>wrote:

n/m it's +$7 / 1ku premium over wl1835modl
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/jadonk/whitherbone/issues/3#issuecomment-350929570,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAAjOucknrWV7vE1R-kfMwluNbgBA69nks5s_er7gaJpZM4Q9y0g
.

--
https://beagleboard.org/about

Which pull-ups?
Got it added based on Black Wireless, then removed the level shifters.


Pitch problem

Hi guys,
I have some issue with this library.
My pitch value retrieved from the fusion.getFusionPose() is weird.
The value behave like this when I made a rotation of 360 degrees : 0 -> 90 -> 0 -> -90 -> 0.
The other values (roll and yaw) behave like this : 0->180 -> -180 -> 0.
It is quite annoying because when I draw a cube with the pose, his behaviour is weird.
Thx for the help !

That's exactly how it is supposed to work:
http://en.wikipedia.org/wiki/Euler_angles#Signs_and_ranges
If you are seeing the cube with incorrect pose, this is generally because the rotations are being applied in the wrong order. It is not always obvious what the correct order should be and might require some trial and error.

Oh I have to apply rotations in a specific order ?
And another question, may be it is wrote in the wiki page but when I move around the pitch axis, yaw is moving too. Is it normal ?
Thx for this awesome lib btw !

Yes.
Did you calibrate the magnetometers? If you are using an MPU-9150 or MPU-9250 it is absolutely essential but needs to be done for all IMUs to get decent results.

I changed my rotation order to Z, X and Y and it almost works.
Moreover, I use your Calibration Script to calibrate the magnetometer. The orientation in the real world is working except when the pitch value is +- PI/2 rads. At this value, yaw move too and I don't understand why the algorithm do that.
Thx a lot for your help.


Using Ruby-CHI as a soft NoC for cosimulation with Xiangshan tile

To scale to many-core architecture, the L2 cache ports of Xiangshan core has been modified to support CHI (Xiangshan-L2-with-CHI-ports). However, there is not yet an open-source implemention of CHI NoC in RTL (neither Verilog nor Chisel).
We plan to tailor ICN/HNF from Ruby-CHI of GEM5 for co-simulation with Xiangshan processor. To achieve this, we are building an L2 wrapper to connect ICN with Xiangshan Tile (consisting of core and L2). Then L2 wrapper, ICN, HNF, and SNF will be instantiate with cxx-config.
There will be serveral patches:
First, we will enable cxx-config for RISC-V.
Then, we will seperate HasDownStream for AbstractCacheController, because only down stream node info are necessary for co-simulation, but many pure virtual functions are not. In addition, some functions like functionalRead() is infeasible for an RTL cache.
Finally, if possible, we want to provide a "Hello-world" example of co-simulating with an RTL RNF.

Suggested labels for this issue:
arch-riscv
mem-ruby
enhancement


Update docker-compose pytest instructions

Add instructions for adding the host user in the houston docker
container so it's possible to run commands as the host user (no more
files owned by root)

Remove instructions for adding gitlab repos as those have been added
in pytest fixtures

Pull Request Checklist

[x] Ensure that the PR is properly formatted

Example: All lint checks are passing

[x] Ensure that the PR is properly rebased

Example: The PR is rebased on develop (commit: <insert develop commit hash>)

[x] Ensure that the PR uses a consolidated database migration

Example: One database migration is proposed (revision <insert develop revision> -> <insert new revision>)

[x] Ensure that the PR is properly tested

Example: All automated tests are passing

[x] Ensure that the PR is properly covered

Example: The percentage of the code covered by tests has not decreased

[x] Ensure that the PR is properly sanitized

Example: No sensitive data or large content was added to this PR

[ ] Ensure that the PR is properly reviewed

@hwindsor @naknomum I think you were both not happy with docker leaving files owned by root after running tests right?  Could you try the instructions here to see if it works for you?


Dumping profiles can take a long time

First of, I would thank you for creating this great tool. It is really invaluable for diagnosis JVM performance issues.
When I run the profiler for a long time writing a collapsed profile can take a long time. For example a 30 second run can create a file of ~150 MB which takes 10 min to write. Which is kinda slow (250 kb/s). I did take a look at the source, and cannot find any obvious problem with it (no excessive flushing).
I am wondering if this can be sped up. A viable alternative solution (for me) would be to dump the traces and the method names to disk and to build the collapsed profiles (or any other profile) later on. That should relatively compact and should easy to dump to disk.

Thank you for the feedback.
Sounds interesting, I haven't seen such a problem before. Looks like I need to profile the profiler :)
I'll investigate this. Meanwhile can I ask you to compare the file size and the generation time of the same profile in two formats: -o collapsed vs. -o svg?
BTW, how do you run the profiler?
./profiler.sh -d 30 -o collapsed -f profile.dump PID or someway else?

Thanks for your quick reply!
Let me try the svg option. I will try to get to this in the next two days.
If I use the flamegraph script, the resulting flamegraph can be around 8-10 MB in size. You can tune this by setting minwidth option to something reasonable, that will usually result in a file size of  800 KB.
I will also try to give some color to what I am doing. I am generally profiling one or more machines (workers) at the same time. The profiler is controlled using RPCs and these start & stop the local profiler directly using jattach (using the script didn't seem necessary). Earlier I did run the profiler using a command similar to  ./profiler.sh -d 30 -o collapsed -f profile.dump PID and this took the same amount of time.
Finally, dumping SVG's directly is very useful, but in some cases it is nice to combine the profiles generated by the multiple machines (assuming that you are running the same job); this is trivial using the collapsed format.

The goal of comparing -o collapsed vs. -o svg is primarily for me to understand whether the time is spent mostly to get method names or to print them.

The I just compared them and it seems that generating an SVG is a little bit slower (3.5 vs. 3.8 min). The command that generates these profiles took 3 seconds to run BTW, the profiler was running for 5 seconds.
I also noticed that the SVG produced by the profiler is smaller (and is coarser) than the SVG produced by the combination of the collapsed format and the FlameGraph script. Is this by design?

SVG produced by the profiler is smaller (and is coarser) ... Is this by design?

Yes. The default minwidth threshold in async-profiler is 1 comparing to 0.1 in flamegraph.pl.
minwidth==1 corresponds to 1/1200 of total samples, which is less than 0.1%. I believe smaller call stacks are not really important in most cases, but they make output much bigger. For example, flamegraphs larger than 10MB are almost unusable in Chrome.
Anyway, I'll make minwidth configurable: #82

Yeah, that could be it. I am running this on OpenJDK 8u151.

@hvanhovell I've made a fix to work-around this nasty bug with slow JVMTI functions.
Please check slow-output branch to verify that the problem has been fixed.

Awesome! I'll give it a spin in the tomorrow.

@apangin this seems to do the trick! I tried it on one instance where dumping the profile would take 1.7 min, this now completes in 3 seconds.

Thanks! I've merged the fix to master.


Re-introduce support for inserting Emoji directly in apps

This is a new try, following #10 which removed the previous attempt. @OJFord showed me a seemingly working approach in a comment on #1.
If this works for more people it might get merged as the default behavior again.
Please test this out and post your findings in this PR to get this out quicker. :heart: :pray:

How it works:
You use the plugin like always, but now when you press Enter the emoji will not be copied. Instead it will be inserted directly in the focused app as input.
If you are not inside X11 with xdotool installed or Wayland with wtype installed, then it will fall back to the old behavior of copying the emoji instead.
At this point the README is not updated as I want some feedback on the behavior first before I spend time doing that. If you have any questions, just let me know.
How to install?
Start by uninstalling any packages you've installed to run this previously (from the AUR, etc.). Then clone this repo, check out this branch and follow the installation instructions in the README.

Test run
Env: Xorg / Awesome WM
Installed deps: xdotool, xclip, xsel
Working apps:

[x] Kitty terminal
[x] Discord (Elecron?)
[x] Google Chrome
[x] Alacritty
[x] Seahorse (GTK app)
[ ] Firefox - Nope :(
[ ] Telegram (Qt) - Nope
[ ] Spotify (custom Chrome runtime) - Nope
[ ] KWrite (KDE/Qt app) - Nope
[ ] Kate (KDE/Qt app) - Nope

Does not seem to work in most apps that I test with, honestly. 😢
I hope that there's some simple workaround I could find to this issue.

If I run this in a terminal and switch focus to Firefox, then it will successfully write an emoji:
sleep 2 && xdotool key ctrl+shift+u 1 f 6 0 1 space

It works by simulating a press of the "I want to enter a Unicode character" key combo, then typing out the codepoint.
However, this only works in some apps. Alacritty and kitty for example does not support it; Alacritty does not support Ctrl Shift u input method, and Kitty has its own input method like that.
It seems we're once again back to trying to detect the application with focus and using different methods for this.

Okay, so I've pushed two new changes:

Supporting direct insert on wayland using wtype - Completely untested!!!!
When inserting on Xorg, the emoji is also always copied as a fallback. If the direct insertion didn't work in your particular app, you should be able to manually paste it instead.

Maybe this will strike a good-enough balance…

@Mange Is there a way you could make it so the rofi window doesnt close when you insert an emoji (if it doesn't already)
That would be cool because then we can all emoji spam without needing to re-open rofi-emoji lol

I'm not sure how that should work, but you could build your own tool for that purpose. Something like this:
#!/usr/bin/env bash
# Save as "emoji-spammer" in your $PATH

emojis=()
while true; do
  # Clearing clipboard does not work reliably for me, place a dummy value instead.
  echo "stop" | xsel --clipboard

  # Run rofi with "Only copy" as the default mode on pressing Return/Enter.
  rofi -modi emoji -show emoji -kb-accept-entry '' -kb-accept-alt 'Return' || break

  # If clipboard was populated, then an emoji was selected
  # If it was not populated, then user must've pressed Escape. Abort all of it.
  clipboard="$(xsel --clipboard)"
  if [[ "$clipboard" == "stop" ]] || [[ -z "$clipboard" ]]; then
    break
  else
    emojis+=("$clipboard")
  fi
done

echo "${emojis[*]}" | xsel --clipboard

Then run emoji-spammer and press Escape when you are done. You
should now have excellent emoji spam in your clipboard.
I tested it here:
🙃 😀 😬 🥵 💦 🙃

This method seems to work for me in Alacritty: https://gist.github.com/Tadly/0741821d3694deaec1ee454a95c591fa#file-rofi-emoji-sh-L83

What about other apps?

What about other apps?

Kitty, Electron apps (vscode, Ferdi), Chromium, Alacritty, and Xfce Terminal all work.
Firefox does not (it appears to lose focus when Rofi opens). I also tried Spotify and it did not work either.
I use Xfce, and all of the text input fields seem to work fine too.

Seems like the same results as my initial test run, then. They probably work the same way internally inside xdotool.

This would be awesome to see! Is there any current workaround for just pasting what's on the clipboard after "accepting" an emoji?

No, as you'd need to send a keyboard shortcut to paste and that is different in different apps.

Ah bummer. It's not directly integrated into rofi, but this seems to get the job done. https://github.com/fdw/rofimoji
I'm currently using this project and that one. I have a hotkey bound to that script and then if I find myself in rofi and want to do an emoji, I ctrl+tab to use this one.
Cheers!

Their method seems to be very excessive and requires the user to know which way works in which app.
Would you mind testing their three different output methods on a selection of apps like above and report back. If it seems to cover everything it would be worth looking into!

I'm closing this one now. I'm working on a brand new version of rofi-emoji that will incorporate some of these ideas.


Clarify purpose of slice.name in @reduxjs/toolkit docs

CC: @markerikson
Firstly, thanks for Redux. I love it. I wanted to share a little of my learning experience and make a suggestion that I think will help developers from getting stuck when first using Redux with React.
I put off learning Redux for a long time, due to the lack of state-complexity of the apps I was building. I started digging into Vanilla Redux recently, pairing it with Vanilla Web Components (ie: no React).
When it came to applying Redux to React, things became much harder to reason about. This is surprising as the React Eco-System is generally super clear to understand.
What really got me stuck with @reduxjs/toolkit, was the reference to the slice. By this, I am referring to the name of the slice itself. I'm going to use the CodeSandbox example you guys provided to try and make this as clear as I can. https://codesandbox.io/s/github/reduxjs/redux-essentials-example-app/tree/checkpoint-3-postRequests/?from-embed
I would have assumed that the name: "posts" would be what controls this reference, but it does not! 😕
// https://github.com/reduxjs/redux-essentials-example-app/blob/checkpoint-3-postRequests/src/features/posts/postsSlice.js#L23

const postsSlice = createSlice({
  name: 'posts',  // <- Renaming this has zero effect!
  initialState,

When trying to remove the name, Redux Toolkit complains that "name is a required option for createSlice".

🤔 Huh?
You must declare slice.name, but slice.name has zero bearing on how you use Redux. (As far as I can tell).

The actual reference is found in src/app/store.js:
// https://github.com/reduxjs/redux-essentials-example-app/blob/checkpoint-3-postRequests/src/app/store.js#L8

import { configureStore } from '@reduxjs/toolkit'

import postsReducer from '../features/posts/postsSlice'
import usersReducer from '../features/users/usersSlice'

export default configureStore({
  reducer: {
    posts: postsReducer,  // <-- THIS
    users: usersReducer,
  },
})

You can also see this confusing posts.posts reference here:
//  https://github.com/reduxjs/redux-essentials-example-app/blob/checkpoint-3-postRequests/src/features/posts/postsSlice.js#L66

export const selectAllPosts = state => state.posts.posts;

The confusion continued for me when looking at the React component's reference to state.posts :
// https://github.com/reduxjs/redux-essentials-example-app/blob/checkpoint-3-postRequests/src/features/posts/PostsList.js#L32

export const PostsList = () => {
  const dispatch = useDispatch()
  const posts = useSelector(selectAllPosts)

  // Does `state.posts` refer to the `posts[]` array of the slice's state as I expected?
  // Nope! It refers to the post's reference on the store.
  const postStatus = useSelector((state) => state.posts.status)
  const error = useSelector((state) => state.posts.error)

  useEffect(() => {
    if (postStatus === 'idle') {
      dispatch(fetchPosts())
    }
  }, [postStatus, dispatch])

This made things very difficult to reason about in the context of React, where as Vanilla Redux was as clear as day.
The React community prides itself on declarative code for good reason. It falls down here, for me. Perhaps I missed something somewhere, but I don't see what the point of slice.name is. This makes it much harder to figure out what is going on when hooking up Redux to React.
To recap, the user is required to create three "things" called "posts", yet only two of them seem to be of value to the end user.

export default configureStore({reducer: { posts:... }})
const postsSlice = createSlice({name: 'posts'})
const initialState = {posts: []}

Is it possible to infer the slice.name automatically from the store?
Can you clarify what is the purpose of slice.name for the end user?

The name field of createSlice specifically is used as a prefix for all action types generated within this slice:
const slice = createSlice({
  name: "todos",
  initialState: [],
  reducers: {
    todoAdded(state, action) {}
  }
})

console.log(slice.actions.todoAdded("Buy milk"));
// {type: "todos/todoAdded", payload: "Buy milk"}

You're correct that it has no actual direct relation to the name of the field in the root state tree, because that is entirely defined by what your root reducer returns.  That root reducer is normally generated by combineReducers.  So, for example, I could take my todosReducer, and put it at any field name in the root state:
const rootReducer = combineReducers({
  someOtherFieldEntirely: todosReducer
})

console.log(rootReducer(undefined, {type: "initAction"}));
// {someOtherFieldEntirely: []}

However, it is likely that there will be a correlation between the slice.name field and the name of the root state field for this reducer, because people like naming things the same way:
const rootReducer = combineReducers({
  todos: todosReducer
})

It's not possible to infer the "name", for multiple reasons:

The name has to be known at the time the slice is defined, because it's used internally when generating the action creators
Per above, there is no guarantee that a slice named "x" will be mounted as state.x
It's even possible that a given slice reducer may be mounted as a nested reducer in the state tree, like:

const modalsSlice = createSlice({
  name: "modals",
  initialState,
  reducers
})

const uiReducer = combineReducers({
  modals: modalsReducer,
  dialogs: dialogsReducer
})

const rootReducer = combineReducers({
  users: usersReducer,
  ui: uiReducer
})

Note that the tutorial sequence does tell you the purpose of slice.name, although it's not bolded or specifically highlighted:
https://redux.js.org/tutorials/essentials/part-2-app-structure#creating-slice-reducers-and-actions

Redux Toolkit has a function called createSlice, which takes care of the work of generating action type strings, action creator functions, and action objects. All you have to do is define a name for this slice, write an object that has some reducer functions in it, and it generates the corresponding action code automatically. The string from the name option is used as the first part of each action type, and the key name of each reducer function is used as the second part. So, the "counter" name + the "increment" reducer function generated an action type of {type: "counter/increment"}. (After all, why write this by hand if the computer can do it for us!)

The state.posts.posts piece you're pointing to is an entirely separate point of concern.
Within a given slice, you can have whatever further nested state you want.  In this case, the postsSlice started with only storing an array of post entries.  Later on, we started tracking loading state for the slice as well as we fetch posts from the server.
At that point, we now need to track an array of post objects, and loading state, so we can't just have an array.  So, the state for the postsSlice switching to being an object that has an array and some other loading state fields in it.
We can name the nested array anything we want, but for consistency, we can still call it posts.  Since the entire postsReducer is being used to handle all updates to the root state.posts, we now end up with the slightly awkward naming situation of state.posts.posts, because the nested array is inside the slice state.
That naming quirk gets resolved a bit later in the tutorial when we switch over to using the createEntityAdapter API, which stores data as {ids: [], entities: {}}.  So, you've got state.posts.entities from there on out.
You might want to read through the Initializing State docs page, which recaps how some of this process works, as well as the rest of the Structuring Reducers section.
I'm a bit confused why you're saying this confusion is React-related.  None of these concepts have to do with React.  useSelector receives the entire Redux root state tree as its argument.  So, depending on the progress through the tutorial, you read state => state.posts, state => state.posts.posts, etc, as the structure of the state tree changes.
Hopefully that clarifies the behavior.  If you've got any further questions, or suggestions for how to specifically improve these explanations in the tutorial or docs, please let me know.

I appreciate the clarification, that's really helpful - thanks @markerikson!

I'm a bit confused why you're saying this confusion is React-related. None of these concepts have to do with React.

I'm unsure why you're saying this. Perhaps you are saying that this problem would be exactly the same if I used @reduxjs/toolkit without React? (I didn't think the toolkit worked without React).

Exactly.  Both the Redux core, and Redux Toolkit, are 100% UI agnostic plain JS libraries.  They can be used with any UI layer, it's just that React is the most common.
Everything about the "store", "reducers", "actions", and "slices", is unrelated to the UI.
So, everything that I said about state.posts.posts, etc, is true regardless of what UI layer you're using.

Awesome, thanks @markerikson


Problem with passing ProxyOptions to BlobServiceClient

Package Name: @azure/storage-blob
Package Version: 12.1.1
Operating system: windows 10
[x] nodejs

version:10.16.3
version:

Is the bug related to documentation in

[x] source code documentation
[x] SDK API docs on https://docs.microsoft.com

Describe the bug
When I try to specify proxyOptions to a BlobServiceClient created from connectionString it doesn't seems to work, and is not added to the StoragePipeline.
To Reproduce
code:
       const { BlobServiceClient } = require("@azure/storage-blob")
     const connectionString=""
       const blobServiceClient=BlobServiceClient.fromConnectionString(connectionString,{
proxyOptions:
   { host: 'http://localhost',
     port: 80,
     username: 'test',
     password: 'test' }

})
      console.log(blobServiceClient.pipeline)

when dumping blobServiceClient pipeline i got the following result:
Pipeline {
  factories:
   [ { create: [Function: create] },
     { create: [Function: create] },
     TelemetryPolicyFactory {
       telemetryString:
        'azsdk-js-storageblob/12.1.1 (NODE-VERSION v10.16.3; Windows_NT 10.0.18363)' },
     { create: [Function: create] },
     StorageBrowserPolicyFactory {},
     { create: [Function: create] },
     StorageRetryPolicyFactory { retryOptions: undefined },
     { create: [Function: create] },
     { create: [Function: create] },
     StorageSharedKeyCredential {
       accountName: 'someAccount',
       accountKey:
        <Buffer 9b ... > } ],
  options:
   { proxyOptions: undefined,
     httpClient:
      NodeFetchHttpClient { proxyAgents: {}, keepAliveAgents: {}, cookieJar: [CookieJar] } } }

Expected behavior
when proxyOptions are passed it should be added to blobServiceClient.pipeline.options
Additional context
I am reffering to the following documentations:
https://docs.microsoft.com/en-us/javascript/api/@azure/ms-rest-js/proxysettings?view=azure-node-latest
https://docs.microsoft.com/fr-fr/javascript/api/@azure/storage-blob/storagepipelineoptions?view=azure-node-latest#proxyoptions

@AZOPCORP could you please share the error you got when using proxy?  The proxy options are passed into one of the request policy factory.
https://github.com/Azure/azure-sdk-for-js/blob/5cecc379f1c36574b0aaf065d9a94646b97dcb2c/sdk/storage/storage-blob/src/Pipeline.ts#L211

@jeremymeng No error thrown but  proxyblobServiceClient.pipeline.options.Options is undefined so no way to use proxy.
BTW we found a way to set blobServiceClient.pipeline.options.proxyOptions via the environement variables process.env["HTTPS_PROXY"] and process.env["HTTP_PROXY"]
https://github.com/Azure/azure-sdk/blob/master/_includes/tables/environment_variables.md
exemple:
      process.env["HTTPS_PROXY"]="https://test:test@localhost:80"
      const { BlobServiceClient } = require("@azure/storage-blob")
      const connectionString="xxxxx"
      const blobServiceClient=BlobServiceClient.fromConnectionString(connectionString)

@jeremymeng No error thrown but proxyblobServiceClient.pipeline.options.proxyOptions is undefined so no way to use proxy.

as I mentioned above, in current code the proxy option is already passed to one of the request policy factories. The proxy option will eventually causes the proxyAgent to be used in the node fetch http client when sending requests.
I suspect that the reason why it didn't work for you when passing it via options is that the host properties should not have the http:// part.  We only take the host part when getting proxy settings from environment variables.  Could you please try again with
proxyOptions:
   { host: 'localhost',
     port: 80,
     username: 'test',
     password: 'test' }

@jeremymeng Is there anything else we can do here?

@AZOPCORP we don't set blobServiceClient.pipeline.options because it is already passed to the service client via the request policy factories.  Please re-open if there are actual issues when connecting to the service using a proxy.

Hi,
I face a similar issue to @AZOPCORP. I'm trying to ensure that BlobServiceClient works behind corporate proxies. I'm using Electron (on the main thread) and Fiddler Everywhere to see that the traffic is correctly routed to the proxy.
Doing this, when I use the blobServiceClient to access containers, no traffic shows on Fiddler and it seems to go directly to the internet.
const blobServiceClient = BlobServiceClient.fromConnectionString(connStr, {
    proxyOptions: {
        host: 'http://<IP_ADDRESS>',
        port: 8866,
    },
});

Doing it via the env variable on the other hand, I can see traffic on fiddler (at least the connection attempt because Fiddler uses a self-signed certificate for TLS connections, which the underlying node-fetch refuses, but that relates more to this issue)
process.env['HTTP_PROXY'] = 'http://<IP_ADDRESS>:8866';
const blobServiceClient = BlobServiceClient.fromConnectionString(connStr);

So to me it seems that the proxyOptions are ignored by the underlying http stack.
Package Name: @azure/storage-blob
Package Version: 12.1.1
Operating system: MacOS Big Sur
nodejs version: 12.12 (electron 8.5)

Yes there is a bug that we would reset options.proxyOptions to empty.
https://github.com/Azure/azure-sdk-for-js/blob/85dcd6ed32108eadf0f023b4acaf6058d113db66/sdk/storage/storage-blob/src/BlobServiceClient.ts#L415

It probably should be
if (!options.proxyOptions) {
  options.proxyOptions = getDefaultProxySettings(extractedCreds.proxyUri);
}

This would ignore proxyUri in connection string when user passes in proxyOptions via options.
/cc @HarshaNalluru

Got it. Will fix it.

https://github.com/Azure/azure-sdk-for-js/pull/20073

Just fixed the issue, the fix will be included in the next release.


[zh] fix spelling mistake in ./content/zh/docs/concepts/service-networking/connect-applications-service.md

[zh] fix spelling mistake in ./content/zh/docs/concepts/service-networking/connect-applications-service.md

/approve


Refresh params if backend changes

interface should do a full refresh of params if they change in the backend.  need to determine how to detect this - param count would be a simple, if crude way.

We could have the API maintain a control websocket that keeps the webui informed of the API state and delivers actions, such as params stale, refresh or similar.

That's a great idea.

This should be up to the API to notify the client of changes, which it already does.


What is going to happen, when disruptor.shutdown called?

If muti threads producers are blocking when disruptor is full, and on comsuming.
At this moment, I call shutdown(), the blocking thread will break blocking? Return with nothing or exception?

They will remain stuck.  Shutdown will simply shutdown all of the consuming event handlers.

public boolean saveRequestSpan(RequestSpan requestSpan) {
        long sequence = requestSpanRingBuffer.next();
        try {
            RequestSpanHolder data = requestSpanRingBuffer.get(sequence);
            data.setRequestSpan(requestSpan);

            HealthCollector.getCurrentHeathReading("StorageListener").updateData(HeathReading.INFO, "RequestSpan stored.");
            return true;
        } catch (Exception e) {
            logger.error("RequestSpan trace-id[{}] store failure..", requestSpan.getTraceId(), e);
            HealthCollector.getCurrentHeathReading("StorageListener").updateData(HeathReading.ERROR, "RequestSpan store failure.");
            return false;
        } finally {
            requestSpanRingBuffer.publish(sequence);
        }
    }

Is this will trigger blocking, when Disruptor buffer is full? Should I wait there is no blocking and no producer to this Disruptor, then shutdown the Disruptor? Am I right?

That will work, the other option would be to use RingBuffer.tryNext() and check the heath reading on failure.

If tryNext returns without a exception, the requestSpanRingBuffer.get and requestSpanRingBuffer.publish will not block? Even between tryNextand requestSpanRingBuffer.get, Disruptor.shutdown() is called by another thread?
Is this safe enough in multi thread scenario?

That's correct, only the RingBuffer.next method will block.

Further more, if I always use trynext, and catch exception for buffer full status, will cause performance issue?

It's reasonably efficient.  The exception is pre-created and does not build a stack trace, so the cost is roughly similar to a longjmp.

I use this code to get sequence like SleepingWaitStrategy. But is there any more efficient way?
LockSupport.parkNanos(1L); seems having a high CPU cost in my application with in a Stress Test, because of parkNanos may be triggered frequency, and need to wait more than 1 namo.
long sequence;
        while(true) {
            try {
                sequence = requestSpanRingBuffer.tryNext();
                break;
            } catch (InsufficientCapacityException e) {
                LockSupport.parkNanos(1L);
            }
        }

If your stress test is trying publish as fast a possible then it is likely that your buffer will be completely full nearly all of the time.  So you will be falling into the catch box fairly frequently.  The cost of LockSupport.parkNanos(1) will vary from machine to machine.  On 64 bit Linux it tends to be around 10% per thread.

Yes, you are right, that is what I have seen in my test report. Any suggestions? And I found BlockingWaitStrategy may have a higher performance. How can I implement a BlockingWait in tryNext scenario.
And further, I have another thing to discuss:
handleEventsWithWorkerPool and handleEventsWith will cause new Thread to consume data, yes? And in my use kill -3 to get all thread, the thread name only display as "Thread-1", "Thread-2"...
It's not friendly. Can I set a threadName or threadName-Prefix for Disruptor's consume threads?

The Disruptor doesn't have a mechanism for a publisher to do a blocking wait for an available slot.  The signalling cost to too high.  In practice, when your buffers are consistently full there are other performance issues to be addressed (i.e. why are my consumers running so slow) rather than worrying about the CPU cost on publish.  Also in a number of cases we drop messages when they can't be queued so that we don't block our networking threads.

You could implement the LifeCycle interface and name the thread in the onStart callback.

Does EventHandler need to implement interface LifecycleAware?

No, it is optional.  Only if you need callbacks for onStart and onShutdown.

I know it's optional. I mean if I need, which class should implement this interface? Evetnhandle, or worker, or both?

Only EventHandler support LifeCycleAware.  The other option would be to use a ThreadFactory that names the thread after creation.

Maybe. I set a eventhandler just for implementing LifeCycleAware, and set workers do what I should do.
Is it Ok?

For the EventHandlers yes.  I'm not sure what you mean by "and set workers do what I should do".

Nothing more, I see your point. Thank you.


New Tractus-X project contributor

Necessary Information
Email address to add<EMAIL_ADDRESS>Committers, that could take over: @evegufy @oyo @stephanbcbauer @matbmoser
Please make sure, that you accept the invitation you receive from GitHub, after you have been added as project contributor.

@Siegfriedk can you please help me with this too? thanks

@Siegfriedk I already have eclipse account https://accounts.eclipse.org/users/isaadansari signed Eclipse Contributor Agreement as well.

@saadanzari done. sync might take a little bit of time. Pls verify

thanks a lot @Siegfriedk


fix: nColumns in AOSNumericTable constructor

https://github.com/oneapi-src/oneDAL/pull/2345 introduced a new feature (defaultLeft) to the DecisionTreeTable without requesting space for it in the base AOSNumericTable. This results in an ErrorIncorrectDataRange thrown here
https://github.com/oneapi-src/oneDAL/blob/c98b1cf9ea7ee6b267c7d8dabafbd2ad60a4be5b/cpp/daal/include/data_management/data/aos_numeric_table.h#L208
when called from the DecisionTreeTable constructor here
https://github.com/oneapi-src/oneDAL/blob/c98b1cf9ea7ee6b267c7d8dabafbd2ad60a4be5b/cpp/daal/src/algorithms/dtrees/dtrees_model_impl.h#L68

/intelci: run


config: remove expand-external-labels feature flag in v3

Proposal
I believe we should make use of the v3 release to finally remove the expand-external-labels feature flag and make the behavior "always on". The impact was anyway very low in practice, but it could have broken users in rare cases. The v3 release is the perfect opportunity to get this technically breaking change out of the feature flag limbo.

I would like to try this issue if not anybody is working on this. :-)

Please go ahead, @jyz0309 . But be aware that this is just my proposal at this point. While I do believe it will end up as the consensus, there could still be objections. The code change should be easy, though, so no big risk.

Note that the PR should be created against the v3 release branch.

I agree

[this is a copy-paste message on all unfinished breaking change items]
What is the status of this item?  We are beginning to reach the point where breaking changes may have to miss 3.0 unless they are wrapped up soon.

updated the metadata on the PR so it's linked to the project board


Support deep copy

Implement DeepCopy using serialization

QueryCommandText output
|                Method |        Mean |    Error |   StdDev |
|---------------------- |------------:|---------:|---------:|
|         SqModelString |    28.50 us | 0.254 us | 0.238 us |
| CarbunqlToOneLineText |    68.96 us | 0.146 us | 0.129 us |
|        CarbunqlToText |   397.56 us | 0.681 us | 0.637 us |

If you remove formatting such as indentation, you can output 5 to 6 times faster.
There was already a formatting omission function, but I added a ToOneLineText method to make it easier to call.


P4-OVS: add support for multiple cpu architectures

Tested with aarch64 and x86_64
Signed-off-by: Asaf Ravid<EMAIL_ADDRESS>

Replaced with #PR20


Mac troubleshooting steps provide invalid command

I'm trying to troubleshoot why bee-dashboard is unable to connect to my bee node.
Step 1 is: Check the status of your node by running the below command to see if your node is running.
brew services status swarm-bee
That command returns: Error: Invalid usage: unknown subcommand: status
Maybe the troubleshooting command here should be brew services list?

Nice catch, thank you! We could also use just brew services :) Want to give it a try and create PR?


fix: proper styling for dark style of navbar

Related to https://github.com/facebook/docusaurus/issues/3937
Resolving this required placing utility classes in front of the components so that the components could override the properties set by the utility classes.

LGTM 👍


Installing Falco Issue

Hi,
So we wanted to test out this released feature: https://github.com/falcosecurity/falco/pull/1099
We followed the install instructions and ran the following commands
sudo rpm --import https://falco.org/repo/falcosecurity-3672BA8F.asc
sudo curl -s -o /etc/yum.repos.d/falcosecurity.repo https://falco.org/repo/falcosecurity-rpm-dev.repo
sudo yum -y install kernel-devel-$(uname -r)
sudo yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
sudo yum -y install falco

Our issue here is that when we run yum -y install falco it tries to install three dependencies.  2 of them get installed successfully but the falco-0.21.0_7+7b44aaf-1.x86_64 dependency in the path /usr/src/ does not.
We get this error:
Error! Could not find module source directory.
Directory: /usr/src/falco-0.21.0-7+7b44aaf does not exist.

So I think I ended up figuring it out.  the directory mentioned in /usr/src/ IS there but it has a different name.  Instead of it being named falco-version (in this case falco-0.21.0-7+7b44aaf)  its named falco-be1ea2d9482d0e6e2cb14a0fd7e08cbecf517f94.  I believe this is our issue.  its trying to find /usr/src/falco-0.21.0-7+7b44aaf when installing but for some reason, that doesn’t exist--instead the directory is /usr/src/falco-be1ea2d9482d0e6e2cb14a0fd7e08cbecf517f94 which is why this is failing.
So it looks like whatever script pulls down falco and puts it in /usr/src/ names it incorrectly.  Is this something you guys can look into?

Hey @JScrivanich thanks for bringing this up!
This is going to be solved by https://github.com/falcosecurity/falco/issues/1110
Mind that the program will be called falco-driver-loader


Update left-nav.jsx

Stop items under the left menu are being clicked.

What behavioral change does this cause? Is this still needed @oliviertassinari @mmichelli


Insert seed localization for templates.

Localization seeding for the new localization mechanism for dotnet template engine templates in Visual Studio. Generated based on host file metadata in the templates and the localized strings we have in Visual Studio.
@mkArtakMSFT, could you please route as appropriate? This is for the new localization mechanism which is coming online in 16.3, allowing us to decouple localization from Visual Studio

The goal here is to eventually have all the localization be generated directly from your repos, but this starts to move us in that direction with the current translations statically checked in.
@ryanbrandenburg

This is not blocked any more, as I've heard no concerns regarding this.

@anurse, @mkArtakMSFT
I just updated this PR with the latest translations and refactoring in the repo. Can we get this merged into master before the noon branching?

@phenning please rebase this to release/3.0 branch (which is where all preview 9 changes go) and we'll merge it in there.

I don't have any concerns about this, but I also don't have a lot of context. Seems good to me :).

@phenning please rebase this to release/3.0 branch (which is where all preview 9 changes go) and we'll merge it in there.

Rebased and retargetted.

Thanks @phenning. This is approved so I merged!


Backend should not allow us to create MC app with multiple of same projectid

API for #18241
Backend should not allow us to create a MC app with multiple targets of same projectid

Tested with latest build from master:
Using API UI , create a MCApp by providing 2 targets with the same project Id.
API errors out with following:
``
{
"baseType": "error",
"code": "ServerError",
"message": "duplicate projects in targets c-9gqn9:p-wwh9t",
"status": 500,
"type": "error"
}
We should be using an error code other than 500 in this case.

Tested with latest build from master:
When attempting to create MC app with multiple targets pointing to same projectid , API returns 422 error code as expected.
{
"baseType": "error",
"code": "InvalidBodyContent",
"message": "duplicate projects in targets c-ftgzf:p-gtqnk",
"status": 422,
"type": "error"
}'```


Add edit_environment helper with built-in manual

There is a growing trend for kits to allow the generated environment file to be edited prior to secrets generation or other actions.  I would like to capture this in a helper that opens a vim session split with a read-only copy of the manual on the right side, so that a) users know the options that they can change, b) users don't have to open the web or another shell to see the manual, and c) users learn that you can actually get the manual from genesis.

What if I prefer emacs?

While I know we can do this with vim, it would be great if we could support other editors for non-vimmers.  Just don't know which ones can support opening split files. To get out the door, $EDITOR can be inspected and if its vi|vim|*vim, we enable that feature, and otherwise, tough luck

@jhunt I believe there's a 12-step program for that ;P

for VI: $EDITOR -O <env> <manual>
for emacs: $EDITOR -nw <env>  -f split-window-horizontally <manual> -f other-window

nano can open two files with nano -F file1 file2 but cant support split screen

can't vimmers just <Esc>:!genesis man env?


[extension types] Confusing nullability related error message.

Consider:
void main() {
  print("foo");
}

final a = <N extends ExtensionType>(
  final N n,
) => n.pointer;
//     ^^^^^^^
// Analyzer: The property 'pointer' can't be unconditionally accessed because the receiver can be 'null'.

extension type ExtensionType(int pointer) {}

This program compiles and outputs "foo", but the analyzer reports an error message.
I expected the program to either:

show an error message and fail compilation, or
compile successfully without the analyzer emitting an error message.

This seems to be a bug, presumably in the analyzer.

Good catch, this kind of situation has probably not been explored very well until now! However, I think it can be treated in a way that is based on existing rules and behaviors.
We have the general rule that the interface of a type variable X extends B is the same as the interface of its bound B. Given that extension type members are statically resolved this would imply that there is simply no difference between the behavior of a receiver whose static type is N and a receiver whose static type is the bound ExtensionType:
For an extension type member invocation, it's statically resolved to the same code in the two cases. For an OO dispatched instance member invocation (that is, an invocation of an instance member declared by a class, mixin, enum, etc), the behavior is determined by the run-time type of the representation object.
The use of a type variable does enable some amount of expressive power:
void main() {
  a(ExtensionSubtype(14));
}

final a = <N extends ExtensionType>(
  final N n,
) => print((n as ExtensionType).pointer);

extension type ExtensionType(num pointer) {}

extension type ExtensionSubtype._(int pointer) implements ExtensionType {
  ExtensionSubtype(int i): this._(2 * i);
}

The upcast n as ExtensionType is intended to ensure that n is treated as having the interface that I think it should have, namely that of ExtensionType (so that's just something we'd do now, to get the desired behavior of the analyzer). However, the run-time value of N is int, not num, which means that someExpression as N has a different effect than someExpression as ExtensionType. So we can use this to impose a stronger run-time constraint on the type of the representation object than that which is expressed by the extension type which is used as a bound.
Similarly, the use of ExtensionSubtype at the call site ensures that the representation object actually has that stronger type.
At first I thought that it would simply be a useless exercise to use an extension type as a type parameter bound, but it will do certain things that might not be expressible otherwise! :smile:
With respect to the need to adjust the analyzer (the common front end seems to handle it already), it should be changed such that extension type members can be invoked on a receiver whose static type is a type variable which is bounded by an extension type, even though the receiver type is potentially nullable.

We've seen a number of similar bugs before.
Before extension types, the only members a nullable or potentially nullable type could have were those of Object, and then extension methods could be added later.
A potentially nullable extension type can have more members, those declared by the extension type itself (including its representation variable getter), or inherited from another potentially nullable extension type.
Seems like the analyzer still contains a place where it checks "Is the type non-nullable? If not, you can't access members on it."
What is should be checking is which members the type has, and not use potential nullability to decide that.


Select z-index go up to "delete modal box"

Laravel Version: 5.5
Voyager Version: 1.0.16
PHP Version: 7

Description:
When you try to remove an image from multi-image field (browse view)
if you have in the form also a select you have the field active below the delete modal box

.

Thats true. It was fixed in https://github.com/the-control-group/voyager/pull/2801 and will be released with 1.1


Error message was not printing (Final Attempt 2)

Error message was not printing (Final Attempt 2)
Notes for Reviewers
This PR fixes #7087
Signed commits

[✅] Yes, I signed my commits.

Codecov Report
Patch coverage has no change and project coverage change: -0.05 :warning:

Comparison is base (2cb66e1) 5.73% compared to head (0a7c54e) 5.68%.

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
Additional details and impacted files
@@            Coverage Diff            @@
##           master   #7326      +/-   ##
=========================================
- Coverage    5.73%   5.68%   -0.05%
=========================================
  Files         118     118
  Lines       16300   16433     +133
=========================================
  Hits          934     934
- Misses      15190   15323     +133
  Partials      176     176

Flag
Coverage Δ

gointegrationtests
5.68% <0.00%> (-0.05%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

mesheryctl/internal/cli/root/system/error.go
0.00% <0.00%> (ø)

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.

@Nikhil26112  Let's discuss this on the Meshery Dev call. Please add this as an agenda item in the meeting minutes if you would. :)


Avoid browser autofill to paste anything

This PR prevents the browser autofill to paste anything. See images below some issues we can face by using the browser autofill.
This PR will avoid this kind of issues to happen now on.

Published on 1.1.2


Changes to the plugin.py file to include the plugin remove_jar feature

I added "remove_jar" to plugin.jar to allow users to remove jars from directories when they add files with the add_jar feature.

Thanks for the patch! We're excited to have a new contributor!
A couple notes on testing:
You should  run 'make lint' to ensure that the code adheres to our style.
It's best to test with at least one presto node on a different node from presto-admin.  Usually we write product tests to be able to run this automatically, but it's a bit complicated to set up, so it's fine if you just verify manually.

@nanaessuman Could you please address the comments from @rschlussel ? So we could merge this PR.


SplitView inline pane does not have animation with right placement

Describe the bug
Microsoft Docs sent me to this repo
When <SplitView /> Pane PanePlacement="Right" and DisplayMode="Inline", animation when Pane opens or closes does not work.
Steps to reproduce the bug
Steps to reproduce the behavior:

Create a new UWP project with Blank page
Add following code to the <Grid /> component on this page<StackPanel Orientation="Horizontal" Canvas.ZIndex="10">
    <ToggleButton Content="Toogle Pane" IsChecked="{Binding ElementName=MainView, Path=IsPaneOpen, Mode=TwoWay}" HorizontalAlignment="Left" VerticalAlignment="Top" />
    <ComboBox x:Name="LRBox" HorizontalAlignment="Left" VerticalAlignment="Top" Width="128" SelectedIndex="0">
        <x:String>Right</x:String>
        <x:String>Left</x:String>
    </ComboBox>
</StackPanel>
<SplitView x:Name="MainView" DisplayMode="Inline" OpenPaneLength="256" PanePlacement="{Binding ElementName=LRBox, Path=SelectedValue, Mode=TwoWay}" Margin="0, 32, 0, 0" IsPaneOpen="True" >
    <SplitView.Content>
        <Grid Background="#202020" />
    </SplitView.Content>
    <SplitView.Pane>
        <Grid Background="Green"/>
    </SplitView.Pane>
</SplitView>

Build, Deploy and Run application
Press Toggle Pane button and see the bug

Expected behavior
When Pane on Right open/closed state changes, animation works as intended.
Screenshots
I attached video of a bug, since it could not be shown with screenshots
https://youtu.be/9bNncBjNcJc
Version Info
NuGet package version: [Microsoft.UI.Xaml 2.4.2]

Windows 10 version
Saw the problem?

Insider Build (xxxxx)

May 2020 Update (19041)

November 2019 Update (18363)

May 2019 Update (18362)
Yes

October 2018 Update (17763)

April 2018 Update (17134)

Fall Creators Update (16299)

Creators Update (15063)

Device form factor
Saw the problem?

Desktop
Yes

Xbox
Yes

Surface Hub
Yes

IoT
No

Additional context

This is very strange, since animation for left side placement exists and works. Not ideally, but still works.

I found out that somebody already reported this issue, but it was closed with no resolve.
https://github.com/microsoft/microsoft-ui-xaml/issues/2392
The problem is that <SplitView /> component style just does not have any <VisualTransition /> for <VisualState x:Name="OpenInlineRight" />

Also, <VisualState x:Name="OpenInlineLeft" /> has different structure and made using <VisualState.Setters /> while <VisualState x:Name="OpenInlineRight" />  is made using <Storyboard />
This issue can be fixed by adding with proper contents
<VisualTransition From="OpenInlineRight" To="Closed" />
<VisualTransition From="Closed" To="OpenInlineRight" />

to the <SplitView /> default style.
(note, that I showed them as empty ones, but they of course should have <Storyboard /> inside of them with proper animations)
The only problem that I have is that I can't figure out how to make animation work on the right side of the component and make it slide from the right side (I only managed to enable it sliding on left side and then it jumps quickly to the right side)

If this only requires template changes, then maybe we could fix this before WinUI 3. The template currently exists in WinUI 2 so its possible this is fixable now.

Is there a workaround available to patch this from my uwp application directly?

Is there a workaround available to patch this from my uwp application directly?

@AtosNicoS Seems like, it's either way WinUI team will make a proper <VisualState x:Name="OpenInlineRight" /> or we have to do it ourselves. It should be an easy fix for them, but seems like they just don't care, since almost a year passed since report and a whole 3 issues with same contents (though, they were poorly explained by the reporters) were just closed with no resolution.
Right now, I'm just using a DisplayMode="Overlay", but still, the problem with Inline-Right placement persists.

@LilyStilson Is there a PR yet? Maybe opening a PR would help to speed up the process?

@AtosNicoS Opening PR without forking and any actual changes to code being made? I don't think it'll help, honestly...

A PR with a fix of course.

Implemented <VisualTransition /> for OpenInlineRight state.

Still present, even in WinUI 3. Video demonstrating the issue in WinUI 3 Gallery:
https://github.com/microsoft/microsoft-ui-xaml/assets/42270214/624927a0-742d-4aac-9dca-abf0f5beaadd


New version 9.0.3 doesn't work with Logstash

Does this issue relate to a new feature or an existing bug?

[x] Bug
[ ] New Feature

What is the target framework and operating system? See target frameworks & net standard matrix.

[x] netCore 2.0
[ ] netCore 1.0
[ ] 4.7
[ ] 4.6.x
[ ] 4.5.x

New version of the sink doesn't work with logstash, something changed between 9.0.0 and the actual that is unable to read from logstash. Could it be the formatting?
This is my pipeline I used to read the sink:
input{
  http{
    port => "5045"
    additional_codecs => { "application/json" => "es_bulk" }
}

Version 9.0.3
Please describe the current behavior?

Receive the logs as it was in 9.0.0

This is also not working using net cat:

Setup your netcat:

$ nc -lp 1234

Configure the sink:

{"args": {
   "indexFormat": "mylogs"
   "nodeUris": "http://localhost:1234"
 }
}

Test on a working version I get this:

$ nc -lp 1234
POST /_bulk HTTP/1.1
Accept: application/json
Content-Type: application/json
User-Agent: elasticsearch-net/7.8.1+aed95253ed9d86b6e22107b3b4a6e2496c206cd4 (Microsoft Windows 10.0.19044; .NET Framework 4.8.4614.0; Elasticsearch.Net)
Host: localhost:1234
Content-Length: 2395
Connection: Keep-Alive

{"index":{"_type":"logevent","_index":"mylogs"}}
{"@timestamp":"2023-06-19T11:21:47.5933802+02:00","level":"Information","messageTemplate":"    C:\\Users\\OneDrive\\Documents\\Application\\Plugins","message":"    C:\\Users\\OneDrive\\Documents\\Application\\Plugins","fields":{"ActivityId":"00000000-0000-0000-0000-000000000000","TraceSource":"Application.exe","TraceEventType":"Information","TraceEventId":0,"SourceContext":"SerilogTraceListener.SerilogTraceListener","Context":"
[...]

Test on a non working version I get this:

$ nc -lp 1234
GET / HTTP/1.1
Accept: application/json
Content-Type: application/json
User-Agent: elasticsearch-net/7.17.5+34f1b0b42ae4e0227fb1ad9ebeb7ae3406a998ec (Microsoft Windows 10.0.19044; .NET Framework 4.8.4614.0; Elasticsearch.Net)
x-elastic-client-meta: es=7.17.5,net=4.8.0,t=7.17.5,a=1,wr=4.8.0
Host: localhost:1234
Connection: Keep-Alive

$

Notice it is empty on step 4 and bring back to the console.


Mobile analytics bug fix

Description

Fix bugs from mibile analytics project found by unit test
Motivation and Context

fix bugs in CustomEvent
fix bug in DeliveryClient
add virtual key word to functions of SQLiteEventStore which are inherited from IEventStore
Testing

Screenshots (if appropriate)
Types of changes

[X] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)

Checklist

[X] My code follows the code style of this project
[ ] My change requires a change to the documentation
[ ] I have updated the documentation accordingly
[X] I have read the README document
[X} I have added tests to cover my changes
[ ] All new and existing tests passed

License

[X] I confirm that this pull request can be released under the Apache 2 license

The change looks good to me, but the tests failed when I ran.  Let me re-run and make sure it was not a transient failure.

LGTM.

Could you squash the changes?  I am not sure why we have a commit in this PR with message Revert "fix bugs in dynamodb integration test"

Done! squash the comments and correct the commit message.
@sstevenkang

@sunchunqiang  Could you please clarify the reason for "add virtual key word to functions of SQLiteEventStore which are inherited from IEventStore"? Interface implementations don't require the virtual keyword (they can be either virtual or not depending on what is needed).

@matteo-prosperi   the reason change the methods to virtual is for unit test  so that we can mock the method when testing codes using this class


add test cases for prayer times and its settings

resolves #89

:tada: This PR is included in version 1.4.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Rewrite error-trace view with VSCode Webview UI toolkit

https://code.visualstudio.com/blogs/2021/10/11/webview-ui-toolkit
https://github.com/tlaplus/vscode-tlaplus/issues/260
https://github.com/tlaplus/vscode-tlaplus/issues/259
https://github.com/tlaplus/vscode-tlaplus/issues/258
https://github.com/tlaplus/vscode-tlaplus/issues/257
https://github.com/tlaplus/vscode-tlaplus/issues/256
https://github.com/tlaplus/vscode-tlaplus/issues/255
https://github.com/tlaplus/vscode-tlaplus/issues/250
https://github.com/tlaplus/vscode-tlaplus/issues/239
https://github.com/tlaplus/vscode-tlaplus/issues/229
https://github.com/tlaplus/vscode-tlaplus/issues/215
https://github.com/tlaplus/vscode-tlaplus/issues/164

Hi, I'm available to work on this one.
My proposal would be to start migrating the check-result-view "as it is" to the webview toolkit component library following the "default samples" (https://github.com/microsoft/vscode-webview-ui-toolkit-samples). This is replacing current ui elements with equivalent webui components and moving the current ui code to typescript.
After that the ui design could be changed to address the listed issues.

@afonsonf It would be beneficial to determine the scalability of the webview-ui-toolkit early in the process. Currently, the HTML-based viewer tends to have slow rendering times when dealing with extensive traces (comprising hundreds of states) and intricate states (involving dozens of variables). Additionally, I recall implementing a viewport feature in the past for the older Toolbox to manage lengthy traces.

Created here some specs to stress test the extension: https://github.com/afonsonf/vscode-tlaplus-stress-specs
In my pc, using the current version of the extension in codespaces, I can run the BigState spec until around the counter 40 and the BigTrace until around the counter 500, I would use those values as the base to achieve in the refactoring
Current state of the refactoring can be checked in the following branch (Buttons, run status, states and coveragestats done): https://github.com/afonsonf/vscode-tlaplus/tree/refactor-webview-using-vscode-toolkit
In my current implementation I made the webview stateless, does not require the state to be sent by the extension as a message, this means all the html is generated in the extension side, and not "filled" in the webview side, but still need to do some tests to check if it is better or not, if not those classes can easily be reused to "fill" the html in the webview side


Filter first and last log files on timestamp, and don't quit reading …

…too early
@freva please review.

Say three log files contains three entries each, logged at times 1, 2, 3; 4, 5, 6; and 7, 8, 9. Their modification timestamps are 3, 6, 9.
Assume we ask for everything between 5-delta and 5+delta. Previously, the second file would not be considered, because 6 isAfter 5+delta, even though it contains two entries of interest.
This PR fixes that.
This PR also filters out entries in the first and last log files, ensuring the given time window is honoured precisely.

Lots of pointless information in that example, but you get it :p

Ah yes, I can't read :man_facepalming:


Modify TagBot tag prefix for subdir packages

We have just registered LibTrixi.jl, which is part of libtrixi, a library for using Trixi.jl from C/C++/Fortran. LibTrixi.jl is located in a subdirectory of the main libtrixi repo. For consistency reasons, we would like to tag the entire repo with the version that is also registered as a Julia package.
For this reason, we have run @JuliaRegistrator register subdir=LibTrixi.jl, but configured TagBot to run for the repository root (otherwise, the created tags would be LibTrixi.jl-v0.1.0 instead of v0.1.0).
However, it seems like TagBot outsmarted us and checked the contents (tree hash) of the LibTrixi.jl directory against the tree hash of the repo root, and refused to tag a new version, see here:
Warning: Tree SHA of commit from registry PR does not match
Warning: No matching commit was found for version v0.1.0 (cf98b69f4adf67976d77e7c93642c763f9288c3b)
No new versions to release

Thus, it seems all our attempts to trick TagBot have failed, thus my questions are whether a) there is a mechanism to achieve what we want (i.e., run TagBot on the subdir but allow to create a tag without a subdir prefix), and if not, whether b) it would be an option to add this feature.
Our only alternative would be, as it seems right now, to run TagBot only on the subdir but then manually add another tag and release, or to use a third-party tool entirely (which I would really like to avoid, since I've come to love the simplicity and robustness of TagBot, as well as its pretty summaries of merged PRs and closed issues).
cc @bgeihe

Error while trying to register: Register Failed
@sloede, it looks like you are not a publicly listed member/owner in the parent organization (JuliaRegistries).
If you are a member/owner, you will need to change your membership to public. See GitHub Help


There is no option "Attached Storage Accounts" in the command list when executing command from command palette

OS: All
Azure Resource Extension Build Version: 20220505.12 (unified)
Azure Storage Extension Build Version: 20220505.2 (unified)
Regression: Not a regression
Repro Steps:

F1 -> Azure Storage: Create Queue -> Select a subscription.
Check whether there is an option "Attached Storage Accounts" in the command list.

Expect:
There is an option "Attached Storage Accounts" in the command list.

Actual:

There is no option "Attached Storage Accounts" in the command list.

Can not to execute any commands from command palette for attached storage accounts.

We need to make changes in resource groups to enable this.


don't retransmit Initial packets after receiving a Retry

This is not a trivial problem to solve. When we retransmit an Initial packet (and we do that quickly, to reduce handshake latency), multiple things can happen:

the first one can actually turn out to be lost
the second one can get lost
both can arrive and get a reply

We need to handle all cases correctly:

Could be solved by just adding a fake ACK frame to the Retry packet sent by the server.
Is more tricky. We remove the first one from our packet history when sending the retransmission, so just adding a fake ACK frame to the Retry packet won't remove that packet from the history. It would get retransmitted indefinitely. That's why I had to introduce the SentPacketHandler.ReceivedRetryPacket that cancels all Initial retransmissions immediately.
Is a race condition in the protocol, see https://github.com/quicwg/base-drafts/issues/1085.

Codecov Report

Merging #1170 into master will decrease coverage by 0.01%.
The diff coverage is 90%.

@@            Coverage Diff             @@
##           master    #1170      +/-   ##
==========================================
- Coverage   91.09%   91.08%   -0.01%
==========================================
  Files         114      114
  Lines        7712     7724      +12
==========================================
+ Hits         7025     7035      +10
- Misses        460      461       +1
- Partials      227      228       +1

Impacted Files
Coverage Δ

internal/ackhandler/packet.go
100% <ø> (ø)
:arrow_up:

internal/ackhandler/sent_packet_handler.go
98.41% <100%> (+0.05%)
:arrow_up:

session.go
80.1% <50%> (-0.21%)
:arrow_down:

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 d71850e...69585e3. Read the comment docs.


model_function on edit page?

Bug report
Summary:
Since I want my data to be encrypted in my database, how can I get this to be done using a model_function? I've manually encrypted and attempting to show the decrypted result on my edit page but to no avail?
What I'm trying to do:
Ability to encrypt my data when creating & then decrypt on the edit/view display screen
Controller:
$this->crud->addField([
    'name' => 'password',
    'label' => 'Password',
    'model_function' => 'decryptPassword'
]);

Model:
public function decryptPassword() {
    return decrypt($this->password);
}

Labelled as Ask-it-On-Stack-Overflow clarifies that this simple feature isn't supported out of the box? bamboozled.

You seem to want to encrypt and decrypt data going into and then out of the database; you have various options here:

Find a package that does this, perhaps application wide (they do exist)
Use mutators and accessors to achieve the goal (ps. most of the packages from above kind of do this magically for you)

IIRC model_functions are for columns only.
The feature (i.e. encrypting/decrypting data going into and out of the DB) is not automatically provided by Backpack and you're probably trying to do it the wrong way.
If someone labels an issue as "ask it on stack overflow" it usually means that they do not consider it a "bug", "feature request", "enhancement" or a "PR".
This is not a support forum - for support, please visit us on our gitter channel, use stack overflow (and we do have a channel on Laracast's slack).

@InkedCurtis - I think your best option is using Accessors and Mutators in your Eloquent Model. In my opinion, that's exactly what they're for, when you want some operations before/after they're stored in the db, or before/after your read them from the DB. The fact that this logic would be in your Model (not CrudController) will also help you reuse it across your app (not only in the admin panel). Backpack totally supports accessors and mutators, so you should have zero problems with that. Just use that field/column as you normally would.
Hope it helps. Cheers!
PS. That being said, yup, not a Backpack bug/feature.

I've just faced exact same issue except using accessors and mutators wasn't a solution in my use case.
Here's how I managed to use custom function from your model:
$this->crud->addFields([
  [
    'name' => 'order_number',
    'label' => 'Order Number',
    'type' => 'static',
    'value' => $this->crud->getEntry($this->request->order)->getNumber(),
    'tab' => self::TAB_GENERAL,
  ],
]);

This is the pretty exceptional case (it is static - custom field type), for sure it has totally no sense with normal input.
Hopefully, it will help someone in the future.

Thanks for sharing your solution @adriandmitroca !


Stabilized Remix Vite plugin

Bumped remix version to 2.8.1 and stabilized the vite plugin.
Remapped the plugin order because RDT has to be before Remix.
There seem to be issues with the remix-pwa plugin though, the entry worker can't fetch properly it seems

🚀

.patch


Adding Requested event semantics to vocabulary

By working with the Spec and current vocabulary it gets really difficult to integrate tools based on the events that we have defined.
One thing that becomes quite clear when integrating different projects is that we don't have events to express when things are requested, which is a step before other things can happen.
The most simple example is PipelineRunStarted event.. For that event to happen, someone needs to trigger a pipeline, at that point the pipeline engine can easily emit a PipelineRunStarted event. What is missing here, is the integration point for when we want to start pipelines from outside the pipeline engine (one of the main integration use cases) , hence adding events like PipelineRunRequested will enable in an event-driven way a different project to accept requests for actions. How these requests are mapped to the different tools is out of the scope of the vocabulary/spec.
@afrittoli @m-linner-ericsson @e-backmark-ericsson Folks.. I think that we need this kinda urgently to make sure that the integrations that we are building make sense. Can the group discuss this in the next meeting?

To me, an event like PipelineRunRequested (or maybe PipelineRunTriggered) could be added, which would mean that a pipeline execution has been put in a queue for execution. It sounds to me that what you're after is not really a queuing event, but an event that a pipeline executor would listen to to trigger a pipeline execution. I'd say that a pipeline execution could be triggered by multiple different events. Very common would be the source (created/reviewed/merged) events, but also the artifact published and service deployed events for example.
We can discuss this on the vocabulary meeting later today.

@e-backmark-ericsson did you manage to discuss this with the group? unfortunately, I couldn't join last week.
Is there any chance for us to do a quick discussion on this ad-hoc from that bi-weekly meeting?

We have a PipelineRunQueued event already, which means that a PipelineRun has been requested but it did not start executed yet - it may be waiting on scheduling or in general resource availability.
Note that this event is generated by the pipeline orchestration engine, not by the system that would like the pipeline run to be executed.
We discussed in the past about declarative vs. imperative events (see my comment in https://github.com/cdfoundation/sig-events/issues/107#issuecomment-1026728705 also) and my understanding is that we settled for declarative events, where events are sent by a system to describe something that happens, as opposed to imperative events where a system sends an event to another one asking for something to be done.
With declarative events, if a system completes task1, it will send an event. Any system may react to that event by performing its own task2.

Looking at the CloudEvents spec https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#terminology

An "event" is a data record expressing an occurrence and its context. ...

and

An "occurrence" is the capture of a statement of fact during the operation of a software system. This might occur because of a signal raised by the system or a signal being observed by the system, because of a state change, because of a timer elapsing, or any other noteworthy activity. ...

To me  a Requested sounds like a command and would not fit with description here. It would probably also need a receiver or should all pipelines trigger on it?
My main concern with adding such events is that we enable to create a more coupled system and to me the point of events is to create a decouple system.

I agree to what both Andrea and Mattias wrote. @salaboy , are we misinterpreting your need?

@salaboy , based on the discussion we just had on the meetup. Could you elaborate on the use case a bit more to clarify what is missing from a "queued" event, that we already have a bunch of in the specification? I do see that it would be beneficial that both Queued, Started and Finished events are sent from the same source, but to me that should not be mandatory, as long as the events sent are descriptive rather than prescriptive.

When trying to understand your use case, @salaboy , I drew this picture. Does it somewhat correspond to what you're after? If so, is it the "RequestDeployment" event you're missing?

@salaboy should we close this now, or is this something you're still interested into?

Closing this issue, since no reply on it in a long time. If it is still relevant, please open a new issue about it.


problem runserver

I saw in os file you have the problem of No module named django.core.management, after that you modify the manage.py file, what did you do in this modification?

change the she bang line in manage.py :http://stackoverflow.com/questions/6049933/django-import-error-no-module-named-core-management

I tried change the she bang line in manage.py, and reinstall django, they both didn't work. The TA also has no idea about this, finally I delete the virtualenv_ file and create a new virtual environment with the same name, then install django under the virtual environment I created, it works. If you guys have the same problem, don't waste time on this, just re-create a virtual environment

So, is it not working again?

no, I just put it here let other people know this
On Tue, Mar 3, 2015 at 6:46 PM, Kevin De Asis<EMAIL_ADDRESS>wrote:

So, is it not working again?
—
Reply to this email directly or view it on GitHub
https://github.com/diego04/cmput410-project/issues/2#issuecomment-77081774
.

Ok great thanks.


added a public initializer for ExclusivityManager

Codecov Report

Merging #4 into master will increase coverage by <.01%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##           master       #4      +/-   ##
==========================================
+ Coverage   97.11%   97.11%   +<.01%
==========================================
  Files          16       16
  Lines         623      624       +1
==========================================
+ Hits          605      606       +1
  Misses         18       18

Flag
Coverage Δ

#ios
97.11% <100%> (ø)
:arrow_up:

#macos
97.11% <100%> (ø)
:arrow_up:

#tvos
97.11% <100%> (ø)
:arrow_up:

Impacted Files
Coverage Δ

Sources/Conditions/ExclusivityManager.swift
100% <100%> (ø)
:arrow_up:

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 08393b2...832dad3. Read the comment docs.


Multiple Issues resolved!

This Pull Request resolves Issue #9 #1
Description:
Added reverse string program using c language

wrong output for issue #9

Are there any updates here or should we close the PR and label it as spam?


ODSP driver: special handling for data center fall over / read-only farm

SPO can occasionally return 403 for r/w operations on document when there is a fail over to another data center.
The intention here is that data is read-only for a while, while fail over happens, to preserve integrity of the data.
While the process can take arbitrary time, we observe that this happens often in SPDF where new features are tested, and tenant is in this state for very short amount of time.
So it's proposed that SPO driver would understand that situation and would retry couple times with some exponential back-off logic and bail out after some number of retries. When it actually fails, it should return unique error code such that host app can reason about it and show reasonable message to user.
Client can differentiate such state vs. other 403 cases by looking at returned header “X-SP-SERVERSTATE : ReadOnly=1”
Jatin - it would be great to implement this soonish, maybe even port it to 0.46 if change is relatively safe.
I think it should be generic enough (and impact all fetches), but file creation (posting initial snapshot) is the one that is the most impacted. If it does not fit in August, it should be moved to September
Please work with Ben (Teams) & Edmund Wong (SPO) if you need help here.

I will take a look @vladsud . Will try to squeeze in August itself.

The error that we get is in the body:
 { "code": "accessDenied", "innerError": { "code": "serviceReadOnly" }, "message": "Database Is Read Only" }


Don't add space before new function on top of cell

Consider ipynb file.
# some code here, `.py` cell

# %% change cell

## Markdown cell

# %% change cell

# comment describing a function
def foo():
    pass

Ruff will add two new line between the comment and foo function.

Here is the .ipynb example, look at the new \n before def foo3,
before
{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Hello"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "def foo():\n",
    "    return bar"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "def foo2():\n",
    "    return bar"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# comment\n",
    "def foo3():\n",
    "    return bar"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "language_info": {
   "name": "python"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}

after
{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Hello"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "def foo():\n",
    "    return bar"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "def foo2():\n",
    "    return bar"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# comment\n",
    "\n",
    "\n",
    "def foo3():\n",
    "    return bar"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "language_info": {
   "name": "python"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}

My setting:
pre-commit run --all-files
  # autofix using ruff
  - repo: https://github.com/astral-sh/ruff-pre-commit
    rev: v0.1.15
    hooks:
      # Run the linter.
      - id: ruff
      # Run the formatter.
      - id: ruff-format

[tool.ruff]
fix = true
line-length = 147
indent-width = 4
select = [
    "E",  # pycodestyle errors
    "W",  # pycodestyle warnings
    "F",  # pyflakes
    "I",  # isort
    "C",  # flake8-comprehensions
    "B",  # flake8-bugbear
]
ignore = [
    "B90",  # support <3.10
    "E402",  # module level import not at top of file
    "E741",  # ambiguous variable name
    "F403",  # 'from module import *' used; unable to detect undefined names
    "C901",  # function is too complex (TEMPORARILY IGNORE)
    "B006",  # use mutable data structures for argument defaults (TEMPORARILY IGNORE)
]
extend-include = ["*.ipynb"]

[tool.ruff.format]
quote-style = "single"
indent-style = "space"
line-ending = "auto"

The difference that I see comparing before and after is that there are two blank lines between the comment and foo3 where there was no blank line before.
This looks incorrect to me. Leading comments of a function should not be separated by blank lines. @dhruvmanila do you have an idea why this is happening?

Hmm, I don't know why, but this bug suddenly disappear. I can;t reproduce again (even though I was able to reproduce it multiple times before reporting the issue here).
Maybe should close it right now?

Oh no, I'm sure there's a bug somewhere... I'll close the issue for now but please comment here if you're able to reproduce or open a new issue if you face the problem again

Okay, after further testing, it sometimes appears (yeah it back) and sometimes disappear. What happen exactly, I still don't know. I can manually fix the bug, and ruff did not cause the bug again. I'm truly confused here. I will give further report if I found it again.
I'm only using ruff and nbqa. I will remove nbqa and check from there.

Okay. Let's keep this open. Maybe @dhruvmanila has an idea of what's happening. He's our notebook expert.

Added context.
Here is the full pre-commit
default_stages: [commit]

repos:
  # check yaml and end of file fixer
  - repo: https://github.com/pre-commit/pre-commit-hooks
    rev: v4.4.0
    hooks:
      - id: check-yaml
      - id: end-of-file-fixer
        exclude: LICENSE

  # nbqa autopep8 and ruff
  - repo: https://github.com/nbQA-dev/nbQA
    rev: 1.7.1
    hooks:
    - id: nbqa-ruff
      additional_dependencies: [ruff==0.1.15]

  # autofix using ruff
  - repo: https://github.com/astral-sh/ruff-pre-commit
    rev: v0.1.15
    hooks:
      # Run the linter.
      - id: ruff
      # Run the formatter.
      - id: ruff-format

Currently working notebook:
{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Hello"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "def foo(bar):\n",
    "    return bar"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "def foo2(bar):\n",
    "    return bar"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "lines_to_next_cell": 2
   },
   "outputs": [],
   "source": [
    "# comment\n",
    "def foo3(bar):\n",
    "    return bar"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# comment\n",
    "def foo3(bar):\n",
    "    return bar"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "jupytext": {
   "formats": "notebooks//ipynb,scripts//py:percent",
   "main_language": "python"
  },
  "language_info": {
   "name": "python"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}

ruff format .: no bug
pre-commit run --all-files: bug

If I did not use nbqa on pre-commit:
ruff format .: fixing all
pre-commit run --all-files: ruff didn't check any notebooks (weird)

Solution: Change pre-commit to also target notebook.
  # autofix using ruff
  - repo: https://github.com/astral-sh/ruff-pre-commit
    # Ruff version.
    rev: v0.1.15
    hooks:
      # Run the linter.
      - id: ruff
        types_or: [ python, pyi, jupyter ]
        args: [ --fix ]
      # Run the formatter.
      - id: ruff-format
        types_or: [ python, pyi, jupyter ]

It's weird that it requires types_or: [ python, pyi, jupyter ] when I already set it on toml extend-include = ["*.ipynb"]
I will close this issue. Maybe this is due to nbqa and ruff interaction.

Hey, thanks for providing a lot of context on the issue.
So, the way pre-commit works is by invoking the command on the file directly i.e., pre-commit is responsible for finding all the configured files (types_or) and pass it to Ruff. Now, if the Ruff command is invoked directly with the file path, it won't try to find some other files (.ipynb in your case) which is why you need to add the jupyter for pre-commit to pass the notebook files to Ruff.
For example, suppose you have test.py, test.ipynb in the current folder. Without the jupyter entry in pre-commit, it'll invoke Ruff only with test.py:
$ ruff check test.py

So, you need to add the jupyter entry which will make pre-commit include test.ipynb as well:
$ ruff check test.py test.ipynb

Now, I'm not exactly sure about the semantics of how pre-commit passes the file - does it pass them all at once or does it pass them one at a time? But, nevertheless you'll need to configure pre-commit for it to find notebook files.
That said, you don't necessarily need to update your pyproject.toml file if you're using Ruff only through pre-commit because it takes care of finding all the files. But, if you use Ruff from the CLI / editor with notebooks, then you need to update your pyproject.toml file as well.

I had the same issue and it was solved by your comment at astral-sh/ruff#54 (comment).
Maybe not the right place, for my question, but if what you write here about pre-commit is true.
Why does it work with nbQA, since there I would also not provide the types_or parameter or the pass_filenames?
If you are right and pre-commit decieds what files get invoke noQA shouldn`t work with the parameter too.


[Bugs] Cannot run on Windows

Currently lunox can't run on windows. I don't have windows to test it, but my friend try to run and fail 😞

it can run on windows if  run the script directly
for some reason it not using node to run the script instead rely on windows open file extension default configuration

@damarsimple is it can run command lunox watch? Or node node_modules\lunox\bin\lunox.cjs watch
I test it before and errors happen. I think it is because difference between windows and unix system path separator.
For example
// in unix or unix like system
import("../somepath/module.js")
// in windows it should be
import("..\\somepath\\module.js")

It should be easy for fixing this with path.sep, but I don't use windows to test it :disappointed:

@axmad386  i digging it little bit more i managed to run it with node using yarn lunox / npm run lunox by manually changing file
node_modules/.bin/lunox.cmd
from
@"%~dp0\..\lunox\bin\lunox.cjs"   %*
to
@IF EXIST "%~dp0\node.exe" (   "%~dp0\node.exe"  "%~dp0\..\lunox\bin\lunox.cjs" %* ) ELSE (   @SETLOCAL   @SET PATHEXT=%PATHEXT:;.JS;=;%   node  "%~dp0\..\lunox\bin\lunox.cjs" %* )
i dont think its path.sep issue tbh.
more of binary generation ? or the stuff that responsible for generating the cmd file
the default for other package is using nodejs to run the script while yours not.

Wow. Thanks @damarsimple for your experiments. But how to compile that binnary. For now I using rollup to compile lunox code base. PR is welcome :smiley:

I managed to make it run on windows and linux using my fork
lunox-framework : https://github.com/damarsimple/lunox-framework
lunox-repos : https://github.com/damarsimple/my-lunox-app
Temporary Fix :

Remove clean and fix on the build command (rm command not exists on cmd?)

Steps :

Adding bin folder to repo (remove /bin from gitignore)
Create lunox bin file in bin folder
set the bin from "./bin/lunox.cjs" to "./bin/lunox." in package.json
set rollup output from "./bin/lunox.cjs" to "./bin/lunox.js"
remove type  : module  from package.json (nodejs cant recognize /bin/lunox file extension if type set to module)
add prepare script to package.json

By doing steps above nodejs managed to create runnable binary script on windows
I believe this is due to wrong package.json configuration? resulting to wrong binary script for windows
I'm not sure tbh because i never make nodejs package 😂.

@damarsimple I am not sure, but type: module should not be deleted because of lunox codebase using esm syntax. I think it will break many things when we run lunox watch or lunox prod in sekeleton app.
Can you submit PR? I will check it when I got access to windows system.

@axmad386  done sir you can check it on https://github.com/kodepandai/lunox-framework/pull/7

@axmad386 done sir you can check it on kodepandai/lunox-framework#7

OK, I think better we discuss on your PR :smiley:

fixed on https://github.com/kodepandai/lunox-framework/pull/7


introduction of ConvexPolygon and ConvexPolygonMeshBuilder

Objective

As discussed on Discord, implement a ConvexPolygon 2D math primitive and associated mesh builder.
The original goal was to have a mesh builder for the simplest (i.e. convex) polygons.

Solution

The ConvexPolygon is created from its vertices.
The convexity of the polygon is checked when created via new() by verifying that the winding order of all the triangles formed with adjacent vertices is the same.
The ConvexPolygonMeshBuilder uses an anchor vertex and goes through every adjacent pair of vertices in the polygon to form triangles that fill up the polygon.

Testing

Tested locally with my own simple ConvexPolygonMeshBuilder usage.

Implemented your suggestions @chompaa @Jondolf. Thanks for your reviews!

GitHub says that the branch has conflicts, but when rebasing locally I got not conflicts. Shall I still rebase and force push?

Yeah, rebase and force push. I can't see any merge conflicts here in the Github UI either.

Looks good! I wonder if we'll also want a Boxed version like BoxedPolygon 🤔

Possibly yes! I just wanted to start small.


maxBounds

It'd be beneficial to set the maxBounds to prevent users from panning the map out of view.
const extent = [
  [-3585, -2559],
  [4607, 4609]
];

Good idea, thank you.
Change done in scope of 3dbb596252100b20d320fb32be96dac3fa703f7c. I set more permissive bounds, hope that works for you.


Add heading for renderable values

This is inspired by the changes that @bennypowers suggested in #935 ... This is basically the same thing with some changes that seemed like too fiddly to work through in GH suggestions.

Ping @justinfagnani @sorvell on this small change.


Unkown file format for specific VSND_C file

I have a bunch of VSND_C files (Dota2 sounds), the majority gets played without a problem but some files give me errors.
https://i.imgur.com/eMD8JKE.png - broo_rival_09.vsnd_c  thorws a "Unknown file format." error.
I'm not sure how to approach this since most of the files get played without a problem.
Attached is a zip with a working and a failing sound.
Sounds.zip

That file format is not actually supported (probably some custom archive format). It may sometimes work because MP3 detector does not require a valid MP3 frame to start at the beginning of the file or stream, but scans the first 1000 bytes for a frame (to work with MP3 streams which start giving you bytes from a random position, not from the beginning of a frame).

Ok, that makes sense. They are extracted from the dota 2 game files, the majority is playable but i was just curious why the same format would behave differently.

Closing as the mystery is resolved and there is no point to add support for the specific format.


Add a new --range argument on cargo install to accept semver ranges

Discussion started in #3321
By mistake, the cargo install --vers takes a semver range instead of a precise version. This behaviour is now deprecated and issues a warning, however there are legitimate use cases for installing a binary using a semver range.
My personal use case is for mdBook. A lot of projects have set up automatic deployment of their rendered books through CI. The problem is that if they install the latest version, their deployment might break when we release a "breaking version". So they have to pin the installed version in their CI script, requiring manual intervention every time we release a patch version. The ideal solution would be to allow a binary specifying a semver range so that the CI script can install the latest compatible version, only requiring manual update when we release a breaking version.
@alexcrichton proposes to add the --range argument on cargo install to specify a semver range and keeping the --vers argument to specify a strict version.
If this is a desired feature, I would be willing to try and make a PR for this. 😊

Hm, could we use a singe --vers flag, but allow for ~1.2.3 constraints? That is, interpret 0.1.2 as a precise version, but continue to parse all other VersionReq syntaxes?

@matklad that's a possibility, yeah, but it runs the risk of being backwards from Cargo.toml and possibly confusing :(

I'd say that --vers "^1.2.3" is more obvious then --range "1.2.3", and I don't think this'll cause a lot of confusion.  For the --vers "1.2.3" flavor, it works exactly as documented, and is the same under both proposals, so the amount of the confusion is the same. And the --vers "~1.2.3" flavor.
As you may have noticed, I usually want to avoid adding separate command line flags, if possible. Way too often I need | grep or | less to read --help of various unix utilities :(

Yeah that makes sense to me. ok, I'm convinced!

Ok, the only problem is that I am not 100% sure that there isn't some nasty syntactic ambiguity between version and range. Let's ask @steveklabnik about this!
@steveklabnik, we want to interpret stuff like 1.2.3 as a precise sevantic version, and stuff like ^1.2.3 as a SemverRange. Will the following algorithm work without surprises?

If input is empty, return error.
look at the first character, if it is among <, >, =, ^, ~, parse input as range (this may return error)
if the first character is not <, >, =, ^, ~, parse input as version.

What about:

Parse input as a semver version

If successful, match exactly that
If failure, parse as a semver range

If successful, match that
If failure print out that error message

@alexcrichton I think this variant can lead to surprises: --vers "0.1" will be parsed as range, which is not super obvious if you don't know that in rust versions have three components.

Ah yeah that's a very good point! In that case the steps you proposed above sound pretty good to me

Yeah, I think we in general need to be wary of patterns like "try A, if that fails, fallback to B", because then fixing a bug in A is a backwards incompatible change (this is exactly the problem with the algorithm for infering binary paths)!

I think this variant can lead to surprises: --vers "0.1" will be parsed as range

So if I understand correctly, this should result in a warning (or error) because it would be parsed as a precise version, right?

Yeah, this should say something like "Invalid semantic version string 0.1". If we want to get fancy with error messages, we can then try to parse this as range, and if that succeeds add "if you want to specify semver range, add qualifier explicitelly, like ^0.1?"

Ok, I think I understand everything that needs to happen now. I will try to implement this and issue a PR when I'm done. :)

The PR has been merged, so I'm going to close this issue :)