New GUI framework and the future of ALVR development

Context:
I'm (very very slowly) building an alternative to ALVR from the ground up designed to be cross-platform (OS/hardware/headset agnostic) and to support the latest tech (sliced encoding). I've chosen the language Rust for its features (namely expressiveness, type system and zero cost abstraction memory management) and library ecosystem.
Since ALVR would benefit from a new GUI for the server (expecially since WinForms is awful for collaborative coding) I thought I could avoid "spreading" my time resources and develop one GUI base for both ALVR and my project.
So I found a few options for the new user interface:

Use Rust + Iced:
Pros:

I'm comfortable with Rust
Iced is lightweight (very thin runtime and no external dependencies)

Cons:

Other ALVR contributors may not be familiar with Rust
Iced is still young and lack some UI controls but it is the most promising GUI library in Rust
Hard to integrate with existing C# code

Use Dart + Flutter
Pros:

There are more potential contributors familiar with Flutter (statistically)
Flutter provides an end to end environment for building and publishing apps

Cons:

Flutter for desktop is still in technical preview (not even alpha), but there is a lot of work behind
Need to restructure the whole project around Flutter
Hard to integrate with existing C# code

Use Javascript + ReactNative:
Pros:

Even more potential contributors

Cons:

The final product needs to embed an entire browser rendering and Javascript engine, so it can be slow.
Hard to integrate with existing C# code

Other alternatives:

C# + WPF:
Pro:

Can keep C# code
We're already familiar with the language

Cons:

I cannot reuse code for my project

Continue with C# + WinForms

The GUIs for Rust, Dart, Javascript are written in their native language, WPF uses XAML, WinForms does not have user editable code.
For my project I thought I could begin with a Rust GUI and switch to Flutter or React if requested by contributors.
@JackD83 Even ignoring my personal preference, what do you think is the best approach for ALVR?
Note that I don't have an ETA both for my project or the new GUI. I'm just asking for feedback on where to invest my time.
As an aside, for the rest of ALVR the codebase, It would be easy to integrate Rust with C++ because they are both native.

For the context, I already have some pieces of Rust code (that I cannot translate to other languages) for automatic settings schema generation, so I would like to add Rust to ALVR codebase anyway.

I personally have no experience in either c++ and c# other than this project. Rust would be a welcome challenge and would help to make a cleaner codebase than the current mix of c style c++ code and various c++11 styles.
There is another alternative UI solution: Integrate light weight http server into the alvr_server and provide simple api for a html/js UI. Like SteamVR is doing it for their dev tools and the controller mapping
Pros:

Self contained software
Easy to create and extend UI
UI could be accessed from a phone or inside the Quest

Cons:

UI is only available if SteamVR is running

I really like the HTTP server idea! Controlling ALVR from Quest browser would be a lot better than putting the headset on and off to tweak settings.
Having the UI be accessible only when SteamVR is running could be confusing for existing users, maybe it's better to leave the components independent from each other.
Adding another language would not make a cleaner codebase but Rust code is a lot easier to maintain (and is almost immune to memory related bugs)
So here's the master plan:

The UI is driven by an HTTP server. On pc it is launched in a window ad hoc, similarly how it is now, but is can also be accessed in any browser that has network access to the pc.
The client handshake code is rewritten in Rust and it is integrated in alvr_server.
Removing C# removes the need for .NET framework dependencies. The VC++ redistributable cannot be removed but I've read online that it can be embedded in the main exe/dll. So ALVR would become truly portable.
A Rust "alvr_common" module for settings interop is included in both the UI and driver. The communication happens through a JSON file. (I don't know what the current ALVR-common does but the code can be moved inside alvr_server)
On the UI an Advanced tab is added with procedurally generated settings directly from the settings JSON file + a custom JSON schema. Modifying advanced settings will be marked as unsafe.
The client remains untouched.
The overall performance/stability of ALVR remains unchanged because C++ code is not touched (apart from the settings bit).

I may need some help on the aesthetic side. I know a bit of javascript but I have no experience on web frameworks, I'll see what I find.

It could be possible to have a single binary for driver and web server but to avoid SteamVR complaining that there is no headset connected (if the Quest is on sleep) there would be the need for an emulation layer (a thing that I planned since the beginning for my project). This would require a lot of extra work.

I would propose an architecture like this:

The websocket is used for all communication between the browser and the config-service. Http is only to deliver the files. Generating an ui from a given JSON would be very easy on the web

Yeah, this is right about what I had in mind, thank you for the diagram. I thought I could make the control socket communication via file for simplicity (a unified file for logging and statistics) but I would have to test the performance. Would it even be a good idea?

Just a quick comment: please keep portability to Linux in mind this time. Thanks a lot :)

Yes, that is a priority for this rewrite and for my  project. After this there are still the graphics engine, the network sockets and a few other sys calls that need to be rewritten to allow Linux support. For now I'm focusing on increasing ease of use on Windows.

Just a quick comment: please keep portability to Linux in mind this time. Thanks a lot :)

None of us worked on the original ALVR. There are a lot of things we would like to change but are very difficult to change with the current architecture.

I thought I could make the control socket communication via file for simplicity

I have never used this method. I like the sockets because of their explicit connection status and on connected/disconnect events.
I for got to add the headset discovery in my diagram. This has also be handled by the config-service

IMHO you should definitely stick to C / C++ for the lower level streaming part. Performance and portability are never the true focus of anything else. Convenience is always a tradeof or a short term (often market driven) advantage.
Do whatever you want for the GUI and high level stuff, but the core should be C++.

@3unjee Both Rust and C/C++ can be compiled to LLVM IR. Currently Rust is at worst 1.5x slower than C and at best 1.2x faster (benchmarks) so they are comparable performance wise. On the other side there is Virtual Desktop that is written in C#, that is significantly slower and that is affected by GC lag spikes, that manages to perform better than ALVR, so raw language performance doesn't seem to matter much.

I like the sockets because of their explicit connection status and on connected/disconnect events.

I thought about using a file because the flow of data is almost exclusively one-directional. Having the config-service be able to ask the driver status is definitely useful. I will have dig into how ALVR is currently working to have a clearer understanding.

hello all,
isn't the ALVR client directly communicating with the ALVR server ?
What is the control socket for ?
If only for logging and reading config files, i think a file system is a better idea.
If a file system is used we can also only use the ALVR headless (when all the config are done).

@3unjee so raw language performance doesn't seem to matter much.
Well i've discovered that performance always matters when it comes to software. Sure it doesn't matter everywhere but when you take the convenience road you lose the freedom of applying it where it matters. Also benchmarks are not always relevant, maybe you should look at real life projects instead.

I understand the urge of trying new languages, because it's shiny and that last project was painful... But in reality finding better design(s), frameworks or libraries is a often a better solution. Back in the days I've switched to the Qt framework instead of embracing the Java road and I'm glad I did it. Anyway just my two cents folks :).

@Ekristoffe the control socket is used for sending commands while alvr_server is already running (config changes, debug flags etc)
The current architecture looks like this:

Its a mixture of different languages, patterns and coding styles. Its grown over time and it shows.
In this current fork, only a handful of people have contributed code and choosing rust over C++ could help to make the project more attractive. The C++ code currently used is very hard to read.
@3unjee You can choose any language and slow it down to a crawl

@3unjee I know that performance must be a priority for a project like ALVR, but you should always make some sort of compromise. If you want the highest possible performance you can use SIMD and ASM everywhere but that makes a poorly maintainable project. I have 7 years of experience in C++ and 3 in Rust. It's not much but I think that is enough to make an informed choice of what is the best tool to use in ALVR, given his history and support status. I have a project that comes before ALVR that is written in C++, and it didn't pan out well.
Having said that, ALVR is just a "pile of glue", it connects components like video codecs and libraries that are where most of CPU/GPU time goes. If we find that performance is not good on some crucial areas that are written in Rust, there is the unsafe keyword to basically return to C realm.
I plan to maintain the code written in Rust. If you want to contribute on ALVR, having you aboard would be more valuable than the choice of language, in that we can continue with only C++ if you wish.

Wouldn't it be easier to have :
The config service which do the config file write/read, inside the alvr server,
The alvr client talk with the server directly,
The http server talk with the config service via websocket ?
Just in case so if we need to change the frontend we just reuse the websocket to the backend ?
Here is something I thought about:

@Ekristoffe The problem is that the lifetime of alvr_server (and its components) is managed by SteamVR. If SteamVR is not running there would be no way to save the settings or to see if the client is available for connection.

I plan to maintain the code written in Rust. If you want to contribute on ALVR, having you aboard would be more valuable than the choice of language, in that case we can continue with only C++ if you wish.

I have to admit I've been using VirtualDestkop a bit lately and find it amazing, in particular for VR streaming as expected. But I don't like the fact that it's closed source, it seems to me streaming technologies are extremely valuable to the community and should be as open as possible.
That being said I also need to make a living, so I've been thinking about an hybrid licencing models like GPL / Private. Having a low level ALVR "brick" would enable me to import it and then build on top (since it's MIT). Kinda like I'm currently doing with libVLC or libtorrent.
But to be honest I'm also tempted to rewrite part of it, using Qt, since it covers Android really well and is a significant boost over standard libraries.

@3unjee Fully open source and selling it on Steam are not contradicting. I (and for sure many others) would gladly pay 10€ for a nice, Linux supporting & open source streaming client conveniently available on Steam. But I consider open-source and Linux support to be vital as otherwise there are already plenty of alternative options.

@3unjee In this rewrite I plan to expose a REST API for interacting with settings and polling the server and client status. You can build your software on this.
Me and JackD83 do not own 90% of the code and do not profit for it, if you want something like libALVR you should contact the original author @polygraphene for licensing. I'm not a lawyer, but since ALVR is MIT licensed, I think you can just take the code and do whatever you want, you just have to point to the original licence and source code.
Personally I wouldn't like someone make a profit on someone else work that was made available for free, but that is just my opinion.
Final note: I'm still a student, so my time is really valuable. Because of this I would really prefer spending it doing what I want. The work I'm doing on ALVR is not guaranteed to ever see the light of day.

@zarik5 A REST API definitely wouldn't be enough if I want to build something else on top of ALVR, I think seeing this as a low level VR Streaming brick is far more interesting and future proof because of the convergence between fiber / 5G and standalone VR headsets like Oculus Quest.
@poVoq The point is a clear separation between a technology and its implementation. Take libVLC and VLC for instance, I wouldn't mind as much if VLC became closed source than libVLC because most of the technical value is here.
We could have something like libALVR_server and libALVR_client licensed under MIT (or LGPL if the original author is okay) and then everyone build from these. Maybe we could even convince the coder of Virtual Desktop to contribute to this since the community would probably do a better job at covering all the odd cases in the long run and that wouldn't defeat the value of what he builds.

