Support per-request cache with SSR

This is in a sense a continuation of the now closed #70
First of all, thanks for your hard work on this library, it's great! I'm currently designing a new somewhat complex data fetching solution at work and I would like to build it on top of react-query, but there is some functionality around SSR that I would like to discuss.
I think the call to not cache data at all in #70 was the right one given the circumstances, for security reasons there can not be a cache by default on the server since it might leak user data cross-requests. However, this has some cumbersome consequences:

Using queryCache.prefetchQuery ahead of the server rendering (like in Next.js getInitialProps) wont automatically prime the cache
Calling useQuery with initialData in one place wont prime the cache for use in a second place, so reading the same data from the cache in multiple places becomes impossible

A big point of react-query is to be the global cache for data. Since this is not true on the server, a lot of nice patterns falls apart, and the only way to fix that is to implement your own cache on the server that wraps react-query, for example using a custom useQueryWithSSRCache that passes some initialData every time it is used. This seems a bit backwards since it's re-implementing a somewhat big part of react-query.
My suggestion is to make using a cache on the server opt-in and design it around creating a new cache per request, that you place on a context provider. If a cache is available on the context, use that instead of the global one.
The other part of the puzzle is to make that cache serialisable (and you probably want to destroy the entire cache when you do so), so you can send it to the client and hydrate it there. On the client you could either hydrate the global cache before rendering, or create a cache and place on a context like on the server (but then you can't import queryCache like normal).
This is also something that will very likely be needed to support Suspense server rendering on the server in the future, if you don't have a cache per request, what do you read from to see if you need to Suspend or not? I'm not sure if this is something you are interested in, or if you deem it out of scope for the library? From the Readme:

Query caches are not written to memory during SSR. This is outside of the scope of React Query and easily leads to out-of-sync data when used with frameworks like Next.js or other SSR strategies.

(Btw, I'm curious about what you mean by out of sync here?)
I'd love to get your input on this! This is a complex area so even if this became somewhat long, there is still a lot of nuance here of course, I'm very open to discussing it further and might very well be interested in contributing to something like this as well.

 I'm listening 😉 I definitely want to figure this out.
So, are you suggesting something like const queryCache = makeQueryCache() and then allowing the query cache to be passed down through the config provider? I like this idea, as long as it doesn't interfere with the current non-SSR way of doing things (so defaulting to the global singleton if the config provided cache isn't available). The weird thing here on the client would be that if you can make your own query cache singleton, then your app can't just import the queryCache that is provided by RQ. It would need to import your special one instead. I find this slightly annoying, but as long as we can prove that this is an edge case or something that would only be used on the client for testing (maybe?), then I would feel better about it. As for using it on the server... that makes a lot of sense. But then using the config provider would be required and... blah blah blah... it starts to get messy.
I do want to fix this though.

API design
You got it exactly right and there would be no breaking changes.
You asked for it, so here comes a braindump! 😉 I just typed everything out in one go before heading to dinner, so this is not exhaustive or necessarily super thought-through, but hopefully it's good starting point. As I said, if there is interest and this seems like a promising direction I can try to find some time to take a stab at a PoC to look at.
Example
A possible API could look something like this:
// server.js

async function handleRequest(req, res) {
  const queryCache = makeQueryCache();

  queryCache.prefetch('something', fetchSomething); // This would usually happen in a framework or be abstracted somehow

  const markup = ReactDOMServer.renderToString(
    <ReactQueryCacheProvider cache={queryCache}> // Could also use existing provider
      <App />
    </ReactQueryCacheProvider>
  );

  // This should probably be named something else and just return a raw object that the user can choose to serialize themselves however they want, to keep the react-query lean
  const serializedCache = queryCache.serialize();

  res.send(`
${someHtmlTemplateStart}

{markup}

${someHtmlTemplateEnd}
`);
}

// client.js

import { queryCache } from 'react-query';

const initialPayload = JSON.parse(
  document.getElementById('initial_payload').textContent
);

/* -- Alternative 1: Hydrating to global cache -- */
queryCache.hydrate(initialPayload.REACT_QUERY_CACHE);
ReactDOM.hydrate(<App />, document.getElementById('root'));

/* -- Alternative 2: Using cache provider -- */
const clientQueryCache = makeQueryCache(initialPayload.REACT_QUERY_CACHE);
ReactDOM.hydrate(
  <ReactQueryCacheProvider cache={clientQueryCache}>
    <App />
  </ReactQueryCacheProvider>
, document.getElementById('root'));

These are all pretty common patterns when working with SSR (though it's more common today to use a Provider on the client than some module-based global state).
Server rendering
Usually when you use import { queryCache } from 'react-query'; directly, it's in effects and event handlers that don't run on the server anyway. For any parts where you need direct access to the queryCache on the server, you can access it from context or pass it in explicitly from the handleRequest above:

When prefetching before the ReactDOMServer.renderToString
When reading from the cache in the react-query hooks
In the future: When using Suspense to suspend the server rendering (also in the hooks)

Also, IF you have provided a cache via context on the server, { initialData } should work as on the client as well and prime that cache for other calls to the same key.
This should also work with streaming out of the box. The future streaming Suspense server renderer, combined with Progressive hydration, might require figuring out things like streaming serialization and hydration though which should be doable, but who knows? Another unknown is how React Blocks would play into this, but that's also pretty experimental for now as I understand it.
Client
Providing the queryCache via context on the client would be completely optional and could even be hidden away in the docs. This possibility could possibly unlock interesting things in itself though, for example using separate caches when using multiple React roots to isolate applications. Sometimes I imagine you would want a shared cache, sometimes you wouldn't.
I haven't looked enough at the source, so imagine supporting multiple caches in different roots or different parts of an application would require more work as well which might or might not be worth it, but the thing about the "provide cache via provider"-part is that you get it for free anyway when building out the SSR-support. 😄
Since we can place the queryCache on a Provider with this approach, we might as well provide a hook useQueryCache as well that access it since that's extremely cheap to do and has no downsides really.
Serializing the cache to localStorage and hydrating it on reload (for scroll restoration) could be another usecase that this would support btw.
Supporting different frameworks
Next.js
Even though the examples are "custom SSR low level" ones, I'm pretty sure we can make it work with Next.js as well. Return the serialized cache from getInitialProps, create a cache from that client-side and put it on a context like alternative 2 above. We might be able to provide alternative 1 as well by having a hook that can kind of provide initialData for the entire cache, but I have some unknowns there. with-apollo-and-redux seems like a good example to look at.
I think this should work similarly with the new getServerSideProps and getStaticProps APIs there as well, but there are some caveats. getServerSideProps gets executed on the server on a page transition, so there would need to be a way to "add to" the existing cache instead of hydrating it from scratch. react-query already supports that for single queries as I understand it, so should be no problem, but there might be ways to improve the DX.
Gatsby
I'm not as well versed in Gatsby so would need to do some research, but I see no reason the approach shouldn't work there as well since it's a common pattern.
React Router v6 (alpha)
RR6 has a new preload-function that get's called before transitioning to the route. I haven't checked, but since RR is not a metaframework and has always been "low level" when it comes to SSR I imagine you call this manually on the server before rendering, so you can probably just use the pattern from the example and pass in queryCache yourself. There are nuances around how to pass that in the same way on the client if you are not using a global cache, but it should work.
Remix
I haven't checked out the previews fully yet and there are probably still unknowns, so same as Gatsby.

Just to document the progress:
#476 added ReactQueryCacheProvider 🎉
#570 was a first attempt to bring the other pieces together, a great discussion led to some insights, as well as breaking the PR apart in pieces:

#584 - Enables caching on the server for caches created by makeQueryCache (Breaking)
Future PR - De/rehydration should have a functional approach (eg dehydrate(queryCache)/rehydrate(queryCache)) and (probably?) have its own entry point to keep payload down for main lib
Future PR - Examples and new SSR-guide in docs

Just to be clear, the example API-design in the above message is outdated, but the general approach is still valid.

@Ephem I tried to use your new API's with Next.js + SSG; you might want to take a look: https://github.com/PepijnSenders/react-query-next-ssg-example. I still had to manually hydrate the cache, but otherwise, it looks quite amazing!

@PepijnSenders That's awesome! I have limited internet/computer access until next week so I can't look in detail, but at a glance this looks very close to how I've imagined it, just with a bit more boilerplate the de/rehydrate-APIs are meant to solve. :tada:
If you are up for it, I definitely think that example should become the official one when the APIs are fully there?
Btw, just to be clear, #476 which does the heavy lifting here was created by @jackmellis :heart:

Sure, I can help with that! Enjoy your time away :)

Next should take care of this. Huzzah!

Should still be open? or is there another issue tracking the de/rehydration?

@pseudo-su You could say the title of this issue has been resolved, but not parts of the description of it. No other issue is currently tracking hydration, but a WIP PR is up in #728.

Oh fantastic, very interested in this feature. I'm looking into using react-query for the first time and trying to understand if it does everything I need.
It looks like your PR would implement what I'm looking for 🤩. Looks like there's quite a lot of reference to NextJS here so in case providing an alternative adds to the discussion the ideal Provider api for react-query along the same lines as this react-jobs example.
const jobContext = createJobContext()

  // 👇 Ensure you wrap your application with the provider.
  const app = (
    <JobProvider jobContext={jobContext}>
      <MyApp />
    </JobProvider>
  )

  // 👇 This makes sure we "bootstrap" resolve any jobs prior to rendering
  asyncBootstrapper(app).then(() => {
      // We can now render our app 👇
      const appString = renderToString(app)

      // Get the resolved jobs state. 👇
      const jobsState = jobContext.getState()

      const html = `

            <title>Example</title>

${appString}

        `

      res.send(html)
    });

import React from 'react'
import { render } from 'react-dom'
import { JobProvider } from 'react-jobs'

import MyApp from './shared/components/MyApp'

// Get any "rehydrate" state sent back by the server
//                               👇
const rehydrateState = window.JOBS_STATE

// Surround your app with the JobProvider, providing
// the rehydrateState
//     👇
const app = (
  <JobProvider rehydrateState={rehydrateState}>
    <MyApp />
  </JobProvider>
)

// Render 👍
render(app, document.getElementById('app'))

I might be getting ahead of myself and maybe these make sense as seperate features after the ReactQueryCacheProvider is done, but maybe I'm just excited after seeing some of the cache/staleness settings in the useQuery API. I wanted to mention these thoughts because I think they're worth considering when thinking about SSR support for a library like react-query that implements a queryCache.
Setting freshness/staleness settings based query response
I might be wrong but as far as I can tell there doesn't seem to be a way to set the freshness/staleness settings of a query in the queryCache using the response values of the query promise.
As I understand, this means that if you make a fetch() request for data and pass it to useQuery() you have to decide what the staleTime in ms should be upfront. I think this leads to the following potentially undesireable situations
Unnecessary re-triggering of query function
You might decide to make the staleTime 5 minutes, if the fetch() request then returns a Cache-Control: max-age=1800 (30 minutes) then the staleTime in the queryCache won't know the "real" staleness value. This would cause more re-running of the query functions.
Stale data being cached too long
You might decide to make the staleTime 30 minutes, if the fetch() request then returns a Cache-Control: max-age=300 (5 minutes) if the API/server knows that this data is updating more rapidly than other responses. This means that the queryCache thinks the data is fresh for much longer than than it should be and can lead to a confusing user-experience when users don't see updated information in the UI.
Accidental "cache/freshness doubling"
If you have a CDN in front of your API it's likely that the data you're receiving from the server is already "aged" even if it's not yet considered "stale". For example, if your server returns a response with the headers
X-Cache: HIT
Cache-Control: max-age=300; s-maxage=300
Age: 240

It would indicate that while the document is allowed to live for 300 seconds (5 minutes) before being considered stale, it has already been stored in the CDN for 240 seconds (4 minutes) so in reality once it gets rendered into the page it should only be considered "fresh" for 60 more seconds (roughly).
If I can only set staleness settings before the queryFn resolves, I might choose to make it staleTime: 300000 (5 minutes). If the response from my API returns the HIT from the cache it means that the effective "max age" that my query can be considered fresh for (by react-query) is effectively doubled to 10 minutes (5 minutes in the CDN cache and 5 minutes in react-querys queryCache)
NOTE: There is inconsistency with what response headers CDNs support/use to inform the client the age of the response (Expires, Age etc)
Using Cache-Control semantics
Using Cache-Control semantics (or a subset of directives) when storing items in the queryCache would make it possible to determine the appropriate Cache-Control settings of a server-side rendered page
For example: If I have a /dashboard page in my react application, and in order to resolve all the data on that page I need to make three different queries. They might return the following response headers.

Content-Type: application/json
X-Cache: HIT
Cache-Control: max-age=1200; s-maxage=1200
Age: 1

Content-Type: application/json
X-Cache: HIT
Cache-Control: max-age=300; s-maxage=300
Age: 0

Content-Type: application/json
X-Cache: MISS
Cache-Control: max-age=0; s-maxage=1500

Technically if I want to prevent my server-rendered react HTML pages getting cached if/when they contain stale data I should make the response headers of my rendered page to no longer than the minimum values of the cache-control settings for data that was used to construct the page, EG:

Content-Type: text/html
Cache-Control: max-age=0; s-maxage=300

This would also extend to things like the Cache-Control: private directive, EG: If any of the http requests used to render the page contained a private directive in their Cache-Control then naturally the rendered HTML page should also be "private" (not stored in a shared cache) because it contains private data.
Having a "private" and "shared" cache provider
Some queries might need to be scoped to a single request but some might be OK to share across multiple users/requests. This could by whether a query is marked as private or has settings that allow it to live in a shared cache eg Cache-Control: s-maxage=300
const assets = require(process.env.RAZZLE_ASSETS_MANIFEST);
const server = express();

// this cache is used across requests
const sharedQueryCache = makeQueryCache();

server
  .get('/*', (req, res) => {
    const requestQueryCache = makeQueryCache();
    const markup = renderToString(
      <ReactQueryCacheProvider cache={queryCache} sharedCache={sharedQueryCache}>
      <App />
    </ReactQueryCacheProvider>
    );
    const cacheData = queryCache.serialize()
    const sharedCacheData = sharedQueryCache.serialize()
    res.send(
      `<!doctype html>

        ${
          assets.client.css
            ? `<link rel="stylesheet" href="${assets.client.css}">`
            : ''
        }

${markup}

`
    );
  });

I'm glad you are interested in this issue!
Custom SSR
With custom SSR, the mechanisms to fill the cache will be either to prefetch the data using queryCatch.prefetchQuery (using something like react-router v6 preload or a custom solution), or rely on Suspense as the mechanism for fetching data from inside the component. I haven't had time to try out the React Query Suspense support on the server yet, but even though I think prefetching makes sense to avoid waterfalls I'm interested in this myself. I think it should work today with react-ssr-prepass or react-lightyear.
Either way, there will definitely be custom SSR examples and docs as well as Next-versions, I think the focus on getting it to work with Next is simply because that is more constrained than custom SSR, so its actually somewhat trickier to get right from a library perspective.
Having a "private" and "shared" cache provider
I agree this usecase is useful, but would be a bit hesitant about juggling two caches in the library implementation. Another way to go about this would be to pre-seed the queryCache you use per request from a separate cache that you keep between requests and that is shared. De/rehydration would be one mechanism that would let you do this.
Btw, there are more things to hammer out around this. Currently no timeouts are scheduled on the server, so data newer gets stale there. This is fine for per-request caches, but maybe not optimal for shared ones, or things like CLI-tools that also run in a node-environment.
Staleness based on headers or response data
While unrelated to this issue, these are very interesting suggestions! I suggest you go ahead and open a new issue/discussion for this so it doesn't go unnoticed in this closed one. 😄

I extensively tested React Query Suspense on the server and is generally working fine. One problem is that you cant prime the cache implicitly.
With react-ssr-prepass you can do something like this:
const queryClient = new QueryClient({
    defaultOptions: {
        queries: {
            suspense: true
         },
    },
})

const root = (
    <QueryClientProvider client={queryClient}>
        <Hydrate state={initialData}>
        ...
        </Hydrate>
    </QueryClientProvider>
)

await ssrPrepass(root)
initialData = dehydrate(queryClient)
render(root)

We are Suspending queries and after fetching in prepass we dehydrate data and finally render with correct state in Hydrate.
With react 18 we render in one pass.  Problem is that on this first pass we don't have dehydrated state in advance and can't pass state prop in Hydrate. Other option that works is prefetching queries in advancewith queryClient.prefetchQuery, but IMHO this is not ergonomic for non trivial apps.


Change default tool from 'Select' to 'Pan' for Vehicle Tracking tab

Disable 'hoverinfo' switch if selected tool is not 'Pan'

This change is

Reviewed 4 of 4 files at r1.
Review status: all files reviewed at latest revision, all discussions resolved.

Comments from Reviewable


Please Add me - New Cairo, Egypt

Hi Everyone! This issue is to track the addition of 'Cairo' to the map, which can be found at :

Longitude :  30.051382
Latitude : 31.460982

Are you lost, my friend?

I believe you're looking for https://github.com/githubschool/open-enrollment-classes-introduction-to-github/issues

Thanks @joar


serialtask.hpp emitted by msppg.py should have handle_* \n{

Should also have friend class /* XXX */;


Virtualenv not setting terminal prompt

The current build stops my terminal from displaying the current virtualenv being displayed in the terminal prompt. Is this to do with the Git display feature?

Maybe, you can attach captures.
Or you can try disabling git from the configuration file.

You can change the true for false

Hi ifelipe, thanks for that. I tried disabling SCM_CHECK but it didn't seem to work. Will have a play around

What operating system do you use?
What kind of terminal do you use?
I need more information to help you.

Thanks Luis,
My setup is:
OSX 10.11.6 and I'm using iTerm2 and the standard Terminal that comes with
OSX
Thanks
Benjamin
On 16 May 2017 at 17:09, Luis Felipe Sánchez<EMAIL_ADDRESS>wrote:

What operating system do you use?
What kind of terminal do you use?
I need more information to help you.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/Bash-it/bash-it/issues/962#issuecomment-301832352,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AApUcOY92uTkxQiNTh4PiWH1eOO_Xt5gks5r6cpXgaJpZM4NcroG
.

@boppyer you need follow this steps for your OS.
https://github.com/Bash-it/bash-it#install

NOTE: Keep in mind how Bash load its configuration files, .bash_profile for login shells (and in Mac OS X in terminal emulators like Terminal.app or iTerm2) and .bashrc for interactive shells (default mode in most of the GNU/Linux terminal emulators), to ensure that Bash-it is loaded correctly. A good "practice" is sourcing .bashrc into .bash_profile to keep things working in all the scenarios, to achieve this, you can add this snippet in your .bash_profile:
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
Refer to the official Bash documention to get more info.

@boppyer Which theme are you using and can you please share some screenshots of what your prompt looks like?
The fix recommended by @lfelipe1501 should not be necessary on macOS. If you use the Bash-it installer, on macOS the ~/.bash_profile will be used for loading Bash-it.

@nwinkler I'm using the theme Bobby and have enclosed a screenshot. And yes I installed it using the installer which was really easy to use.

I have the same issue on ubuntu 16.04, with default settings (I used the --silent option during install).
NB I'm running bash-it on a ubuntu VM (itself running on ubuntu 16.04), my terminal is terminator.

If I can be of any help... Keep up the good work !

Switch to powerline-multiline theme "solve the issue" (I see the virtual env on the power line), so maybe it's a "feature" of theme bobby?

Adding THEME_SHOW_PYTHON=true as per @deterralba comment worked for me.


Light naming

The naming is a bit strange. I can change the name for the logs, but nut for anything else? I tried to use this plugin with alexa, but all the bulbs have the same name, so only one is available in alexa... Can you maybe fix this?

Version 1.5.9 sets the initial name. The name itself is managed by HomeKit so you may have to clear the cache for it to work. Also if you edited the name in HomeKit, this will overwrite what the plugin sets for the accessory.
Generally the names are managed by HomeKit and not by the devices.


Filter relationship as a subset

Hi,
I have a schema like this:
const schema = new Schema({     models: {         task: {             attributes: {                 description: { type: "string" },                 done: { type: "boolean" },                 deleted: { type: "boolean" },                 createdAt: { type: "date-time" },                 updatedAt: { type: "date-time" }             },             relationships: {                 // Inverse is optinal ...                  tags: { type: "hasMany", model: "tag" /*, inverse: "task" */ }             }         },         tag: {             /*             attributes: {                 name: { type: "string" }             },             relationships: {                 task: { type: "hasOne", model: "task", inverse: "tags" }             }*/         },         sprint: {             attributes: {                 createdAt: { type: "date-time" },                 dueDate: { type: "date-time" },             },             relationships: {                 tags: { type: "hasMany", model: "tag" /*, inverse: "sprint"*/ }             }         },         todo: {             relationships: {                 tags: { type: "hasMany", model: "tag", inverse: "todo" },                 taskID: { type: "hasOne", model: "task" }             }         }     } });
And I am trying to query a tasks filtered by tags like this:
   let tasks = await db.query(q => q.findRecords('task')         .filter({ relation: 'tags', records: [{ type: 'tag', id: 'tag1' }, { type: 'tag', id: 'tag2' }] }));
This works, but what about if I want to find all tasks with a subset of tags for example, only tag1:
   let tasks = await db.query(q => q.findRecords('task')         .filter({ relation: 'tags', records: [{ type: 'tag', id: 'tag1' }] }));
This doesn't work because I only have tasks with both tags: tag1 and tag2, but is there a way to find all tasks with a tags subset for example tag1 would find all tasks with at least tag1, but tag1 and tag2 would find all tasks with at least the both tags.
Thanks.

Exactly the same use case here

Hi,
I actually meant the other way around, if a query filter contains a subset of a record than that record is a result.

@fsvieira If i'm not mistaken, this is possible with the 'some' operator. It's not documented but it's there
https://github.com/orbitjs/orbit/blob/79761f3c6dad6d75f6091d7429dff52e321cc148/packages/%40orbit/record-cache/src/operators/sync-query-operators.ts#L150

Hi,
Thank you very much, for now I solved with js, I don't like to use undocumented stuff.

The some operator is now documented here so I think this has now been fully resolved.


Remove examples/fitness

We originally wrote examples/fitness to be an app which all
members of the Flutter team could carry on their phones and
use every day.  It served us well for testing of Text input,
Keyboards and writing/reading JSON.  It's never actually become
a real carry app, so lets just let it go for now.
@abarth @collinjackson

LGTM


Icon handling

this is a client sided implementation of https://github.com/adobe/helix-pipeline-service/issues/386
to see if it is feasible.
https://icon-handling--helix-project-boilerplate--adobe.hlx.page/
as there are currently no icons in the project there is not much to see here.

@kptdobe i am sure that the await in the .forEach loop could be improved, and i am sure that you might have the best solution handy.

i think this is easiest to see in action on here https://nav-refactor--helix-project-boilerplate--adobe.hlx.page/nav-new as this includes an icon in the nav that is used in different places with different CSS context.

@kptdobe i am sure that the await in the .forEach loop could be improved, and i am sure that you might have the best solution handy.

It depends. I think it is fine as is because we do not care of the order and the promises will be executed by the browser (not risk to exit before they are all executed). This should just be reflected in the decorateIcons method signature: it is not async.
If you really want to make it async, then yes, you need to change the loop to something like (not tested):
export async function decorateIcons(element) {
  replaceIcons(element);

  const promises = [];
  element.querySelectorAll('span.icon').forEach((span) => {
    promises.push(new Promise((resolve) => {
      const iconName = span.className.split('icon-')[1];
      const resp = await fetch(`${window.hlx.codeBasePath}/icons/${iconName}.svg`);
      if (resp.status === 200) {
        const svg = await resp.text();
        span.innerHTML = svg;
      }
      resolve();
    });
  });

  await Promise.all(promises);
}


Python bindings for libticables2/libticalcs2

Basically, it's what it says on the tin.
It'd be cool if I could generate Python bindings for the TiLP stack and use them to optionally support a "calcpkg install" command. I don't know how well it would work, but I've had the idea for ages now.

( calling @debrouxl )

+1
You could go further with this but I'll digress on that aspect for now.


Initial implementation for render-target concept (win32 sw-only)

Initial code for #24.
For now I'm struggling a bit with building opengl-renderer support (your scripts are skipping ANGLE build for some reason, so I need more time), so stub is used instead.

For example this code can be now simplified as:
		protected override void OnPaint(PaintEventArgs e)
		{
			if (onDrawCallback == null)
				return;
		    using (var ctx = _renderTarget.CreateRenderContext())
                onDrawCallback(ctx.Canvas, Width, Height);
		}

Hi all, any feedback on this PR? We'd like to get our skia backend in Perspex using Skia# and this was intended as a first step.
Or if you already have plans for something to cover this, please let us know.

Hi, I am also waiting on this PR!!!

This patch predates our use of the CLA bot, would you guys be so kind to resubmit the change, so that our CLA bot can request the signature?

Ehm. I've signed CLA as was requested by CLA bot in this PR which was at March the 1st. This PR was submitted at March the 3rd.

Thanks for this PR, but before I merge this in I want to have a look at getting the GPU bits working for all the platforms.
Right now, I am looking at other issues in SkiaSharp as well as updating our Skia to the "latest", or rather m52. Once this is done, I will start on the GPU/render targets.
WRT the update, I am nearly done. I just have a few kinks to work out with Android ARMv6


2 problems, time to open 'commit' view & file change on open

Expected Behavior
When i click on 'commit' view, Insomnia load faster the listed editedfiles.
When i open a file without change anything he doesn't appear in 'commit' view.
Actual Behavior
1/ When i click on 'commit' Insomnia take A LOT OF TIME to load my edited files.
I don't know why because with a git repository we just need to make a "git status" because this feature are fully offline.
I have seen it's more longer with a bigger workspace (i don't have a very big workspace with my team)
2/ When i open a file without change anything he appear in 'commit' view and it's not normal.
Reproduction Steps
Just take a workspace open some files and click on 'commit' view on your branch.
Is there an existing issue for this?

[X] I have searched the issue tracker for this problem.

Additional Information
I can't share my workspace because it's for my work and we have some credentials.
My config :
Version: Insomnia 2022.1.1
Release date: 09/03/2022
OS: Windows_NT x64 10.0.19042
Electron: 12.2.3
Node: 14.16.0
V8: <IP_ADDRESS>-electron.0
Architecture: x64
node-libcurl: libcurl/7.79.1-DEV OpenSSL/3.0.0 zlib/1.2.11 brotli/1.0.9 WinIDN libssh2/1.9.0_DEV nghttp2/1.45.1
Insomnia Version
2022.1.1
What operating system are you using?
Windows
Operating System Version
Windows_NT x64 10.0.19042
Installation method
Web
Last Known Working Insomnia version
No response

Hey @dimi-lcq, the potential fix by @PatrickMurrell   will go out in this week's beta, let us know if it improved the slowness.

Hi @filfreire & @PatrickMurrell thanx for this.
@filfreire do you have a changelogs page for the beta versions ? This version are online ?
I will test when the version is available and I will report back on this change.


Shouldn't the project be named "TypeScript Registry"?

I just found this project and, as a full-time TypeScript developer, I find it a very interesting approach. However, I was wondering why it is called "JavaScript Registry" since it is all about TypeScript?

You can also publish JS to JSR. JSR supports TS as a native first class citizen, but this is still the JavaScript ecosystem (with JS runtimes, etc), so it is called JSR :)

A pity you closed this issue so quickly. My hope was to have a meaningful discussion about the name. But on the other hand it's not that important and you already have the www domain etc. set up for JSR, so I didn't expect it to change. Just tried to understand the reasoning and why I should start using JSR at all.

If you have other questions, feel free to ask. But we will not be changing the name :)


Revert "Add IDL for Handwriting Recognition API"

Reverts openwebdocs/mdn-bcd-collector#1577
This is going to be in browser-specs and the IDL will be kept updated when sourced from there.
https://github.com/w3c/browser-specs/pull/1377

Let's remove the file once Webref has been updated to include the spec -- that way, we can still generate the corresponding tests until then!

https://github.com/openwebdocs/mdn-bcd-collector/pull/1621 fails now so I think we should merge this.


Issue #45: Tiny fix for pane selection

Very simple fix for the deprecation warning from atom's built-in deprecation thing.

@wandrewkeech Thanks for your work


usb instead of bluetooth?

this project is nice and I was wondering if the same thing can be done to control a computer remotely. I always wanted to control a server and be able to install things, modify BIOS settings, etc. Mouse and keyboard seem to be working. The next step would be getting the screen sent to me, there are cheap USB dongles for HDMI capture on aliexpress. But for all that it shouldn't be bluetooth but instead raspberry pi as a usb device emulating mouse/keyboard.

When registered as mouse and keyboard profile, we won be able to get/set other information. So I think that is impossible.

It is possible on RPI 4. See this GIST


Rephrase documentation to follow the implementation

This issue is a suggestion about rephrasing the documentation rules to be more clear and be aligned with the code.
Documentation about namespace validity rules states:
"ii. The namespace is not lexicographically less than the MAX_RESERVED_NAMESPACE range".
Furthermore, the following rule (stated below under iii)  states that namespace should not be reserved padding.
Within the code, both of these are checked using the function IsReserved by checking if the namespace falls under reserved if it is less or equal to the MAX_RESERVED_NAMESPACE.
It would be clearer and more aligned with the function if the rule ii. is rephrased as "The namespace is lexicographically larger than the MAX_RESERVED_NAMESPACE range."

Agreed with your proposal to clarify.
Note: there's a bug in these specs. https://github.com/celestiaorg/celestia-app/blob/83aff9175f1be0e8bb5fbb2712c143871defcf81/x/blob/README.md?plain=1#L148-L150 should state TAIL_PADDING_NAMESPACE and PARITY_SHARE_NAMESPACE.


Upgrade to jupyterlab 4

This PR upgrades ksmm to use jupyterlab>=4.
Changes

Upgrade the extension to use modern jupyter build tooling.
Remove environment.yaml because it's not really necessary to manage the dependencies of the project.
Remove Makefile; the commands used to build and develop this extension aren't really any different than those used to build normal jupyter extensions, so having a Makefile here is not really necessary.
Some of the react-bootstrap styles conflict with jupyterlab styles, and are messing things up. I want to minimize the time I spend on this while still having a usable interface, so with that in mind I've used my best judgement to fix the styles. There is still work to be done because the react-bootstrap obviously doesn't use jupyterlab css, but anyway things are at least usable:

I'll leave additional UI work for a future PR.

I have tested it works as expected. Merging.


gnomad v3 big query updates

Summary
This PR encompasses multiple changes to get gnomAD v3 into BigQuery. The repo is now split between v2 and v3. The major difference being the data retrieval and filtering of the v3 sparse MT. The majority of the functionality remains similar to v2. Output has changed slightly in the genotype field as the PGT field is now transformed to pgt1_non_ref and pgt2_non_ref.  The v3 bq_export_gnomad.py does not filter down to a max global AF. The bug preventing the filtering in v2 has been fixed.
This code has been tested and the import can be found here: https://console.cloud.google.com/bigquery?organizationId=548622027621&project=broad-mpg-gnomad&p=broad-mpg-gnomad&d=mwilson&page=dataset .

Thanks for the feedback @lfrancioli ! I've removed the versioned repos and adding a version arg to the modules that need them. I do not love how I handle the imports and versioning but it was the only way I could think of doing this since the the version resources are just different and obviously the exome and genome vs just genomes. I have tested this code as well in the same space as the old: https://console.cloud.google.com/bigquery?organizationId=548622027621&project=broad-mpg-gnomad&p=broad-mpg-gnomad&d=mwilson&t=genomes&page=table . I again tested this on the head of v3 however none of the transcript consequences where greater than 3_prime_utr_variant so I removed that filter for the test so youll see all transcript consequences in the data loaded into bigquery. Again thanks for reviewing!

Back to you @lfrancioli ! Based on our conversation in the gnomAD check in, I've address your comments and moved ahead with "let's just use this"  and get data to analysts instead of making this more generic though this is on my list of things to do.


add a simple apiserver

Pull Request Test Coverage Report for Build 887699996

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 84.31%

Totals

Change from base Build 787571143:
0.0%

Covered Lines:
489

Relevant Lines:
580

💛  - Coveralls


Laravel 8.0 Compatibility

This is an automated pull request from Shift to update your package code and dependencies to be compatible with Laravel 8.x.
Before merging, you need to:

Checkout the l8-compatibility branch
Review all comments for additional changes
Thoroughly test your package

If you do find an issue, please report it by commenting on this PR to help improve future automation.

:alembic: Using this package? If you would like to help test these changes or believe them to be compatible, you may update your project to reference this branch.
To do so, temporarily add Shift's fork to the repositories property of your composer.json:
{
    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/laravel-shift/filestack-php.git"
        }
    ]
}

Then update your dependency constraint to reference this branch:
{
    "require": {
        "filestack/filestack-php": "dev-l8-compatibility",
    }
}

Finally, run: composer update


Workaround for #97 - iOS transition out of sync

Thanks to @spacegraym3 for the actual hard work in https://github.com/spacegraym3/ionic-native-transitions/commit/40e3e897c79e9396e1ddc684f8ebae275019585e

What method are you using to change states? E.g. are you using hrefs or changing state programmatically?
Sorry I should have added that this only works if you use $ionicNativeTransitions.stateGo() or $ionicNativeTransitions.goBack().

@se1exin Well. I am actually using the original telerik plugin. I using the transitions programmatically. I wrapped my in-service functions with $timeout but it doesn't seem to have any difference.
e.g.
$timeout(function() {                             window.plugins.nativepagetransitions.slide({'direction': direction}); });

Ahh, the timeout is to delay the $state.go() call, not the native transition, as the state is changing instantly whilst the transition takes time.

@se1exin  Thanks. I will retry it.

Thanks for the PR!
Questions:

Why only iOS ?
what happens if you use $timeout also for Android?

Suggestions:

stateGo returned a promise before, we should keep it that way.
Do not commit dists files, they are only created for a release.

I verified and it fixes the issue. Thank you.
In my opinion, the platform check is not really required since I experienced the same transition issue sometimes on Android and it seems like it fix it also. Did anyone have such an experience with Android like me?

@shprink @se1exin
It seems like there are transition issues also on Android from time to time, the $timeout makes it better so maybe it would make sense to remove the platform check condition.

@shprink I have only ever seen the issue on iOS, however @guyromb has since indicated Android issues, so I I can update to use $timeout for both Android and iOS.
The only issue I see is that the promise that stateGo returns is generated from the delayed $state.go() call, meaning that the stateGo function will return before $state.go() returns a promise.
For example:
function stateGo(...) {
     // ...
    $timeout(function() {
        var promise = $state.go(...);
    });

   return promise; // <== promise is undefined when return evaluated
}

Perhaps this could be overcome by promise chaining? Thoughts?

@shprink I have updated the PR as per your points in https://github.com/shprink/ionic-native-transitions/pull/102#issuecomment-220998507

Good job! Will test and release today.

@shprink thanks for the pointers mate, not up to speed on ES6 yet.


Feature. Allow AWS SRT role custom name

Just a feature. As most companies follow a naming convention for resources, provide the feature to pass lambda the desired Role name for creating the SRT role.

hi lobobinario@
Apologize for not replying before, I apparently missed the notification for this issue/feature ask.  I just pushed a quick update make the role name for SRT access configurable as a CFN parameter.


The dotnet-ef tool is not functioning properly on NetPad on macOS.

I've already set up the .NET SDK and installed the dotnet-ef tool. It runs fine in the local command line. However, on the App Dependencies Check page, it shows that the .NET SDK is installed successfully, but dotnet-ef displays "Entity Framework Core .NET tool is not installed."

Also I noticed in the StackTrace your last screenshot that it seems you've built NetPad from source? If so, were you seeing the same exact error when using the prebuilt binary?

I downloaded NetPad(v0.4.2) from the Release.

So far, I have found that executing it on my local command line with root privileges has the same issue.
Normal state（dotnet --info,dotnet-ef）

Executing with sudo （sudo dotnet --info,sudo dotnet-ef）

 Environment variables display as Not Set

However, when I use sudo -E to preserve the current environment variables, the result is the same as executing directly.
sudo -E dotnet-ef --info and sudo -E dotnet-ef

I took a rough look at your code, and regarding the operations involving Process.Start, it seems that user environment variables are not being passed, which might be causing the absence of these variables. Perhaps some modifications are needed here.

Yep that's exactly what the problem is. Thank you for taking the time and digging and providing all that great info, makes my job that much easier! 😄
I think there's a couple more places where I need to pass along the env variables, and the one you pointed to is one of them.
Should have a patch for this soon. Did you use the standard installer from Microsoft to install the .NET SDK or did you use a package manager like homebrew? Trying to account for the different install pathways users might choose.

I use the official dotnet-install.sh installation script to install the .NET SDK, it defaults to installing it in my home directory.

Update: #84 is merged and will fix this issue. It will go out in v0.5.0. I also added ~/.dotnet as a common directory that NetPad will search within for a .NET SDK installation, so you will be able to remove the manual .NET SDK path you set in settings.

@2hangha1fen9 v0.5.0 is out, can you please verify your issue is resolved.

@2hangha1fen9 v0.5.0 is out, can you please verify your issue is resolved.

It's working now, but the dependency detection dialog is not displaying correctly.👍

@darwin-z a couple versions of NetPad have been released since the last update here. Are you still experiencing this issue?


[FEATURE REQUEST] Create a decorator for config callback

In the midst of looking at the elegant code for #27  , I noticed a possible simplification for improving the developer experience of this library.
Instead of the current invocation of
@app.command()
def main(
    arg1: str,
    config: str = typer.Option(
        "",
        callback=yaml_conf_callback,
        is_eager=True,  # THIS IS REALLY IMPORTANT
    ),
    opt1: str = typer.Option(...),
    opt2: str = typer.Option("hello"),
):
    typer.echo(f"{opt1} {opt2} {arg1}")

Could we instead use
@app.command()
@use_config(callback=yaml_conf_callback)
def main(
    arg1: str,
    opt1: str = typer.Option(...),
    opt2: str = typer.Option("hello"),
):
    typer.echo(f"{opt1} {opt2} {arg1}")

In this case, we could also quite nicely integrate this with #27 through the following:
@app.command()
@use_config(callback=yaml_conf_callback, save_location="./saved.yaml")
def main(
    arg1: str,
    opt1: str = typer.Option(...),
    opt2: str = typer.Option("hello"),
):
    typer.echo(f"{opt1} {opt2} {arg1}")

I like this idea.

This is actually significantly harder to implement because the @use_config decorator needs to change the function signature (add the config parameter and its default value). The standard library can't do this. I'm thinking about using this third party library to do it: https://smarie.github.io/python-makefun/api_reference/#wraps. I would prefer not to add more required dependencies. If we do go this route, I would put these in typer_config.decorators that doesn't get imported at the top level and contains a check for the optional dependency.

Would it be possible to use this?
import functools
import inspect
from inspect import Parameter

def add_argument_decorator(func):
    sig = inspect.signature(func)
    new_params = [
        *sig.parameters.values(),
        Parameter('new_arg', Parameter.KEYWORD_ONLY, default=None),
    ]
    new_sig = sig.replace(parameters=new_params)

    @functools.wraps(func)
    def wrapper(*args, **kwargs):
        return func(*args, **kwargs)

    wrapper.__signature__ = new_sig
    return wrapper

@add_argument_decorator
def test_func(a, b):
    return a + b

This decorator adds a new keyword-only argument called new_arg to the decorated function. The inspect.signature function is used to get the function's current signature, and then a new inspect.Parameter is added to the list of parameters.
The wrapper function simply calls the original function, passing along any arguments it receives. Note that in this case, the wrapper doesn't actually do anything with new_arg. If you want the decorator to affect the function's behavior based on new_arg, you would need to add that logic to the wrapper function.
Finally, the decorator replaces the wrapper function's signature with the new signature using wrapper.signature = new_sig. This makes it so that when you inspect the decorated function's signature using inspect.signature, you'll see the modified signature.
Here's an example of how this decorator works:
print(inspect.signature(test_func))  # Returns: (a, b, *, new_arg=None)

I like your solution for using the standard library but it can cause some confusion to the caller (the typer library in our case). If you tried to call test_func(1,2, new_arg=...) you will get TypeError: test_func() got an unexpected keyword argument 'new_arg'. So, I just modified the kwargs to match the wrapped function's original signature here.
I think this is acceptable for our use case, but should be treated with care. For comparison, here is the third party implementation.


Supporting arbitrary web applications without Jupyter server present

One of our goals is to have first class support for non-jupyter applications on Binder (such as RStudio, arbitrary command execution ala ReproServer, etc).
Currently, the only things that binderhub expects the process started inside to do are:

Accept a token and enforce using that (via a cookie, header or query param) for authentication

From prior discussion, the simplest way to allow arbitrary execution seems to be to build a standalone no-deps simple application that does the following:

Authentication with token + proxying (including websockets) to any other process
Process supervision of the backend process, so it gets restarted as appropriate

This program should be completely statically linked, and then dropped into the image as a final step. This unfortunately probably means we can't use Python (unless cx_freeze exceeds all my expectations), and need to write this in Go or Rust.
Once this program exists, we can use it for supporting arbitrary web backends without having to impose too many requirements on the environment that is present inside the container image.

We sortof already do this with a combination of the nbserverproxy + nbrsessionproxy for rstudio, and that mostly works when you have Jupyter already installed. However, I think to really be inclusive of non-Jupyter & non-Python users, we need to not have Jupyter present inside as a requirement.

From the binderhub side, this would mean that we support the following:

Customizing what 'cmd' is run inside the container by the API
Formalizing how we pass in the token to the container as a stable API
Formalizing how we expect the container process to use the token as a stable API

Currently all these three are jupyter specific.

Supporting arbitrary web applications

I picked that instead of your less broad first line of the first comment because it is more radical ;) My question is: is this really our goal? For me this sounds like heroku and friends, which already exists. My first reaction is that binderhub is about "telling stories with data", "data narratives", and "encouraging reuse and exploration". For me this implies a notebook like interface. Something that encourages me to poke around inside and encourages the creator to not add so many layers that it is a nice and polished product which makes it harder to explore around and reuse it in a different project.
From a technical point of view a solid and robust way to launch things like RStudio and co that doesn't rely on too many "hacks" because we started with jupyter notebooks is something I welcome.
Maybe this is just a question of wording but I felt the urge to tell you :)

It also doesn't have to be in go/rust because we could use a multi-container pod where the auth proxy is in a different container, right? Is there a reason the proxy must be in the container with the target application?
I'm all for using go/rust, as long as there is already a proxy that properly supports http + websockets without being told where those will be. I don't think developing and supporting our own proxy in go/rust ought to be within scope for this project, but adding simple auth to an existing one should be quite doable. So the first step, for me, is identifying the landscape of extensible proxy libraries in go and/or rust.

@betatim perhaps 'arbitrary interactive web applications that are traditionally single-user'? I don't think we'd be heroku, since our model is:

Autobuild some container image I
Launch image I in pod P
Allow authenticated access for the individual user who initiated process to pod P

While heroku's model is more like:

Autobuild some container image I
Launch image I in one or many pods P
Allow arbitrary access to everyone for the things in pods P at a stable URL

IMO we should make sure that 'our model' does not require Jupyter to exist in the image I, and that's in scope if we want to consider RStudio and future similar projects (Eclipse Che maybe?! plain Terminado?) as first class citizens.

@minrk after listening to you and @remram44 talk about this I'm now convinced that having a sidecar container with a proxy is the right thing to do.
i definitely do not want us to write any new code if possible, and splitting the proxy and process supervision parts lets us do that. It also means we are not actually restricted to single binary proxies, which brings nginx back into play...

Given that we're talking about simple token auth, an nginx proxy seems like it would be a pretty good fit as a side-car, and not too complicated since it's not conferring with an external service.
We may want to consider whether activity-tracking should be part of this API, as well (either in this proxy pod, or in the user application), as we are moving away from tracking at the CHP level.
Step one is multi-container pod spec support in KubeSpawner, I think?

Currently, the only things that binderhub expects the process started inside to do are:

Accept a token and enforce using that (via a cookie, header or query param) for authentication

Could this be set as an environmental variable instead of passed as an arg? I assume at least the port would also have to passed in.
Setting environmental variables to dictate how the container should behave seems to the most explicit and flexible way solution, since it doesn't assume anything about the image.
What is the rationale for requiring it to launch jupyter notebook?

Wouldn't it make sense for this to be part of the proxy instead?

@remram44 if you do auth at the proxy level, it leaves services exposed to attacks from localhost (inside the container), and from the network if you can bypass the proxy (if you are another user in the same network). Defense in depth, etc.

@saulshanabrook

What is the rationale for requiring it to launch jupyter notebook?

Something needs to do the authentication from inside the container rather than at the proxy. Currently this is the Jupyter Notebook, since that is where we already have the code. However, I'd love for us to write a single binary Rust / Go thing that can do the auth + proxying instead. We can also use a sidecar approach instead, but that would only work for Kubernetes and be non-generalizable.

http://jupyter-server-proxy.readthedocs.io/ does all the things I want it to now, but would be great to not need it in the future.

Something needs to do the authentication from inside the container rather than at the proxy. Currently this is the Jupyter Notebook, since that is where we already have the code.

Ah I see! Sorry I was totally misunderstanding the problem here. Thanks!

Does https://github.com/ideonate/jhsingle-native-proxy cover this use-case?
https://discourse.jupyter.org/t/new-package-to-run-arbitrary-web-service-in-jupyterhub-jhsingle-native-proxy/3493

I think jhsingle-native-proxy and jupyter-server-proxy together cover this use case now.


Use tooltip for full precision of balances

Anywhere where we show NEAR balance, we should add tooltip or click? to show full precision number.
This is important when we are charging for gas 1e-5 or less it's actually not visible at all. It's important for developers to be able to glean in the full information.

Duplicate of #152


Range finding doesn't work as documented

For
class MyObject
  include Dynamoid::Document
  field :name
end

this:
MyObject.where("created_at.gt" => DateTime.now - 1.day).all

yields
ArgumentError: unsupported type, expected Hash, Array, Set, String, Numeric, IO, true, false, or nil, got DateTime

Am I missing something?

@sumocoder  - Appreciate your work on the type mappings... Any hints here?

@philipmw - It looks like @sumocoder and @ayemos have PRs that address this breakage to some degree...

Ah, appears this is a result of #17

I have the same issue...

This works now based on @andrykonchin's PR, I've been testing this in a staging environment and it works well.


Construct your own operator (monoid)

Is it possible to create your own operator, or monoid more specifically? I can't find an example of this anywhere, however, the documentation says:

users are also free to provide their own functions as operators when necessary.

 Then I'm waiting for the following improvements

Fixed in https://github.com/JuliaSparse/SuiteSparseGraphBLAS.jl/pull/86. New syntax would be *(Monoid((a,b)->a+b, zero), *)(A, A) since you need to add an identity. This interface will be documented before the next release.


add halo updating to convolutional training and prediction

This PR updates convolutional training and Predictor behavior such that convolutional layers no longer zero-pad, and instead the input data has halo points appended prior to training and prediction. Halos are updated only on tile edges, not corners where there is no "correct" tile data. This change means convolutional training and (currently) convolutional Predictor prediction additionally requires a "tile" dimension in its input data, unless MPI is present and running on at least 6 ranks in a square-layout fashion.
Refactored public API:

Convolutional nets now use halo-padding instead of zero-padding, and require a "tile" dimension to be present when training
during prediction, convolutional predictors require a "tile" dimension unless running with MPI on a square layout

Significant internal changes:

Added function append_halos which takes in an xarray dataset and a number of halo points and appends halos to those points.
Refactored private methods in fv3fit._shared.stacking to be package-private instead of module-private, in order to use them directly within XyMultiArraySequence.
Refactored XyMultiArraySequence and Predictor to take in a n_halo argument indicating how many halo points the X data needs appended.
Refactored XyMultiArraySequence to take on the responsibilities of StackedBatches, including stacking, shuffling, dropping nans, and calls to check_empty and preserve_samples_per_batch.
Refactored shuffled helper function to take in a sequence of datasets with identical coordinates, and shuffle them identically.
Renamed XyArraySequence, ThreadedSequencePreloader, and XyMultiArraySequence to remove the leading underscore since they are package-private and not module-private.
Refactored precipitative and convolutional training codes to stack within XyMultiArraySequence instead of stacking beforehand using StackedBatches, since stacking must occur after halo updating and halo updating must only occur on X data (not y data).
Updated training tests to include a tile dimension, while keeping total number of sample points somewhat consistent.

However, I don't have a lot of experience with the halo updates using the communicators, so while I did review halos.py I am mostly just trusting that it is the same implementation that's used in the dycore and I'm not 100% confident in my ability to catch issues there.

Do you think the unit tests I included are enough to ensure this is working? I tried to avoid including thorough unit tests of what values are correct and just include a basic test because the halo updates are tested thoroughly in fv3gfs-util. Was this the right call?

Just to confirm, the default kernel size in the hyperparameters is such that the halo appending is actually getting tested in the fit and predict methods during test_train.py, right?

Yes, the default kernel size of 3 requires halos.

Do you think the unit tests I included are enough to ensure this is working? I tried to avoid including thorough unit tests of what values are correct and just include a basic test because the halo updates are tested thoroughly in fv3gfs-util. Was this the right call?

I think the unit tests cover the fv3fit usage well and that it's fine to trust the fv3gfs-util tests that the updates are getting the correct values.


regression: CWL conformance test "simple workflow with a dynamic resource requirement"

https://ci.commonwl.org/job/toil-conformance/558/testReport/conformance_test_v1/0/Test_simple_workflow_with_a_dynamic_resource_requirement/
from build https://ci.commonwl.org/job/toil-conformance/558/
Changes
added encryption test (commit: b987d2e)
Removed fileJobStore encryption test (commit: ea59818)
Add a more robust deleter to the file job store (commit: ca93b2c)
Avoid eagerly loading all versions on AWS jobstore destruction (commit: ec231d9)

So it could be https://github.com/BD2KGenomics/toil/commit/ca93b2c361c0a69d22ad2c99100af7359676f654 ?

@mr-c , where can I find this test? I updated the cwltest version, but still can't find it.

@ejacox cwltest is just a test runner; the conformance tests are listed in https://github.com/common-workflow-language/common-workflow-language/blob/master/v1.0/conformance_test_v1.0.yaml
Here is the test in question: https://github.com/common-workflow-language/common-workflow-language/blob/master/v1.0/conformance_test_v1.0.yaml#L1515
From https://ci.commonwl.org/job/toil-conformance/558/testReport/conformance_test_v1/0/Test_simple_workflow_with_a_dynamic_resource_requirement/ we see the command that was run inside https://github.com/common-workflow-language/common-workflow-language/blob/master/v1.0/
cwltoil --outdir=/tmp/tmpEIkClr --quiet v1.0/dynresreq-workflow.cwl v1.0/dynresreq-job.json

(oops, I need to update our CI to use toil-cwl-runner instead of cwltoil)
To reproduce this test you can leave out the --outdir=/tmp/tmpEIkClr and --quiet parts.

As you know, your running of the CWL conformance tests is controlled by https://github.com/BD2KGenomics/toil/blob/master/src/toil/test/cwl/cwlTest.py#L131 which is pulling in a version of the conformances tests prior to the introduction of this test: https://github.com/common-workflow-language/common-workflow-language/pull/626

Drilling down on https://ci.commonwl.org/job/toil-conformance/test_results_analyzer/ we can see that this test was passing until our build 557 of toil (2018-03-28)


Investigate searching and filtering a list of items by metadata not displayed in the list

Is it feasible, using our search, filter, and table components, to search and filter a list of items by metadata that is not displayed in the list?
Let me describe my use case:
The model registry has many models. Each model can have many versions. I want to be able to search and filter the model registry, which contains a list of models, for metadata that is related to a model version.
For example, I want to search the model registry for models that contain versions that have the tag “Task: Image Classification”, or the metric “Accuracy > 0.99”.
Figure 1: A video of some of the desired behavior, showing a model registry where the list view is filtered by metadata not displayed on each list item.
https://user-images.githubusercontent.com/16546056/212114018-23eee5eb-3e2d-477b-99d4-31431a1a58a7.mov
Figure 2: Early mockup of model registry table view, showing a list of models, each containing multiple versions.

Figure 3: Model registry object relationships and metadata.

Currently no action item required from OUI, I believe that the engineering partners @lauralexis  was working with have proven out that the metadata was searchable.


FHI-aims parser cannot parse valid FHI-aims input

I had to change charge 0.d0 to charge 0.0 to make the FHI-aims parser work. The log tells me that the parser doesn't know how to convert string 0.d0 to float.
0.d0, 1.d-15, etc are valid Fortran syntax and they have always been accepted by FHI-aims.

Thank you for your persistence with these troubles and the on point analysis.
I assume this is for all floats in the FHI-aims input.
@ladinesa What do you thinks, this should be not too hard to fix?

@ladinesa has this been fixed and merged yet?

not yet, can you please attach the erring mainfile? Sorry i somehow missed this.

@ladinesa has this been fixed. Are we still missing files to reproduce this? We should close, if we cannot get the necessary data.

not yet, I did not get the data.


Update doc in RecordData

The doc in RecordData is outdated.

Ah, yes you're right. I'll see to that ASAP.


Unusual zooming behaviour with mouse wheel

Describe the bug
Unusual zooming behaviour.
When zooming in and out the image pans erratically. It is more pronounced when using a mouse wheel, animate: true and already zoomed out a bit.
Your environment

Version of panzoom: 4.4.1
Browser and browser version :

Brave (Version 1.25.72 Chromium: 91.0.4472.101 (Official Build) (64-bit))
Firefox (90.0b7 (64-bit))

OS: Linux Mint
Expected behavior
The image should zoom in and out where the cursor is, without any horizontal or vertical movement.
Actual behavior
When zooming in and out, especially using the mousewheel, there is unpredictable horizontal and vertical movement.
Steps to reproduce
Use a mousewheel/touchpad to zoom in and out. It seems okay until animate is set to true. Then zooming in and out is erratic. The more zoomed out, the more pronouced the effect.
https://jsbin.com/jepevihoto/edit?html,js,output
Another example of the same thing
https://codepen.io/learnvue/pen/mdWvVPX

Cool. Fair enough. Thanks for the response :) Yeah it would be good to add
that to the docs. Possibly even a console log warning for those that are
expecting an animation might be nice too?
On Wed, 16 Jun 2021 at 17:04, Timmy Willison @.***>
wrote:

