Set vectorSize back to 4 for non-divisible by 4 dimensions

For issue #10003, the WorkgroupSpecializationPass nicely implements combination codegen of fastpath and the slowpath. But the tile size is still set incorrectly, this causes load stores on fastpath are still not vectorized.
The example given in the PR has a tensor of size 102401. TileAndDistributeToWorkgroups sets the tile size to <tile_sizes = [[64]]>. However, it should be 256, because the inner loop is unrolled with 4, and the 4 loads/stores are vectorized. See the generated ir below after this pass.
scf.for %arg0 = blockIdx.x to 102401 step blockDim.x  {
...
	linalg.generic {indexing_maps = [affine_map<(d0) -> (d0)>, affine_map<(d0) -> (d0)>, affine_map<(d0) -> (d0)>], iterator_types = ["parallel"]} ins(%6, %7 : tensor<?xf32>, tensor<?xf32>) outs(%8 : tensor<?xf32>)
	attrs =  {lowering_config = #iree_codegen.lowering_config<tile_sizes = [[64]]>} ...
}

This leds load/store are fastpath do not get vectorized, see vector<1xf32>.
if(fastpath) {
    %7 = affine.apply #map3(%threadIdx.x)[%blockIdx]
    %8 = vector.transfer_read %0[%7], %cst {in_bounds = [true]} : memref<102401xf32>, vector<1xf32>
    ...
} else {
	//slowpath
}

This assumes that fastpath+slowpath is implemented. Even if loop trip count is not divisable by 4, it still sets vectorSize to 4. This helps generating correct tile size, see tile_sizes = [[256]] in code below.
scf.for %arg0 = blockIdx.x to 102401 step blockDim.x  {
        %9 = linalg.generic {indexing_maps = [affine_map<(d0) -> (d0)>, affine_map<(d0) -> (d0)>, affine_map<(d0) -> (d0)>], iterator_types = ["parallel"]} ins(%6, %7 : tensor<?xf32>, tensor<?xf32>) outs(%8 : tensor<?xf32>)
	attrs =  {lowering_config = #iree_codegen.lowering_config<tile_sizes = [[256]]>} ...
}

Setting tile size correctly helps to vectorize load/store, see vector<4xf32>.
 if(fastpath) {
    %7 = affine.apply #map3(%threadIdx.x)[%blockIdx]
    %8 = vector.transfer_read %0[%7], %cst {in_bounds = [true]} : memref<102401xf32>, vector<4xf32>
    ...
} else {
	//slowpath
}

Just to clarify the PR message, TileAndDistributeToWorkgroups does not set the tile sizes. The tile sizes are set in KernelConfig.cpp. It might look that way if you do dump-ir-after-all but if you do dump-ir-before-all you can see that these are decided before TileAndDistributeToWorkgroups.

I fall victim to after-all :) I can see now, LLVMGPULowerExecutableTargetPass calls KernelConfig.cpp, and it's set in there. Thanks for pointing that out!
My fix is also in KernelConfig.cpp I am wondering what do you think about it.

I fall victim to after-all :) I can see now, LLVMGPULowerExecutableTargetPass calls KernelConfig.cpp, and it's set in there. Thanks for pointing that out! My fix is also in KernelConfig.cpp I am wondering what do you think about it.

I have no opinions on it. It seems like the right place to me...

I fall victim to after-all :) I can see now, LLVMGPULowerExecutableTargetPass calls KernelConfig.cpp, and it's set in there. Thanks for pointing that out! My fix is also in KernelConfig.cpp I am wondering what do you think about it.

I have no opinions on it. It seems like the right place to me...

+1 this is the right solution.

No improved or regressed benchmarks

Isn't it interesting that enabling fastpath did not give any speedup? Maybe if the all of the ld/st queues are sufficiently full and coalesced properly, generating vector ld/st doesn't have much advantage and or the advantage is negligible.
But generating a vector load/store is really painful. For example:

Increases the number of registers used. This might cause slowdown if there is no space in the register file.
Coarse the work for a thread, iree might launch fewer thread blocks. This can cause workload imbalance among thread blocks, it is kind of "tail effect" [1].
Data must be aligned. I don't know how iree always knows this and don't know what it does if it's not aligned.

Maybe we don't always really need the combination of fastpath + slowpath for a kernels that have enough load/store.
(my 2 cents )
[1] https://developer.nvidia.com/blog/cuda-pro-tip-minimize-the-tail-effect/

No improved or regressed benchmarks

Isn't it interesting that enabling fastpath did not give any speedup? Maybe if the all of the ld/st queues are sufficiently full and coalesced properly, generating vector ld/st doesn't have much advantage and or the advantage is negligible.
But generating a vector load/store is really painful. For example:

Increases the number of registers used. This might cause slowdown if there is no space in the register file.
Coarse the work for a thread, iree might launch fewer thread blocks. This can cause workload imbalance among thread blocks, it is kind of "tail effect" [1].
Data must be aligned. I don't know how iree always knows this and don't know what it does if it's not aligned.

Maybe we don't always really need the combination of fastpath + slowpath for a kernels that have enough load/store. (my 2 cents )
[1] https://developer.nvidia.com/blog/cuda-pro-tip-minimize-the-tail-effect/

I wasn’t expecting any speedup as we have only fee benchmarks and unaligned elementwise are fairly rare. The goal here is really the generalize the compiler and avoid performance cliff. Not being able to vectorize is usually bad and generates bad code. If we really want to prove that this improved performance we would need to try on some micro-benchmarks. This could he an interesting exercise but may not be super high priority for the moment.


Example links on versioned website docs link to master

This is about:

[ ] A typo
[x] Innaccurate/misleading documentation (e.g. technically incorrect advice)
[ ] Undocumented code
[ ] Outdated documentation
[ ] Other

Problem

Examples in docs link to the master branch, rather than the versioned branch. This means that, links to something like pub_sub (which has been renamed I believe) will lead to 404's.
You can see an example at the bottom of the agents page
Details about the solution you'd like (Optional)
Upon releasing a version, ensure that all github links for examples targeting master are replaced with their version branched.

I have no clue how this could be automated.
But for sure we will keep this low priority it if its manual as we have small limited amount maintainers.

I would suggest at some point in the release check list when the  branch is
created and a new version is ready to go, a regex cold be run over all the
examples links in the docs to replace them to target the branch rather than
master?
Imo it seems high priority to fix for future releases, as
documentation/ease of learning is a big issue for those just starting out,
and for newbies, it may seem like "the example is broken".
In the meantime  I'll make a PR to update the pub_sub example to target an
existing example.
On Tue, 4 Jan 2022, 2:09 am Julius Lungys, @.***> wrote:

I have no clue how this could be automated.
But for sure we will keep this low priority it if its manual as we have
small limited amount maintainers.
—
Reply to this email directly, view it on GitHub
https://github.com/yewstack/yew/issues/2323#issuecomment-1004156227, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AGVFWMJ5I2ME6EGPDQ3BUZ3UUG32HANCNFSM5LDGELTA
.
You are receiving this because you authored the thread.Message ID:
@.***>

We need to go to the example.mdx file and fix the link. Not sure if this can automated but it's very easy to fix manually


Play time doesn't update

Describe the bug
The play time doesn't update as the song plays and stays at 00:00.
To Reproduce
Steps to reproduce the behavior:

Go to playlist
Play a track
Wait, play time doesn't update

Expected behavior
Play time updates as track plays
General information:

Installation method [e. g. built from source, installed from Flathub...]: build
Version [e.g. 0.1.0]: fc299290416bfbeed3e02bf99fdc67331b27720f
Device used [e. g. desktop, phone...]: desktop

Stack trace:
No errors output
Additional context
It updates to the time you skip to if you skip.

That was fast, haha.

Fixed

Happened to be around and immediately felt ashamed :p Thanks for the heads up!


Question regarding duplications

Hi,
Whilst attempting to remove around 3000 repeated rows within our table (c.3,800 total observations, with c.800 unique observations), we had some real trouble with the duplicate() R command. We since decided on a workaround but really wanted to pursue a solution this way. Here below is the code:
duplicated(total4)
newtotal4 <- total4[duplicated(total4)=='FALSE', ]
Although we were able to generate a new ‘newtotal4’ table, the duplicates remained. The main guide we were using for this can be found on p.286 of the R for Dummies book. Grateful for any advice.

You want ones that aren't duplicated - so you want !duplicated(total4) (we just did the same thing)