The idea of a libALVR is not bad, but I am not totally familiar with ALVR codebase, I don't think I can do such a thing, especially since the original author is not responsive. Instead I would like to rewrite ALVR from scratch with cross-platform and future proof in mind, but currently that is more a dream than anything else.

@zarik5 Yeah having something like this with a very open licence is an interesting perspective if we want to build interesting projects on top of VR Streaming, while keeping the technology open for new comers across the board.
I feel I would be up to the challenge doing that (even though pure C++ is a bit tedious) but I would like to have the developper of Virtual Desktop to give us a hand because he could help us a lot to improve the ALVR solution

You can definitely ask @ ggodin for help. I'd say I first try to build the new GUI backend, so I familiarize more with ALVR, then I'll see what can be done. For an ETA, do not expect anything before July.

@zarik5 @JackD83 Maybe I could contribute the lower level ALVR library that would process inputs, extract and encode frames so you could use that with the higher stuff you are trying to build ?

@3unjee That would be awesome! Thank you!
For sure you know these things better than I do, but to make them clear, I want to list some things to keep in mind when dealing with ALVR unmaintained codebase:

Try to make small incremental changes and test everything after each one.
Even if you make large changes, try to keep them as confined as possible.
Jack an I can help you with code reviews, but we don't have insight in every corner of the codebase, so for every change there will be a chance of introducing bugs.

If you instead want to pursuit the quest of a libALVR the whole project would need a major rewrite:

stateful globals should be removed (apart from the OpenVR server instance required by HmdDriverFactory).
Every component (that will be available in libALVR API) must be made independent from each other.
Every component should not own externally allocated memory; it needs to be stateless or its state must be simple and clear. Its better to have static functions (even when private) that take more arguments than having to deal with complex mutable state.
Write tests (I can help you in this). Such a rewrite would benefit from them and at the same time would make them easier to write.
Other rules for maintainable code apply, if you have experience you're good to go.

You are free to give this a shot but we would definitely need your help to maintain the code.

@zarik5 As far as I can tell the libALVR would be mostly the code inside the alvr_server folder.
As far as I can tell, the idea would be having this standalone bricks that takes inputs and returns frames while respecting the user configuration. I've been investigating a bit about Virtual Desktop and it seems aside from the OpenVR driver they also rely on "injection" to trick a binary into thinking an Oculus Rift is actually plugged in. I'm not entirely sure how it's built, feels like black magic to me.
I could come up with something, but I would like to licence libALVR under LGPL, it seems to be a better licence in my opinion than MIT. Also since it's a bit tricky to maintain pure C++ I probably need to add a dependency to Boost or QtCore (not the GUI stuff). There could be CLI binding for the C# client and maybe one of you could write test(s) for the library ?
I would like to open a Discord to discuss about this, would you care to join it ?

Spoofing a Rift will be problematic with crossplatform stuff. Maybe better to implement it as HTC Vive clone? http://www.openhmd.net/ seems to do something like that?
Or maybe just go OpenXR directly? This might be a good open-source resource for that: https://monado.dev/

@poVoq So openhmd basically provide an open source driver for headsets like the Oculus Rift ? That's interesting I wonder how well it actually works ?
(Monado seems to be a VR engine so I'm not sure how it would help us with video streaming)

@3unjee Not so well, as much of the functionality isn't implemented yet and there are difficulties especially with inside-out tracking (which wouldn't be the case for the Occulus Quest in streaming mode I guess).
Monado isn't a VR engine, but also an open-source driver framework, but one targeting the new standard OpenXR instead of OpenVR (Valve's inhouse one). But it looks like Steam will support OpenXR sooner or later, as they take part in it and it is the OpenGL/Vulkan of VR headsets.
Learn more about it here: https://www.youtube.com/watch?v=LdPq3Bke8j8

Monado isn't a VR engine, but also an open-source driver framework, but one targeting the new standard OpenXR instead of OpenVR (Valve's inhouse one).
Yeah, I guess it might take a bit of time to be adopted depending how friendly Oculus folks and game developpers are willing to embrace it. And that wouldn't help with "injection" and supporting current Oculus Rift Store games, but that's definitely a good news for the future of VR Streaming.

Coming back to libALVR I think it's clear we shouldn't entirely restrict the architecture to OpenVR and be open to other methods.

@3unjee Khronos planned to make a OpenXR device plugin interface (similar to OpenVR driver API) but AFAIK development hasn't started yet. So the options now are only OpenVR and injection. There was the driver Vireio Perception (or the successor VorpX) that also uses some kind of injection, in this case to convert a non VR game to VR. I think the injection can be done by "simply" making the game discover first a custom made dll with the same public symbols as the Oculus runtime dll, instead of the original Oculus dll. I would never attempt do such a thing, maintaining a backend for an evolving API with its many legacy interfaces would be a nightmare for a single person.
Responding to your earlier comment: I don't think you can re-licence the existing code yourself, you need to contact the original author. Adding other libraries I think it's fine, as long as it would not make the installation process more complicated for the end user.

I would like to open a Discord to discuss about this, would you care to join it ?

Sure, send the invite to my email if you want.
I would like to hear @JackD83 about this direction of development (libALVR).

@zarik5 @JackD83 Definitely want to keep the legacy of the original author and the work of Jack intact if I start working on libALVR. We should make sure that we have no regression with quite a bit of testing. As for the rest I guess it's meritocracy if I end up writing something that's any good we'll likely use it. I have a little bit of experience in video streaming with previous activities, we'll see how it fares out...
I think the VirtualDesktop developper actually maintain a list of compatible games with his injecton method. I'm pretty sure the dll stuff you've mentioned is actually what he does, because we can't seem to be able to run the games from the official Rift store.
Also, does anyone know where @polygraphene went and his official reason for quiting the project ?

I'm really not sure about a libALVR. Maybe a clean re-implementation with a cleaner architecture would be enough to be able to reuse most parts in other projects or if a new VR standard is actually used. I also know that if we already want and include too much in this phase, complexity will rise and nothing will be done.
I personally would prefer a clean OpenVR implementation over any injected dlls and hacky stuff.

As why @polygraphene stopped working on ALVR I can only guess and speak from my experience here: The project is aimed at end-users but does not have the community to support it. Most of the bug reports are from people creating an github account just for this. Very few could compile it or start a debug session and the issues are piling up. Without help, one alone can not support this and it gets frustrating. (That is why issues get now automatically closed after a time :P ) ev7 had 38,350 downloads!

@JackD83 Excellent diagram, makes a lot of sense. Even if we don't go the libALVR route I think it would be a good idea to make the alserver a standalone multiplateform application (as your diagram shows). I'm interested in revisiting the @polygraphene source code here, it feels like a coherent move having 10+ years in C++ and experience in streaming with libVLC (developed by a few french "compatriotes" :)).
I could contribute mostly on that and you guys could focus on HTTP server(s) and client stuff, if that's okay for you? Are you actually dropping the C# interface and replacing it with HTML ?

@3unjee yes the C# has to go. The ui is unmaintainable anyway.
Here are some diagrams I made while digging into ALVR. They are a good start:
https://raw.githubusercontent.com/JackD83/ALVR/master/ALVR_classes.png
https://raw.githubusercontent.com/JackD83/ALVR/master/ALVR_Sequence.png

Okay, anyone who wants to discuss some more about the next design is welcome on Discord: https://discord.gg/ypagkhV

About the next alvr, will you plan to also support the other VR headset ?
It would be quite cool to have the Oculus GO.
For example I only have a GO and I am stuck with the original ALVR without any improvement made by this repo.

I thought about supporting the Go in a second wave of rewrite.

This might sound a bit strange, but Cardboard and maybe Daydream are also still viable platforms for VR streaming :)

Cardboard and Daydream are deprecated. I think it's worth looking only at supported and future platforms.

I have a GO, maybe I can help (if it is a programing language I understand)

@Ekristoffe Thank you. I can start working on that in a month (after ALVR v12 is released), then it will take another couple of months until v13 is ready for testing.

Cardboard is fully open-source now and being adopted by the FPS quad-copter racing scene, so I don't think it is really fair to say that it is being depreciated. Daydream... yeah sadly.

@poVoq Cardboard has a completely different API than Oculus mobile SDK for the Quest and Go. Supporting both requires a lot of glue code that makes things unmantainable. @polygraphene started going this route, but then abandoned it. It's easier to make a different fork of ALVR for only cardboard.

Just for my understanding:
the current ALVR experimental v11 is built up with Oculus mobile SDK and therefore does not work with other Android devices?
But applications built up with Android SDK would work with oculus device too?
Are there sdk Cardboard SDK specific functions needed for ALVR, or android SDK only would be appropriate for cardboard-like HMD (smartphone)? (video-/audio stream decoding/playback, sending device orientation)
Maybe a generic part (limited functionality e.g. 3DOF HMD only) of ALVR should be built-up with Android SDK and only Quest-specifics (handtracking, 6DOF, Controller Tracking) should be built-up with oculus mobile SDK and both parts connected by an interface to get full functionality for e.g. the quest. Some kind of modular software design for specific devices.
This could consider compatibility to all related android devices (e.g. smartphones, stand-alone HMD) and maybe make it easier to adapt/optimize ALVR for other upcoming devices...

ALVR uses the Oculus SDK for frame submission, for obtaining controller and head tracking data. The head orientation must be obtained from the Oculus SDK because it gives also the exact timestamp of the data, that is used to make the asynchronous timewarp work correctly. Any other library used is part of the Android SDK.

@MPfaffe As far as I can tell there is room for coming up with a generic VR streaming implementation that implements generic functions, ideally both for the PC server and the android client. Then the idea is to build the OpenVR driver and the Android client on top of these classes.
That's what I'm going to try with HEVR -> http://omega.gg/HEVR
But it's a long journey, so in the meantime ALVR is going to deliver the best experience for the Quest headset + Windows PC.

I believe the original ALVR server implementation was based off of valve's 'virtual display' example which can be found here: https://github.com/ValveSoftware/virtual_display
There's a pdf in this repository that explains a lot of what goes on in the alvr_server code.

So, what's the current progress on this and what do i do if i want to help? I really wish for a cross-platform streaming solution to exist. I like the idea of making the server and client separate "libraries" unconcerned with specific platform stuff, on top of which a plugin for any headset/game library thing can be made but right now i'm mostly concerned with my Linux PC connecting to my Quest :P

@lmarianski Linux compatibility is still far off (for now every piece of code in ALVR is tied to Windows) but you can join the new official ALVR discord: https://discord.com/invite/KbKk3UM so we can coordinate.

The branch web-ui has been merged into master and will be the base for ALVR version 12.


Initalization hang for launch experiment under assistant/init

Under a local NextML, when having 6 unfinished experiments (using the PoolBasedBinaryClassification app) I observed an initialization hang (never completed) when attempting to launch the strange fruit experiment. No errors were observed in the NextML output.
The problem went away once I did docker rm $(docker ps -a -q)