Thanks for opening an issue, but animate: true should not be used with
the mouse wheel. There are too many paint events happening to guarantee any
reliable behavior. That said, I should probably disable animate altogether
in the zoomWithWheel method and document that.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/timmywil/panzoom/issues/571#issuecomment-862507175,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AUIUOZ5MC63KCNYXYNSEMM3TTDDSXANCNFSM46ZOSWOA
.


BIO_CTRL_INFO is implemented inconsistently and not documented

As recently mentioned in #18701, which provides a workaround for the HTTP client,
it is somewhat unclear what the (intended/implemented) meaning of BIO_CTRL_INFO is.
At least for memory BIOs, BIO_CTRL_INFO yields the data length that can be read,
but for file-based BIOs it gives the current read position, which initially is 0.
So to get the data size also for BIOs referencing a file, something like this is needed:
    long data_len = 0;

    if (BIO_method_type(bio) == BIO_TYPE_FILE) {
#ifndef OPENSSL_NO_STDIO
        FILE *fp;

        if (BIO_get_fp(bio, &fp) == 1 && fseek(fp, 0, SEEK_END) == 0) {
            data_len = ftell(fp);
            (void)fseek(fp, 0, SEEK_SET);
        }
#endif
    } else {
        data_len = BIO_ctrl(bio, BIO_CTRL_INFO, 0, NULL);
        /*
         * Streaming BIOs likely will not support querying the size at all,
         * and we assume we got a correct value if data_len > 0.
         */
    }

    fseek(fp, 0, SEEK_END);
    data_len = ftell(fp);
    fseek(fp, 0, SEEK_SET);