also might only work vectorwise, rather than rowwise (don't know) but we used !duplicated(dataframe$column)

(and we used dplyr's filter)

Also, checkout FindDups in the DataCombine package.


[Antora] Document - make partial section

Starting with this PR: https://github.com/apache/james-project/pull/2287
When we began refactoring the Antora documentation, one of our goals was to make certain sections partial so that we could reuse common documentation fragments.
As of now, this effort has focused on the distributed and postgresql sections.
However, the commits related to creating these partials have only been merged into the postgresql branch.
After approximately three months, new commits (for update document) have been merged into the master branch.
In order to minimize future conflicts and to start benefiting from the partials, this PR has been created.
In this PR:
I have cherry-picked the commits that created the partials (already merged into PostgreSQL). The list includes:
5cf8d6e9b8 [Antora] Make partial for server Operate section & clean format
07b6087d4a [Antora] Make partial for server Architecture section
369f932c20 [Antora] Make partial for server Benchmarks
75fc4d5229 [Antora] Clone Benchmarks section files to /partials
90e2000e9b [Antora] Make partial for server configure section & clean format

Next, I performed a full scan of all commits that have modified the Antora documentation starting from commit 5fb9eba742284e5c8b4a786affa96cc2f6ad0dd2.
I manually updated these changes to ensure that the documentation remains accurate and up-to-date. The commits below have the prefix: "[Antora] Adapt after partial -"

@vttranlina can you rebase please? Conflict with latest merge on jvm.adoc

rebase & adap jvm.adoc file


1-wire with SysBus support

@thecode sorry for writing here, but I didn't find a better way.
As you probably know in HA 2022.6 GPIO support will be removed, and with it also 1-Wire SysBus will be gone (https://github.com/home-assistant/core/pull/71232).
You did an awesome job by maintaining this repository and many (including me) are very grateful for that.
Do you use 1-Wire sensors in your setup? I have a homemade floor heating system that is controlled by 1-wire sensors, so I must stay with HA 2022.5.x.
maybe you could recommend other solution or maybe create a fork as you did with rpi_gpio.
Do you have a buy-me-a-coffee account or patreon? Many users would like to thank you not just by words :)

I don't use 1-wire directly in my setup (use it via ESP8266), however I have 1-wire sensors, I am considering adding support for this.

@thecode awesome news. Maybe consider adding a new repository, similar to this one.
I'm looking forward to this and I'm willing to help with testing and as much as I can with the development.
Do you think that this should be 1-wire integration that is available in 2022.5.5 but with removed everything except SysBus?

is available in 2022.5.5 but with removed everything except SysBus?

Yes

Initial version https://github.com/thecode/ha-onewire-sysbus
Not tested on real hardware yet, if you can test please test, if you find something please create an issue on the ha-onewire-sysbus repo.
Thanks.

Thank you! I will test this as soon as I create dev env.
P.S. please remember about buymeacoffee account ;)

@Misiu Did you had time to test it?


Get ssh host key fingerprint from rescue system

Is it possible to get ssh host key fingerprint if rescue system was enabled and booted? For automated system setup through ssh this would helpful.
Thanks!

I don't see a way how we could access this information. We don't store them somewhere on our side.
The easiest solution would be to just ignore the host key checking.


Supabase operations in onAuthStateChange will cause the next call to supabase anywhere else in the code to not return.

Bug report

[X] I confirm this is a bug with Supabase, not with my own application.
[X] I confirm I have searched the Docs, GitHub Discussions, and Discord.

Describe the bug
await supabase.auth.getSession() will hang indefinitely every hour or so, until the user reloads the page. We suspect it's related to the token needing to be refreshed.
To Reproduce

Sign into an application with Supabase auth running
Wait an hour (or however long it takes for your token to expire)
Reload the page and call await supabase.auth.getSession()
getSession will hang indefinitely

It's unclear right now whether (4) happens all the time or only some of the time. But we've been managing to reproduce pretty frequently, both locally and in prod. It's been affecting our customers as well.
Reloading the browser after (4) will immediately resolve the issue. Subsequent reloads will be fine, until an hour of inactivity in which this problem occurs again.
We've tried multiple versions of supabase-js and gotrue already, to no effect. This has been occurring for the past few weeks.
https://github.com/supabase/supabase/issues/15930 seems related but that ticket seems to be concerned with immediately after Google OAuth. Our problem occurs well after initial login.
Expected behavior
We expect getSession to never hang indefinitely
Screenshots
If applicable, add screenshots to help explain your problem.
System information

OS: [e.g. macOS, Windows] macOS
Browser (if applies) [e.g. chrome, safari] Chrome
Version of supabase-js: [e.g. 6.0.2] Multiple (2.24, 2.26, 2.31)
Version of Node.js: [e.g. 10.10.0] v18.16.0

Additional context
We tried this on multiple versions of supabase-js (2.24, 2.26, 2.31) and gotrue (2.42, 2.43.1, 2.46.1)

@aviadmini the downgrade did work for me. Similar hang here too with the newer version, but I don't see any failed network requests, do you? It seemed to be a bug in the gotrue logic, ie when to actually kickoff the call to backend

When supabase is unreachable (e.g. local dev setup is down) there are console errors for the unsuccessful fetch and retries during a call to svelte auth helpers functions. Right after that the following call to await supabase.auth.getSession() never completes

We experienced this issue...

Our call supabaseClientSide.auth.getSession().then(({ data: { session } }) => session); would just hang forever under certain circumstances when the client did not have the token.
The way our team was able to resolve this was by upgrading from
"@supabase/supabase-js": "^2.26.0"

to...
"@supabase/supabase-js": "^2.33.1"

We are also experiencing as similar issue when updating from supabase-js 2.30 -> 2.31. the only change between these versions seems to be https://github.com/supabase/supabase-js/commit/c07ce232bf178c5abc9e5c3b096764b2807407b4 which updates "@supabase/gotrue-js from 2.43.1 to 2.46.1

hey everyone, i'm trying to reproduce this so that i can figure out why it happens but i need some help here -
@andreasfelix you mentioned that:

when awaiting a supabase function within the onAuthStateChange. The callback hangs indefinitely, depending on how fast the Promises returns. For us it only happens if the supabase-js client points to a local SUPABASE_URL setup, but not with a remote SUPABASE_URL...

which function are you calling in onAuthStateChange that leads to this?
@kjhughes just wondering, why do you need to call getSession() inside of the callback for onAuthStateChange()? The onAuthStateChange() method will pass the event and the session as parameters to the callback function so there shouldn't be a need to call getSession() again

which function are you calling in onAuthStateChange that leads to this?

if I recall correctly any async operation that involves the supabase client, e.g.
supabase.auth.onAuthStateChange(async (event, session) => {
  switch (event) {
    case "TOKEN_REFRESHED":
    case "SIGNED_IN":
        await supabase.rpc(...)
    ...
}

Our current workaround is to set a reactive variable (svelte) and run the effect whenever it changes:
supabase.auth.onAuthStateChange((event, session) => {
  switch (event) {
    case "TOKEN_REFRESHED":
    case "SIGNED_IN":
      dirty.set(true)
    ...
}

...

dirty.subscribe(async ($dirty) => {
  if ($dirty) {
    dirty.set(false)
    await supabase.rpc(...)
  }
})

We didn't bother to look into why this works. I assume this somehow changes the order of microtasks changes (I am not super familiar with JS...).

**TLDR: We are looking into a fix for this but for now the workaround is to not make async calls to postgREST / storage / edge functions using the supabase client lib inside the callback function registered in onAuthStateChange :/ **
Hey everyone, it seems like this issue was introduced when this PR was merged. For context, this PR was made to address issues related to random logouts where _useSession is being called concurrently which led to refresh tokens being unintentionally reused. The solution was to introduce a locking mechanism to serialise the calls made to _useSession.
When an async supabase call is made in the callback function in onAuthStateChange, it results in a deadlock. This is because the supabase-js client library creates a custom fetch method which makes a call to _useSession under the hood.
This is how the deadlock occurs. For example, if you set up a callback function in onAuthStateChange to retrieve the latest todos on a TOKEN_REFRESHED event:
supabase.auth.onAuthStateChange( async (event, session) => {
  if (event === 'TOKEN_REFRESHED') {
    const todos = await supabase.from('todos').select('*')
  }
})

If you make any async calls to postgREST / storage / functions using the supabase client library, it uses the custom fetch method mentioned above which requires a lock to be available.

Thank you @kangmingtay for the update and @kjhughes for the helpful hints!
Confirmed on our end too that the bug we've been experiencing was caused by this. We shipped a workaround last week to avoid the async call on TOKEN_REFRESH and no longer see these issues in prod:

Hi, I had the issue in React Native with @supabase/supabase-js": "^2.38.4"
Here is what the code that triggered the bug looked like
 supabase.auth.onAuthStateChange(async (event, session) => {
      console.log(`Supabase auth event is ${event}`);
      //dispatch(setUserSession(session));
      //dispatch(setUser(session?.user ?? null));

      /**After an authStateChange we fetch user details. Maybe this should be conditional */
      if (session?.user?.id) {
        await new Promise((resolve) => setTimeout(resolve, 5000)); // Introduce a 1-second delay

        const details = await getProfileDetails(session.user.id);
        console.log("User details:", details);

        if (details.status === true) {
          dispatch(setProfile(details.data));
        }

        //Here we get the users orders
        const allUserOrders = await getUserOrders(session.user.id);
        //console.log("All user orders is: ", allUserOrders.data);
        if (allUserOrders.status === true) {
          dispatch(setUserOrders(allUserOrders.data));
        }
      }
    });

After getting some advice from @GaryAustin1 on discord. I removed all the functions inside onAuthStateChange functions and put them in another function, all made a single call.
The code looked like this now and works fine. Note, all the logic was moved to external function "handleUserUpdates()"
supabase.auth.onAuthStateChange(async (event, session) => {
      console.log(`Supabase auth event is ${event}`);
      dispatch(setUserSession(session));
      dispatch(setUser(session?.user ?? null));

      // Call the function to handle user updates
      handleUserUpdates(dispatch, session);
    })

It seems after auth state change, any immediate supabase database calls hang after that. In my case, the auth.updateUser() function would not return a response.
Hopefully this helps someone.

I just edited the title of this issue to reflect the root problem so users might spot it quicker.
This bug is causing user major loss of time as it is not documented you can't make calls in onAuthStateChange and the symptom they see is in a completely different part of code.
This should be documented in the docs and fixed or addressed as soon as possible.  It is a multi-hour loss of time for users trying to figure out and/or reaching out for help.

Big ups to OP we have this problem too m8

This should be documented in the docs and fixed or addressed as soon as possible. It is a multi-hour loss of time for users trying to figure out and/or reaching out for help.

@GaryAustin1 Can you point to where you would want this to be present in docs. Trust me, I've tried to address the issue on a technical level -- unfortunately it's not possible because of JavaScript, browsers, NextJS and all the other runtimes.
Alternatively, we can maybe turn off the await handling or make it configurable. Please let me know what works best for you.

@hf It should be documented here https://supabase.com/docs/reference/javascript/auth-onauthstatechange at least to not make supabase calls in that function handler and what happens if you do.
I added a note in troubleshooting https://github.com/orgs/supabase/discussions/19058 awhile back that I can clean up as it says "until this is fixed".
Not sure the user suggestion above to move calls to a function is the recommended way to avoid this or not:
supabase.auth.onAuthStateChange(async (event, session) => {
      console.log(`Supabase auth event is ${event}`);
      dispatch(setUserSession(session));
      dispatch(setUser(session?.user ?? null));

      // Call the function to handle user updates
      handleUserUpdates(dispatch, session);
    })

Docs changes here: https://github.com/supabase/supabase/pull/19902

I removed my onAuthStateChange code and still have getSession hang on supabase-js 2.39.2

Docs changes here: supabase/supabase#19902

I can confirm this is working see my comment https://github.com/nuxt-modules/supabase/issues/273#issuecomment-2051932773

I found that you have to call every function for auth (signIn, signOut, ...) in client-side code (using a client supabase) in order for it to work properly.
Having things like server actions in the server using a server supabase instance will not trigger an onAuthStateChange client side, even tho in that case there are some weird behaviours, like when changing browser tab

This is an ongoing issue. Our team fixed this issue by removing all instances of supabase.auth.onAuthStateChange other than our AuthProvider. In other words we only have implemented one supabase.auth.onAuthStateChange call. Our solution is not very DRY but it is reliable.
Without fully debugging the issue there seems to be a lock conflict when there is an auth event emitted to multiple onAuthStateChange subscriptions.

If it's technically possible, it would be great if the system could detect if a supabase operation has started inside the callback function, and at least log an error to the console, showing the real source of the issue (maybe pointing to this thread or docs).
E.g.

let globalSupabaseStuffUsed = false;

function onAuthStateChange(callback) {
  ...
  globalSupabaseStuffUsed = false;
  callback(...);
  if(globalSupabaseStuffUsed){
     console.error("Supabase functions were called inside onAuthStateChange. See https://github.com/supabase/auth-js/issues/762");
  }
}

function anySupabaseOperation(...){
   globalSupabaseStuffUsed = true;
   ...
}

Even though I've not been making supabase-specific calls in the callback, I was still having issues.
I'm still testing to see if the issue is resolved, but specific to my use case, I think my resolution to this was to not try to do any await logic in the callback and not marking the callback as async.

Hello
try {
  const lockState = await navigator.locks.query();
  console.log('Held locks:', lockState.held);
  console.log('Pending locks:', lockState.pending);

  // To release locks if needed:
  for (const lock of lockState.held) {
    await navigator.locks.request(lock.name, { steal: true }, () => {});
  }
} catch (error) {
  console.error('Error querying locks:', error);
}

This is my workaround to this issue
Supabase is double locking somehow, and the only way is to unlock yourself

https://supabase.com/docs/reference/javascript/auth-signup

https://supabase.com/docs/reference/javascript/auth-onauthstatechange

Lol, very good 👍 the broken docs 🎉

Not sure I'm really helping here, but wanted to share that I had a very obscure-to-debug problem in a desktop application I'm building with Next.JS and Tauri, where an async function inside the onAuthStateChanged callback caused a subsequent supabase call to hang, but the kicker is it was only when the desktop app was built for Windows, so I was none the wiser until I got on a windows machine and developed there for a while and played around with the code.
In any event, I realized there was no reason the function should be asynchronous inside the callback, so removing it solved the problem.


Default sorting of song list

I can't seem to figure out the right place to put this, otherwise I'd submit a PR, but I think the default sorting of the song list should be artist - album - track. I'm not sure what the default sort currently is (if any) but every time I open up the app I have to click the artist column twice to get to what is defaulted on most media players.

You're right, there's no default sort as of current. I don't think there should be one, either. At least, I personally don't care about it, and it takes only one or two clicks anyway.

What if we made it a 'sticky' setting and saved the last sort in a cookie which was restored the next time the page is loaded? I feel that would be a good compromise and the setting could even be disabled if desired?

Saving the last state is not a bad idea, however we'll need one state for every song-list screen (all songs, favorites, and every playlist). That could look ugly very quickly IMO.

What if we only applied it to 'song list' view (the main ones). This would cover when your viewing songs, whether it be on the artist page, album page, or 'all songs' and only apply it to those views? Those are the only views that would by default actually matter what order the songs are referred to in. I don't think you'd want the software to auto-sort your favorites or playlists since you'd create those yourself.
I'd be happy to take this on and submit a PR, but I'd rather not do the work without discussing with you on how it should be done and actually get merged in. Otherwise it'd be wasted time :-P.

Let's go for All Songs, Artist, Album, and Favorites then. I agree that we
don't need to cater for custom playlists.
And of course, a PR would be much appreciated!
On Thu, Apr 14, 2016 at 11:04 PM, Alex Phillips<EMAIL_ADDRESS>wrote:

What if we only applied it to 'song list' view (the main ones). This would
cover when your viewing songs, whether it be on the artist page, album
page, or 'all songs' and only apply it to those views? Those are the only
views that would by default actually matter what order the songs are
referred to in. I don't think you'd want the software to auto-sort your
favorites or playlists since you'd create those yourself.
I'd be happy to take this on and submit a PR, but I'd rather not do the
work without discussing with you on how it should be done and actually get
merged in. Otherwise it'd be wasted time :-P.
—
You are receiving this because you commented.
Reply to this email directly or view it on GitHub
https://github.com/phanan/koel/issues/299#issuecomment-209989164

I'll get to it. Thanks for the insight!

@phanan What's the best way to determine the current view inside of the song-list.vue file? I can't tell anywhere we're currently checking a state like that except the extras components.

It's the type prop.

So it's up to you how to approach this, and both ways are extremely easy.

We could have a sticky sort setting that is only saved / applied on allSongs, artists, and album view (and a couple others?)
We have a sticky setting for every view type. This would be extremely simple as you just prefix the ls key with this.type and apply it as long as that key exists. This would make each individual view have its own sticky sorting.

Code examples below:

data() {
  let sortKey = '';
  let order = 1;
  switch (this.type) {
    case 'allSongs':
    case 'album':
    case 'artist':
      sortKey = ls.get('sort-key', false) ? ls.get('sort-key') : '';
      order = ls.get('sort-order', false) ? ls.get('sort-order') : 1;
      break;
  }

  return {
    lastSelectedRow: null,
    q: '', // The filter query
    sortKey: ls.get(`${this.type}.sort-key`, false) ? ls.get(`${this.type}.sort-key`) : '',
    order: ls.get(`${this.type}.sort-order`, false) ? ls.get(`${this.type}.sort-order`) : 1,
    componentCache: {},
    sortingByAlbum: false,
    sortingByArtist: false,
  };
},

data() {
  return {
    lastSelectedRow: null,
    q: '', // The filter query
    sortKey: ls.get(`${this.type}.sort-key`, false) ? ls.get(`${this.type}.sort-key`) : '',
    order: ls.get(`${this.type}.sort-order`, false) ? ls.get(`${this.type}.sort-order`) : 1,
    componentCache: {},
    sortingByAlbum: false,
    sortingByArtist: false,
  };
},

Obviously these code snippets are only the portions where we apply the saved value, but the setting would be quite similar.

I would go with 2, but with a different approach: preferenceStore.state.sorts.
state: {
    volume: 7,
    notify: true,
    repeatMode: 'NO_REPEAT',
    showExtraPanel: true,
    confirmClosing: false,
    equalizer: {
        preamp: 0,
        gains: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    },
    artistsViewMode: null,
    albumsViewMode: null,
    selectedPreset: -1,
    sorts: [{ queue: { key: '', order: 1 } }], // also: allSongs, favorites, playlist, artist, album
},

This looks more structural and cleaner IMHO.

Would it be smarter to have the type be the key for an object containing the information rather than an array of objects? That way you wouldn't have to iterate through the array but just check if the property exists:
state: {
    volume: 7,
    notify: true,
    repeatMode: 'NO_REPEAT',
    showExtraPanel: true,
    confirmClosing: false,
    equalizer: {
        preamp: 0,
        gains: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    },
    artistsViewMode: null,
    albumsViewMode: null,
    selectedPreset: -1,
    sorts: {"queue":{"key":"","order":1},"allSongs":{"key":"","order":1}}, // also: allSongs, favorites, playlist, artist, album
},

Yes of course I meant an object :P

Great, just clarifying. I'll have a PR for you sometime today.

I'm running into an issue calling .set on the preferences object with a nested key (i.e., sorts.allSongs). Is there a good way to save a nested value in preferences? Or should I call .get('sorts'), edit what I need to, and then just save sorts back to preferences?
Or should I add support for calling set with dot-notation strings?

.set for nested keys isn't supported (because there wasn't a need for it), so you can do either :P

It looks like I'm able to set the sorts into the preferences just fine (when I open the resources tab I can inspect the local storage object and see the value there), but if I call preferences.get('sorts') it returns an empty object.
Do I have to initialize preferences at all before using it? Maybe I'm attempting to use the preferences object too early?

@phanan any thoughts on this? If I use the example snippets above, when the page loads, it never retrieves the data I see stored in local storage.

Oops sorry, this slipped my mind. Can you post the whole code?

preferences.js
import { extend, has, each } from 'lodash';

import userStore from './user';
import ls from '../services/ls';

export default {
    storeKey: '',

    state: {
        volume: 7,
        notify: true,
        repeatMode: 'NO_REPEAT',
        showExtraPanel: true,
        confirmClosing: false,
        equalizer: {
            preamp: 0,
            gains: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
        },
        artistsViewMode: null,
        albumsViewMode: null,
        sorts: {
            'allSongs': {
                'key': '',
                'order': 1,
            },
        },
    },

    /**
     * Init the store.
     *
     * @param  {Object} user The user whose preferences we are managing.
     */
    init(user = null) {
        if (!user) {
            user = userStore.current;
        }

        this.storeKey = `preferences_${user.id}`;
        extend(this.state, ls.get(this.storeKey, this.state));
        this.setupProxy();
    },

    /**
     * Proxy the state properties, so that each can be directly accessed using the key.
     */
    setupProxy() {
        each(Object.keys(this.state), key => {
            Object.defineProperty(this, key, {
                get: () => this.state[key],
                set: (value) => {
                    this.state[key] = value;
                    this.save();
                },
                configurable: true,
            });
        });
    },

    set(key, val) {
        let keys = key.split('.');
        let xary = this.state;
        while (key = keys.shift()) {
            if (keys.length === 0) {
                xary[key] = val;
                break;
            }

            if (!has(xary, key)) {
                xary[key] = {};
            }

            xary = xary[key];
        }

        this.save();
    },

    get(path, defaultVal) {
        if (defaultVal === undefined) {
            defaultVal = null;
        }

        let retval = this.state;

        path = path.split('.');
        for (let i = 0; i < path.length; i++) {
            if (!has(retval, path[i])) {
                return defaultVal;
            }

            retval = retval[path[i]];
        }

        return retval;
    },

    save() {
        ls.set(this.storeKey, this.state);
    },
};

song-list.vue
<template>

                    #
                         0">
                        <i class="fa fa-angle-up" v-show="sortKey === 'track' && order < 0">

                    Title
                         0">
                        <i class="fa fa-angle-up" v-show="sortKey === 'title' && order < 0">

                    Artist
                         0">
                        <i class="fa fa-angle-up" v-show="sortingByArtist && order < 0">

                    Album
                         0">
                        <i class="fa fa-angle-up" v-show="sortingByAlbum && order < 0">

                    Time
                         0">
                        <i class="fa fa-angle-up" v-show="sortKey === 'fmtLength' && order < 0">

                <tr
                    v-for="item in items
                        | caseInsensitiveOrderBy sortKey order
                        | filterSongBy q
                        | limitBy numOfItems"
                    is="song-item"
                    data-track="{{ item.track }}"
                    data-song-id="{{ item.id }}"
                    track-by="id"
                    :song="item"
                    v-ref:rows
                    @click="rowClick(item.id, $event)"
                    draggable="true"
                    @dragstart="dragStart(item.id, $event)"
                    @dragleave="removeDroppableState"
                    @dragover.prevent="allowDrop(item.id, $event)"
                    @drop.stop.prevent="handleDrop(item.id, $event)"
                    @contextmenu.prevent="openContextMenu(item.id, $event)"
                >

        <song-menu v-ref:context-menu :songs="selectedSongs"></song-menu>
        <to-top-button :showing="showBackToTop"></to-top-button>

</template>

Note: if you don't include my new get and set methods and use the other method described above, the outcome is the same. The value is set, but never retrieved when the page loads.

Yes, you're calling the preferences too early. Preferences are bound to the user, and only initialized after the user has logged in. In your case, the song-list's data() is called prior to that, hence the empty value.

So should I just use local storage here?

No, of course not! You can trying watching the property instead, or listen to koel:ready event.


Use regular, kernel-only crash dumps in CI

We're seeing less crash dumps uploaded to AzWatson lately; the only change I can think of on our side is collecting much larger complete dumps (on behalf of eBPF) rather than kernel-only dumps.
Sacrifice full info for eBPF in exchange for some idea of what is going wrong in the kernel.

Deployed to our 1ES pools.


BB Leaderboard Scene

Below is all the work that I have done for the Leaderboard Scene, based on everything I could find in WordFlight that Samantha did previously, my attempts at translating it to BB, my notes and our previous conversations.

Recreated most of what I accomplished in another pull request in a new branch since this pull request would not 'confirm merge' after several times resolving the conflict, due to an error stating: 'this page out of date. start over.' The team lead went ahead and reaccomplished the sponsor sections I had completed, due to this error.


Change head tags

Hi, first of all thanks for the great library! 🙏
I'm using it on an multilang site, so i'm having alternate links in my head. To change this on page change i'm changing this inside my NAVIGATE_IN.
Inside the src code of highway i saw that highway is only changing the document.title. Why not adding an attribute which can be added to an metatag or link tag to reload on NAVIGATE_IN? Such as data-reload. It would be cleaner to have this inside the src code and not in my NAVIGATE_IN 🙂 If not, no problem, it's just an idea 😁

Hello @thomascoppein,
I am not really sure to understand what your idea is, or if I understand it, what it has to do with the "mutlilang" part of your site.
Could you provide additional informations on your idea in a clearer way ? Maybe some code bits for us to get a bit of context ?

Hello @ThaoD5 ,
Thanks for the fast response.
In my head I have two alternate links and one metatag, for example:
<link rel="alternate" href="http://example.com/nl" hreflang="nl" data-reload />
<link rel="alternate" href="http://example.com/en" hreflang="en" data-reload />
<meta property="og:title" content="Home | Example">

When changing to the about page this should be changed to:
<link rel="alternate" href="http://example.com/nl/over" hreflang="nl" data-reload />
<link rel="alternate" href="http://example.com/fr/about" hreflang="en" data-reload />
<meta property="og:title" content="About | Example">

Now I'm manipulating the head inside my NAVIGATE_IN by removing the old alternate links and meta tags and appending them from to.page.head.querySelectorAll('meta, link[data-reload]) for a better SEO score.
My idea was to add the data-reload attribute to a tag inside the head, which is then changed when the new view is updated.
Inside this part of the code inside src/renderer.js:
  update() {
    // Now we update all the informations in the DOM we need!
    // We update the title
    document.title = this.properties.page.title;
  }

I hope you understand my case / idea?

Yes I understand, but SEO metas are only used / read when the page is hit directly by a navigation, there is no Highway navigation happening before google reading the metas or facebook sharing your page.
The replacement of those values would only be theorical to have something clean inside the code, but it is actually not useful as SEO robots only read your metas & hreflang by direct hit of your URL.
Let me know if you think differently or if I am missing informations, but I think this is a useless procedure :-)

Hey @thomascoppein,
I do agree with @ThaoD5 that it does seem useless to update the metadatas during a Highway navigation, as explained. I'm closing this issue since this doesn't seem to be related to Highway. Please reopen it for further discussions on this topic.
Thanks,
Anthodpnt


maybe a bug ?

i was trying to set 2 boxes next to each other, but it was giving me indication that they were collidiing as they werent,
so i change the code:
if (rangeA[0] > rangeB[1] || rangeB[0] > rangeA[1]) {  // line 622 of sat.js
to :
if (rangeA[0] >= rangeB[1] || rangeB[0] >= rangeA[1]) {
and it fixed it

Is it when two boxes are directly touching each other?
I guess it could be argued either way, but the current expected behaviour is that if two objects are directly touching each other, they are colliding.

hi jriecken,
yes your right it could be argued :) well lets say we put 2 boxes on a floor, next to each other, in the concept they are not colliding, but 'touching' since no force is applied to them, the flag .collide should not be triggered.
in the actual implementation, i cant put them close to each other, except if i put a gap on 1 pixel...
i think the test collision should occur if they are intersecting,
well all depends if they are touching with force and touching with no force at current T time


Setting rightAccessoryButton won't remove cancelButton

[x] I have read this issue template and provided all possible information.
[x] I'm using CocoaPods and have run pod update before filing this issue.

Hardware / Software
Which version of the library were you using?
Answer: 0.0.1
Which version of iOS are you running?
Answer: iOS 11
What model of iOS device were you testing on?
Answer: Simulator
If using CocoaPods, which version of CocoaPods are you on?
Answer: not related
Goals
What is the outcome result you want to achieve with this library?
Answer: We want to add a simple passcode lock when our app is launched and or enters background, we need to remove the cancel button because the passcode is not optional.
Expected Results
What did you expect to happen?
Setting rightAccessoryButton will remove the cancel button.
Actual Results
Setting rightAccessoryButton did not remove the cancel button.
Investigation
Currently the initialization flow is:
-initWithStyle:passcodeType
|_ -setUp
   |_ -view
      |_ -loadView
      |_ -viewDidLoad
         |_  -setUpAccessoryButtons

The problem begins with line 82: self.view.backgroundColor = [UIColor clearColor];. self.view triggers -loadView and in turn -viewDidLoad where the heavy view set up takes place. Then when -setUpAccessoryButton is called at line 175, the if statement is always true because it's called before the user has a chance to set rightAccessoryButton. Setting it after initialization has no effect because the logic is under -viewDidLoad.
In general calling self.view in -init should be avoided.

Hi @bretdabaker! Thanks for the detailed issue!
Ah you're right. That's definitely a bug being caused by some of my terrible coding practices. Sorry about that!
I just made a new push to master that moves the code triggering loadView to viewDidLoad. HOPEFULLY that solved the problem for you. Let me know! Thanks!


gen2-maskrcnn-resnet50 OUT_OF_MEMORY

Hi @Erol444,
thanks for all the different examples you've shared. It was incredible to see mask R-CNN run on this device, as I didn't think that was possible at all.
It runs everything fine when I use the pretrained openvino zoo model
NN_PATH = str(blobconverter.from_zoo("mask_rcnn_resnet50_coco_300x300", shaves=6, zoo_type="depthai"))
as showed in your main.py example, while it gives always out of memory when I try to convert it myself following the instructions
I don't understand how this happens, as the size of my model is around 92mb, like the one downloaded from your example, but your runs smootly and my gives error.
I've converted as showed in the instructions, the pytorch model maskrcnn resnet50 using Openvino 2021.4 and then to blob onhttps://blobconverter.luxonis.com/
 `import` torchvision

# Create model
model = torchvision.models.detection.maskrcnn_resnet50_fpn(pretrained=True)

# Convert to OpenVINO IR
import mo_pytorch
img_size = 300
mo_pytorch.convert(model,
                   input_shape=[1, 3,img_size, img_size],
                   model_name="maskrcnn",
                   scale=255,
                   reverse_input_channels=True)`

Is probably there a parameter that I'm missing when converting it into blob, to make it lighter, or something else?
thank you

Hi @pinolo7 ,
could you try adding box_detections_per_img=25 and rpn_post_nms_top_n_test=100 arguments when calling maskrcnn_resnet50_fpn. This reduces default number of detections per image from 100 to 25, as well as reduces number of proposals for NMS, which should reduce the memory consumption and not cause the error. I think I used those parameters during the conversion. If that works, I'll update the README.

Hi @tersekmatija ,
thank you for the suggestions. I've tried it and unfortunately the result doesn't change, I keep getting the same error.
This is the code I used.
model = torchvision.models.detection.maskrcnn_resnet50_fpn(pretrained=True,                                                            box_detections_per_img=25,                                                            rpn_post_nms_top_n_test=100)
and it goes out of memory in the exact same way as before.
Error:
[18443010E119B60F00] [1116.973] [NeuralNetwork(3)] [warning] Network compiled for 4 shaves, maximum available 13, compiling for 6 shaves likely will yield in better performance [18443010E119B60F00] [1117.048] [NeuralNetwork(3)] [error] Neural network executor '1' out of '2' error: OUT_OF_MEMORY [18443010E119B60F00] [1117.051] [NeuralNetwork(3)] [error] Neural network executor '0' out of '2' error: OUT_OF_MEMORY [18443010E119B60F00] [1117.051] [NeuralNetwork(3)] [error] Not enough memory to start a given neural network, needed at least: 259709824B
I wonder if there is any parameter that I can change on the Myriad blob converter here https://blobconverter.luxonis.com/
I'm using the default settings there:
-ip U8
If anyone has some idea of parameters that I can tweak, I'll be happy to try them. It would be ideal to know how the model in this demo https://github.com/luxonis/depthai-experiments/tree/master/gen2-maskrcnn-resnet50 was generated, because that one works very well in terms of accuracy and speed.

Thanks, I am pretty sure those were the settings I used for export, but I'll check whether I still have the export script that I used here and get back to you.
Are you running anything else in your pipeline or are you using the script from the experiment?

I am looking at the XML from the experiment, I think the correct settings should be box_detections_per_img=20, rpn_post_nms_top_n_test=50. Could you try this and share the XML of the model if it doesn't work? @pinolo7

I'm using the exact same script from the experiment, just changing the line where I load the model to load my converted model instead the one from zoo.
I tried also box_detections_per_img=20, rpn_post_nms_top_n_test=50 but it seems to have no effect at all, as the error displayed is exactly the same and also the memory requirement is the same, no matter how I change the values.
Not enough memory to start a given neural network, needed at least: 259709824B
I'm attaching here the xml file
maskrcnn_r50_300.zip
thank you

Hey, I noticed some discrepancies in the Detect layer when comparing yours and the one from our ZOO. Will have to investigate.
Best,
Matija

Hey, I re-checked this and I can confirm this was my export script:
import torchvision.models as models
import torch

# Create model
model = models.detection.mask_rcnn.maskrcnn_resnet50_fpn(pretrained=True, box_detections_per_img=20, rpn_post_nms_top_n_test=50)
model.eval()
print(model(torch.rand([1, 3, 300, 300])))

# Convert to OpenVINO IR
import mo_pytorch
mo_pytorch.convert(model, input_shape=[1, 3, 300, 300], model_name='maskrcnn_resnet50_fpn', scale = 255)


Deploy to Crashlytics Beta fails.

It appears that some fatal error happens when the Crashlytics plugin is initialized, but I can't seem to figure out anything else based on this error & stack dump. Help is greatly appreciated.

Does the same happen if you run shenzhen Crashlytics by itself?

I figured out the issue. I took crashlytics_path: './path', # path to your 'Crashlytics.framework' to mean the path to the folder where the framework exists, NOT the path to the framework itself.

But the error message is wrong. It shouldn't say, that it can't find say_error

I assumed that meant that it was trying to call an error logging method that didn't exist so that it could report that actual error. I agree that this should be fixed.
I will submit a PR to at least clarify slightly the usage of the crashlytics_path param in the README example.


Me-394 Sort rebuild images in preferred order

Coverage decreased (-0.02%) to 29.085% when pulling ba50b5b2473ec73342bf09bf6f8d48980fdb5c81 on asauber:M3-394-sort-rebuild-images into 3bafdf756ccf0708190b1c804433e086233e6cbc on linode:develop.


Config Table print fix for single threading num shards

Followup of #1217

All options are working perfectly fine.

Single-threaded mode is showing up correctly.


Don't trace /healthz

Kubernetes users end up having tons of /healthz traces
which is costly and no-value.
Disable /healthz tracing until we have a better solution.

/cc @kelseyhightower

I will update the PR to also add _ah/health.

Also needs support for the server.

Needs tests for the client spans.

I feel this is rushed in, which might have been necessary but I'd like to revisit with a better solution for the future...
this just hard coded a couple of paths to disable tracing. I can see where we'd want it configurable depending on the consumer's ecosystem and maybe make it possible to decide path based sampling strategy instead of only a hard drop all for certain paths. that would allow for more functionality while also providing a good solution for this situation (with these paths using the neverSample strategy)

agree with @basvanbeek, this should have been discussed more broadly probably on the specs repo. what was the justification for rushing it in like this?

Sorry, this was rushed in. I created https://github.com/census-instrumentation/opencensus-specs/issues/151 but haven't proposed anything new such as a blacklisting mechanism. Let's discuss on the specs what we want to do and fix the implementation accordingly.

Agree with Bas, we should have a simple blacklist like OC Ruby (I think) does. For example, it'd be great to not trace requests for Stackdriver Profiler.

@mtwo, can you update the spec issue I have field? Let's keep the conversation over there.


Button with custom size: fix Attempt to read property "value" on string

Description
When using button component with custom size an exception is thrown:
<x-filament::button
    size="gap-1.5 px-4 py-3 text-xl"
>
    New
</x-filament::button>

Visual changes
Nothing
Functional changes

[x] Code style has been fixed by running the composer cs command.
[x] Changes have been tested to not break existing functionality.
[x] Documentation is up-to-date.

Could you apply this change to all other components that need it, @underdpt? Link, icon button, badge, etc.

Hi,
It seems only link is affected, i've made the requested changes and applied them to the link component.
Thanks


(Dropdown list) Programming languages with alphabet "G"

Many projects need to show a list of programming languages as a dropdown list in their application. Hence the idea. Can someone help me finish the alphabet G in A-Z-dropdown.html?
Here is the list from which I have referred to the list of programming languages
https://en.wikipedia.org/wiki/List_of_programming_languages

Can I work on this?

Alright

Done


Label-studio in GCP cloud run not showing completed labels after logout

Hi,
I am using label-studio in GCP cloud run https://github.com/heartexlabs/label-studio#deploy-in-a-cloud-instance.  I have created user and done some annotations but later on, when I reopened again everything is gone. again its asking to create a project. Do we need to link this to cloud storage?, its not mentioned in the above link.

Adding to above, I just added my cloud storage after creating 6 annotations I synced the data and data is showing cloud storage. After a while if I sync again I just dont see annotations for the completed 6 images. Am I understanding wrong?

@SAIVENKATARAJU You should configure persistent database. Please, check this.


Food on Fork Integration with Web App

Describe this pull request. Link to relevant GitHub issues, if any.
[TODO]
Explain how this pull request was tested, including but not limited to the below checkmarks.
[TODO]

Before creating a pull request

[X] Format React code with npm run format
[N/A] Format Python code by running python3 -m black . in the top-level of this repository
[ ] Thoroughly test your code's functionality, including unintended uses.
[ ] Fully test the responsiveness of the feature as documented in the Responsiveness Testing Guidelines. If you deviate from those guidelines, document above why you deviated and what you did instead.
[ ] Consider the user flow between states that this feature introduces, consider different situations that might occur for the user, and ensure that there is no way for the user to get stuck in a loop.

Before merging a pull request

[ ] Squash all your commits into one (or Squash and Merge)

Closed by #127


Fix title in sticky header on mobile

Far from ideal. But fixing the badest UI I introduced recently.

@ksuess what does this fix? Got screenshots?

Ah, I see.
Before

After


Add basic Protectli VP4620 documentation

Signed-off-by: Michał Żygowski<EMAIL_ADDRESS>

Just one comment from me

@miczyg1 LGTM, abything left here ? I believe we can resolve conflict and merge.


Do you consider Darwin version ?

When I compiled I get:
script.c:24:10: fatal error: 'endian.h' file not found
#include <endian.h>
         ^~~~~~~~~~
clang -DHAVE_CONFIG_H -I. -I..  -DKAMID_VERSION='"0.2"' -I../ -I../compat -I../lib    -MT kamiftp-ftp.o -MD -MP -MF .deps/kamiftp-ftp.Tpo -c -o kamiftp-ftp.o `test -f 'ftp.c' || echo './'`ftp.c
ftp.c:251:8: warning: implicit declaration of function 'le32toh' is invalid in C99 [-Wimplicit-function-declaration]
        len = le32toh(len);
              ^
ftp.c:275:9: warning: implicit declaration of function 'le64toh' is invalid in C99 [-Wimplicit-function-declaration]
        return le64toh(n);
               ^
ftp.c:284:9: warning: implicit declaration of function 'le32toh' is invalid in C99 [-Wimplicit-function-declaration]
        return le32toh(n);
               ^
ftp.c:293:9: warning: implicit declaration of function 'le16toh' is invalid in C99 [-Wimplicit-function-declaration]
        return le16toh(n);
               ^
ftp.c:904:50: error: use of undeclared identifier 'SOCK_CLOEXEC'
                sock = socket(res->ai_family, res->ai_socktype|SOCK_CLOEXEC,
In file included from table_static.c:25:
./kamid.h:112:14: error: use of undeclared identifier 'LOGIN_NAME_MAX'
        char            uname[LOGIN_NAME_MAX];
                              ^
1 error generated.

I ask because the description say UNIX-like. I tried to look at LOGIN_NAME_MAX and it seem to exist on Darwin:
$ getconf LOGIN_NAME_MAX
255

for endian.h I consider https://github.com/kristapsdz/oconfigure#endianh
Would you merge a PR that add Darwin support ?

Hello!
Yes, I'd be happy to merge a PR to add Darwin support.  I don't have a mac, so I can't test it, but I care about portability :)
The oconfigure solution for endian.h seems fine.
Regarding LOGIN_NAME_MAX I was recently bit by it because neither FreeBSD has it.  I'll commit something for it soon.
Thanks!

Does 20f7a94 help with LOGIN_NAME_MAX on darwin too?

Thanks. I don't see the error again. Now the compiler can go further it show more error.
control.c:69:42: error: use of undeclared identifier 'SOCK_CLOEXEC'
        if ((fd = socket(AF_UNIX, SOCK_STREAM | SOCK_CLOEXEC | SOCK_NONBLOCK,
                                                ^
control.c:69:57: error: use of undeclared identifier 'SOCK_NONBLOCK'
        if ((fd = socket(AF_UNIX, SOCK_STREAM | SOCK_CLOEXEC | SOCK_NONBLOCK,
                                                               ^
control.c:138:16: warning: implicit declaration of function 'accept4' is invalid in C99 [-Wimplicit-function-declaration]
        if ((connfd = accept4(listenfd, (struct sockaddr *)&sun, &len,
                      ^

I checked Mac header doesn't contain those definition so I will need to fallback to the lass safer accept and fcntl.
Go for instance fallback without those flags set https://android.googlesource.com/platform/prebuilts/go/darwin-x86/+/brillo-m7-release/src/net/sock_cloexec.go
kamid.c:175:3: warning: 'daemon' is deprecated: first deprecated in macOS 10.5 - Use posix_spawn APIs instead. [-Wdeprecated-declarations]
                daemon(1, 0);
                ^
/nix/store/y9cwm5z3wimzf13b207ndyapdlgxm15h-Libsystem-1238.60.2/include/stdlib.h:288:6: note: 'daemon' has been explicitly marked deprecated here
int      daemon(int, int) __DARWIN_1050(daemon) __OSX_AVAILABLE_BUT_DEPRECATED_MSG(__MAC_10_0, __MAC_10_5, __IPHONE_2_0, __IPHONE_2_0, "Use posix_spawn APIs instead.") __WATCHOS_PROHIBITED __TVOS_PROHIBITED;
         ^

linux, freebsd, netbsd, openbsd, Darwin have a posix_spawn so we can get everybody happy.
parse.y:452:13: warning: implicit declaration of function 'reallocarray' is invalid in C99 [-Wimplicit-function-declaration]
                void *p = reallocarray(file->ungetbuf, file->ungetsize, 2);
                          ^

fixable using realloc

Right, darwin still lacks accept4 and the fancy SOCK_* flags; it's not an issue to just use accept and fcntl to set the nonblock and cloexec flags since kamid is not threaded.
The reallocarray warnings is because i forgot to include a check for it in the configure, i only have recallocarray.  I'll fix that too.
Regarding daemon... I know that the posix_spawn APIs are widely available but i personally dislike them (they feel over-enginereed, confusing and plain ugly) so i'll keep using daemon(3).  if daemon(3) will be ever removed on darwin, we'll find a way :)

Darwin instead of le64toh has ntohll. Can you check in various bsd I think it is in freebsd maybe with _KERNEL guard https://github.com/apple-oss-distributions/Libc/blob/768d166d42689471e1e8fd1ddde5eee25db02381/nls/FreeBSD/msgcat.c#L62
If so I can make a PR with all those change.

I think i've fixed the accept4 and reallocarray issue, let me know if those warnings/errors now are gone on darwin, thanks!
Regarding endian.h, freebsd has a compatible set of functions in sys/endian.h, so just adding a check for that should be enough.  On darwin however it seems a bit more complex but doable: I'm looking in particular at how darwin is handled in got-portable: https://github.com/ThomasAdam/got-portable/blob/46384c6e760fdd54c263d1af7d6db58cc09a4e51/include/got_compat.h#L11-L30
Just a matter of style however, i don't like how got-portable does some compats: it looks for the operating system instead of checking for the actual presence of the feature, so I'd prefer if we add some checks for the headers (endian.h, sys/endian.h and OSByteOrder.h) and just include the first one found (plus the compats in case of darwin.)
This can be done by using AC_CHECK_HEADER in configure.ac and then adding the relative includes in compat.h and then removing all the #include <endian.h> in the rest of the project; see for e.g. how sys/tree.h is handled.
Let me know if i can help you with that, I'll be glad to merge a PR for it!  Thanks!

I've pushed the endian branch with changes that should allow to build it on Mac.  So far I've only tested on FreeBSD however.

since it fixes the build on FreeBSD (and possibly on NetBSD too) I just merged this in the main branch, let me know if it works on darwin too!
Thanks!

I have checked and currently it doesn't build because of explicit_bzero call which is not available on macOS.

@hauleth oh, I see.  I'll add it to the compat layer and then ask you to retry since I still don't have a mac :)
Thank you!

@omar-polo you could setup macOS build on GitHub Actions and mark it as "allowed to fail". That way you would have some feedback even when you do not own macOS on your own.
Also, thanks for this project as it is probably the only project that I have found that provide 9p2000 CLI client. I want something like that as I am working on my own implementation and I want to be able to test against some 3rd party implementation.

@hauleth you're right!  actually I'm already using cirrus ci to build on freebsd and macos in another project, so no excuses not to do it here too.
I've fixed some things, but it still fails on macos at the moment for other reasons.  It may take me a bit still to fix it.
by the way

I want something like that as I am working on my own implementation and I want to be able to test against some 3rd party implementation.

I'm curious, and I'd like to test again other implementations as well :-)  When/if you feel like, could you link your project here too?  Thank you!

@omar-polo it is partially public, but it is non-functional at the time of writing https://github.com/hauleth/e9p (implementation in Erlang).


bitwarden_rs: remove failing integration test

This test is hitting a timeout because it's trying to build
firefox-unwrapped. The idea is good, test that the web service works with
different database backends, but building firefox is way too big a task for a
small service like this.
Here's the logs from one of the failing tests:
https://hydra.nixos.org/build/140338120
From the looks of it, the only other test to use firefox-unwrapped and selenium
in the same way is nginx-etag, which also times out:
https://hydra.nixos.org/build/140337879
If there is no alternative way of automating the integration tests, I therefore
propose that we delete them. Right now, the only purpose they serve is to block
newer releases on unstable.
If you want me to, I can also create a PR to remove the failing nginx-etag test.

Motivation for this change
Things done

[ ] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[ ] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[ ] Fits CONTRIBUTING.md.

@SuperSandro2000 I think I figured out why the bitwarden_rs tests were failing.

Maybe firefox-unwrapped was not cached?

I feel very strongly that this is the wrong way to tackle this issue.

Firefox should mostly come from the cache: https://hydra.nixos.org/job/nixos/trunk-combined/nixpkgs.firefox-unwrapped.x86_64-linux/all

Ah, it actually seems like the x86_64 tests are now passing!
However, aarch64 is still failing.
It seems like maybe the problem is that firefox is not cached for aarch64? https://hydra.nixos.org/job/nixos/trunk-combined/nixpkgs.firefox-unwrapped.aarch64-linux/all

The test isn't even part of the tested set, so I don't see how it could block anything.

I'm not sure what you mean by this?

Interesting, I didn't know about that.
Then why is bitwarden_rs still in version v1.17.0 on unstable?
https://search.nixos.org/packages?channel=unstable&show=bitwarden_rs&from=0&size=50&sort=relevance&query=bitwarden

Search must be outdated.
https://hydra.nixos.org/job/nixos/trunk-combined/nixpkgs.bitwarden_rs.x86_64-linux

See https://github.com/NixOS/nixos-search/issues/295

Thanks mweinelt, I agree there is no issue here. The test is not "building firefox", it depends on firefox, like it depends on linux and systemd.


WIP: Add FFTHilbertImageFilter

First attempt at creating a filter to compute the Hilbert transform of an image.
A few questions:

there are no tests of this new filter; should I write some?
the kernel is a band-limited Hilbert kernel, but there are no ways in the current implementation to choose that band-limit, should that be an option?

Thanks!

I have implemented all your comments, thanks again!
I have also created a test for this new filter, but it might still require some work. Specifically:

I think I correctly disabled zero padding to write the test, but I don't exactly get the result I am supposed to (the one obtained analytically). Am I supposed to manually mirror the signal out of its current bounds? Does RTK already has an option somewhere to do this?
I don't really know how to pick good parameters for CheckImageQuality, as of now they are nothing but random choices. Any tip about that?

Thanks!

Here is a comparison representing the current state of the test. The signal t -> sin(20*pi*t) has the analytic Hilbert transform t -> -cos(20*pi*t). The current implementation kind of matches the analytic inverse, but still seems incorrect.

I'm unsure about how to improve that... There is probably something to do with the way zero padding is performed, but I'm not sure I understand. Any pointers?

Hi,
Hopefully a helpful pointer (and a request :-)) for a monogenic signal filter:
https://arxiv.org/abs/1703.09199
which is the multi-dimensional analog to the analytic signal from the Hilbert transform. We have an AnalyticSignalImageFilter here:
https://github.com/KitwareMedical/ITKUltrasound/blob/master/include/itkAnalyticSignalImageFilter.h

Thanks. itkAnalyticSignalImageFilter.hseems to be doing the same thing as the current rtkHilbertImageFilter.h (which was badly named because we followed Matlab). Is this going to be moved to an ITK module at some point?

@SimonRit Yes, we will make ITKUltrasound available as an ITK remote module following @dzenanz 's work to support remote module dependencies in ITK 5.2:
https://github.com/InsightSoftwareConsortium/ITK/commit/fa1082b92953b09c48ae0d65a96ddfbfd33c7c36#diff-e7efda826b6d097e47d7cb2cd6b1cf126084197d7834e7b022048183509c774b
It would be nice to also have ultrasound filters depend on the CUDA filter support in RTK. I am wondering if now is the time to create a CUDA base module, and a module for FFT extensions, e.g. analytic signal, etc. that the ultrasound and RTK modules could share as dependencies. What do you think?

Sounds good. For CUDA, it might be easy but we should fix #296. For FFT extensions, RTK would certainly benefit from the analytic signal. We also have filters which work line-by-line or slice-by-slice, the mother class is rtk::FFTProjectionsConvolutionImageFilter. They are pretty specific to tomographic reconstruction but they might be useful in other contexts. I'm sure you'll have some changes to suggest on the code to make it better!

I'm not sure I understand the conclusion of this discussion. Do we keep the current implementation of the Hilbert transform? Should I improve it somehow, for instance by including the analytic signal? Should it be moved somewhere, like to a module that contains FFT extensions?

I'm not sure I understand the conclusion of this discussion. Do we keep the current implementation of the Hilbert transform? Should I improve it somehow, for instance by including the analytic signal? Should it be moved somewhere, like to a module that contains FFT extensions?

I understood that I should finish https://github.com/KitwareMedical/ITKUltrasound/pull/123 before proceeding. Then we should take the parts of ITKUltrasound which overlap ones in RTK and put them in a new common module on which both ITKUltrasound and RTK would depend.

I understood that I should finish https://github.com/KitwareMedical/ITKUltrasound/pull/123 before proceeding. Then we should take the parts of ITKUltrasound which overlap ones in RTK and put them in a new common module on which both ITKUltrasound and RTK would depend.


mount backplane conf so that it cant be changed from the container

this fixes an issue where backplane binary updates the config

/lgtm
/approve


VMS: For executables, process the use of /INCLUDE=main a bit differently

The way it was implemented didn't play well with perl's join(), so it's
reimplemented a bit differently.

Merged
1ec0acf264652bd981e95842723e5414d634cd93 VMS: For executables, process the use of /INCLUDE=main a bit differently

Hi I will help you with everything you need but you have to subscribe to
the youtube channel and I will fulfill all your requests
https://youtu.be/aIaqr4eq18g
Pada Rab, 5 Okt 2022, 6:51 PM Richard Levitte @.***>
menulis:

The way it was implemented didn't play well with perl's join(), so it's
reimplemented a bit differently.
You can view, comment on, or merge this pull request online at:
https://github.com/openssl/openssl/pull/19347
Commit Summary

39d6b65
https://github.com/openssl/openssl/pull/19347/commits/39d6b65314f47a3acd12e653e894b48531096d2d
VMS: For executables, process the use of /INCLUDE=main a bit differently

File Changes
(1 file https://github.com/openssl/openssl/pull/19347/files)

M Configurations/descrip.mms.tmpl
https://github.com/openssl/openssl/pull/19347/files#diff-9de1eb38e2840252377eea48b40421746fb99cdd042730d8cff91edaa22712d2
(20)

Patch Links:

https://github.com/openssl/openssl/pull/19347.patch
https://github.com/openssl/openssl/pull/19347.diff

—
Reply to this email directly, view it on GitHub
https://github.com/openssl/openssl/pull/19347, or unsubscribe
https://github.com/notifications/unsubscribe-auth/APESUCXDTCAM6I4JP3HCFQLWBVMUTANCNFSM6AAAAAAQ5OXDD4
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>


There is no "response_signature_string" field in the "Receipt"

Please tell me why there is no "response_signature_string" field in the "Receipt"?
This field is used to verify the payment on the merchant side.

Hi @MushrooM1337,
Sorry for such delay.
Is it still actual?


Use FluentAssertions for unit tests

Perhaps also FluentAssertions.Analyzers to suggest best practices.

Closed with PR 63


update swagger-client to at least version 3.10.13

npm audit issue: https://github.com/swagger-api/swagger-js/releases/tag/v3.10.13

This is done.


Loop not cleared when go()ing from inside the loop

Hey again,
I just discovered a small bug while implementing a countdown to switch scenes: when calling go() from within a loop(), that loop doesn't get cleared but keeps running. To reproduce:
const k = kaboom()

k.scene('start', () => {
  let count = 0

  k.loop(1, () => {
    k.go('main', ++count)
  })
})

k.scene('main', count => {
  k.add([
    k.text(`Entered main scene ${count}`)
  ])
})

k.start('start')

Cheers! :)
Edit: Actually, this can also be induced by just calling loop() right after go() -- inside wait(), curScene() then already returns the next scene to which the loop getting added:
k.scene('start', () => {
  k.go('main')
  k.loop(1, () => console.log('loop'))
})

k.scene('main', () => {
  k.add([
    k.text('Entered main scene')
  ])
})

Nice, yeah it should happen on frame end, fixed in d3ee909, thanks!

Glad I could help. :)


Make State Details Page Graph Sticky

Make the graph order match the section order and make the graph sticky, using a scroll observer to update the graph based on where you are on the page.

Per https://github.com/chihacknight/state-by-state-decarbonization/pull/40#issuecomment-1089040713 we'll need to come up with an alternative for mobile view. We will probably wind up making use of Bootstrap 4's visibility utilities: https://getbootstrap.com/docs/4.6/utilities/visibility/


Explain how to use theme locally with GitHub Pages

Fixes #116.

Theme loads up fine locally but doesn't show on GIthub pages. remote theme: was correctly set, and theme: was commented out. Any ideas?

No idea @jim380 :thinking: It works here: https://github.com/relaynet/specs/blob/master/_config.yml


QA Plan

Core function side: @liadaram1

[ ] Add a full flow test for 3 years computer science itinerary.
[ ] Add a full flow test for 3 years computer engineering itinerary.
[ ] Add small tests for each component of the core function independently.
[ ] Add a full flow test for 4 years software engineering itinerary.

[ ] messages
[ ] landing page (check issue) #68
[ ] adding 2-3 new catalogs (with the BO app)
[ ] מעבר נקודות info icon & change title
[ ] types fe & be
[ ] adding loading state to banner cards when we "סגור את התואר"
[ ] send feedback form (footer)
[ ] אנחנו לא הטכניון disclaimer (footer)
[ ] table - min width
[ ] table - grade arrows when editing
[ ] error falback page
[ ] domain ?
[ ] minimal redme.md file
[ ] add ״בתהליך -  in progress bar + card


feat: App review in the "scan card"

Hi everyone,
We clearly need to improve our ratings in stores. As the release is approaching, this is just a baby step to better ask users to review the app.
A few things:

We now count the number of scans (will be useful later)
The review thing will have a 1/10 chance to appear after a valid scan
I have created a better way to migrate user preferences (previously we only add a boolean to state if it was the first scan)
With the "no" answer, we redirect to the form
The code to check if the user still use "Smoothie" is removed
The layout is tested on small devices

A video: Demo.webm
Some screenshots:

Codecov Report

Merging #4450 (3bb4675) into develop (1c3921e) will increase coverage by 0.09%.
The diff coverage is 21.01%.

@@             Coverage Diff             @@
##           develop    #4450      +/-   ##
===========================================
+ Coverage    10.17%   10.26%   +0.09%
===========================================
  Files          295      296       +1
  Lines        15087    15148      +61
===========================================
+ Hits          1535     1555      +20
- Misses       13552    13593      +41

Files Changed
Coverage Δ

...cards/product_cards/smooth_product_card_found.dart
0.00% <ø> (ø)

...kages/smooth_app/lib/helpers/analytics_helper.dart
6.45% <ø> (ø)

...smooth_app/lib/helpers/haptic_feedback_helper.dart
0.00% <ø> (ø)

...e_panel/knowledge_panels/knowledge_panel_card.dart
0.00% <ø> (ø)

...l/knowledge_panels/knowledge_panel_title_card.dart
0.00% <ø> (ø)

.../lib/knowledge_panel/knowledge_panels_builder.dart
0.00% <ø> (ø)

packages/smooth_app/lib/main.dart
12.90% <ø> (ø)

packages/smooth_app/lib/pages/image_crop_page.dart
0.99% <ø> (ø)

.../smooth_app/lib/pages/navigator/app_navigator.dart
0.00% <ø> (ø)

...p/lib/pages/onboarding/consent_analytics_page.dart
0.00% <ø> (ø)

... and 31 more

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more

You don't like (our>>the) app

You don't like (our>>the) app

This is intended, but we can't revert if necessary.
The initial call to action is generic (the app), but when the user optsfor a negative feedback, it's a way to minimize their anger et have a better comment, then a generic "it's just shiit. it don't work blabla"

Fair enough, let's see if that pans out


Setup Assistant: Support indented non-expandable steps

Currently if you mix expandable and non-exandable steps the media figures on the left are mis-aligned.

There are few options. The easiest is to follow the lead of Tree component and hide a button

@interactivellama, I spoke with Alan about this and he said we should use a Token so the media figures are aligned vertically. I checked and it looks like the $var-spacing-horizontal-large Token which is 24px will do the trick.


Fixes #100

Hook up test trigger to action with rule to ensure there is an activation record.
Closes https://github.com/apache/incubator-openwhisk-client-js/issues/100

Codecov Report

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

@@           Coverage Diff           @@
##           master     #102   +/-   ##
=======================================
  Coverage   99.16%   99.16%
=======================================
  Files          14       14
  Lines         361      361
=======================================
  Hits          358      358
  Misses          3        3

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 de5a0eb...61f38d5. Read the comment docs.


Sycamore tableau function

This creates a convenience function for generating survey tableau summaries

Looks fine to me - if you want a second opinion feel free to solicit one (since it's been a while since I looked at this) but nothing stands out as incorrect, seems like it does what it sets out to do.

Awesome, thank you, @Noah-Houghton !


docker images for webviz

I tried building via the Dockerfile, is there a prebuilt image somwhere?
what options would i use to launch it, if I had build it?

We currently only use the Dockerfile in CI to run our tests; see here. It's available on dockerhub under cruise/webviz-ci. We currently don't use it for our application, but instead we generate a static hosted website using npm run docs-deploy. Hope this helps!

it does. I am late to the whole JS/node/react thing and was expecting a port or something. Thanks!

Yeah, it would be cool for us to publish all of this under a proper Docker image some day!

We will probably use Webviz so maybe i can provide some PRs in a couple of weeks. How do you handle all this dependacy-hell-PRs ? I tried to "just" merge them but that does only work in the right order and sometimes just dont work if newer version change their API.

Ah yeah we should probably actually pay attention to Dependabot. Don't worry about it for now!


Adds release-nightly command

Continuation of #1842, #1859 on nightly build fixing saga.
current situation

Nightlies are finally built with timestamps. http://repo.typesafe.com/typesafe/ivy-snapshots/org.scala-sbt/
These are done using Jenkins clean stamp-version publish - https://ci.typesafe.com/job/sbt-nightly/configure
The problem is that they are now missing precompiled, which was resurrected to fix the tests.

what this adds

This adds a fake project called allPrecompiled that can be used to aggregate commands.
release-nightly command is added, which is intended to be called by Jenkins.

/review @havocp, @jsuereth

LGTM (what are the two travis builds and why does one fail)?

Travis added one for pushing and another for PR validation.
There may be flaky tests we might have to go through

pushing => the commit itself and pr-validation => merging into master?  Or is that wrong.

pr-validation => merging into master? Or is that wrong.

Yea. that could be it. If you're branch is far away from trunk this could be useful.
We could probably turn it off.


⚠ Bofrost.de has degraded performance

In bfbcfa6, Bofrost.de (https://www.bofrost.de) experienced degraded performance:

HTTP code: 200
Response time: 1059 ms

Resolved: Bofrost.de performance has improved in ba5386b.


FreeRTOS+TCP /multi /IPv6 : FreeRTOS_DNS.c

Description
The purpose of this PR is to get the sources reviewed. Please do not used it for any project.
FreeRTOS_DNS.c now compatible with multiple interfaces and IPv6.
Also added FreeRTOS_getaddrinfo(), and it asynchronous variant FreeRTOS_getaddrinfo_a()
This PR replaces my earlier #172. The reason to renew it is that I wanted to recreate my fork of freertos/freertos.
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

I see that you might have missed some changes. Did you intentionally leave them?

I just found out what has happened: my branch has disappeared, it says: "unknown repository".
I will open a new PR called FreeRTOS+TCP /multi /IPv6 : FreeRTOS_DNS.c (v2) # 267 and close this one.


Logout link issue

I used this function for logout link instead of using it on menu.
this is code I used:
Yii::$app->getUrlManager()->createUrl('site/logout');
I know in yii2, when you want to logout you have to set: 'linkOptions' => ['data-method' => 'post'].
The problem is how can I set that option to createUrl function?

When I add this code -
Html::a('  Logout', ['users/logout'], ['data-method' => 'post'])
The links it generates is -
 Logout
in my admin module for logout it goes to localhost/mysite/admin/users/logout and says -
Method Not Allowed. This url can only handle the following request methods: POST.
I don't what the error is.

see https://github.com/yiisoft/yii2-app-advanced/issues/73


Bug bounty test - PLEASE DO NOT APPROVE. qtzdiy

Bug bounty test - PLEASE DO NOT APPROVE. qtzdiy

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.


Fix specification of backend config in log rotation example

The example in "Internal log rotation" includes the tuple
{name, "error.log"}
This apparently should be
{file, "error.log"}
as seen in other config examples in README.md.

+1


Add rotationAngle prop(set marker angle manually)

Add rotationAngle prop.
Because someone want using rotation Angle manually.
If use this, it will ignore previousPosition prop.

Also, the README.md file should be updated, the new property must be added in the Usage properties table

Thanks for your guide. I updated README.md. Check this out plz.

I wrote the wrong message(commit:adb6c10)  because of my VSCode problem. Sorry;;

Thank you for you contribution, @rnrydnd 🙌!


Function arguments issues

The section "Function arguments" mentions that ^ (hat) character can be used to scape quotes for literal strings, Visual Studio seems to disagree on this.
Additionally, adding a more complete example in Two way function binding won't hurt, specially showing the definition of the BindBack method.

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

ID: 55e6de74-ed8f-c579-9f87-766a06efe057
Version Independent ID: 543f6a62-4700-0774-8112-b288ffe7550b
Content: Functions in x:Bind - UWP app developer
Content Source: windows-apps-src/data-binding/function-bindings.md
Product: uwp
GitHub Login: @jwmsft
Microsoft Alias: jimwalk

Thanks for submitting your feedback and I apologize for the delayed response. I see that updates have not been made since the creation of this Issue so I went ahead and created an internal work item to incorporate your suggestions. The timeline for this may vary, so I will go ahead and close this and circle back when the changes are live.
Though the Issue will be marked as Closed, I will monitor any replies that come afterwards so treat this like an open Issue. Many thanks!


A new version of realm notification  causes app to stop executing code?

Version 0.92.4 of Realm is now available: https://github.com/realm/realm-cocoa/blob/v0.92.4/CHANGELOG.md
For some odd reason when I am using an older version of Realm it stops processing my code? is this how realm behaves?

RLMRealm* db = [RLMRealm defaultRealm];
    [db beginWriteTransaction];

    [db commitWriteTransaction];

Version 0.92.4 of Realm is now available: https://github.com/realm/realm-cocoa/blob/v0.92.4/CHANGELOG.md
The bad part about this is that it stops the execution of realm code and could break all realm apps ?

What do you mean when you say realm stops processing your code?

It appears to halt the app after this function call
This occurs in the simulator btw, I have yet to be able to test this on the device.
RLMRealm* db = [RLMRealm defaultRealm];
    [db beginWriteTransaction]; // Stops code here and doesn't exit app delegate

    [db commitWriteTransaction];

// Following debug to this function

```objective-c

- (void)beginWriteTransaction {
    CheckReadWrite(self);
    RLMCheckThread(self);

    if (!self.inWriteTransaction) {
        try {
            // if the upgrade to write will move the transaction forward,
            // announce the change after promoting
            bool announce = _sharedGroup->has_changed();

            // begin the read transaction if needed
            [self getOrCreateGroup];

            LangBindHelper::promote_to_write(*_sharedGroup); // The app just halts after this function call

            // update state and make all objects in this realm writable
            _inWriteTransaction = YES;

            if (announce) {
                [self sendNotifications:RLMRealmDidChangeNotification];
            }
        }
        catch (std::exception& ex) {
            // File access errors are treated as exceptions here since they should not occur after the shared
            // group has already been successfully opened on the file and memory mapped. The shared group constructor handles
            // the excepted error related to file access.
            @throw RLMException(ex);
        }
    } else {
        @throw RLMException(@"The Realm is already in a write transaction");
    }
}

The reason you were being prompted to update was that we had to stop our release of 0.92.4 part-way through the process. I've updated the latest version on our website to point to 0.92.3, which is the latest stable release, and you'll no longer be prompted to update if you're on 0.92.3.
Now, about Realm "halting" at a beginWriteTransaction call, my guess would be that this is because there's another write transaction that's still in progress. It's important to understand that writes are performed serially in Realm (i.e. they're blocking operations). So every time you attempt to start a write transaction in a thread, that thread will wait for all other pending write transactions to complete before it can start.
If you have a particularly large write transaction taking place, it could cause the app to appear to hang for a long time. I encourage you to look through your code to see if there's possibly other write transactions enqueued.

Reproduction of Bug
Roll back your changes and have it send the notification for 0.92.4
Open the simulator iOS 8
Run the app.
Place In App Delegate.h
RLMRealm* db = [RLMRealm defaultRealm];
    [db beginWriteTransaction]; // , Stops code here and doesn't exit app delegate
    [db commitWriteTransaction];

Alright it all works again ! but I would look into this it seems like a show stopper. I am not sure how to detect a new version of the library is available but that code could be causing the issues.

@ArEnSc could you please send us a sample Xcode project that reproduces this "halting" so we can investigate further? I doubt that the update checker is at fault here, but it's not impossible.

Hey I have tried to reproduce it and it doesn't appear to occur anymore which is interesting, but Ill keep a look out for this one.

Okay this happens sporadically pretty schrondingers bug going on here.

Could this be due to the fact that I have the Realm Browser open ? on the default.realm ? while the iOS device is trying to read and write ?

Although it's possible that having the Realm Browser open while you perform operations on the Realm in your app could be at fault, that scenario is generally something that Realm supports.
Again, a repro case would be very useful in digging into what's happening here.

Solved Thanks guys


how to run on real device? not the emulator

This is not a react-native relative issue, and more relative to iOS and Android their self.
Official guides as reference:

iOS
Android

I mean that how to let Android run on a real device which has a different IP address with the server, on iOS,  NSString *urlString = @"http://localhost:8081/index.ios.bundle?dev=false&minify=true";but on Android how to set the IP address

Maybe this will help:
https://facebook.github.io/react-native/docs/running-on-device-android.html#content

@chentsulin ,yeah ,I have read it before, but it can't write the IP address to the Android code directly

Fixed on React Native 0.40.0


JWT returns "invalid token" when trying to use "Bearer" prefix at token

Description
In order to comply with the JWT spec and general best practices, I tried changing my verifyToken middleware so that it looks for the Authorization header with a Bearer  prefixed content.
Previous to this adjustment, verifyToken was looking for a request header named auth-token which simply contained the token without the Bearer prefix.
However, JWT alwys returns invalid token, no matter how hard I try.
In the example below you'll see, that the verifyToken middleware should work both with and without the Bearer prefix.
When running an API request without the prefix, it works.
When doing the same request but with the Bearer prefix in Authorization, it fails.
Reproduction
verifyToken.js middleware
module.exports = async function(req,res,next) {
    // Get token
    let token = req.header('Authorization');
    // return if no token was found
    if(!token) return res.status(401).send({error:'Access Denied!'});

    // Make it work with and without "Bearer" prefix
    if(token.includes('Bearer ')) {
        token = token.split(' ')[1];
    }

    try {
        // Try to verify token
        let decoded = jwt.verify(token,process.env.token_secret);
        next();
    } catch(err) {
        // Verification went wrong, return
        res.status(400).send({error: err});
    }
}

Endpoint
router.get('/test-endpoint',verifyToken,(req,res) => {
  return res.status(200).send({status: "ok"})
})

Request samples
Working
GET /test-endpoint
Authorization: eyJhbGci ...

Broken
GET /test-endpoint
Authorization: Bearer eyJhbGci ...

 It was my fault.
I was running some additional code that didn't show up in the slightly reduced examples above. In one of the functions executed right after jwt.verify, I was looking for the Authorization token, but didn't split the Bearer token. This function than got the invalid token from jwt and threw that error back to the try function.
Remember kids: always check the entire code in try.
I feel dumb.


Add a wiki: Gensopedia

An anonymous user has submitted a new wiki via our submission form.
Link to origin wiki: https://suikoden.fandom.com
Link to destination (independent) wiki: https://gensopedia.org

Big gap in article count, but Gensopedia appears to be well-written and a go-to source. Reached out to submitter for more details.

Main reason for article count gap is how the two wikis organize their data (individual pages vs tables), as well as separate pages for supporting content (like galleries). Good to add.

This has been added and will be released in v1.3.0


Automatically resample decoded audio

I noticed that when I decoded and attempted to play audio from a .wav file that had a different sample rate than what was used by Uiua, it sounded sped up. I propose that Uiua automatically resample the decoded audio to match the sample rate used. I am willing to make a pull request if this is agreeable.

I could have sworn I accounted for this.
Do you have somewhere I can get the offending audio file?

Actually, the reason for this bug makes sense.
Yes, I would accept a PR.

It's also possible that un &ae could return the sample rate.
That way, you could resample it manually with keep.
It also would prevent you from mucking up the data by resampling when you don't need to.


APK to try would be fine? Perhaps F-Droid?

APK to try would be fine? Perhaps F-Droid?

found it on Izzy. What a nice pice of Software, thank you so much

Thanks for your feedback. I will add a Badge to the Izzy repo on the main page of this git repo!
If you find any bugs or see how to improve please let me know!


Local storage is not saved correctly after Role is initialized

Are you requesting a feature or reporting a bug?
a bug
What is the current behavior?
local storage is not saved
What is the expected behavior?
local storage should work
Provide the test code and the tested page URL (if applicable)
see https://github.com/DevExpress/testcafe/issues/2142 comments of @TestAndunR

Hi @AlexKamaev, thank you for the reply. Yes this workaround work for me. Thank you

This workaround didn't work for me.
In my tests user can only be authenticated via localStorage. It requires a special 'token' property.
I try to authenticate user by running POST /login request and inserting the result into localStorage:
const roles = {
  asMainUser: Role(baseUrl, async () => {
    const loginResponse = await usersApi.login(mainUser.email, mainUser.password);
    const appState = JSON.stringify({
      session: loginResponse,
      settings: {}
    });
    console.log("Set app_state: "+appState);
    await client.localStorageSet("app_state", appState);

    console.log("Wait until app_state is found in localStorage");
    await t.expect(client.localStorageGet("app_state")).ok();

    console.log("app_state is found: "+await client.localStorageGet("app_state"));
    await t.wait(5000);
    console.log("Waited for 5 seconds");
  }, { preserveUrl : true })
};
export default roles;

All the checks say that localStorage is populated ok, and I even wait for 5 additional seconds, as suggested in a workaround.
In 50% cases the localStorage is empty after the role is applied, and the test fails.
I also tried removing preserveUrl and navigating to the page explicitly. No luck either.

If I read the code correctly from the hammerhead repo, persisting storages is simply not implemented.
So, at the moment, persistence and rehydration of the stores must be done manually.

Hi @konki
The roles mechanism is supposed to work with both cookies and storage. The storage persistence is supported, so it is not required to do it manually. The cause of @darina-techery's issue was in overriding storage by some client script. Please refer #2782 to see details.

@AlexKamaev Nice! Can you point me to the right place where storage persistence is implemented, because it is not working for me and I'd like to debug it.

@konqi
In the testcafe repo, TestCafe sends a command to the browser to return storages:

https://github.com/DevExpress/testcafe/blob/158695b099dce51a0495b2c269449a72eb701672/src/test-run/index.js#L588

In the hammerhead repo, a browser returns the storages to the server to save them in the role:

https://github.com/DevExpress/testcafe-hammerhead/blob/9ee5ebb2e90563b8ab82cc70f608888370e6b475/src/client/sandbox/storages/index.js#L107

When a new page is requested, the hammerhead injects a special script to restore the storages from the role on the page:

https://github.com/DevExpress/testcafe-hammerhead/blob/master/src/processing/resources/page.js#L118

I'm running tests on a vue single page app and I'm getting the same issue.
After multiple logins using useRole the localStorage does not persist.
I created a class which manually logs me in on every test, which is what the Roles was technically meant to help avoid.
This might help someone if @AlexKamaev workaround does not work for you. (it didn't for me)
// Auto.js

import { selectorTag } from './TestTag'
import VueSelector from 'testcafe-vue-selectors'

import { t } from 'testcafe'

export default class Auto {
  constructor() {
    const loginComponent = VueSelector('Login')
    this.userTextInput = loginComponent.find(`.input["username"]`)
    this.passTextInput = loginComponent.find(`.input["password"]`)
  }
  async login(user = 'user', password = 'pass') {
    await t
      .typeText(this.userTextInput, user)
      .typeText(this.passTextInput, password)
      .pressKey('enter')
  }
  async userLogin() {
    await this.login()
  }
  async user2Login() {
    await this.login('user2', 'pass2')
  }
}

// sanity.test.js
import Auto from './utility/Auto.js'
import VueSelector from 'testcafe-vue-selectors'

const AutoPage = new Auto()

test('User1: Buttons are NOT visible', async t => {
  // programatically login
  await AutoPage.userLogin()

  const menuComponent = VueSelector('Menu')
  const buttons = menuComponent.find(`.buttons`)

  await t.expect(buttons.exists).notOk('Buttons are visible')
})

I think this is related to the problem I'm still having that was closed: https://github.com/DevExpress/testcafe/issues/3580

Yes I just tried the same thing I've been having a problem with without using a role and the localStorage was preserved.

@dbschwartz Thank you for your cooperation. We would really appreciate it if you prepare an example and provide it to us.

Yes @AlexKamaev, I was able to finally reproduce the problem into a demo!
I will post it as soon as I have some time

Here is the repo: https://github.com/dbschwartz/test-cafe-local-storage
You can download, npm install and run the tests with npm test.  It runs against the GH Pages repo I made.
There are two fixtures in the test.
The first without a role and will be able to click the hyperlink on the new page (the URL comes from localStorage)
The second with a role where localStorage doesn't work, so there won't be a hyperlink and the test will fail.
It seems the problem occurs during the event STORAGE_CHANGED in role where localStorage is supposed to go from hammerhead temporary localStorage to a wrapper.
In the role for some reason the localStorage data gets lost in the process.  Please let me know if you have any questions.  Thank you so much guys!

@dbschwartz
Hello,
Thank you for your project. I've reproduced the issue under Chrome 74 / Windows 10. Our team will research it and check for a suitable solution.

Thanks @Farfurix, really appreciate i

Just wanted to note my problem is a bug, not an enhancement.  Should I open it as a different issue?

@dbschwartz try updating your TestCafe version to 1.1.4. It contains a fix that improves handling of cookies and storages in Roles. If the issue still persists in the new version, please create a new bug report.

Thanks @AndreyBelym .  I tried the test with<EMAIL_ADDRESS>but unfortunately the issue still persists.  I opened a new bug report.  It can be viewed here: https://github.com/DevExpress/testcafe/issues/3780

@AndreyBelym I think I have similar/the same issue.
None of those things helped:

updating test cafe to 1.2.0 ,
adding CustomRequestHook with event.requestOptions.headers['cache-control'] = 'no-store';
adding --disk-cache-size=1 to chrome flags

@Evilweed
Hello,
Since the disk-cache-size/CustomRequestHook workaround doesn't help you, your issue is probably not related to the above issues in this thread.
Please create a new bug report with your test code and a sample project (or use some public URL) so that we can reproduce your issue and find its cause.

Looks like all comments in this thread are related to the problem that Roles can't restore cookies and storages due to browser network cache. This problem is covered by issue https://github.com/DevExpress/testcafe/issues/3780. Due to that, I close this issue as a duplicate.