I also often finding myself having to remove containers to get experiments to launch again (docker-compose rm is a safer way because it will only remove NEXT containers).  I'd like to get to the bottom of this but I don't know where to begin.

Maybe someone should make a test file that attempts to submit 50 experiments and verifies they all launched.

In my experience is the problem is when you haven't removed the containers in a few days.  I've had plenty of times when I've started 20+ experiments in quick succession.

Note: I observed this behavior just now when re-launching 7 experiments that were automatically backed up from yesterday. I deleted each container one by one and only saw a fix when I deleted the local_rabbitmqredis_1 container. It's hard to say if local_rabbitmqredis_1 caused the issue because i was not able to first delete it (although the other containers were recreated).

Interesting - can you try this with the CELERY_OFF flag set to true in
Constants.py?
On Sat, Jun 17, 2017 at 11:20 AM, Kwame Porter Robinson <
<EMAIL_ADDRESS>wrote:

Note: I observed this behavior just now when re-launching 7 experiments
that were automatically backed up from yesterday. I deleted each container
one by one and only saw a fix when I deleted the local_rabbitmqredis_1
container. It's hard to say if local_rabbitmqredis_1 caused the issue
because i was not able to first delete it (although the other containers
were recreated).
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/nextml/NEXT/issues/193#issuecomment-309221191, or mute
the thread
https://github.com/notifications/unsubscribe-auth/ABWhGOjBqm-vjWY_yVqTkHdibp-XRgh0ks5sE-60gaJpZM4N87Ol
.

I've been running into this a lot, and I've figured out what's going on,
but not why it happens.
For some unknown reason, when launching NEXT, the Celery workers and NEXT
don't establish a working connection.
Since initExp requires a synchronous call to Celery, and we poll for the
job result, initExp will hang indefinitely waiting for Celery.
If NEXT launched successfully, you don't need to worry about this.
It's immediately apparent when Celery mislaunched, as any API request
will hang.
Liam
On Sat, Jun 17, 2017 at 10:24 AM, Lalit Jain<EMAIL_ADDRESS>wrote:

Interesting - can you try this with the CELERY_OFF flag set to true in
Constants.py?
On Sat, Jun 17, 2017 at 11:20 AM, Kwame Porter Robinson <
<EMAIL_ADDRESS>wrote:

Note: I observed this behavior just now when re-launching 7 experiments
that were automatically backed up from yesterday. I deleted each
container
one by one and only saw a fix when I deleted the local_rabbitmqredis_1
container. It's hard to say if local_rabbitmqredis_1 caused the issue
because i was not able to first delete it (although the other containers
were recreated).
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/nextml/NEXT/issues/193#issuecomment-309221191, or
mute
the thread
<https://github.com/notifications/unsubscribe-auth/ABWhGOjBqm-vjWY_
yVqTkHdibp-XRgh0ks5sE-60gaJpZM4N87Ol>
.

—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/nextml/NEXT/issues/193#issuecomment-309221425, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AEa8SXv5KELignNofT0aapoOIJQTO8Qpks5sE--3gaJpZM4N87Ol
.

If it's a Celery problem, maybe it'll go away if we update to the most recent version of Celery?

re: Celery, it looks like there have been worker hanging problems as late as 2016, see: https://github.com/celery/celery/issues/1847 as possibly being related.

celery/celery#1960 seems to suggest increasing number of workers

Facing the issue this morning.  Played with # of workers/prefetch/etc. and tried various inspect commands and still nothing.  inspect is showing queues to be empty.

Tried a bunch of things to see if I could isolate it to rabbitmq but couldn't.  I'm going to switch to my celery 4.0 branch and see if I can reproduce it.

Is there any chance it is the celery version? Also did you try turning
Celery off? I am kind of curious to know if that does anything.
On Mon, Jun 19, 2017 at 11:27 AM, dconathan<EMAIL_ADDRESS>wrote:

Tried a bunch of things to see if I could isolate it to rabbitmq but
couldn't. I'm going to switch to my celery 4.0 branch and see if I can
reproduce it.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/nextml/NEXT/issues/193#issuecomment-309475318, or mute
the thread
https://github.com/notifications/unsubscribe-auth/ABWhGHaak1A3WzkzGD5WrVO4XD5J1BrSks5sFpNYgaJpZM4N87Ol
.

@lalitkumarj yeah I tried it with celery off and was able to launch an experiment.

Okay so I rebuilt using celery 4.0 and was still seeing the issue.  Then I removed/recreated the rabbitmqredis and that fixed it!  Next time it happens I'll try reproducing this, but this definitely helps narrow down the problem if true...

Thanks for the links to the Celery issues, I'll play a bit with this today
as well. Can we just freeze the celery version (as it used to be)?
On Mon, Jun 19, 2017 at 11:35 AM, dconathan<EMAIL_ADDRESS>wrote:

Okay so I rebuilt using celery 4.0 and was still seeing the issue. Then I
removed/recreated the rabbitmqredis and that fixed it! Next time it happens
I'll try reproducing this, but this definitely helps narrow down the
problem if true...
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/nextml/NEXT/issues/193#issuecomment-309477829, or mute
the thread
https://github.com/notifications/unsubscribe-auth/ABWhGDHsEEn_GVyzcyn5GeCP8zDmwzWMks5sFpVIgaJpZM4N87Ol
.

@lalitkumarj it is frozen https://github.com/nextml/NEXT/blob/master/next/base_docker_image/requirements.txt#L7

It happened again and removing/recreating the rabbitmqredis container fixed it again.  I would say it has to be that we're getting caught in one of the following while loops:
https://github.com/nextml/NEXT/blob/master/next/broker/broker.py#L115-L133
https://github.com/nextml/NEXT/blob/master/next/broker/broker.py#L176-L194
These are literally the only two places that the rabbitmqredis is used.

Debugging this again this morning.  It's not the while loops themselves causing the problem.  I think I nailed down the cause.
The problem is that every so often (I guess) docker changes the docker id for containers (and thus the hostname).  rabbitmqredis caches the hostname in its database:
https://github.com/nextml/NEXT/blob/master/next/broker/broker.py#L189
So every so often the hostname changes but because of the cache, the broker keeps trying to hit the old hostname.
The obvious solution is to set the key to expire.  Grabbing the hostname from disk is not terribly expensive.  Problem is that the __get_domain_for_job function fails when the minionworker itself runs it, because the worker doesn't have MINIONWORKER anywhere in its /etc/hosts.
I think the solution is to put this at the end:
if self.hostname is None:
    import socket
    self.hostname = socket.gethostname()

Which seems to grab the correct hostname when the minionworker is calling this function.
I'll put together a pull request that does all this - we will want to test this a bunch to make sure socket.gethostname() is indeed doing what we want (e.g. is this something where different versions of docker would screw us over?)

Also, I have no idea about the whole "multiple worker nodes" described in that comment.  Is this still supported?  Is this something that this socket.gethostname() will break?

Branch that fixes this here: https://github.com/nextml/NEXT/compare/fix_minionworker_hostname
Tests pass on my up-to-date images at work.  I can't test the normal ones here though so I'm holding off on the pull request.


aubuf: read also last frame if it has not the full size

aubuf: read also last frame if it has not the full size
If the last frame in the aubuf is smaller than the wanted size, then aubuf_read
should return this part and fill up to the rest of the frame with silence.
In most use cases complete frames are pushed. But module/aufile also uses aubuf and may finish with writing a partly frame. If this final frame is not pushed into the auplay, it may lead to an unclean end.

This is aligned to the already merged baresip commit e58e25092f8f08bc2c91c16018dc03462a67f94e.


When you "clear", sometimes networks can be left behind

im guessing the disconnection doesnt happen fast enough and then it cant delete the network

seems like better error handling has stopped this afaict


Would be possible to assign a different color to a nvim :terminal window?

I use Nvim to conduct data analysis using a REPL in the form of a :terminal window. I'm curious if it's possible to assign a different background color exclusively to :terminal instances, as a means to differentiate between my code and the console. I believe the tokyonight theme has a setting that allows for such customization.

@aisneto - Implementing it as option is a great idea. I will look into how tokyonight did it.


Fixed compiling with Swift 3.1

Xcode 8.3 introduced Swift 3.1 which forbids to access deinitializers. The code
started failing to compile with "Deinitializers cannot be accessed".  Looking
closer it seems the code in question isn't even needed, deinit defined in Swift
is not exposed by class_copyMethodList() function.

This addresses https://github.com/XWebView/XWebView/issues/79

When a version will be generated with this fix?

@githubdoramon I am eagerly waiting for feedback on this PR from the XWebView authors! In a mean time you can use your own fork with the patch applied.

I did that. Thanks a lot
On Apr 7, 2017 05:57, "Denis Dzyubenko"<EMAIL_ADDRESS>wrote:

@githubdoramon https://github.com/githubdoramon I am eagerly waiting
for feedback on this PR from the XWebView authors! In a mean time you can
use your own fork with the patch applied.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/XWebView/XWebView/pull/80#issuecomment-292481276, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AH2U9-62XCy2VdVXkki4-yEl9B33QVX7ks5rtfqIgaJpZM4M1bdQ
.

Thanks for the nice PR.


Item gets stuck off-center while scrolling vertically/diagonally

I've spotted an issue where the item gets stuck off-center when you swipe upwards as well as horizontally.

As you can see the card gets stuck to the side when scrolling vertically as well as horizontally.
This same example can be replicated on the example given on https://react-slick.neostack.com/ - though it's harder to notice because of the lack of padding.

Expected outcome:
The card should bounce back to the center, as it normally does, when swiping vertically combined with horizontally.

have same problem

same problem here with the official demo
https://codesandbox.io/s/react-slick-playground-kdme2

The trick to reproduce this issue is dragging an item and instantly releasing the mouse once the left item appears.

ok, found the solution. Just wrap one more div to the  tag.
original code
<Slider {...settings}>

working code:
<Slider {...settings}>

Nice spot. Strange bug

strange , working for me as well , thanks

not working


Error when compiling the kernel, error: unknown type name 'hot'

When I build the make, I have problems, my compiler, He says
error: unknown type name 'hot'

I followed the osdev tutorial and the cross compiler works, could it be that you used a different version to do it?
I use binutils 2.27 and gcc 6.20
I saw this YouTube video: https://www.youtube.com/watch?v=nnL_Lv19hdw&t=16514s
thanks!

Hello, this keyword was included as a micro-optimization in older versions of Carbon. Unfortunately, I haven't had time to finish the new version and put it on Github. The new version shouldn't have this keyword. If you check back in a few months I should have that version up, but otherwise, you can fix this issue simply by getting rid of all of the occurrences of the hot keyword. The easiest way to do this would just be to use a find and replace command recursively in the carbon directory. Thanks for the interest in my OS!

Thank you very much for your reply, well, I will delete those keywords :),

@cristian-programmer hi! Just wanted to say: the new version is finally being developed!

Thank you very much, I will be pending in the development: D.


Remove executable flags from files that do not ened it