Uhm, this is bad, generally speaking.  What's the length of stdio, again?

Good point that file BIOs may include streams like stdin.
So I've adapted the above suggested workaround to include BIO_method_type(req) == BIO_TYPE_FILE
and provided an accordingly improved bugfix in #18779.

marking as inactive, to be closed at the end of 3.4 dev barring further input

I am not aware that this issue has been solved meanwhile. If so, please point to the solution.

I have no solution to point to.  I'm marking it as inactive because this issue has gone untouched for 2 years, leading me to believe that core openssl development won't be addressing this.  If you are interested in continuing work on it, I'm happy to assign it to you as a community issue


crash report

game version 1.19.2
forge 43.1.57
Kobolds-2.2.12

Can I have an explanation of what was happening by chance in-game and the full logs?

Actually, regenerate the Kobolds config. I think I know what is happening and it seems like that it was trying to generate a structure with villagers in it but you didn't regenerate the Kobolds config after the most recent update that brought back the config for them to have a new AI goal in relation to kobolds.

Actually, regenerate the Kobolds config. I think I know what is happening and it seems like that it was trying to generate a structure with villagers in it but you didn't regenerate the Kobolds config after the most recent update that brought back the config for them to have a new AI goal in relation to kobolds.

thanks,i regenerate and now things have been okay