A bunch of files had the executable bit set, which is not needed. Now only script/generate is executable.
@ntalbott @Shopify/payments

:+1:


Fix typo

Type of Change

[ ] New feature
[ ] Bug fix
[ ] Documentation Update
[ ] Refactoring
[x] Hotfix
[ ] Security patch
[x] UI/UX improvement

https://github.com/ChrisTitusTech/linutil/pull/428 😤


SVG gradient images render

Hello,
I need to export an image in svg with a gradient, but when I try to download the pdf take me this message:
Fatal error: Class 'Sabberworm\CSS\Parser' not found in C:\xampp\htdocs\PruebasPDF - copia\dompdf\lib\php-svg-lib\src\Svg\Tag\StyleTag.php on line 19
It's possible with this library convert the image?
How?
Thank you!

How did you install php-svg-lib? Did you use composer? Is it possible it didn’t install the dependencies correctly? If you didn’t use composer, make sure you have an autoloader and have configured it correctly to load PHP-CSS-Parser.

I already have that library (php-svg-lib) when I installed dompdf. I don't have the problem with a svg image without gradient. I don't know..
Thank you for your faster response.

But how did you install? Using composer? Can you see if you find php-css-parser in your lib folder?


Do not recommend extensions if language is set via auto detection

Does this issue occur when all extensions are disabled?: Yes/No

Create an untitled file and type class A
It auto detects language C# and prompts

IMHO we should not do any extension recommendation if the language is auto detected which can be wrong.

Not sure there's currently a way to soft set the language of the editor. This isn't possible, right @bpasero?
I'm trying to think of the right way for this to work.

Isn't that the purpose of hasLanguageSetExplicitly in BaseTextEditorModel?

True. That's available. @sandy081 where would a good place be to check for this?

Here:
https://github.com/microsoft/vscode/blob/884c8a6566bcb8b6b12994fc21f175896f0efae7/src/vs/workbench/contrib/extensions/browser/fileBasedRecommendations.ts#L138
https://github.com/microsoft/vscode/blob/884c8a6566bcb8b6b12994fc21f175896f0efae7/src/vs/workbench/contrib/extensions/browser/fileBasedRecommendations.ts#L241


Adding a coveragerc file

This is not count the tests python files as part of the coverage calculations.
Signed-off-by: Ricardo Koller<EMAIL_ADDRESS>

[Current coverage][cc-pull] is 38.31%