[PT Run] Calculate numbers in binary and hexadecimal

Summary of the new feature/enhancement
PT Run is already my goto way for doing small calculations. However I quite often need to do calculations, as well as conversions with different positional systems (mainly hex and binary).
It would be great if the built in calculator would support hex numbers by using the 0xHH notations and binary numbers by using the 0bXX notation. The result could be presented in the same system that is used in the calculation. If the calculation is mixing systems (for example hex and decimal), the result might default to decimal instead.
A conversion could also be implemented by using a notation similar to python-like casts: hex(some_numer), bin(some_number), dec(some_number).
Some possible calculation examples using the proposed system:
0xff + 0b100000000 -> 511
hex(0xff + 0b100000000) -> 0x1ff
bin(0xac) -> 0b10101100
hex(674) -> 0x2a2

I have verified the Microsoft.Plugin.Calculator because I want to add some operations but I saw that this module uses a package
https://github.com/FlorianRappl/Mages for evaluate  expressions, I think that we should add this changes in Mages.

Actualy, tracked in #3272


Support live preview

Icons could be rendered in live preview and turn to text only when clicked on.

Thanks!
Although I would expect icons to turn back to text when selected or clicked into, the way iframes, images, internal and external links work in live preview.

I would expect icons to turn back to text when selected or clicked into

I've made the decision of not showing text on selection is that I want to mimic the editing experience similar to emojis, and act like one character that can be skipped. you can have the shortcode shown in source mode and the icon will should at the right of shortcode, btw


Pool UvWriteReq objects

It might help.

Was started here https://github.com/aspnet/KestrelHttpServer/tree/shalter/write-req-pool

Resolved by #363 Resuse writes, initalize queues

Thanks @benaadams

@muratg is in PR "SocketOutput Allocation Reductions" #466 which is currently unmerged.

I plan on merging this today. I just wanted to make sure others got a chance to look at the combined PR.

:+1:


:memo: Maintain duckdb version at scale for a whole organization :shield: :sloth:

:grey_question: About
When you use duckdb action at an organization level, you may need to stay consistant on all repos.
:dart: Action

[x] Produce a quick YT demo that shows how to achieve this
[ ] Add YT video to repo resources

DuckDb GitHub Action - maintain version at github organization level

https://github.com/opt-nc/setup-duckdb-action/pull/76

Wait for merge

https://www.youtube.com/watch?v=cXzkAHPipNw

Tweet


Prefix domain-scope API endpoints with /domains.

Current API endpoints other than /root* and /security* are prefixed with /domains as part of this change, so that /foo becomes /domains/foo.

The patch is cool - please could you update the next.md release notes?