Merging [#87][cc-pull] into [master][cc-base-branch] will decrease coverage by 6.38%

@@             master        #87   diff @@
==========================================
  Files            30         20    -10
  Lines          3602       3064   -538
  Methods           0          0
  Messages          0          0
  Branches          0          0
==========================================
- Hits           1610       1174   -436
+ Misses         1992       1890   -102
  Partials          0          0

Powered by Codecov. Last updated by [db5d849...bb23052][cc-compare]
[cc-base-branch]: https://codecov.io/gh/cloudviz/agentless-system-crawler/branch/master?src=pr
[cc-compare]: https://codecov.io/gh/cloudviz/agentless-system-crawler/compare/db5d849e4c2b05d1f5dff9346b9c3b82f4ab7799...bb230527c98bcac9eb08e67381ce23019e0c9343?src=pr
[cc-pull]: https://codecov.io/gh/cloudviz/agentless-system-crawler/pull/87?src=pr

@MHBauer you are right. Replaced the string. That was a shameless copy-paste.

Looking good to me.  I would argue it is the write thing to do.

Please squish the two commits down into one before merging.

done @MHBauer


Live Queries Support.

cc: @wangmengyan95

Updated per comments.

This all looks good to me. I'll do one last pass, then merge into the 1.8 release branch, followed by merging that into master. If the rye tests I just landed all pass, I'll cut a second RC on npm, which we can test as a standalone package. If that all looks good, we can bump the version number to 1.8.0 and push that out to everyone on npm.

Made the changes, everything is merged. You can fetch the latest version of 1.8.0 with npm install<EMAIL_ADDRESS>


GROA import missing species

@ValentineHerr , our GROA import is not incorporating the species field in biomass_litter_CWD.csv. This should go in veg_notes and would be extremely useful for filling in the dominant veg type.
Relates to https://github.com/forc-db/ERL-review/issues/32.

hmm.. weird, I had commented out the line that did that import. I wonder if we had decided at some point to not import it. I'll fix that now.


BroadcastChannel not working

Hi, I'm trying to run this project, but it seems event's don't get emitted by BroadcastChannel.
I'm either missing enabling something so that BroadcastChannel works, or this API seems to be deprecated/broken?
Is there a way to get this to work without the BroadcastChannel API?

Hi there, I understand the broadcast channel API will be phased out in newer versions of open LP. Try downloading an older version of open LP. I do believe 2.4.6 is the latest version that is supported. Let me know how that goes.

Hi, thanks for your quick response. I'm actually running openlp 2.4.6 and it doesn't seem to work. I also tried the code on the browser and it doesn't seem to work there either, which is what makes me think the api is deprecated.
Since this is JS code, I believe the problem might be tied to the browser support running the code.

https://developer.mozilla.org/en-US/docs/Web/API/Broadcast_Channel_API
According to this, it seems like Chrome and Chrome embedded both support broadcast channel api. We're using this tool at our church services and it seems to be working fine as of last sunday. Do you have the browser dock setup in OBS as well? It's necessary for the browser source part to function.

In the README, under the heading "Setting up OBS", look at step 3 for the browser dock. It must always be visible, otherwise the browser source will not receive any updates from OpenLP.


Audit filter is also available for the insecured endpoint

See code here:
https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/apiserver/pkg/server/config.go#L445

This change is

See https://github.com/kubernetes/kubernetes.github.io/pull/2934#issuecomment-288042394.


forking fails when debugger attached

Windows 10
Node 8.9.1
Create two files:
index.js:
const cp = require('child_process');
const path = require('path');

function function1() {
    console.log('Welcome to Main');
    for (i = 0; i < 2; i++) {
        let p = 5746 + 1 + i;
        let child = cp.fork('child.js', {}, { execArgv: ["--inspect=" + p] });
        child.on('message', (message) => console.log('message', message));
        child.on('error', (error) => console.error('error', error));
        child.on('disconnect', (disconnect) => console.error('disconnect', disconnect));
    }
}

function function2() {
    console.log('M M M M M M');
}

function1();
setInterval(function2, 3000);

child.js:
function function1() {
    // stuff you want to happen right away
    console.log('Welcome to Child');
}

function function2() {
    // all the stuff you want to happen after that pause
    console.log('Blah blah blah blah extra-blah');
}

// call the first chunk of code right away
function1();

// call the rest of the code and have it execute after 3 seconds
setInterval(function2, 3000);

Running without debugger works, but when running with a debugger, the child processes seem to disconnect right away

@aeschli the problem is that you pass the object '{}' instead of an array '[]' as the 'args' argument to fork.
Changing line 9 to the following makes your example work:
let child = cp.fork('child.js', [], { execArgv: ["--inspect=" + p] });

However, I do not understand why this is not a problem when running your example from the command prompt.

Thanks @weinand !


test: can't run testcases rightly in local environment

[x] I have searched the issues of this repository and believe that this is not a duplicate.

Expected Behavior
$ npm run test

Should run testcases without mistakes
Current Behavior

Steps to Reproduce (for bugs)

download next.js canary
npm install
npm run test

Your Environment

Tech
Version

next
canary

node
6.7.0

OS
Mac OS 10.12.6

tty
zsh

These are the tests for the next.js repository. (just to be clear).
It sometimes happens that webdriver is not installed correctly by npm/yarn. The solution is usually to rm -rf node_modules and reinstall.


Remove version: CrystalDewWorld.CrystalDiskMark.ShizukuEdition version 8.0.4c

[Automated] It returns code over 400 in all urls
Microsoft Reviewers: Open in CodeFlow

Close with reason: Duplicate;


Remove UP default filters associated with topics

User Story
As a report stream developer, I would not like to have the topic enum associated with UP default filters so that the implementation can be cleaner when products requirements are completed
Description/Use Case
UP default filters are currently associated with topics which muddies the water on what topics are doing and provide limited value since they are just pass throughs currently
Risks/Impacts/Considerations
The impact should be low as CA is the only receiver in PROD and they have there own custom filters
We should also consider STAGING, for orgs like Trusted Intermediary.
Dev Notes
Acceptance Criteria

[ ] Remove the UP default quality and processing mode filter
[ ] Update the handling of the quality filter to set the default response to true
[ ] Update the ETOR receivers to match the current default
[ ] Rename processingModeFilter to processingIdFilter

Hey team! Please add your planning poker estimate with Zenhub @arnejduranovic @brick-green @jack-h-wang @JessicaWNava @JFU-NAVA-PBC @jimmyfagan @thetaurean

FYI: In addition to CA, New York is also in production for UP

Migration plan:

Download the settings from staging:
Run: ./prime multiple-settings get > organizations.satging.yml
Patch the settings adding filters to the applicable receivers make sure the routing behavior stay the same after the topic wide filter defaults removal got deployed to staging
Find a way to test it out (download settings -> modify the receivers filters configuration -> upload back to the env), pick TEST? DEMO? or LOCALLY
Perform the upload of the modified settings with flag preventing overriding new changes on the env:
Run: ./prime multiple-settings set -i --check-last-modified organizations.patched.satging.yml

@arnejduranovic appreciated if you could share info on how such migration is done historically.

Historically speaking, I don't think we've had to make such a large change before. Everywhere a receiver has an empty filter that used to have a default, you will have to manually enter the default. I recommend having someone review the changes you want to make before applying them to staging/production. So, run get settings and save that so you can diff your updated settings against it for the review.

After research and compare, here is the migration approach seems reliable and less likely to cause interference to other users on the setting on staging, prod:
Using SQL to identify the receivers whose filters need to be patched:
QualityFilter Patch, Applicable to FULL-ELR, ETOR-TI, ELR-ELIMS:
FULL-ELR receivers:
Query receivers need qualityFilter patch (qualityFilter = [])
This is the result on PROD MetaDB:

Update the receivers qualityFilter with below SQL:
SELECT jsonb_set(values, ‘{qualityFilter}’, ‘[“%messageId.exists()",  "%patient.name.family.exists()",  "%patient.name.given.count() > 0",  "%patient.birthDate.exists()",  "%specimen.type.exists()",  "(%patient.address.line.exists() or %patient.address.postalCode.exists() or %patient.telecom.exists())",  "((%specimen.collection.collectedPeriod.exists() or %specimen.collection.collected.exists()) or %serviceRequest.occurrence.exists() or %observation.effective.exists())", ]’::json) FROM setting WHERE values->>'topic'='full-elr' and values->>'qualityFilter'='[]'
ETOR-TI receivers:
Query receivers need qualityFilter patch (qualityFilter = [])
SELECT setting_id, setting.name, values->'qualityFilter' as "qualityFilter"
FROM setting
WHERE values->>'topic'='full-elr' and values->>'qualityFilter'='[]'
On PROD, this returns empty result.
To update filters:
SELECT jsonb_set(values, ‘{qualityFilter}’, ‘["%messageId.exists()"]’::json)
FROM setting
WHERE values->>'topic'='etor-ti' and values->>'qualityFilter'='[]'
ELR-ELIMS receivers:
Query receivers need qualityFilter patch (qualityFilter = [])
SELECT setting_id, setting.name, values->'qualityFilter' as "qualityFilter" FROM setting WHERE values->>'topic'='elr-elims' and values->>'qualityFilter'='[]'
On PROD, this return empty result.
ProcessingModeFilter Patch, Applicable to FULL-ELR, ETOR-TI:
Query receivers of FULL-ELR with empty processingModeFilter:
Result from PROD:

Update filter with below SQL:
SELECT jsonb_set(values, ‘{processingModeFilter}’, ‘["%processingId.exists() and %processingId = 'P'"]’::json) FROM setting WHERE values->>'topic'='full-elr' and values->>'processingModeFilter'='[]'

Status of migration:
Per the SQL scripts approach, there is versioning of the setting which complicated the approach of query and update DB table records.
Just a FYI, tested migration scripts on setting on dev local, and noticed that the records in the setting table is versioned, and go with SQL updates could be complicated by the versions of receivers vs their organizations records, tried the approach of only download organization - but "prime organization get" only fetch the organization section - there is no receivers, so probably have to go with:
either download whole setting -> make changes -> upload back with that protection flag or if the number of places to change is small, login into RS front end admin, and make changes there.
@arnejduranovic @mkalish

updates about processingModeFilter renaming:
Huddled with Michael and will proceed with name change, for migrate - will do it in 2 phase: before deployment, add processingIdFilter (dup the existing processingModeFilter filter values, still keep processingModeFilter for receivers who have it, after deploy, let the deployment bake a while and pick at time to deprecate the processingModeFilter across the setting)

FYI, checked PR, AC: Update the handling of the quality filter to set the default response to true
has been taken care of.

Update:
Made changes required by AC, for PROD, STAGING settings migration, have a good approach to perform the migration.
@arnejduranovic @Andrey-Glazkv

A copy of Slack thread on migration of settings on staging / prod:
Qian (Jim) Fu [HDH0]
3 days ago
@kalish (fmj0)
I noticed settings on prod and staging "procesingModeFilter" are all replaced with "processingIdFilter" whatever the receivers' topics are, just wanted to confirm, it is Ok to proceed to put the corresponding default filters ("%processingId.exists() and %processingId = 'P'") for full-elr/etor-ti , thanks.
15 replies
Arnej Duranović [UMN2]
3 days ago
I'm not sure I understand, were full-elr/etor-ti receivers using that filter before or not?
Arnej Duranović [UMN2]
3 days ago
Also when changing staging/prod filter, we should make sure to check with engagement team if we are not confident in the changes we are making, they are the owners of those configs
Qian (Jim) Fu [HDH0]
3 days ago
I am checking the diff between Dec29 vs Jan04..., I agree with collab with engagement team on changes, will compile a change list for them to review.
Arnej Duranović [UMN2]
3 days ago
I'm pretty sure that filter was getting used as the default for full-elr, etor I'm not 100% certain but I think they also were including those values in their messages so the defaults should work for them as well
Qian (Jim) Fu [HDH0]
3 days ago
processingModeFilter is used in PROD, at least I found this one (and there might be others):

name: "full-elr"
organizationName: "ny-phd"
topic: "full-elr"
customerStatus: "testing"
translation: !
schemaName: "metadata/hl7_mapping/receivers/STLTs/NY/NY-receiver-transform"
useTestProcessingMode: false
useBatchHeaders: true
receivingApplicationName: "ECLRS"
receivingApplicationOID: null
receivingFacilityName: "NYSDOH"
receivingFacilityOID: null
messageProfileId: null
replaceValue: {}
replaceValueAwithB:
MSH-4-1:
- '': "CDC PRIME REPORTSTREAM"
MSH-4-2:
- '': "10DRPTSTRM"
reportingFacilityName: null
reportingFacilityId: null
reportingFacilityIdType: null
suppressQstForAoe: false
suppressHl7Fields: null
suppressAoe: false
defaultAoeToUnknown: false
replaceUnicodeWithAscii: false
useBlankInsteadOfUnknown: null
truncateHDNamespaceIds: false
truncateHl7Fields: null
usePid14ForPatientEmail: false
convertTimestampToDateTime: null
cliaForOutOfStateTesting: null
cliaForSender: {}
phoneNumberFormatting: "STANDARD"
suppressNonNPI: false
processingModeCode: null
replaceDiiWithOid: null
applyOTCDefault: false
useOrderingFacilityName: "STANDARD"
valueSetOverrides: {}
nameFormat: "STANDARD"
receivingOrganization: null
convertPositiveDateTimeOffsetToNegative: false
stripInvalidCharsRegex: null
convertDateTimesToReceiverLocalTime: false
useHighPrecisionHeaderDateTimeFormat: false
type: "HL7"
truncationConfig:
truncateHDNamespaceIds: false
truncateHl7Fields: []
customLengthHl7Fields: {}
jurisdictionalFilter:

"(%performerState.exists() and %performerState = 'NY') or (%patientState.exists()
\ and %patientState = 'NY')"
qualityFilter: []
routingFilter: []
processingModeFilter:
"%processingId = 'P'"

Qian (Jim) Fu [HDH0]
3 days ago
and I searched settings prod snap shot Jan 04, all processingIdFilter is [], so some processingModeFilter with value are replaced with processingIdFilter: []
Qian (Jim) Fu [HDH0]
3 days ago
Sure, we won't proceed until people feel confident about the changes...
Qian (Jim) Fu [HDH0]
3 days ago
it is nice and quiet on prod, it might be that the incumbent code is still having the topic default, or the routes affected have not been hit yet...
Arnej Duranović [UMN2]
3 days ago
so some processingModeFilter with value are replaced with processingIdFilter: []
This should not be the case, right?
Arnej Duranović [UMN2]
3 days ago
If a receiver had:
processingModeFilter:
- "%processingId = 'P'"
Then it should be:
processingIdFilter:
- "%processingId = 'P'"
and NOT:
processingIdFilter: []
Arnej Duranović [UMN2]
3 days ago
The new setting should be:
processingIdFilter: []
only when when the old setting was exactly:
processingModeFilter: []
(edited)
Arnej Duranović [UMN2]
3 days ago
Because all we are doing with this filter is changing the name of it, the resulting config shouldn't change in terms of functionality for anyone.
Qian (Jim) Fu [HDH0]
3 days ago
that's what I think
Qian (Jim) Fu [HDH0]
3 days ago
probably we should get a clear picture on these changes before further migrate....
Qian (Jim) Fu [HDH0]
2 hours ago
@arnej
have a better way to migrate - leverage the per org topic filters, it seems there are issues on the current deploy, so might hold off until it is cleared up there

@arnejduranovic @mkalish
as discussion on renaming of "processingModeFilter" to "processiongIdFilter" in slack channel, I suggest that we don't do the renaming based on below reasons:
"
also the renaming of processingModeFilter to processingIdFilter seems to be a bad idea considering it's a breaking change impact both backend and on boarding and external users, the benefit is only the accuracy of naming - which is diminished since people are already used to call it processingModeFilter
Qian (Jim) Fu [HDH0]
2 minutes ago
I suggest remove the rename request from the AC.
Qian (Jim) Fu [HDH0]
1 minute ago
as can be seem, webUX has to be changed to pickup the new name too..."

FYI, going to revert the rename processingModeFilter to processingIdFilter from the code base, before migrate the settings on staging, prod.
@arnejduranovic @mkalish

Finally settled on a manual migrate approach after Slack discussion (attached):
For each receiver with topics - full-elr, eetor-ti, elr-elims:
Check qualityFilter, processingModeFilter:
If not present (null or empty), put below default filter respectively:
{       "topic": "etor-ti",       "qualityFilter": [         "%messageId.exists()"       ],       "processingModeFilter": [         "%processingId.exists() and %processingId = 'P'"       ],     },     {       "topic": "elr-elims",       "qualityFilter": [         "true"       ],     },     {       "topic": "full-elr",       "qualityFilter": [         "%messageId.exists()",         "%patient.birthDate.exists()",         "%patient.name.family.exists()",         "%patient.name.given.count() > 0",         "%specimen.type.exists()",         "(%patient.address.line.exists() or %patient.address.postalCode.exists() or %patient.telecom.exists())",         "((%specimen.collection.collectedPeriod.exists() or %specimen.collection.collected.exists()) or %serviceRequest.occurrence.exists() or %observation.effective.exists())"       ],       "processingModeFilter": [         "%processingId.exists() and %processingId = 'P'"       ],     }

Attached Slack discussion on the manual migrate approach, note, for now, this is still a managible process giben that there are 146 organizations in prod setting, and 165 organizations in staging setting.
Here are slack thread for migrate approach discussion:

Jimmy Fagan
19 hours ago
I thought the whole point of removing default filters is that we don’t have any organizations with accidental filters that they don’t intend. So I think the approach should be that we do this migration (I would say by manually adding the current defaults to any receivers that don’t already have filters at the receiver/organization level), but that the migration doesn’t have to be future-proof. The approach in the future would be that receivers define these filters if they want to be using them, and if they aren’t set then to allow everything. The exception would be the jurisdictional filter which if they aren’t set would be to disallow everything. I think if we want to talk about keeping the default filters in the code, that should be a discussion that happens outside of slack.

Qian (Jim) Fu [HDH0]
19 hours ago
thanks for the input
Jimmy Fagan
19 hours ago
(There might be good reason to keep something like a default quality filter if that will help prevent exceptions, just should be something that should be discussed as a 17th or in a separate meeting I think)
:+1:
1
Qian (Jim) Fu [HDH0]
19 hours ago
yea, just weighing benefits and risks...
Michael Kalish (he/him)
19 hours ago
Yea agree overall that the org stuff is maybe out of scope.  We really just want to remove linking the topic to a hardcoded filter
Qian (Jim) Fu [HDH0]
19 hours ago
:+1:


skip more coreclr steps on plain build.cmd

This skips some test preparation steps on a plain build.cmd, is an extension of #1047

Yes, LGTM

@KevinRansom The jenkins build is failing, I'm not sure why.  The proto compile is not being run as a CoreCLR  compiler in the jenkins build, is it?

Omar is the Jenkins Guru.
From: Don Syme <notifications<EMAIL_ADDRESS>Reply-To: Microsoft/visualfsharp <reply<EMAIL_ADDRESS>Date: Friday, April 8, 2016 at 6:05 PM
To: Microsoft/visualfsharp <visualfsharp<EMAIL_ADDRESS>Cc: Kevin Ransom <Kevin.Ransom<EMAIL_ADDRESS>Subject: Re: [Microsoft/visualfsharp] skip more coreclr steps on plain build.cmd (#1049)
@KevinRansomhttps://github.com/KevinRansom The jenkins build is failing, I'm not sure why. The proto compile is not being run as a CoreCLR compiler in the jenkins build, is it?
—
You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHubhttps://github.com/Microsoft/visualfsharp/pull/1049#issuecomment-207675153

According to the latest build I can see:
http://dotnet-ci.cloudapp.net/job/Microsoft_visualfsharp/job/master/job/release_windows_nt/23/console
08:35:29 d:\j\workspace\release_windo---886c0951\lkg\FSharp-14.0.23413.0\bin\Microsoft.FSharp.Targets(155,9): error MSB6004: The specified task executable location "..\..\..\lkg\bin\Debug\dnxcore50\win7-x64\publish\fsc.exe" is invalid. [d:\j\workspace\release_windo---886c0951\src\fsharp\FSharp.Build-proto\FSharp.Build-proto.fsproj]
@KevinRansom this something the LKG compiler is building?


Code improvements

Code improvements in this pull request:
Moving gulp tasks into a tasks folder
Needed for further enhancements later down the line. It means that we can have more than just gulp tasks housed in this gulp folder. This also makes upgrades to the Gulp config easier.
Moving shared variables out into a separate file
This structure has multiple advantages:

It is cleaner
It doesn't require every property to be imported into every Gulp task file
A gulp task in one file is able to run gulp tasks in a different file if needed.
task dependencies are easier to manage

It is mainly just a more correct way to structure the code. It imports the variables it needs from a single file rather than passing them all down as props into every single file.
Replacing path.join() with a simple join() helper function
path.join() does not work as expected if used in Gulp 4!
Do not use path.join() if using Gulp 4. It leads to a multitude of bugs. Use this simple helper function instead.
const join = (...paths) => paths.join('/')

Fix for broken clean task syntax
Arrow functions split across multiple lines need brackets to work.
I could have simplified it down to this:
 gulp.task('clean', del([path.join(dirs.temporary), path.join(dirs.destination)]) );

I figured that keeping the function call there makes it easier for people less familiar with Gulp and JS to upgrade the task if needed.
Adding "done" call to the watch task
Gulp 4 requires people to signal task completion. Task completion was not being signaled on the watch task.
The watch task is never truly "done" so I just call it at the end after all of the watchers have been initialized.
Using native Object.assign() instead of lodash
There is no need to use Lodash when Object.assign() is a native way to do the exact same thing as what you were using Lodash for.

If you saw the pull request via email, I have updated the description since then.
I accidentally hit [enter] to early when creating the pull request. 😖

Hey @Dan503,
Thanks so much for your work on this PR! (and for your continued interest in the project 😄).  Apologies for that.
The good news is that I was able to incorporate most of your suggestions:

Tasks moved from gulp/* to gulp/tasks/*
gulp/utils.js file to hold logic instead of passing data through function to each gulp task
Adding done() to the watch task
Using Object.assign instead of lodash's method

NOTE: I didn't add the extra join() method proposed as I was able to make use of the gulp.src's cwd option to achieve the same results.

Will be pushing v.3.0.0 to npm soon. So you'll be able to try out all the new changes soon!
Cheers 🍻

NOTE: I didn't add the extra join() method proposed as I was able to make use of the gulp.src's cwd option to achieve the same results.

That makes me very nervous.
Trust me, you do not want to use path.join if you are using Gulp 4.
The Gulp will still compile but files will get sent to the wrong directories.
I strongly recommend using the join() helper function instead of path.join(). You will likely receive a huge number off issue complaints of things being sent to the wrong directories otherwise.

@Dan503,
Totally understand your concern. The thing that needs to be avoided in Gulp v4 with path.join is globbing (i.e. **/**.js). Including globs in a path.join will mess things up on Windows, so the recommended solution is to use the cwd option in gulp.src. So those are the changes I made (see for https://github.com/larsonjj/generator-yeogurt/blob/master/generators/app/templates/gulp/tasks/copy.js an example)
Definitely open to your proposed solution if problems do arise with the path module and cwd option, but we shouldn't need any extra join functions to handle the needed use cases at this time.

I think it is still better to just use a join() helper function.
Think of it from the perspective of people unfamiliar with Gulp and the path.join() issue (likely to be a huge percentage of your users). Let's say this person wants to add additional functionality to the configuration.
When the user is looking at the code, it looks like path.join() is just doing what the join() helper function does. They make a new Gulp task but they leave off cwd because it seems like unnecessary extra code and they think it's ugly and they don't want to write that. Let's say they are also a Mac user so their buggy code seems to be working perfectly with no issues. They then delete the rest of the cwd parts to make the code look nicer and have code consistency across the project so there is no longer a Gulp task that has cwd in it. They continue adding more tasks using the same buggy technique. A new developer then gets put onto the project because time is running out and we need this done ASAP! This new dev is a Windows user so when they go to compile the code everything gets sent to the wrong locations. The Mac user has no idea what the problem is. He hasn't touched the Gulp files in months and completely forgot that he deleted all of the cwd bits. Since the Mac user can't replicate the issue, it's up to the windows user to fix the Mac user's broken code. The windows user always just uses the defaults when starting projects so they have no idea how Gulp works. They then have to waste a full day learning how Gulp works, trying to figure out what the problem is when they were supposed to be helping out on the development for a project that is in a critical state. Gulp doesn't give off any errors so it's extremely difficult to debug. Since the Mac user deleted all the cwd bits, there aren't any examples where the code works. They eventually figure out that path.join() was what the issue was and now they have to go through all the code and replace path.join() with whatever their custom equivalent ends up being. The windows user just wanted to help out with the project but now a critical project is an extra day behind schedule because you wanted to use path.join() instead of a join() helper function.
I had to go through the pain of figuring out the problem with path.join() the hard way. It was not fun. (The above is a hypothetical but highly likely scenario. It didn't happen to me.)
Aside from the reasons above, there are also developer experience reasons to switch:
It is also cleaner and easier to write join() rather than path.join(). join() is 6 characters and 1 autocomplete. path.join() is 11 characters, takes 2 autocompletes, and a full stop to write. It also requires cwd to be included whereas join() does not.
You can also select all of join with a single double click or a single ctrl+➡. You have to click and drag the mouse to select all of path.join() or press ctrl+➡ twice (maybe 3 times due to the full stop) to get past it.
When importing them as well, path.join() requires a full extra line to be added whereas join() only requires an extra 4 character autocompleted value to be imported from utils.js with the rest of the utils.
Is that enough reasons to switch to a join() helper yet? 😓


Router chain (MultiRetrievalQAChain & MultiPromptChain)

Added MultiRetrievalQAChain and MultiPromptChain. Translated from the python's version (https://github.com/hwchase17/langchain/tree/master/langchain/chains/router)
MultiRetrievalQAChain allows an LLM to pick between a number of different retrievers to pass the input to.
MultiPromptChain allows an LLM to pick between a number of different prompts to pass the input to.
The router chain works slightly differently than the python's version because we can directly define the structure of the next_inputs by defining a zod schema, use the schema to create StructuredOutputParser and incorporate StructuredOutputParser's getMarkdownJsonInstructionFromSchema into the template.

Thanks!


Add ttyUSB dialup devices in the toolbox

Sometimes, in the toolbox, you need to access external hardware, either to communicate with an external device or flash a chip. Inside the toolbox, /dev/ttyUSB* is empty.
It would be nice if those devices were available. Possibly those devices can only appear after the toolbox has been entered. Perhaps sharing the entire /dev tree would not be that bad.

I don't have any /dev/ttyUSB* on my host currently. I suppose those are just files under /dev, and not sub-directories, right?
I think we should look at bind mounting the entire /dev. @rhatdan warned me that PTYs could cause problems, and I haven't looked into that.

I don't have any /dev/ttyUSB* on my host currently. I suppose those are just files under /dev, and not sub-directories, right?

Yes, directly under /dev, and they appear dynamically (when you plug an USB serial device). I was convinced for no good reason that it was impossible to share /dev inside the toolbox, but if you do this at the toolbox creation, it works

With PR #119, if I manually chown the device to my user/group on the host, I can access it from within the toolbox.
However, if I make myself part of the dialup group (the ttyUSB0 device is owned by root:dialup), the device appears as nobody:nobody in the toolbox and is inaccessible although it's accessible on the host.

You should also support /dev/ttyACMx style devices too, they are often used for arduino, cnc, laser engraver and 3d Printer connections.

Now that PR #119 has been merged, this issue can be closed.

You should also support /dev/ttyACMx style devices too, they are often
used for arduino, cnc, laser engraver and 3d Printer connections.

New toolbox containers will have the entire /dev bind mounted from the host. So barring permission problems arising out of the files not being world accessible, things should be working now.


⚠ Bofrost.be has degraded performance

In 2347608, Bofrost.be (https://www.bofrost.be) experienced degraded performance:

HTTP code: 200
Response time: 979 ms

Resolved: Bofrost.be performance has improved in f2f597c after 304 days, 7 hours, 8 minutes.


OptAnalyzer: don't report duplicated problems from inlined callees

fix #335

Codecov Report

Merging #373 (8f57f45) into master (ba7b0ae) will increase coverage by 0.02%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##           master     #373      +/-   ##
==========================================
+ Coverage   90.11%   90.13%   +0.02%
==========================================
  Files          11       11
  Lines        2619     2625       +6
==========================================
+ Hits         2360     2366       +6
  Misses        259      259

Impacted Files
Coverage Δ

src/JET.jl
73.76% <100.00%> (+0.11%)
:arrow_up:

src/abstractinterpret/inferenceerrorreport.jl
92.93% <100.00%> (ø)

src/analyzers/optanalyzer.jl
89.90% <100.00%> (+0.38%)
:arrow_up:

Continue to review full report at Codecov.

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


DBus implementation without node

Why does DBus need node? As far as I understand this implementation doesn't need node: https://github.com/MarshallOfSound/Google-Play-Music-Desktop-Player-UNOFFICIAL-/tree/d40f511531e2966f9aa2917201a6cf6a9a7ff7a6/src/main/features/linux.

I tried it many times before and never got it working successfully due to some kind of error from libnode.so and different bindings, it could be setup issue on my part. At the moment I have not been able to get back into development due my hectic life right now :/

I've been developing a solution to this problem recently fixed in ae0d7fda17aae4253429109bbae442142083a5c6


NCW: Add Datadog

Description
This is the same as from #302 . It was removed in the #330  because WC was broken when importing the SDK.  Now this PR  fixes that
Test plan
Create an AA Wallet, and check it logs successfully: DD Log

As #10723 is merged, this is good to go


Free memory on reload using memory allocator clear func

Depends on https://github.com/mlc-ai/relax/pull/220


Samples column should not be sorted lexicographically

In the study results table (such as http://qiita.colorado.edu/study/public/), the Samples column reports the number of samples in the study. It currently sorts lexicographically, but this is not very useful. It should sort numerically.

This is due to the subpackage we are using to display those tables. Not
sure whether the sort can be changed to natsort easily, but we will
investigate. Thanks for pointing that out!
On Mon, Feb 9, 2015 at 10:02 AM, Michael Hall<EMAIL_ADDRESS>wrote:

In the study results table (such as
http://qiita.colorado.edu/study/public/), the Samples column reports the
number of samples in the study. It currently sorts lexicographically, but
this is not very useful. It should sort numerically.
—
Reply to this email directly or view it on GitHub
https://github.com/biocore/qiita/issues/831.

Quick googling (no time to implement/test right now) turns up this plug-in:
http://datatables.net/plug-ins/sorting/natural
On Mon, Feb 9, 2015 at 1:20 PM, Adam Robbins-Pianka <
<EMAIL_ADDRESS>wrote:

This is due to the subpackage we are using to display those tables. Not
sure whether the sort can be changed to natsort easily, but we will
investigate. Thanks for pointing that out!
On Mon, Feb 9, 2015 at 10:02 AM, Michael Hall<EMAIL_ADDRESS>wrote:

In the study results table (such as
http://qiita.colorado.edu/study/public/), the Samples column reports the
number of samples in the study. It currently sorts lexicographically, but
this is not very useful. It should sort numerically.
—
Reply to this email directly or view it on GitHub
https://github.com/biocore/qiita/issues/831.

As far as I remember, there is a way to pass your own sorting function.
On (Feb-09-15|12:20), adamrp wrote:

This is due to the subpackage we are using to display those tables. Not
sure whether the sort can be changed to natsort easily, but we will
investigate. Thanks for pointing that out!
On Mon, Feb 9, 2015 at 10:02 AM, Michael Hall<EMAIL_ADDRESS>wrote:

In the study results table (such as
http://qiita.colorado.edu/study/public/), the Samples column reports the
number of samples in the study. It currently sorts lexicographically, but
this is not very useful. It should sort numerically.
—
Reply to this email directly or view it on GitHub
https://github.com/biocore/qiita/issues/831.

Reply to this email directly or view it on GitHub:
https://github.com/biocore/qiita/issues/831#issuecomment-73582289

Here is how to do it: http://datatables.net/plug-ins/sorting/

Still requires the natural sorting plug in (which I linked in my previous
post), unless I'm misreading?
On Tue, Feb 10, 2015 at 3:34 PM, Joshua Shorenstein <
<EMAIL_ADDRESS>wrote:

Here is how to do it: http://datatables.net/plug-ins/sorting/
—
Reply to this email directly or view it on GitHub
https://github.com/biocore/qiita/issues/831#issuecomment-73798913.

"The main DataTables package includes sorting functions for strings, dates, numeric and currency data..." so this just says how to format it to use the numeric sort.


Examples are not working properly

Hi,
I'm facing problem while running the given examples in node js environment.
this is how i'm using it.
var validatorJS =
    require('validator.js').Validator;
var validator = new validatorJS();

var constraints = {
          creditCardNumber: {
            presence: true,
            format: {
              pattern: /^(34|37|4|5[1-5]).*$/,
              message: function(value, attribute, validatorOptions, attributes, globalOptions) {
                return validator.validate.format("^%{num} is not a valid credit card number", {
                  num: value
                });
              }
            },
            length: function(value, attributes, attributeName, options, constraints) {
              if (value) {
                // Amex
                if ((/^(34|37).*$/).test(value)) return {is: 15};
                // Visa, Mastercard
                if ((/^(4|5[1-5]).*$/).test(value)) return {is: 16};
              }
              // Unknown card, don't validate length
              return false;
            }
          },
          creditCardZip: function(value, attributes, attributeName, options, constraints) {
            if (!(/^(34|37).*$/).test(attributes.creditCardNumber)) return null;
            return {
              presence: {message: "is required when using AMEX"},
              length: {is: 5}
            };
          }
        };

validator.validate({creditCardNumber: "4"}, constraints);

While it is building constraints from the given config, it is failing by saying 'Should give a valid mapping object to Constraint'. It is failing while processing "presence" : true attribute.
Please find the screenshot below:

Please let me know how to resolve this problem.

You've included the library validator.js, this library name is called validate.js.

like presence, length, type, format, etc.
for length: minimum, maximum, etc
I would like to see complete list of these. I mean complete schema definition.

These is no place where they are all shown together, but you have the list of all the constraints and if you click on a constraint you can read about all the options.

https://validatejs.org/#constraints   . this page has minimal list.
If i look at source code, i got the following:
presence, length, numericality, datetime, date, format, inclusion, exclusion, email, url, equality, pattern.
Pls let me know if i miss anything.

https://validatejs.org/#validators

ok, thanks. It has the same. :)

Hi,
I’m just reposting on the same as I couldn’t open a browser to create a new case.
My concern here is : I would like to find out excess data in “data” to be evaluated.
For instance,
My constraints = {
“a” : { “presence”: true},
“b” : { “presence”: true},
“c” : { “presence”: true}
}
My data:
{
“a” : 1,
“b” : 2,
“c” : 3,
“d” : 4
}
My data has excess data “d”,  do you have logic inplace to determine such things with any options. (without any options, it is unable to find out excess data)
Here my concern mainly is strict validation: data must match the constraints. No more or no less data should be there.
Thanks,
Rajashekhar

No, there is currently no way to validate that.
But the cleanAttributes function might help.

cleanAttributes should have named as retainAttributes, and cleanAttributes should remove the given attributes.
From: Nicklas Ansman Giertz<EMAIL_ADDRESS>Sent: Tuesday, April 26, 2016 1:02 PM
To: ansman/validate.js<EMAIL_ADDRESS>Cc: Rajashekhar G<EMAIL_ADDRESS>Author<EMAIL_ADDRESS>Subject: Re: [ansman/validate.js] Examples are not working properly (#120)
No, there is currently no way to validate that.
But the cleanAttributeshttp://validatejs.org/#utilities-clean-attributes function might help.
—
You are receiving this because you authored the thread.
Reply to this email directly or view it on GitHubhttps://github.com/ansman/validate.js/issues/120#issuecomment-214653903

validate.extend(validate.validators.datetime, { // The value is guaranteed not to be null or undefined but otherwise it // could be anything. parse: function(value, options) { return +moment.utc(value); }, // Input is a unix timestamp format: function(value, options) { var format = options.dateOnly ? "YYYY-MM-DD" : "YYYY-MM-DD hh:mm:ss"; return moment.utc(value).format(format); } });

validate({departure: "foobar"}, {departure: {datetime: true}});
ReferenceError: moment is not defined
at Function.validate.extend.parse (repl:5:9)
at Function.validate.validators.datetime.v.extend.parse (d:\workspace\nodejs\test\node_modules\validate.js\validate.js:881:20)
at Function.v.extend.runValidations (d:\workspace\nodejs\test\node_modules\validate.js\validate.js:133:30)
at validate (d:\workspace\nodejs\test\node_modules\validate.js\validate.js:25:21)
at repl:1:1
at REPLServer.defaultEval (repl.js:262:27)
at bound (domain.js:287:14)
at REPLServer.runBound [as eval] (domain.js:300:12)
at REPLServer. (repl.js:431:12)
at emitOne (events.js:82:20)

From: Nicklas Ansman Giertz<EMAIL_ADDRESS>Sent: Tuesday, April 26, 2016 1:02 PM
To: ansman/validate.js<EMAIL_ADDRESS>Cc: Rajashekhar G<EMAIL_ADDRESS>Author<EMAIL_ADDRESS>Subject: Re: [ansman/validate.js] Examples are not working properly (#120)
No, there is currently no way to validate that.
But the cleanAttributeshttp://validatejs.org/#utilities-clean-attributes function might help.
—
You are receiving this because you authored the thread.
Reply to this email directly or view it on GitHubhttps://github.com/ansman/validate.js/issues/120#issuecomment-214653903

Please read the documentation: http://validatejs.org/#validators-datetime

Hi ansman AOA  Plz Help Me what Was the Format Of TextArea To Show Blank Message In texrarea Field Plzz Upload here  Texara code Of Java Script?


BLC_03: Y-Axis coordinates is move up to the top of the screen after checked the checkbox “check/adaptMinMaxZoom” in Options

SEVERITY: Minor
MODULE: Bubble Chart
OS / BROWSER: Windows 7 / Chrome 45.0
STEPS TO REPRODUCE:

Navigate to URL: http://static.gapminderdev.org/vizabi/release/v0.5.1/preview/bubblechart.html
Bubble chart page will be loaded
Click on Options menu
Select x-axis dropdown as “GDP Per capita” of value “Logarithmic”
Select y-axis dropdown as “Life Expectancy, years”
Check the checkbox of check/adaptMinMaxZoom
Note that y-axis coordinates has been move to the top of the screen

ACTUAL RESULTS:
Y-Axis coordinates is move to the top of the screen after clicking the checkbox of “check/adaptMinMaxZoom in Options
EXPECTED RESULTS:
Y-Axis coordinates should not be move to the top, after checking the “check/adaptMinMaxZoom” in Options
SCREENSHOT:

This was fixed with v0.6

acually, it was a duplicate of #221


Can we use Recyclerview instead of Listview

Is there any particular reason to use Recyclerview instead of ListView? I think for simple dataset ListView should be fine. I'd be happy to see any use case for RecyclerView though.

If i use DialogPlus.setExpanded(true) and If i double click on listview
item the dialog is not getting cancel and my app will not respond and even
i cant do any actions.

Hemantha R | Software Engineer
*design,*string|
Mobile : +91 90352 34150     Web : www.designstring.com    Skype Id :
hemanthhemi2
On Mon, Apr 9, 2018 at 6:26 PM, Orhan Obut<EMAIL_ADDRESS>wrote:

Is there any particular reason to use Recyclerview instead of ListView? I
think for simple dataset ListView should be fine. I'd be happy to see any
use case for RecyclerView though.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/orhanobut/dialogplus/issues/145#issuecomment-379742165,
or mute the thread
https://github.com/notifications/unsubscribe-auth/APe6fX_psM3WxI9b17hbBBt2QenM3tYMks5tm1qZgaJpZM4R_nIU
.

--
This email and its attachments may be confidential and are intended solely
for the use of the individual to whom it is addressed. Any views or
opinions expressed a re solely those of the author and do not necessarily
represent those DesignString Solutions Pvt Ltd. If you are not the intended
recipient of this email and its attachments, you must take no action based
upon them, nor must you copy or show them to anyone. Please contact the
sender if you believe you have received this email in error.

I think the issue is in somewhere else. DialogPlus is intercepting touch events in order to provide expanding/collapsing. I'd be happy to help if you can provide a gif/video for me to see exactly what is happening.

@hemant314 Unfortunately I can't find attachment. Could you try again via github? I suppose sending it through email doesn't work

mtp://[usb:002,007]/Internal%20storage/AzRecorderFree/2018_04_10_14_29_11.mp4

mtp://[usb:002,007]/Internal%20storage/AzRecorderFree/2018_04_10_14_29_11.mp4

Hi ,
Please go through the below zip file:
video.mp4.zip


Fixed flaky API test

Another issue with make_content() randomly choosing a content type.
Also some lint.
@benghaziboy

Just really terrific


Hello, I just added my profile in the profiles directory.

Thanks for the help brother!
You made it very simple and easy to understand.
MY FIRST PULL REQUEST YAY!!

Congratulations on your first pull request.
I am glad it was helpful :D


Blog on Bulk insert sort variants

What is the purpose of the pull request

Bulk insert sort modes variants
Fixed precombine docs.

Verify this pull request
Verified by building the site locally
Committer checklist

[ ] Has a corresponding JIRA in PR title & commit

[ ] Commit message is descriptive of the change

[ ] CI is green

[ ] Necessary doc changes done or have another open PR

[ ] For large changes, please consider breaking it into sub-tasks under an umbrella JIRA.

@nsivabalan Please resolve the conflicting file. :)


Bootstrapping broken for Ninja builds on Apple silicon Macs (arm64)

Steps To Reproduce
Build via Ninja on an Apple silicon Mac and spot check your build. Unlike bootstrapping0/bin/swift-frontend, bin/swift-frontend does not get rebuilt and hence does not reflect the change.

The problem is that, due to reasons which go beyond my cmake knowledge, ninja swift-frontend doesn't necessarily refer to the bin/swift-frontend executable, but to a bootstrapping swift-frontend.
Using ninja bin/swift-frontend solves the problem. I updated the docs: https://github.com/apple/swift/pull/63381

@eeckstein Thanks a lot! I didn’t know you could pass a path to an executable, a not a registered target name, to ninja. Is this common practice internally?

Is this common practice internally?

I think it depends what you want to do.


LIS installation needs to be clarified

[Enter feedback here]
I have the second IcM from the customer incidents about this procedure. CX confused of LIS installation steps in RHEL 7.7 or 7.8 versions even. As far as I know, this LIS installation step is required if the OS requires LIS installation. Need to add the pre-requisition contents - if OS version is RHEL/CentOS 7.4 or older versions' case. Otherwise, LIS installation should be skipped.

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

ID: 0e03790a-1bf9-146d-704b-6816d475064b
Version Independent ID: ad5f6be7-e089-161f-306c-39d10e7ab0a0
Content: Azure N-series GPU driver setup for Linux - Azure Virtual Machines
Content Source: articles/virtual-machines/linux/n-series-driver-setup.md
Service: virtual-machines-linux
GitHub Login: @vikancha-MSFT
Microsoft Alias: vikancha

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

PR submitted for the updates. Thanks for the feedback @juhlee-microsoft

Thanks for providing feedback that helps improve our documentation. This issue has been resolved and we are closing the issue. #please-close
Investigating/working on this in AB#1958451


Move .NET Core test project to a sub directory

The sub directory has the name FakeItEasy.Tests so the output have the same name as the output of the Full Framework unit test project.  This allows the use of the same InternalsVisible attribute.  Another option is to use "outputName" build option.  However, that caused test failures

Interesting solution, @jeremymeng. I'm surprised that this doesn't cause the unit test failure as well. Do you have any idea what might be different? The outputName option seems like it would be pretty innocuous.


Proposal : Implementing N Queen Problem | Return all Distinct Solutions to the N-Queens Puzzle C++.

Problem Statement: The n-queens is the problem of placing n queens on n × n chessboard such that no two queens can attack each other. Given an integer n, return all distinct solutions to the n -queens puzzle. Each solution contains a distinct boards configuration of the queen's placement, where ‘Q’ and ‘.’ indicate queen and empty space respectively.

Hey ! I am interested in this problem . please assign it to  me


on Windows, the line in preview is not highlighted

Checklist

[X] I have read through the manual page (man fzf)
[X] I have searched through the existing issues
[X] For bug reports, I have checked if the bug is reproducible in the latest version of fzf

Output of fzf --version
0.56.3 (tarball)
OS

[ ] Linux
[ ] macOS
[X] Windows
[ ] Etc.

Shell

[X] bash
[ ] zsh
[ ] fish

Problem / Steps to reproduce
On Windows, in mintty, run fzf --preview="bat --highlight-line 5 {}", and the line 5 is not highlighted.
Bat, if run standalone, highlights the selected line.

Add --color=always to bat options.

--color=always is not making the line highlighted in fzf preview.

Adding --theme makes it working. Thank you!


Generating random images

Thank you for sharing this nice implementation of VAE-GAN! Can random images be generated randomly, or it only works as an autoencoder, with an input image? Thabk you!

Yes you can generate new images by sampling z from an isotropic Gaussian and decoding it, as shown in lines 32-34 of demo.py


Update EnumMachineSize.java

I saw that the maximum machine can't store Tier 8 energy core of DE，so I changed the size of the machine，how do you think this？
hope your reply。

Sadly, it's not as easy as that.
Did you test this? If this works for cube generation, tunnel connections and machine view I'd be surprised, honestly.
From the top of my head you'd still have to rework at least how chunk loading is being handled. This PR also does not account for already existing worlds with already generated 13x13x13 machines - they'll probably crash the game then.
Because of these and some other reasons I designed Compact Machines from the beginning to be exactly one chunk per machine. You'll have a hard time changing my mind on this and I probably won't merge related pull requests.
I'll leave this open for now in case you have more questions.


[ffi] Explore more concise dynamic library binding

Explore if we could use type annotations on dynamic library function signatures (similar to struct fields) to avoid writing two signatures.
Moreover, the asLibrary would dynamically link all functions in one go.
abstract class FooBar extends Library {
  @Int32
  int Truncate64(@Int64 int x);
}

// Part of dart:ffi
class DynamicLibrary {
  // ...
  T asLibrary<T extends Library>();
}

Suggested in https://github.com/dart-lang/sdk/issues/34452#issuecomment-489462255
/cc @mraleph @sjindel-google

Annotations on typedefs? It's more likely than you think!
@eernst Erik, where are we with filling in the annotation holes in the grammar?

Originally posted by @lrhn in https://github.com/dart-lang/sdk/issues/34452#issuecomment-489707783
@eernstg and @lrhn: Are typedefs inlined in the dart compiler? And if so, are annotations preserved?
typedef FunctionPointer = @Int32 int TruncationFunction(@Int64 int x);

Pointer<FunctionPointer> myPointer = //...

Ah, I meant something like:
@Something
typedef MyType = int Function(int);

Putting annotations into the value is probably not going to work. Annoatations in Dart goes on declarations, in general, things that have a name or identity. Structural types are not such a thing.

Now that we have https://pub.dev/packages/ffigen, we might not need this as much as before.

We will address this by introducing assets:

https://github.com/dart-lang/sdk/issues/50565


RFE for stats: Mann-Whitney test / non parametric tests

Hello,
as the subject says, it would be nice to have something like the Mann-Whitney test or other non parametric tests (e.g. Wilcoxon) where you do not have to rely on assumptions of normality.

I am working on mann-whitney. Probably I will only provide a p-value coming from the asymptotic normal estimate and won't bother with the  "exact" approach which is also provided by scipy.
https://github.com/abstractqqq/polars_ds_extension/tree/mann_whitney

The Wilcoxon signed-rank test is a good to have. But I think for it to be usable, we need a method to compute its p value. Given that it is not so obvious and requires a lot more machinery, I have decided to put that one off for later... Thank you for the feature request btw.


shuffle方法有问题

const shuffle = arr => arr.sort(() => Math.random() - 0.5);
这个并不是真正的随机

LMTTFY: that's not really random

This has been mentioned before and we have tried a lot of different things. It's not truly random, but it works well enough. For reliable shuffling in an array, you probably need a really robust snippet which at this time we do not have. If anyone wants to submit a PR with a Fisher-Yates implementation, I would gladly merge it.

Here is an implementation: https://bost.ocks.org/mike/shuffle/
Pure + ES6-ified:
const shuffle = arr => {
  arr = [...arr];
  let m = arr.length;
  while (m) {
    const i = Math.floor(Math.random() * m--), t = arr[m];
    arr[m] = arr[i], arr[i] = t;
  }
  return arr;
};

@atomiks that seems alright, but I think we should keep the previous shuffle, too. Maybe we should rename the original shuffle to randomizeOrder (and add in the description that it is not truly random) and keep your implementation as shuffle. That way we demonstrate a technique that is commonly used and explain that it is not the best (but still works if you want to do some simplistic shuffling that you don't care about too much), while we also have a more powerful algorithm for pretty good shuffling for those who need it.


Error Generating images_data.json

Getting the following error when gallery-build
Something went wrong while generating the images_data.json file: 'utf-8' codec can't decode byte 0xfa in position 62: invalid start byte
Windows 10 / Python 3.9.1
Tried on the Mac as well with the same issue

Still getting the same error unfortunately

Hey, there was a bug in the captions config. It is solved with 1.5.4, so maybe you can give it a try now again. Otherwise, could you please send me the photo that causes the problem and I can investigate.

Sorry for the late reply - I've updated and unfortunately no change and getting the same error - happy to send you the photos.

I know this is a really old issue OP, but if you are still interested in this bug and getting this message, I can look at it. Can you  put the images in a read-only link somewhere (like on google drive) and post the link here. As soon as I pick up the images you can delete the share.
You might be able to put the files here in the issue, I see there is a way to add images, you can try that too.

I am going to close this due to age. If you want to pursue this issue, please re-open or create a new issue.


multiple instruments + GP

When I try to run juliet with a GP (celerite QP) with multiple data sets, I get the following error:
     Running NESTED SAMPLING (multinest)

(‘\t e,omega parametrization for RV planet ‘, 1)
(‘\t e,omega parametrization for RV planet ‘, 2)
Fitting RV GP.
(‘\t Detected ’, ‘CeleriteQPKernel’, ‘for the GP’)
(‘\t (’, 1, ‘external parameters)’)
Traceback (most recent call last):
File “juliet.py”, line 710, in
rv_dictionary[‘GPObject’].compute(rv_dictionary[‘X’],yerr=rverr_rv)
File “/Users/jteske/anaconda/lib/python2.7/site-packages/celerite/celerite.py”, line 120, in compute
raise ValueError(“the input coordinates must be sorted”)
ValueError: the input coordinates must be sorted
It does not seem to depend on the number of planets or number of data sets; more than one data set always causes this same error message. I tried sorting the RVs and GP regressors by date, but that did not solve the error. I am using the older, command-line version of juliet (v.2.0).

Gah, sorry, never mind. I does work when I sort the RVs and GP regressors by date.