merge package from arlac77/npm-package-template

package.json

chore(package<EMAIL_ADDRESS>

Pull Request Test Coverage Report for Build 603

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 70.0%

Totals

Change from base Build 597:
0.0%

Covered Lines:
14

Relevant Lines:
20

💛  - Coveralls

:tada: This PR is included in version 1.0.13 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Adding views

@scnakandala can you please review this PR and merge it.

@smarru Sure I will do that

@smarru I checked this pull request. This pull request has only the static UI (fxml) files for the new XBaya. The functionality code (java code) here is same as in https://github.com/SciGaP/seagrid-rich-client and does not integrate with the developed UIs. I don't see any advantage of merging this to develop branch. Rather I suggest we move this to sandbox.


requirenativecomponent: "RCTContextMenuView" was not found in the uimanager

requirenativecomponent: "RCTContextMenuView" was not found in the uimanager, I think it is can be because EXPO, and I don't know what can I do with it, maybe some solution?

asdfghjkljjkjksjf sorry for the late reply, let me look into it haha

Hey, installed this library on expo bare workflow (version 43.0.2) and it seems to work okay? I just installed it + ran pod install and worked without any issues.

I'll be closing this issue now, thanks!


unnecessary line"--join=localhost:26257 "

"--join=localhost:26257 \ "
is already exist  in the last line you don't have to add twice

This change is

http://cockroach-docs-review.s3-website-us-east-1.amazonaws.com/5ae0f559c7175e673dd511f74817e8889fef1517/


Data Dictionary Orchestrator: Home page update

@jamesrwelch  - There are inconsistencies in the wording on the Home screen of the Orchestrator, see below

Can it please be updated to as below to use correct terminology for the NHS Data Model and Dictionary for consistency.
Also, is reference to the Mauro Data Mapper Correct?
The first link to the Mauro Data Mapper takes you back to the Home page, where should the link take you to?
Also, it is used for all users not just administrators.
Use the Data Dictionary Orchestrator to manage and publish the content of the NHS Data Model and Dictionary, all via the Mauro Data Mapper platform.
With the Data Dictionary Orchestrator, you will be able to:

Review the status of each branch of the NHS Data Model and Dictionary
Carry out integrity checks on each branch and review issues found, which can be rectified in the Mauro Data Mapper
Preview the content that will be published in the final NHS Data Model and Dictionary
Generate the artefacts to generate publication of the NHS Data Model and Dictionary

Note that this application is designed for authors of the NHS Data Model and Dictionary.

29/07/24 - James is OK with this.

James will investigate to see if it can be resolved for migration.

We had suggested authors as it is only authors who would use the dictionary.
Happy to have a chat about this.

James will update this.


Cannot install Ruby 2.2.3 in ubuntu 14.04

Hi,
I am getting below error while installing Ruby 2.2.3 in fresh ubuntu install.
ossl_ssl.c:141:27: error: ‘SSLv3_method’ undeclared here (not in a function)
     OSSL_SSL_METHOD_ENTRY(SSLv3),
                           ^
ossl_ssl.c:119:69: note: in definition of macro ‘OSSL_SSL_METHOD_ENTRY’
 #define OSSL_SSL_METHOD_ENTRY(name) { #name, (SSL_METHOD *(*)(void))name##_method }
                                                                     ^
ossl_ssl.c:142:27: error: ‘SSLv3_server_method’ undeclared here (not in a function)
     OSSL_SSL_METHOD_ENTRY(SSLv3_server),
                           ^
ossl_ssl.c:119:69: note: in definition of macro ‘OSSL_SSL_METHOD_ENTRY’
 #define OSSL_SSL_METHOD_ENTRY(name) { #name, (SSL_METHOD *(*)(void))name##_method }
                                                                     ^
ossl_ssl.c:143:27: error: ‘SSLv3_client_method’ undeclared here (not in a function)
     OSSL_SSL_METHOD_ENTRY(SSLv3_client),
                           ^
ossl_ssl.c:119:69: note: in definition of macro ‘OSSL_SSL_METHOD_ENTRY’
 #define OSSL_SSL_METHOD_ENTRY(name) { #name, (SSL_METHOD *(*)(void))name##_method }
                                                                     ^
make[2]: Leaving directory `/tmp/ruby-build.20151124103608.7950/ruby-2.2.3/ext/date'
make[2]: Entering directory `/tmp/ruby-build.20151124103608.7950/ruby-2.2.3/ext/sdbm'
compiling _sdbm.c
make[2]: *** [ossl_ssl.o] Error 1
make[2]: *** Waiting for unfinished jobs....
compiling init.c
make[2]: Leaving directory `/tmp/ruby-build.20151124103608.7950/ruby-2.2.3/ext/openssl'
make[1]: *** [ext/openssl/all] Error 2
make[1]: *** Waiting for unfinished jobs....
checking ../.././parse.y and ../.././ext/ripper/eventids2.c
installing default ripper libraries
linking shared-object sdbm.so
make[2]: Leaving directory `/tmp/ruby-build.20151124103608.7950/ruby-2.2.3/ext/sdbm'
linking shared-object ripper.so
make[2]: Leaving directory `/tmp/ruby-build.20151124103608.7950/ruby-2.2.3/ext/ripper'
make[1]: Leaving directory `/tmp/ruby-build.20151124103608.7950/ruby-2.2.3'
make: *** [build-ext] Error 2

Thank you

Have you installed the suggested Ubuntu packages? Installing libssl-dev would be the key here. Try it and report back. Thanks!

Having the same problem on a fresh 14.04 install.  libssl-dev installed.  Also happening for me on 2.2.2.  Following the process here:  https://gist.github.com/thepoho/26e8d8d1ead67bd6ca51

Installing libssl-dev would be the key here.
It's already installed in my ubuntu 14.04. Is there any other alternative.

Now I also did
sudo apt-get dist-upgrade to make sure I am not using older ssl versions. Then also I am getting error
linking shared-object sdbm.so
ossl_ssl.c:141:27: error: ‘SSLv3_method’ undeclared here (not in a function)
OSSL_SSL_METHOD_ENTRY(SSLv3),
^
ossl_ssl.c:119:69: note: in definition of macro ‘OSSL_SSL_METHOD_ENTRY’
#define OSSL_SSL_METHOD_ENTRY(name) { #name, (SSL_METHOD ()(void))name##_method }
^
ossl_ssl.c:142:27: error: ‘SSLv3_server_method’ undeclared here (not in a function)
OSSL_SSL_METHOD_ENTRY(SSLv3_server),
^
ossl_ssl.c:119:69: note: in definition of macro ‘OSSL_SSL_METHOD_ENTRY’
#define OSSL_SSL_METHOD_ENTRY(name) { #name, (SSL_METHOD ()(void))name##_method }
^
ossl_ssl.c:143:27: error: ‘SSLv3_client_method’ undeclared here (not in a function)
OSSL_SSL_METHOD_ENTRY(SSLv3_client),
^
ossl_ssl.c:119:69: note: in definition of macro ‘OSSL_SSL_METHOD_ENTRY’
#define OSSL_SSL_METHOD_ENTRY(name) { #name, (SSL_METHOD ()(void))name##_method }
^
make[2]: Leaving directory /tmp/ruby-build.20151127184330.2839/ruby-2.2.3/ext/sdbm' make[2]: *** [ossl_ssl.o] Error 1 make[2]: *** Waiting for unfinished jobs.... checking ../.././parse.y and ../.././ext/ripper/eventids2.c make[2]: Entering directory /tmp/ruby-build.20151127184330.2839/ruby-2.2.3/ext/socket'
generating constant definitions
installing default ripper libraries
make[2]: Entering directory /tmp/ruby-build.20151127184330.2839/ruby-2.2.3/ext/stringio' compiling stringio.c generating constant definitions compiling basicsocket.c compiling socket.c make[2]: Leaving directory /tmp/ruby-build.20151127184330.2839/ruby-2.2.3/ext/openssl'
make[1]: *** [ext/openssl/all] Error 2
make[1]: *** Waiting for unfinished jobs....
compiling ipsocket.c
linking shared-object stringio.so
make[2]: Leaving directory /tmp/ruby-build.20151127184330.2839/ruby-2.2.3/ext/stringio' compiling tcpsocket.c compiling tcpserver.c compiling sockssocket.c compiling udpsocket.c compiling unixsocket.c compiling unixserver.c compiling option.c compiling ancdata.c compiling raddrinfo.c compiling ifaddr.c installing default socket libraries compiling init.c compiling constants.c linking shared-object socket.so make[2]: Leaving directory /tmp/ruby-build.20151127184330.2839/ruby-2.2.3/ext/socket'
linking shared-object ripper.so
make[2]: Leaving directory /tmp/ruby-build.20151127184330.2839/ruby-2.2.3/ext/ripper' make[1]: Leaving directory /tmp/ruby-build.20151127184330.2839/ruby-2.2.3'
make: *** [build-ext] Error 2
Thank you

Same issue here with fresh ubuntu 14.04 install.

I could not reproduce this issue with ubuntu 14.04.3
@bhargavmehta @thepoho @zeke8402
Can you paste result of cat /etc/issue, apt show libssl-dev and apt show libssl1.0.0?

Same issue here with Debian Strech.

@zeke8402 Your linux boxes with vagrant seems to be broken. My linux server shows different version of libssl-dev under apt dist-upgrade environment on ubuntu trusty.
What's name or url your vagrant box?

@zeke8402
I can't reproduce ubuntu trusty with vagrant. You should remove 3rd party apt-line or install same version (1.0.1f-ubuntu2.15) of libssl-dev. It's not related ruby-build issue.

Right, I do not have the latest dist-upgrade. However it appears to be an issue with ruby itself. I was able to get it working by following this using rvm. If you'd like I can perform a dist-upgrade and attempting the installation again at a later time.

Thank you for your pointing.
I can reproduce this issue with debian stretch. Some beta distribution will disable SSLv3 on OpenSSL packages. Next version of ruby will fix this issue. /cc @alexandreab
but ubuntu xenial supports SSLv3 yet. I confirmed to success to build Ruby 2.2.3.
@mislav this issue is caused distribution policies. Ruby core team will release Ruby 2.2.4 and 2.1.8 before 2015.

This seems to be a cross-plateform issue. I'm running an up-to-date Debian stretch with all the dependencies I usually need, and I too fail to install ruby 2.2.3 using rbenv.
Linux yoones-laptop 4.2.0-1-amd64 #1 SMP Debian 4.2.6-1 (2015-11-10) x86_64 GNU/Linux
sudo apt-get install -y -f build-essential openssl libreadline6 libreadline6-dev curl libcurl4-openssl-dev git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev ncurses-dev automake libtool bison pkg-config libpq-dev libmysqlclient-dev libmagickcore-dev libmagickwand-dev imagemagick nodejs libffi-dev libgnutls28-dev

compiling ossl_ssl.c
ossl_ssl.c:141:27: error: ‘SSLv3_method’ undeclared here (not in a function)
     OSSL_SSL_METHOD_ENTRY(SSLv3),
                           ^
ossl_ssl.c:119:69: note: in definition of macro ‘OSSL_SSL_METHOD_ENTRY’
 #define OSSL_SSL_METHOD_ENTRY(name) { #name, (SSL_METHOD *(*)(void))name##_method }
                                                                     ^
ossl_ssl.c:142:27: error: ‘SSLv3_server_method’ undeclared here (not in a function)
     OSSL_SSL_METHOD_ENTRY(SSLv3_server),
                           ^
ossl_ssl.c:119:69: note: in definition of macro ‘OSSL_SSL_METHOD_ENTRY’
 #define OSSL_SSL_METHOD_ENTRY(name) { #name, (SSL_METHOD *(*)(void))name##_method }
                                                                     ^
ossl_ssl.c:143:27: error: ‘SSLv3_client_method’ undeclared here (not in a function)
     OSSL_SSL_METHOD_ENTRY(SSLv3_client),
                           ^
ossl_ssl.c:119:69: note: in definition of macro ‘OSSL_SSL_METHOD_ENTRY’
 #define OSSL_SSL_METHOD_ENTRY(name) { #name, (SSL_METHOD *(*)(void))name##_method }
                                                                     ^
Makefile:293: recipe for target 'ossl_ssl.o' failed
make[2]: *** [ossl_ssl.o] Error 1
make[2]: *** Attente des tâches non terminées....
make[2]: Leaving directory '/tmp/ruby-build.20151130125358.8468/ruby-2.2.3/ext/openssl'
exts.mk:201: recipe for target 'ext/openssl/all' failed
make[1]: *** [ext/openssl/all] Error 2
make[1]: *** Attente des tâches non terminées....
linking shared-object socket.so
make[2]: Leaving directory '/tmp/ruby-build.20151130125358.8468/ruby-2.2.3/ext/socket'
make[1]: Leaving directory '/tmp/ruby-build.20151130125358.8468/ruby-2.2.3'
uncommon.mk:189: recipe for target 'build-ext' failed
make: *** [build-ext] Error 2

Could everyone who's having this problem try this patch as a workaround?
curl -fsSL https://gist.github.com/mislav/055441129184a1512bb5.txt | rbenv install 2.2.3 --patch

Thanks!

Thanks, it works for me. I included your patch in my ruby/rails install script (https://github.com/yoones/railsondeb)

Will add this patch as a caveat in our wiki.

Thanks mate - worked for me.

@mislav Its working thank you very much

Beautiful ! Had the same problem, came here, and this patch solved my problem !
Thank's very much.

confirmed @mislav patch works on ubuntu 15.10 64-bit. thanks.

Works for me as well on Stretch.
Thanks

I know this thread is a little old, but I wanted to chime in and say I was having the same problem on Arch and that the patch above fixed it. Cheers!

I had the same problem when installing on ubuntu 14.04 in docker. This fixed my problem.

Hi and thx! It works for me too. The ruby 2.2.4 seems to be fixed, but currently 2.2.3 is my needed version so thx so much.
PS:.  rbenv is my ruby env manager

I had the same problem on Ubuntu 14.04. The patch works for me.

I'm working with a fresh, up-to-date install of Arch and, despite trying @mislav's patch and others and several ruby versions, continue to get the SSLv3 error in all cases:
installing bundle gems:       /home/lbrown/.linuxbrew/var/rbenv/versions/2.2.3/lib/ruby/gems/2.2.0 (build_info, cach e, doc, extensions, gems, specifications)  /tmp/ruby-build.20160915151644.17700/ruby-2.2.3/lib/rubygems/core_ext/kernel_require.rb:54:in require': /tmp/ruby-b uild.20160915151644.17700/ruby-2.2.3/.ext/x86_64-linux/openssl.so: undefined symbol: SSLv3_method - /tmp/ruby-build.<PHONE_NUMBER>1644.17700/ruby-2.2.3/.ext/x86_64-linux/openssl.so (LoadError)`
What might you folks suggest?

Having same issues as @lewisbrown. I tried @mislav 's patch but build fails. All ruby versions < 2.4.x fail.
curl -fsSL https://gist.github.com/mislav/055441129184a1512bb5.txt | rbenv install --patch 2.2.4
Downloading ruby-2.2.4.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.4.tar.bz2
Installing ruby-2.2.4...
patching file ext/openssl/extconf.rb
Hunk #1 FAILED at 104.
1 out of 1 hunk FAILED -- saving rejects to file ext/openssl/extconf.rb.rej
patching file ext/openssl/ossl_ssl.c
Hunk #1 FAILED at 109.
1 out of 1 hunk FAILED -- saving rejects to file ext/openssl/ossl_ssl.c.rej

BUILD FAILED (Arch Linux using ruby-build 20170405-2-g3b15693)

Inspect or clean up the working tree at /tmp/tmp.PPLKSdN7zN/ruby-build.20170511113555.4593
Results logged to /tmp/tmp.PPLKSdN7zN/ruby-build.20170511113555.4593.log

Last 10 log lines:
/tmp/tmp.PPLKSdN7zN/ruby-build.20170511113555.4593 ~
/tmp/tmp.PPLKSdN7zN/ruby-build.20170511113555.4593/ruby-2.2.4 /tmp/tmp.PPLKSdN7zN/ruby-build.20170511113555.4593 ~

@jatindhankhar: I ran into the same problem on Archlinux.
The problem is that ruby < 2.4 tries to use the system default OpenSSL, which then fails with:
compiling ossl_pkcs7.c
In file included from ossl.h:57:0,
                  from ossl_pkcs7.c:10:
/usr/include/openssl/asn1_mac.h:10:2: error: #error "This file is obsolete; please update your software."
#error "This file is obsolete; please update your software."

The workaround for that is to force ruby to use OpenSSL 1.0 suggested in the Archlinux wiki for rvm, but the same thing works for rbenv:
sudo pacman -S openssl-1.0 # Probably already installed
PKG_CONFIG_PATH=/usr/lib/openssl-1.0/pkgconfig:/usr/lib/pkgconfig rbenv install 2.2.4

@piotrdz  Just followed your suggestions and it works :+1:

https://github.com/rbenv/ruby-build/issues/834#issuecomment-160627207 was good for me to get ruby 2.1.5 to 2.1.7 compiled in debian 9.

I am on a fresh 4.9.35-1-MANJARO and neither
sudo pacman -S openssl-1.0 # Probably already installed PKG_CONFIG_PATH=/usr/lib/openssl-1.0/pkgconfig:/usr/lib/pkgconfig rbenv install 2.2.3
nor
curl -fsSL https://gist.github.com/mislav/055441129184a1512bb5.txt | rbenv install --patch 2.2.3 is working in my case. Versions > 2.4 are ok.

For anyone running into the same error as @abieler check my comment on this other issue: https://github.com/rbenv/ruby-build/issues/930#issuecomment-322672194

Using Ubuntu 18 here, solved doing this:
sudo apt install libssl1.0-dev
rbenv install 2.2.2

The problem is that this ruby version uses an old version of libssl (1.0) and the default package for Ubuntu is libssl 1.1.0

It works great thank you @timotta !

Worked for me trying to install ruby 1.9.3 with rbenv on ubuntu server 18.04, thanks @timotta !

Ubuntu 19 does not include libssl1.0-dev in the standard repositories. I solved this by adding the cosmic security repository as per: https://packages.ubuntu.com/cosmic/amd64/libssl1.0.0/download
Add this line to /etc/apt/sources.list:
deb http://security.ubuntu.com/ubuntu cosmic-security main
Then run
sudo apt update
sudo apt install libssl1.0-dev
rbenv install 2.2.3

Using Ubuntu 18 here, solved doing this:
sudo apt install libssl1.0-dev
rbenv install 2.2.2

The problem is that this ruby version uses an old version of libssl (1.0) and the default package for Ubuntu is libssl 1.1.0

Perfect. It worked for me on Elementary OS after trying all of the above.