is_isomorphic/is_isomorphic_matching stack overflows on large graphs.

I couldn't figure out how to replicate other than to use my crate Chelone. I have
a binary in the crate that checks the equality of two Turtle documents.
This implementation hashes the RDF graph converts into a Graph and
calls algo::is_isomorphic. Using the test/data/manifest.ttl file which
is a large file containing 4344 nodes and 2172 edges.
Steps To Reproduce
cargo run --bin is_equal tests/data/manifest.ttl tests/data/manifest.ttl

Actual Results
thread 'main' has overflowed its stack
fatal runtime error: stack overflow
[1]    5969 abort      cargo run --bin is_equal tests/data/manifest.ttl tests/data/manifest.ttl

Expected Results
To not stack overflow.

Thanks for the report and the info. Stack overflow for a big graph seems like a bug.
I don't know if a graph this size is feasible to compute is_isomorphic for (Maybe you know -- what's your success with smaller inputs? The algorithm petgraph uses is called VF2 and it's probably not the most well tuned implementation).
If you can, use is_isomorphic_matching, which cares about weights as well as just structure. That said, both of those functions can be improved to be smarter.

@bluss Smaller inputs work fine. I was trying to test against the manifest file to test hashing implementation. Could you explain what the last two parameters are for is_isomorphic_matching?

@Aaronepower Sure, those two functions are node weight and edge weight comparison functions. The default is_isomorphic doesn't care about weights, so that two graphs are isomorphic if they have the same structure.
You would care about weights if it is important that a node you have labelled "A" is only matched to another node labelled "A", for example.

Oh, and by smaller inputs that worked, do you have data on how big it was, how many seconds it took to compute, and even better if you have it so that I can reproduce it? Thanks

@bluss Could you give an example of how to use those parameters?
Smaller inputs that I have tested are using smaller tests files in chelone's tests/data directory.
cargo run --bin is_equal tests/data/turtle-subm-27.ttl tests/data/turtle-subm-27.nt

the simplest usage would be either |_x, _y| true or |x, y| x == y for both.
The former means that it has the same behaviour as is_isomorphic, namely that any node or edge is equal to any other. The latter requires nodes/edges to have equal weights to be matched. Again, say if you want only nodes that are labelled the same, to be matched to each other when finding an isomorphism.

Problem seems to be that the canonical VF2 algorithm uses a stack frame for each node in the network. I think it should be easy enough to eliminate the recursion in the algorithm.

i Would like to take a stab at this issue this weekend unless anyone else wants to?

@jrraymond Yeah you can go ahead with it.

If you need some more background on the algorithm, here is the original paper.

I wouldn't require of anyone to implement a new algorithm, but it's interesting and things are happening on this front, with new algorithms coming out since our VF2 was implemented.
https://ecmiindmath.org/2016/04/11/vf2-a-subgraph-isomophism-algorithm-for-molecular-pattern-matching/


Remove Endpoints - invite

User Story - Business Need

In the effort to clean up our code we need to investigate and remove unused endpoints. This ticket is to take a look at the endpoints under /service/<service_id>/invite and remove the ones marked for removal. You can view the table of endpoints here.
User Story(ies)
As an engineer
I want to clean up and reduce our codebase
So that it is easier to maintain and upgrade in the future.
Additional Info and Resources

Endpoint Table
Endpoint Spreadsheet

Engineering Checklist

[ ] Investigate the endpoints starting with /service/<service_id>/invite to make sure they aren't being used
[ ] Also investigate and remove the /service/<uuid:service_id>/archive endpoint.
[ ] Remove tests associate with those endpoints
[ ] Remove the code associated with those endpoints (if possible). Make sure not to remove any code used by other parts of the application.

Acceptance Criteria

When the designated code and tests have been removed, the application retains full functionality.

QA Considerations

[ ] The QA Regression Suite passes
[ ] The Cypress regression passes

Potential Dependencies

Make sure the removal of these endpoints doesn't affect the work Strike is doing.

Closing/no longer relevant.


Add cancel option to LockState.EnterPasscode state

Our team would like the option to be able to cancel out of the LockState.EnterPasscode state.
I thought of a couple different ways to do this:

Set the default value for isCancellableAction on EnterPasswordState to true
Make isCancellableAction on PasscodeLockStateType settable
Add an associated value to LockState.EnterPasscode to allow for that state with or without a cancellable action.

While all options had their pros and cons, I felt that the most flexible way to do this was option (3). Keep in mind that this breaks backwards compatibility, so it may be a good idea to wait for the next major release to add this in, but of course, it's up to the owners of this repo.

A temporary hack that you can use is to use .RemovePasscode which doesn't have any added functionality at the moment. This will help your team on keep using this repo and not your own fork.
We have to handle this with own of your suggestions indeed for the next release.

@ziogaschr I'm hesitant to use the .RemovePasscode case, as if the pod is updated later and that functionality is added in, I don't want unexpected behavior to occur off-the-bat (ie. without updating any code).
Do you have any idea when 2.0.0 will be released?

Nope.
And I am not sure who can decide this. It will be nice if we can form a group of maintainers and then have a call about it.
Currently I am contributing only with the things I find during implementing the framework to our App.
On 16 Jun 2016, at 00:00, Josh Sklar <notifications<EMAIL_ADDRESS>wrote:
@ziogaschrhttps://github.com/ziogaschr I'm hesitant to use the .RemovePasscode case, as if the pod is updated later and that functionality is added in, I don't want unexpected behavior to occur off-the-bat (ie. without updating any code).
Do you have any idea when 2.0.0 will be released?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://github.com/velikanov/SwiftPasscodeLock/pull/34#issuecomment-226318694, or mute the threadhttps://github.com/notifications/unsubscribe/AAw_jDZgOAEXKFzI2wlYo5_37StlJZkaks5qMGgLgaJpZM4I2oKK.

@ziogaschr are you looking for volunteers to help maintain the project? If so, drop me a note at<EMAIL_ADDRESS>I'd love to help out!

I am suggesting this and I am willing myself to be a volunteer, but I can't take the lead as it is @yankodimitrov project. If @yankodimitrov agrees then we can decide which code from this fork can be merged in his master repo and we all continue our efforts there. On top of that we can set a milestone and the features for the next release


CFP: Improve firstGlobalAddr IP selection

Cilium Feature Proposal
Is your feature request related to a problem?
Floating IP is being chosen as NodePort IP instead of primary IP on additional host interfaces.
Related to https://github.com/cilium/cilium/issues/15332, https://github.com/cilium/cilium/pull/15333.
(Optional) Describe your proposed solution
Would like to implement @pchaigno's proposal in https://github.com/cilium/cilium/pull/15333#issuecomment-804840937:

[ ] Fix netlink.AddrList upstream to sort by interface indexes (or create a new function).
[ ] Remove the sort on addresses in our firstGlobalAddr function.
[ ] Extend firstGlobalAddr match the kernel's selection and skip secondary addresses.

With Addr.LinkIndex (https://github.com/vishvananda/netlink/pull/543) now being available, I don't think upstream behavior of netlink.AddrList needs to be changed, we can just stable sort the results by LinkIndex.

Floating IP is being chosen as NodePort IP instead of primary IP on additional host interfaces.

And this "floating IP" is a secondary IP?


Generating many (1000s!) of RMarkdown reports

While working on SDCOE I learned a little bit about parallelising RMarkdown documents that could make a good blog post.
The blog post would be useful to advertise how awesome we are at making lots of reports - and showing folks how to do it.
See here for my notes https://github.com/rfortherestofus/ican_nudge_keyes/issues/3


FEATURE: adding hotkey to switch between open buffers

Did you check the docs?

[x] I have read all the docs.

Is your feature request related to a problem? Please describe.
Have to always go to buffer mode and choose the buffer i need manually, would be much better if i had a hotkey for switching open buffer like ALT_L + 1 ... ALT_L + 10
Describe the solution you'd like.
command for switching open buffers
Describe alternatives you've considered.

Additional Context

I believe you do not need neo-tree to have that functionality.
You can map those keys to :[N]b or :[N]bn etc. See the help page for :h :b and others.
Or there are other plugins that more suits your needs. The ones that come to my head right now are

https://github.com/ThePrimeagen/harpoon
https://github.com/nvim-telescope/telescope.nvim?tab=readme-ov-file#vim-pickers

builtin.buffers


Gracefully handle state with no names

For some reason, this is valid in Clubhouse.

Thanks for the extra catch! New patched v1.5.2 is published for you.
Indeed, Clubhouse stories have some strange optional fields.


RPC polling for 'switch' widget in 'RPC request persistent ' looks like doesn't work

On ThingsBoard website for 'switch' widget -  if feature 'RPC request persistent' enabled it doesn't poll client side with the GET method. Please check it on your side. Client can be polled with the GET method just once - in the case  if you'll reload ThingsBoard web page.

Actively polling the RPC client side is not what the RPC request persisent feature does.
The behaviour is exactly like expected, the only thing that this feature changes is that if the device is not connected the request is saved in the database instead and sent as soon as the device is connected. The 2000ms in that case is the time in that the widget expects a response, and if it gets one everything is good, if it doesn't the RPC expires is deleted from the database and the widget times out.

Ok. Thank you for explanation.
Mathew, I have open question - how to poll remote device state from widget side?
Example of possible case:

ESP32 has one LED and one button.
From web side we can control state of LED using switch widget. State of LED will be always stored in some static VAR.
We are pressed REAL button on ESP32 and LED changes state from ON to OFF and static variable also will be changed.

The question - how to poll ESP32 from web side in some time interval for status static VAR for LED, because if we push real button then web widget button should change state too. (if WEB page will be reloaded widget will send GET RPC request, and will get properly LED state.  But it is not convinient to reload page permanently from user side )

I don't think that can be directly done with an RPC widget, because it is not meant for that use case. RPC is meant for methods that are called by the cloud and "can" return a value. Either you change the underlying JavaScript code so that it sends the Get Request repeadetly, implementing your wanted polling, but that doesn't seem really efficient.

Or alternatively you use Shared Attributes, which are meant for your use case case. These are attributes that the device can send and change, and the server read, but the server can also change them and the device can be informed if they change on the server side.
To do that you need to first change the rule chain so that it transforms some attributes into shared attributes. Then the device can simply subscribe to changes for those attributes if the server changes them and send these attributes like it would any other client side attributes.
Afterwards the server can display that shared attribute in a widget, there are already preexisting widgets for that. Now if you change the value from the cloud the value on the display should be updated as well and if you change the value on the device, and then upload the changed value as an attribute it will also be shown on the cloud.
I hope this explanations helps somewhat. Alternatively I would recommend asking in the main repository as this is not an issue or feature request with the MQTT SDK.


Devlop test for 3C286 data

Late last year data were taken on a number of known polarised sources as a way of verifying we understood how to correct measurement sets for tools outside of yandasoft and the larger askap pipeline.  These data have been useful in verifying the fixms tool and the general continuum calibration and imaging workflow.
In terms of full polarisation, arrakis is starting to show some interesting and difficult to understand results. Using these 3C286 data and components of arrakis it has been highlighted that something is going wrong in the derivation (or application) of the smoothed bandpass.
A proper test should be incorporated into the general pytest suite to verify that the 3C286 data produces a correct stokes I/Q/U spectrum.
The bandpass SBID: 51998
The SBIDs of the science fields: 51997 and 52087
Since 3C286 is bright a minute or two should be sufficent. Bandpass calibration might require some thinking about since the MS are larger.
We would need to store in an accessible way:

the raw MS of beam 0 (the beam centered on 3C286)
the calibrate and applysolutions singularity container

For later use, here are the Perley+Bulter reference values:
In Stokes I they have 4-paramter model, fit to log(freq/GHz). The model values can be obtained by doing something like
PB_scales = {
    0: 1.2481,
    1: -0.4507,
    2: -0.1798,
    3:  0.0357,
}
nu_g_log = np.log10(nu_g) # nu_g are frequencies in GHz
pb_model_log = PB_scales[0] + \
            PB_scales[1] * nu_g_log + \
            PB_scales[2] * nu_g_log**2 + \
            PB_scales[3] * nu_g_log**3
pb_model_i = 10**(pb_model_log) # These are the model Stokes I fluxes in Jy

For polarisation, we have reference values at a few frequencies in terms of polarisation fraction and angle. These values are:
pb_pol = {
    "freq": np.array([1.050, 1.450, 1.640]), # reference frequency
    "p": np.array([0.086, 0.096, 0.099]), # fractional polarisation
    "a": np.array([33, 33, 33]), # polarisation angle in deg
}

The angles are conveniently all 33deg.
We can assume 3C286 has a RM of 0, so we can do a 'self-calibration' of the ionosphere by assuming any apparent RM is due to the ionosphere. We can obtain the RM using RM-Tools:
mDict_45, aDict_45 = run_rmsynth(
    [
        freqs, # frequencies in Hz
        stokes_i, # Stokes I flux
        stokes_q, # Stokes Q flux
        stokes_u, # Stokes U flux
        np.ones_like(stokes_i) * 1e-3, # dummy noise
        np.ones_like(stokes_q) * 1e-3, # dummy noise
        np.ones_like(stokes_u) * 1e-3, # dummy noise
    ],
    showPlots=False,
    phiMax_radm2=100 # Ionospheric RM is usually between 1-10rad/m/m
)
measured_intrinsic_angle = mDict_45["polAngle0Fit_deg"]

We should aim to be within a few degrees of 33deg, I think.

Once we have done that correction then I am guessing we can also include some checks to make sure the Q and U is also correct against a known set of spectra, even if it is our own.
Once this basic test has been set up then we can expend upon this,


Select field valueMember documentation

I had a pretty difficult time understanding how to display a default value for the the Select Field component.
After stepping through the code, I realized valueMember is used against the menuItems list to retrieve the value. This isn't clear in the documentation.
I want to propose adding this into the documentation.
Expect a PR at some point soon....

Hi matsilva, I'm having the same headache to display a default value in a Select Field. Could you describe what implementation finally worked for you ?

First thing is first... select fields are actually Drop Down components http://material-ui.com/#/components/dropdown-menu, which may help you have a better understanding. If you were like me, you were studying text fields to try and understand it.
The data a select field returns when selected looks something like this:
   { payload: '1', text: 'The displayed text' },

The select field uses the valueMember property to access the desired value by key in the select object. valueMember by default is set to 'payload'. See https://github.com/callemall/material-ui/blob/master/src/drop-down-menu.jsx#L56
If you were like me, you did not use payload in the menuItems collection, just 'text'.
The solution is to set valueMember to the key that accesses the value that you want, in my case it was 'text'. So given the following menu item:
var menuItem = {text: 'Some value'}

Setting valueMember='text' would result in accessing the value of menuItem['text'] and result in displaying the correct value.
While this works, you will noticed this is the wrong way to use it if you examine the code https://github.com/callemall/material-ui/blob/master/src/drop-down-menu.jsx#L204
displayMember should control what is displayed  to the user and valueMember should control the actual value you want to return on the application side
For example you may want to display My Awesome Product to the user, but have the value actually return the product id number HFdkj333-fd.
So in short, referencing the docs for DropDown menus: 'payload' should be the valueMember key and 'text' should be displayMember.

@ArthurRougier if you can confirm that knowing drop-down-menu is the correct documentation to be looking at, my suggestion would be to simply make that clear in the text-fields docs with a link to the drop down menu docs.
@oliviertassinari  thoughts?

I agree the documentation and the usage of the SelectField is not intuitive right now. It would be improved!
            <SelectField menuItems={object} value={value}
              onChange={this.onChange}/>

This is how I'm using it. value refers to one of my object payload.

@matsilva and @oliviertassinari thanks a lot for your thorough explanations, now I finally get it... I was actually using the menuItems as the dropdown documentation suggested to :
let menuItems = [
   { payload: '1', text: 'Never' }
  //...
];

But what I didn't get was:

That valueMember was actually to change the member to look for, corresponding to the value.
And more stupidly, that value was expecting the object payload... I was trying to set a default value doing value={1} instead of value={'1'}. Ok, this one is pretty dumb!

Long story short, yeah, even if I was doing some non-sense things, some additional documentation on those select fields might help. Thanks a lot for your help guys

We have added a separate page for the SelectField component. It should be fine now.


Remove Active item dependency on the URL (isActive prop)

Each ListItem inside the ListView component has a prop isActive. Today, this is dependent on the URL to get the current activeActionBaseId. Since, not all IDEs use the same URL we need to remove this dependency and find another way to get the active item for the list.

Hey team! Please add your planning poker estimate with Zenhub @alex-golovanov @hetunandu


Render emotes in EmoteSet selector

Display first 10 emotes in EmoteSet Selector.

I'll refer to EmoteSet Selector as ESS from now on because it's too dank in commits


Flocker

Hi, love your work -- didn't realise it was possible to save/restore the state of etcd and start up without a discovery token.
I have a similar requirement to get a HA CoreOS cluster working in AWS, I had been apprehensive about the cluster getting damaged during a catastrophic reboot.
Having understood what you are doing, have you considered Flocker?
Since you are running the etcd_aws in a docker you will get the load/save into an EBS volume. Don't know if it will make much difference to your design but it removes the need for a named S3 bucket....

Thanks for the feedback.
For backups, the core issue is that the built-in backup provided by etcd includes both the data stored and the cluster state. If you have a complete failure of the cluster -- I think you don't want the cluster state restored.
In other words, the problem with built-in backup isn't how it is stored, it is what is stored.
After that, the question is where to store the backups, and S3 seems like a logical place, but that isn't essential to the approach.
Hope that helps and thanks for your comment!

Yes it does help me. I currently been playing with local coreos clusters (created 10 - 5 masters/5 slaves) but had noticed instability a few times, especially when trying to replace a master. I am using etcd as my bootstrap kv, then running consul against that and using zookeeper to power my mesos cluster.
Makes me think that I probably need to save consul and zookeeper as they all help to bootstrap the cluster.
I do not have a huge experience with go-lang (at the moment) but was wondering if there was a possibility of reading/writing the data for etcd_aws from a mounted share?
This is so that I can test it locally on my mac with vagrant (it exposes a mount into the machine) and get a good understanding before trying to grapple with it on AWS.


2 Column container problem

Hi guys, first of all, I want to congratulate you for such a good library.
I've encountered a bug on the library, working with 2 columns SortableContainer's,  it has a weird animation when dragging some components.
To reproduce this problem just go to http://clauderic.github.io/react-sortable-hoc/#/basic-configuration/grid?_k=8abqva and edit the width of the div with the classes Showcase__style__list Showcase__style__stylizedList Showcase__style__grid  to width: 350px

I think it is solved in https://github.com/clauderic/react-sortable-hoc/issues/617


Audit string coercion throughout luv

From https://github.com/luvit/luv/issues/127#issuecomment-449615737

Another unrelated thing (which probably requires a separate issue to be opened) is that one must be very careful when converting stack values to strings via any of lua_tostring, luaL_checkstring, luaL_optstring and other functions that may cause coercion. For example, I can see that in your code when a table of strings is written to a stream, there is no protection that an element might in fact be a number. When a uv_buf_t vector is being initialized, the item is converted to a string on the stack and its pointer is saved in the vector. All seems good. However, after the conversion is made and before the actual string is written to a socket in a uv_write_t request, garbage collection may happen effectively invalidating the saved pointer because its source string existed briefly on the stack as a result of coercion (the item in the table is still a number, not a string). And that means in turn that undefined data will actually be written.
Btw, the table that is used to form a uv_buf_t vector may be altered even after the call directly in Lua which will lead to the same outcome. There is no protection against it.
I haven't checked through your code much, but there are many other caveats when using Lua C API that one must be aware of. They are all more or less mentioned in the manual though.

This is something I ran into when writing https://github.com/luvit/luv/pull/393 (if lua_isstring was the first if check, then a number passed as the argument would return true from lua_isstring and get coerced into a string) and it's something that we need to be more careful of and are probably using incorrectly.

Confirmed that the uv_buf_t problem mentioned in the quote above is accurate and reproducible via:

local uv = require('luv')

local path = "_test_"
local fd = assert(uv.fs_open(path, "w", tonumber("0666", 8)))
print("writing")
do
  local t = {"with\n", 600, "lines\n"}
  uv.fs_write(fd, t, -1, function()
    print("written")
    uv.fs_close(fd)
  end)
end
local count = collectgarbage("count")
collectgarbage("collect")
print("garbage collected", count - collectgarbage("count"))

uv.run()

Note that it's the coerced number that is failing; I couldn't get a crash when using strings (probably due to how strings are handled internally by Lua). When run the above with PUC Lua 5.1 and Valgrind I get:
==13484== Memcheck, a memory error detector
==13484== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==13484== Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright info
==13484== Command: lua test.lua
==13484==
writing
garbage collected       1.017578125
==13484== Thread 2:
==13484== Syscall param writev(vector[...]) points to unaddressable byte(s)
==13484==    at 0x568AFFD: ??? (syscall-template.S:84)
==13484==    by 0x5FB5C15: uv__fs_write (in /home/ryan/Programming/luv/build/luv.so)
==13484==    by 0x5FB68EC: uv__fs_write_all (in /home/ryan/Programming/luv/build/luv.so)
==13484==    by 0x5FB6E6E: uv__fs_work (in /home/ryan/Programming/luv/build/luv.so)
==13484==    by 0x5FAB950: worker (in /home/ryan/Programming/luv/build/luv.so)
==13484==    by 0x63F06B9: start_thread (pthread_create.c:333)
==13484==  Address 0x5bc3968 is 24 bytes inside a block of size 28 free'd
==13484==    at 0x4C2EF90: free (vg_replace_malloc.c:540)
==13484==    by 0x4123F8: ??? (in /usr/bin/lua5.1)
==13484==    by 0x40A6DD: ??? (in /usr/bin/lua5.1)
==13484==    by 0x40968D: ??? (in /usr/bin/lua5.1)
==13484==    by 0x40A010: ??? (in /usr/bin/lua5.1)
==13484==    by 0x40A577: ??? (in /usr/bin/lua5.1)
==13484==    by 0x405EF4: lua_gc (in /usr/bin/lua5.1)
==13484==    by 0x4172A1: ??? (in /usr/bin/lua5.1)
==13484==    by 0x4080DF: ??? (in /usr/bin/lua5.1)
==13484==    by 0x4116E1: ??? (in /usr/bin/lua5.1)
==13484==    by 0x40853C: ??? (in /usr/bin/lua5.1)
==13484==    by 0x40782A: ??? (in /usr/bin/lua5.1)
==13484==  Block was alloc'd at
==13484==    at 0x4C2DDE0: malloc (vg_replace_malloc.c:308)
==13484==    by 0x4C30130: realloc (vg_replace_malloc.c:836)
==13484==    by 0x40A6DD: ??? (in /usr/bin/lua5.1)
==13484==    by 0x40E295: ??? (in /usr/bin/lua5.1)
==13484==    by 0x410296: ??? (in /usr/bin/lua5.1)
==13484==    by 0x4051D2: lua_tolstring (in /usr/bin/lua5.1)
==13484==    by 0x41296E: luaL_checklstring (in /usr/bin/lua5.1)
==13484==    by 0x5F9680E: luv_check_buf (in /home/ryan/Programming/luv/build/luv.so)
==13484==    by 0x5F96F1C: luv_prep_bufs (in /home/ryan/Programming/luv/build/luv.so)
==13484==    by 0x5F9C325: luv_fs_write (in /home/ryan/Programming/luv/build/luv.so)
==13484==    by 0x4080DF: ??? (in /usr/bin/lua5.1)
==13484==    by 0x4116E1: ??? (in /usr/bin/lua5.1)
==13484==
written
==13484==
==13484== HEAP SUMMARY:
==13484==     in use at exit: 3,313 bytes in 10 blocks
==13484==   total heap usage: 1,599 allocs, 1,589 frees, 163,941 bytes allocated
==13484==
==13484== LEAK SUMMARY:
==13484==    definitely lost: 0 bytes in 0 blocks
==13484==    indirectly lost: 0 bytes in 0 blocks
==13484==      possibly lost: 0 bytes in 0 blocks
==13484==    still reachable: 3,313 bytes in 10 blocks
==13484==         suppressed: 0 bytes in 0 blocks
==13484== Rerun with --leak-check=full to see details of leaked memory
==13484==
==13484== For lists of detected and suppressed errors, rerun with: -s
==13484== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)


Add isReactive method

I recently had to test specific configuration of a field including it's state bindings.
This would be helpful in combination with #6040:
it('title field is reactive', function () {
    livewire(CreatePost::class)
        ->assertFormFieldExists('title', function (TextInput $input) {
            return $input->isReactive();
        });
});

Thanks


ndk/media_codec: Inline get_unlikely_to_be_null()

Back when I refactored these in #248 and #256 the closure argument should have been removed entirely as it is only called immediately without any arguments, so its return value could have been passed instead.  At that point the function becomes simple enough to warrant removal entirely, inlining the unwrap and even allowing a more natural string literal error message in .expect().
CC @zarik5

I agree this is an improvement. The function name get_unlikely_to_be_null was a bit complex and obscure, that's usually a sign the function should be broken down or removed.

At least it's descriptive, which can't be said for the other functions (does it "assume" this is never null? Or validate that it isn't?).


DLLs do not have the App Container bit set

I have this error when run this command:
C:\Users\MYUSER\Desktop\Sources\vcpkg>.\toolsrc\Release\vcpkg.exe install cpprestsdk:x86-uwp zlib:x64-windows
-- CURRENT_INSTALLED_DIR=C:/Users/MYUSER/Desktop/Sources/vcpkg/installed/x86-uwp
-- DOWNLOADS=C:/Users/MYUSER/Desktop/Sources/vcpkg/downloads
-- CURRENT_PACKAGES_DIR=C:/Users/MYUSER/Desktop/Sources/vcpkg/packages/cpprestsdk_x86-uwp
-- CURRENT_BUILDTREES_DIR=C:/Users/MYUSER/Desktop/Sources/vcpkg/buildtrees/cpprestsdk
-- CURRENT_PORT_DIR=C:/Users/MYUSER/Desktop/Sources/vcpkg/ports/cpprestsdk/.
-- Cloning
-- Cloning done
-- Adding worktree and patching
-- Patching
-- Adding worktree and patching done
-- Configuring x86-uwp-rel
-- Configuring x86-uwp-rel done
-- Configuring x86-uwp-dbg
-- Configuring x86-uwp-dbg done
-- Build x86-uwp-rel
-- Build x86-uwp-rel done
-- Build x86-uwp-dbg
-- Build x86-uwp-dbg done
-- Package x86-uwp-rel
-- Package x86-uwp-rel done
-- Package x86-uwp-dbg
-- Package x86-uwp-dbg done
-- Warning: Could not find a matching pdb file for:
C:/Users/MYUSER/Desktop/Sources/vcpkg/packages/cpprestsdk_x86-uwp/bin/cpprest_2_8.dll
-- Performing post-build validation
The following DLLs do not have the App Container bit set:
C:/Users/MYUSER/Desktop/Sources/vcpkg/packages/cpprestsdk_x86-uwp/bin/cpprest_2_8.dll
C:/Users/MYUSER/Desktop/Sources/vcpkg/packages/cpprestsdk_x86-uwp/debug/bin/cpprest_2_8.dll

This bit is required for Windows Store apps.
Found 1 error(s). Please correct the portfile:
C:\Users\MYUSER\Desktop\Sources\vcpkg\ports\cpprestsdk\portfile.cmake
My vcpkg version is:
Vcpkg package management program version 0.0.30-e507c14229e5dd206499eef3ffa4e887131b9678

Thanks, this definitely looks like a bug in the cpprestsdk CMake/portfile.


dnstap_collector.c: SOCK_NONBLOCK is not available on Mac/Darwin

Hi guys!
Thanks for keeping up the fantastic work.
While trying to compile NSD with dnstap support on a Mac I ran into:
% make
gcc -I/opt/pkg/include -I. -I/opt/pkg/include -L/opt/pkg/include -c dnstap/dnstap_collector.c
clang: warning: argument unused during compilation: '-L/opt/pkg/include' [-Wunused-command-line-argument]
dnstap/dnstap_collector.c:68:39: error: use of undeclared identifier 'SOCK_NONBLOCK'
if(socketpair(AF_UNIX, SOCK_DGRAM | SOCK_NONBLOCK, 0, sv) < 0) {
^
1 error generated.
make: *** [dnstap_collector.o] Error 1
... and alas, SOCK_NONBLOCK doesn't exist on the Macs. I see you have worked around it in other parts of the code. Would you please "do the same" in the dnstap corner?
This is with nsd-4.7.0 and MacOS Monterrey (12.6).
Cheers,
/LIman

The -L compile argument with an include directory looks unnecessary to me, usually -L needs a library directory. But I guess otherwise harmless, as there is likely no libraries there.
The commit applies a similar fix that exists in other parts of the code. It ignores the extra argument if that option does not exist, and then attempts to set nonblocking with the fcntl function. Thanks for the fail details, I hope it works on the compile environment, but that seems likely.

Thanks for a quick fix. It does indeed take me through compilation like a breeze. Next I'll test the functionality.
I'm a bit surprised that you didn't identify the "-L" as the obvious cut-and-paste error that it is though, but thanks for highlighting it.


Dice So Nice! ffg/genesys themed dice

Compatible with the upcoming DsN release. Not ready for prod.

Gonna hold onto this as advised and wait until your 0.7.x branch is released.
Just a heads up re the font-face elements, they will need adding to scss/utils/_typography.scss to avoid being overwritten when the SASS is recompiled.
Thanks for all your hard work on this :)


Newly added field in database table doesn't reflect automatically in SuperSet tables

Make sure these boxes are checked before submitting your issue - thank you!

[Y ] I have checked the superset logs for python stacktraces and included it here as text if any
[ Y] I have reproduced the issue with at least the latest released version of superset
[ Y] I have checked the issue tracker for the same issue and I haven't found one similar

Superset version
0.20.5
Expected results
Newly added field in database table doesn't reflect automatically in SuperSet tables however it should automatically be available there.
Actual results
Newly added field in database table doesn't reflect automatically in SuperSet. We have to add those fields manually in table.
Steps to reproduce
Add new columns in database table and check if these column are available in existing superset tables.

It's already documented in the FAQ https://superset.incubator.apache.org/faq.html#how-do-i-add-new-columns-to-an-existing-table


[CARBONDATA-3116] Support set carbon.query.directQueryOnDataMap.enabled=true

[CARBONDATA-3116] support set carbon.query.directQueryOnDataMap.enabled=true
This PR fix the error：User can query on dataMap after set carbon.query.directQueryOnDataMap.enabled=true.
Be sure to do all of the following checklist to help us incorporate
your contribution quickly and easily:

[x] Any interfaces changed?
No
[x] Any backward compatibility impacted?
No
[x] Document update required?
No
[x] Testing done
add
[x] For large changes, please consider breaking it into sub-tasks under an umbrella JIRA.
no

Build Success with Spark 2.1.0, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder2.1/1494/

Build Success with Spark 2.2.1, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder1/1703/

Build Success with Spark 2.3.1, Please check CI http://<IP_ADDRESS>:8080/job/carbondataprbuilder2.3/9751/

@jackylk @ravipesala @KanakaKumar @kunal642  This is a bug, please review it.

Build Success with Spark 2.1.0, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder2.1/1616/

@xubo245 this property was added for internal purpose to restrict user from directly querying on pre-ggregate data map as it will show aggregated output

Build Success with Spark 2.2.1, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder1/1827/

Build Success with Spark 2.3.1, Please check CI http://<IP_ADDRESS>:8080/job/carbondataprbuilder2.3/9878/

Build Success with Spark 2.2.1, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder1/1829/

CI pass， please review it. @jackylk @manishgupta88 @kunal642

@kumarvishal09 but the carbon.query.directQueryOnDataMap.enabled parameter has been exposed to user and can't work.

LGTM


The standard deviation of dataset in gen_toy

In 25gaussians, stdev=2.828, in swissroll, stdev=7.5, in 8gaussians, stdev=1.414,  how to get these standard deviation?

They're from https://arxiv.org/abs/1606.00704 and https://arxiv.org/abs/1611.02163, respectively.


Bugsnag exceptions should reference coffeescript source

@kevinsawicki mentioned that at one point, the exceptions reported to bugsnag had line numbers / stack trace references from the coffeescript source but we seem to have regressed as they are now from the JS:

Closing this as we are moving to JS.


Prevent message getting auto-marked as 'read' on the senders devices

Hi,
I'm not sure if this is something that can be prevented, by either Mudslide or Baileys.
I have a Whatsapp group that I'm sending to, I'm part of the group. On my other devices (like a phone) I don't get a notification that a new message is sent. Makes sense, like, I just wrote it myself. Why would I want to be notified about it. However, I didn't write it myself, it's an automated message sent by Mudslide.
Apart from that Mudslide works great, and I'm not saying this is problem or a bug. Just looking for a solution.
Thanks
Vincent

Hi @vinne81
As you clearly explain in your question, this is indeed how it works: to WA it appears as if you are sending the message yourself (because even though it's automated, your credentials are used for authentication when logging in with the QR code).
Maybe there is a way in the WA API to flag a message as "automated" or "bot", or something like that, but I haven't found that option in the Baileys library.
KR, Rob

Hi Rob
I've been browsing the Issues for Baileys looking for clues, and I found a thread that might contain some info related to this issue. Although they are talking about notifications for incoming messages, and we're talking about our own sent messages.
I'm not sure what causes the messages to be auto-read. Some baked-in Whatsapp thing that whatever you sent, you auto read, or is it the client that sends the messages that also reads it.
Anyway:  https://github.com/WhiskeySockets/Baileys/issues/299
const sock = makeWASocket({   ...config,   markOnlineOnConnect: false })
Could the above help?
Best regards
Vincent


Disabling two-factor authentication documentation update

Why:
Documentation was not up to date with website changes

What's being changed (if available, include any code snippets, screenshots, or gifs):
Image and description of where to disable 2fa

Check off the following:

[x] I have reviewed my changes in staging, available via the View deployment link in this PR's timeline (this link will be available after opening the PR).

For content changes, you will also see an automatically generated comment with links directly to pages you've modified. The comment won't appear if your PR only edits files in the data directory.

[x] For content changes, I have completed the self-review checklist.

@georgethemarmot Thank you for opening a PR! ✨ While your changes appear to be correct, I'll get this triaged for review by our technical writing team to validate content / style changes 💛

how can i contribute ?

@kashyapanjali Hello! 👋 While there aren't any opportunities to contribute regarding this PR, take a look at our help wanted section to find open issues you can work on ✨

New image to use

@georgethemarmot Howdy! 👋 We wanted to check in and see if you've had a chance to review @subatoi's suggestions, including the new image he provided! The branch conflicts will also need to be resolved as well 💛
If you'd rather us fix this internally, we're more than happy to do so!

@georgethemarmot Just to let you know, I'm shipping a fix for this internally and have added you as a co-committer (since you use a no-reply), so we can leave this closed.
Thanks for spotting this and your interest in the docs!

@nguyenalex836  @subatoi
Sorry I had no time to reply before.
Next time I'll maybe just report it instead of opening PR.

Sorry I had no time to reply before.

No problem at all!

Next time I'll maybe just report it instead of opening PR.

In general, that's often the best way to do things. We don't mind people raising PRs first, but since we have to conform to our style guide and restrictions around images (like in this case), it can introduce a bit of friction. If users raise an issue first, it gives us chance to help shape the changes, meaning, typically, less friction. Obviously there isn't much point in raising an issue first if you're only fixing a typo, though!
In this case, I went ahead and pushed a fix because you'd correctly identified something that might have been tripping people up, so thank you again!
You can see your co-committer attribution here:
https://github.com/github/docs/commit/1368bab5336e46d95d15cacd43aeb955d1353e54


Fix sparse argmin/argmax return shape

Merge #3638 first.
This PR fixes sparse argmin/argmax to return ndarrays that have the same shape as their SciPy counterparts. Additionally, I've parameterized the test to make it simpler.

Close this for the duplicate fix.

Close this as I reposted #3639.


Use rubyfmt inPATH for document formatting instead of building as a library

On the tin -- this changes the LSP document formatting requests to use exec("rubyfmt <file>"), which will look for rubyfmt in the user's PATH, instead of using rubyfmt as a library.
Motivation

The primary reason for this is that it better enables development of rubyfmt internally at Stripe -- this allows us to have our rubyfmt versions separate from Sorbet versioning so we can freely update one without the other.
As an added effect, the large amount of deleted code from this diff is because this removes a lot of complexity from the Sorbet build, since it allows us to remove rust+cargo+rubyfmt dependencies, as well as just removing a whole stage of the build entirely.
Test plan

I ran this build over Stripe's codebase on a branch with rubyfmt enabled and ensured that it could still properly format documents. Otherwise, I'm relying on existing tests.

Just for a paper trail -- I'll follow up shortly with cleaning up the error handling and testing story, and I'll be rolling the config cleanup into #5834.


Take advantage of borrowing for Database Object + Diesel

We deal exclusively with owned database objects like StoredGroup or StoredGroupMessage. We can instead borrow it directly from what the SQLite library returns from the database, avoiding unnecessary allocations. Furthermore, when inserting into the database we can use borrowed variants of our schema to avoid extra allocations before inserting.
There are an abundance of examples around the codebase, but load_identity_updates is a fairly well self-contained example:
/// For the given list of `inbox_id`s get all updates from the network that are newer than the last known `sequence_id`,
/// write them in the db, and return the updates
#[tracing::instrument(level = "trace", skip_all)]
pub async fn load_identity_updates<ApiClient: XmtpApi>(
    api_client: &ApiClientWrapper<ApiClient>,
    conn: &DbConnection,
    inbox_ids: &[&str],
) -> Result<HashMap<String, Vec<InboxUpdate>>, ClientError> {
    if inbox_ids.is_empty() {
        return Ok(HashMap::new());
    }
    tracing::debug!("Fetching identity updates for: {:?}", inbox_ids);

    let existing_sequence_ids = conn.get_latest_sequence_id(inbox_ids)?;
    let filters: Vec<GetIdentityUpdatesV2Filter> = inbox_ids
        .iter()
        .map(|inbox_id| GetIdentityUpdatesV2Filter {
            sequence_id: existing_sequence_ids.get(*inbox_id).map(|i| *i as u64),
            inbox_id: inbox_id.to_string(),
        })
        .collect();

    let updates = api_client.get_identity_updates_v2(filters).await?;

    let to_store = updates
        .iter()
        .flat_map(|(inbox_id, updates)| {
            updates.iter().map(|update| StoredIdentityUpdate {
                inbox_id: inbox_id.clone(),
                sequence_id: update.sequence_id as i64,
                server_timestamp_ns: update.server_timestamp_ns as i64,
                payload: update.update.clone().into(),
            })
        })
        .collect::<Vec<StoredIdentityUpdate>>();

    conn.insert_or_ignore_identity_updates(&to_store)?;
    Ok(updates)
}

we could instead insert a StoredIdentityUpdateRef<'_> that borrows inbox_id, and payload
For this one example it doesn't matter much, but multiplied over everywhere we load & store in the codebase, it could have a noticeable effect on perf.

Love this idea


fix(docs): WSL error with golang mod cache in general

Ref 1 (Aug 2024): https://discord.com/channels/669268347736686612/1275514566104584202/1275514566104584202
Ref 2 (Oct 1, 2024): https://discord.com/channels/669268347736686612/1290674907134558229
2 users now have reported this issue where WSL likes to mess with the go instance cache for some reason. This is not related to spawn directly, but rather indirect due to the SDK/Go being used.
make protoc-gen
github.com/rollchains/rollchain/api/nameservice/module/v1: cannot find module providing package github.com/rollchains/rollchain/api/nameservice/module/v1: module github.com/rollchains/rollchain/api/nameservice/module: git ls-remote -q origin in /root/go/pkg/mod/cache/vcs/5c185abe3132c155eb28cff6824b74990ed6a2add5f97b0869c7e09afad95925: exit status 128:
        Host key verification failed.
        fatal: Could not read from remote repository.

ref 1

attempts go1.23.0

reinstalls WSL and sets up properly using spawn docs
"Thank you very much! I cleaned the go cache and after that moved to the myproject directory and then"

Ref 2

Solution
go clean -modcache
# or rm -rf $HOME/go/pkg/mod
make protoc-gen

Resolved in https://github.com/rollchains/spawn/commit/7d8f1fd864114a7fcb6309ad473337a1b57bbea0
Another user in the discord now with the same issues but apperently the clean and make proto-gen does not work for them. They previously did not have their go env setup properly. Assume it is still something on their end & not ours given the circumstances

I cleaned the mod, an run the command to dowload dependencies again
but i receive this error:

these are my go envs:
GO111MODULE=''
GOARCH='amd64'
GOBIN=''
GOCACHE='/home/roberto/.cache/go-build'
GOENV='/home/roberto/.config/go/env'
GOEXE=''
GOEXPERIMENT=''
GOFLAGS=''
GOHOSTARCH='amd64'
GOHOSTOS='linux'
GOINSECURE=''
GOMODCACHE='/home/roberto/go/pkg/mod'
GONOPROXY=''
GONOSUMDB=''
GOOS='linux'
GOPATH='/home/roberto/go'
GOPRIVATE=''
GOPROXY='https://proxy.golang.org,direct'
GOROOT='/usr/local/go'
GOSUMDB='sum.golang.org'
GOTMPDIR=''
GOTOOLCHAIN='auto'
GOTOOLDIR='/usr/local/go/pkg/tool/linux_amd64'
GOVCS=''
GOVERSION='go1.23.0'
GODEBUG=''
GOTELEMETRY='local'
GOTELEMETRYDIR='/home/roberto/.config/go/telemetry'
GCCGO='gccgo'
GOAMD64='v1'
AR='ar'
CC='gcc'
CXX='g++'
CGO_ENABLED='1'
GOMOD='/home/roberto/Documents/PersonalProjects/spawn/rollchain/go.mod'
GOWORK=''
CGO_CFLAGS='-O2 -g'
CGO_CPPFLAGS=''
CGO_CXXFLAGS='-O2 -g'
CGO_FFLAGS='-O2 -g'
CGO_LDFLAGS='-O2 -g'
PKG_CONFIG='pkg-config'
GOGCCFLAGS='-fPIC -m64 -pthread -Wl,--no-gc-sections -fmessage-length=0 -ffile-prefix-map=/tmp/go-build3251093546=/tmp/go-build -gno-record-gcc-switches'


Add instructions that PRs should be made to Azure/azure-rest-api-specs

Since the changes to the specs need to go to the upstream repo, there should be an indication in this repo about this. Possible locatons for the note:

README.md
PULL_REQUEST_TEMPLATE.md
Contributing.md

Thanks for opening this issue :). That's definitely true (and not just true for Python by the way).

Adding a note in the contributing file:
https://github.com/Azure/azure-sdk-for-python/commit/863ceaf877fa0193e2e1aaca2d79bc11e689cf2e


Technology increament

What feature?
I want to add more option of project like solidity and php projects option  in to the projects sort option
Add screenshots
Add screenshots
Code of Conduct

[X] I agree to follow this project's Code of Conduct

ig there are no projects made using php, or solidity.  so we can't add these right now if we got projects made using php or something we will add


error in run-bagdump.sh

this is that in my terminal, could someone help me please...
root@MONTO:/mnt/j/ucity/udacity-driving-reader-master# ./run-bagdump.sh -i /mnt/j/ucity -o /mnt/j/ucity/data
Running 'python script/bagdump.py' with input dir '/mnt/j/ucity', output dir '/mnt/j/ucity/data', docker image 'udacity-reader'...
python: can't open file 'script/bagdump.py': [Errno 2] No such file or directory

thanks!

I did a build.sh and run-bagdump.sh, docker version 18.09.07 from clean checkout and cannot reproduce. If you run just ./run.sh and look at the folder structure in the container, the 'script' folder should contain some python scripts. If it doesn't, something wrong with your build. Remove container, try run build.sh again. Make sure your docker is setup correctly, etc.


closing previous figures

Hi,
I'm trying to show results of Tutorial 9 in an ongoing manner. My code looks like this:
for n, measurements in enumerate(all_measurements):
    plotter=Plotter()
    plotter.plot_measurements(all_measurements, [0, 2], color='g')
    # Calculate all hypothesis pairs and associate the elements in the best subset to the tracks.
    hypotheses = data_associator.associate(tracks,
                                           measurements,
                                           start_time + timedelta(seconds=n))
    associated_measurements = set()
    for track in tracks:
        hypothesis = hypotheses[track]
        if hypothesis.measurement:
            post = updater.update(hypothesis)
            track.append(post)
            associated_measurements.add(hypothesis.measurement)
        else:  # When data associator says no detections are good enough, we'll keep the prediction
            track.append(hypothesis.prediction)
    # Carry out deletion and initiation
    tracks -= deleter.delete_tracks(tracks)
    tracks |= initiator.initiate(measurements - associated_measurements,
                                 start_time + timedelta(seconds=n))
    all_tracks |= tracks
    plotter.plot_tracks(all_tracks, [0, 2], uncertainty=True)

However, in this way, many figures are accumulated. I want that all of the previous figures will be closed. Unfortunately, adding
import matplotlib.pyplot as plt

before the loop, and
plt.close()
sleep(1)

right after the 'for', do not enable to show the previous results.
Can you please suggest me a way that should work?
Regards.

Have you tried swapping sleep(1) and plt.close()?  That may help, because currently you are closing the previous plots instantly (then waiting with no plots in the output), rather than waiting and then closing them.

Something like this may work for you?
import matplotlib.pyplot as plt
tracks, all_tracks = set(), set()

# Get original plot limits
orig_xlim = plotter.ax.get_xlim()
orig_ylim = plotter.ax.get_ylim()

for n, measurements in enumerate(all_measurements):
    plotter=Plotter()
    # Set plot limits to same a orignal
    plotter.ax.set_xlim(orig_xlim)
    plotter.ax.set_ylim(orig_ylim)
    # Only plot measurements at this timestep
    plotter.plot_measurements(measurements, [0, 2], color='g')

    # Calculate all hypothesis pairs and associate the elements in the best subset to the tracks.
    hypotheses = data_associator.associate(tracks,
                                           measurements,
                                           start_time + timedelta(seconds=n))
    associated_measurements = set()
    for track in tracks:
        hypothesis = hypotheses[track]
        if hypothesis.measurement:
            post = updater.update(hypothesis)
            track.append(post)
            associated_measurements.add(hypothesis.measurement)
        else:  # When data associator says no detections are good enough, we'll keep the prediction
            track.append(hypothesis.prediction)

    # Carry out deletion and initiation
    tracks -= deleter.delete_tracks(tracks)
    tracks |= initiator.initiate(measurements - associated_measurements,
                                 start_time + timedelta(seconds=n))
    all_tracks |= tracks
    if tracks:  # Only plot if tracks present
        plotter.plot_tracks(all_tracks, [0, 2], uncertainty=True)
    plt.draw()
    plt.pause(1)
    plt.close(plotter.fig)

Good. Works on PyCharm editor.
Thank you!


Cleaning of Unit Testing

Coverage remained the same at 58.729% when pulling 7f7fcc91d3c1a034268aa3d975ceea4edd9c0dd2 on alexandrepa:code_reviews into 6c586ca0362b931cbb0e030cdb36171f7776260c on blossom-project:master.


Tray icon goes away after locking/unlocking the screen (GNOME 3.36 w/ appindicator support)

Bug Description
The systray icon disappears after locking the screen and unlocking again. Other issues mention that a recent update "broke" the tray icon in a different way (making it disappear entirely or get really small).
Keybase Version
keybase version 5.5.1-20200527202541+39ca0071e5
System Information
OS: Fedora 32 (Workstation Edition) 64 Bit
DE: GNOME 3.36.3 w/ gnome-shell-extension-appindicator
Windowing System: Wayland
Similar Bugs
Seems like it is a problem with Electron 8. Rebasing app with Electron 9 or hacking a fix could work.

https://github.com/electron/electron/pull/23674
https://github.com/signalapp/Signal-Desktop/issues/4082
https://github.com/zulip/zulip-desktop/issues/910

I haven't verified that the client is still running, I assumed that since the systray icon was gone that the app completely crashed. I was thinking it was this issue: https://github.com/electron/electron/issues/20509


Install error (Cython compilation failed)

On Ubuntu 16 with python 2.7 and cuda 9.0, I ran init.sh and met the following output error:

It seems when building gpu nms cython the error occurs. So is it nms dependency problem? The output hints are oblique. Thank you!

did you solve the issue?

Same issue here, any solution?

Met the same problem. Have you solved it and how? @zhanghanduo

@samanthawyf No. Recently I was busy with something else... I will try another computer with cuda 8 and tell you.

I just delete all the comment lines in "gpu_nms.pyx" which starts with '//', recompile and sovle the problem.
@zhanghanduo
@samanthawyf
@lorenz-lukas

Wow! Thanks @zhanglanqing. I could compile it this way. I decide to keep this issue open to let more people see. Or you could make a pull request @zhanglanqing

the bug has been fixed.


Changed block positions don't get saved

When I rearrange Neo blocks within an entry and save the entry, the new positions don't get saved (in every case). Not all blocks seem to be affected. It's hard to pinpoint when it's working and when not. Looks like newer added blocks store their positions when rearranged but blocks from older edits don't.
Could you think of something what could cause this issue? I can try to find more clues, let me know how I can help pinpoint it.
I noticed this this a while back for the first time, but couldn't pinpoint what was happening exactly. Saving the whole entry as a new one solved the issue back then. Now I see the same behaviour in a new project.
Cheers

Yup, can confirm it more or less appeared randomly. In my case my matrix field within the Neo value can be dragged and dropped, but position is the same after saving the entry (while editing)

@superflausch Very interesting... I have not run into this issue before. The only thing I can think of is that the order of the input fields are not being posted to the server in the correct order, in which case would be a PHP or server-related issue. But I don't think this would be the case as you'd probably see the same issue with traditional Matrix fields – actually, are you?
Chances are there's an issue when saving the new structure for the Neo field, in that it's not using the newly created structure but keeping the old one. Are you perhaps using locales on your site?
@doubouil I think you're actually seeing an entirely different bug, for which I can actually replicate! Neo blocks monitor changes to their fields so they only save when they need to, but the modification detection is not capturing reorderings on Matrix (and SuperTable) fields.

Seeing the same issue, using a matrix field in a neo block, doesn't keep the order unless you change the block content. Any workaround?

@benjamminf I will try to document the next occurrence a little better. We just had a single locale active at that moment, but there were two active ones before and we plan to add additional locales on that project in the close future.
We also noticed the issue with the order of nested matrix fields @doubouil mentioned.

@jpoiri @superflausch The issue with Matrix orders is an unrelated issue (#69) which I've now fixed. I'm still looking into the other issue though.

Neo 2.7 introduced the sortOrder block property, which should ensure block orders are always saved correctly.


Abstracting media

This PR aims to create at least an "Album" and a "Song" time to be used in scanners and Logic to make having multiple easier. Planned changes to go with this: new Scanner that grabs metadata using VLCJ, new Logic that makes use of this scanner and type. Ultimately, it will really become useful once the player is modified to be able to play multiple albums?

As of now, the player doesn't make use of the media types. The next step (in another PR) would be to make use of it: reading the metadata is done at startup and not every time the player gets to a new song, ...


Gateway v2 -  Typo or invalid config would return an Error: connection to gateway failed

Describe the bug
When you enter an incorrect parameters or typos when running gateway config insert-parameter-here the client would return Error: Connection to Gateway localhost:xxxx failed

Should it be that the client would return that its a invalid config or parameter?
Steps To Reproduce

Setup client and gateway of any build
Run gateway config xxx where xxx can be anything of a parameter with typos or random

Release version
master and development

Created ticket https://github.com/hummingbot/gateway/issues/57


Add 'New Array' Button'

Add a 'Create new array' button. Default it to 20px x 20px or something in the middle of the screen. Should be able to make array areas and adjust them without having to use mouse to click rectangles.

Maybe 'New array' is not the right word, but rather 'Inspection Area' might be a better name

Add "Draw Default Feature" under tools dropdown


Improvements to dry script

Hey, I have absolutely no idea of the code I worked on here -
I just addressed 2 problems together with @SciChemBella while modelling one of her Inhibitor compounds.
We think they make sense and produced a usable output for her.
The problems she hit were already mentioned in some open issues:

https://github.com/ccsb-scripps/AutoDock-Vina/issues/82
https://github.com/ccsb-scripps/AutoDock-Vina/issues/157
https://github.com/ccsb-scripps/AutoDock-Vina/issues/182
https://github.com/ccsb-scripps/AutoDock-Vina/issues/192

I just thought I'd share what we did so it might help others 🦄
Fixes:

Fix Float<>integer type problem
Fix out of bound error by ignoring points if index out of range

coauthored by @SciChemBella

Hi, I'm new in GitHub. From my perspective, the problem "IndexError" is caused when one (x or y or z) is beyond the number of grid points. And I simply solved it as follows:
for x_ofs in range(-pt_scan, pt_scan+1):
    x = x_pt + x_ofs
    if x > pts[0]: # modified
        break
    if x < 0 :
        harvesting.append(0)
        break
    for y_ofs in range(-pt_scan, pt_scan+1):
        y = y_pt + y_ofs
        if y > pts[1]: # modified
            break
        if y < 0 :
            harvesting.append(0)
            break
        for z_ofs in range(-pt_scan, pt_scan+1):
            z = z_pt + z_ofs
            if z > pts[2]: # modified
                break
            if z < 0 :
                harvesting.append(0)
                break
            harvesting.append( data[z,y,x] )
            if data[z,y,x] < best:
                best = data[z,y,x]

It seems okay. Hope this helps.

Thank you @domiko96 and @Serious-Huang! Ended up removing variable harvesting as it wasn't used except for the debugging print.


feat(docs): add architectural diagrams

WHAT DOES THIS PR DO?

N/A
You can go the /doc directory to see the uploaded diagrams

I believe these are the correct diagrams we needed in higher quality than what I could get from the Design Document itself. Thank you!

Yes @chrisj117. I can also add a pdf version if that's required


No view is registered with id: vsliveshareActivityBar

Product and Version [VS/VSCode]:
Version 1.22.2
Commit 3aeede733d9a3098f7b4bdc1f66b63b0f48c1ef9
Date 2018-04-12T16:38:45.278Z
Shell 1.7.12
Renderer 58.0.3029.110
Node 7.9.0
Architecture x64
OS Version [macOS/Windows]: Windows
Live Share Extension Version: 0.3.735
Target Platform or Language [e.g. Node.js]: Any
Steps to Reproduce / Scenario:

Install extention
Reload
message pops up in notifications

log.zip

Thanks for reporting this issue.
@legomushroom can you take a look at this?

Thanks @kevinpeno ,we are tracking a bug for this.

I just installed vscode using the "user" installer from https://code.visualstudio.com and the error doesn't happen. It happens when using the standalone version supplied by scoop.sh no matter if I do a fresh install or not.

This issue is now resolved.


First tutorial for Flows component

The tutorial looks good to me.

Updated based on UX review comments.

Update second tutorial based on UX review comments.


repos not work

In the mid step when i need to install openssh, newterm2 etc  repos not work they gves error:https/apt.procurus.us/dists/iphoneos-arm64-rootless/1800/Release returned status 404. and error coud not find release file for https/apt.procurus.us/dists/iphoneos-arm64-rootless/1800/
P.S. any repos not work not only this and i dont have problems with internet conection

What step are you on exactly? It says the repo to add if you’re on the wget curl and openssh step

Yes on this step

Try adding from Zebra Package Manager, because sileo only supports packages made for Arm64 devices only, let me know if you encounter an error with this

Try adding from Zebra Package Manager, because sileo only supports packages made for Arm64 devices only, let me know if you encounter an error with this

What? This is completely unrelated and not true

Yes on this step

Please add the repo mineek.github.io/repo


HUGE ISSUE!

I now know why channels sometimes takes AGES to load - It seems that each time you load a channel it actually (For some reason) loads EVERYTHING in def streams() - As in, It re-gets all the stream links for no reason and THEN plays. I have no idea why :/

I guess it must be to do with the whole JSON streams() thing, We needa I guess manually do additem() for each one :/

I think it is the guide feature that takes most of the time, no? It goes much faster when the guide is off – that’s what I liked having the off/on feature. Each page needs to be scraped.

Yes that also makes it take a bit longer but thats not what im on about
Lemme explain - You open IETVNOW - You let it load everything - Now you choose for example 3e you press enter and its now loading - I open fiddler and see that its re-loading the AerTV api etc to get channel links and now I see it opening entertainment.ie - It opens the last thing - And only now does it start loading 3e's stream.
It seems that EACH time you request ANYTHING from streams() even if you do for example: streams[3]['link'] == "aertv.ie" it will parse EVERTYHTING in streams() like the guide and the link for ALL index's before it starts doing the if stream == aertv :/
Get it?

If you needa try this out - Get my addon Pragma from my repo on fusion - And load 3e using Pragma - As you can see it takes ages to load because its re-fetching all the links and guides for all channels yet theres no reason too, You can get this proved by looking at fiddler while loading 3e (Or any other channel)

You might have trouble loading Pragma if you are tryna test as im currently refreshing my EPG data XML and its needed to load Pragma (But its deleted for a sec)

This is unrelated but I got this made: https://imreallyshiny.github.io/ietvnow
Its a download page for IETVNOW with instructions and other cool related info 👍
You can see my other downloads herE: https://imreallyshiny.github.io/downloads

So yeah this whole Dictionary/List thing we got going on for parsing streams isnt really efficient but for IETVNOW it shouldnt really make a difference with guide off its only a couple seconds added onto load time but with guide on it takes bloody ages.
So theres not really any need to fix it but just letting you know


Hide pages from tabs

Checklist

[x] I have read the newlest tutorials and know the correct effect of the functional design.
[x] There is no similar question on existing issues (including closed ones).
[x] I have tried to find the answer on Jekyll Forum and StackOverflow.
[x] My question is based on the latest code of the master branch.

Description

I'm wishing to migrate my blog to chirpy theme.
I have many pages that are not posts and I want to keep. But I don't want it to be listed as a tab. Is there a way to hide it from tabs, but still keeping it so that it can be accessed through links?
My idea is to have my website main pages as tabs, but other pages accessible through navigation links inside main pages.

Jekyll already have a guide on this. Please check the complete guide on the documentation.
Recommendations:

Read how Pages in Jekyll works.
Once you understand it, go and follow instructions in the documentation

HI @epklein
I did a workaround for this by modifying _includes\sidebar.html and filtering out the tab_names so they won't be listed as tab list items


Update MD file on new branch 2017-18-19_09-11-52

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

split/updateTestRef.md
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


Zig-Zag Traversal of a Binary Tree

Description
Please include a summary of the change and which issue is fixed. List any dependencies that are required for this change.
Fixes #709
Replace issue_no with the issue number which is fixed in this PR
Type of change
Please delete options that are not relevant.

[x] New feature (non-breaking change which adds functionality)

Checklist:

[x] My code follows the style guidelines(Clean Code) of this project
[x] I have performed a self-review of my own code
[x] I have commented my code, particularly in hard-to-understand areas
[ ] I have created a helpful and easy to understand README.md
[ ] I have made corresponding changes to the documentation
[x] My changes generate no new warnings
[x] I have added tests/screenshots(if any) that prove my fix is effective or that my feature works

@kumarshobhit please check the path

can you please elaborate?

should I insert the file simply under the leet code directory without creating a new Tree directory?

Yes

Tree directory was already created before my commit. I had further created a directory Binary Tree which now I have removed. Please check.

@kumarshobhit there is no Tree folder in Leetcode

Oh yes. I updated the main branch of my forked reop but  I forgot to update the branch in which I was working.

File path modified.


Blender functions

Hi Doug,
I added a function "blender functions.curv" where I added all the blender functions found on mercury.
Most of them are working. some look weird. Grid display function is also included.
They follow the latest code style suggestion sent by you. Would be nice to have them available by default.

Hi doug,
I like the idea very much combining the blender arguments into one argument set as effectively each blender function has a different number of arguments and engrave e.g. is even compromised
However, when i try to implement your changes i dont get the syntax correctly anymore.
I tried several permuations of:
stairs ( 0.5,3 ) .union (sphere, cube >> move(1,1,1))
ERROR: .union: not defined
put none of them is satisfying for curv. How to get that correct ?

Try typing stairs ( 0.5,3 ) and see if the output gives you any ideas.

Show me the code that isn't working. Otherwise I have no idea what the problem is.

Doug,
it did not take me much to find out that i cannot proceed.
Introducing the paranthesis i could not get it clean anymore.
I tried with (0.5,3) , (0.5 3) , [0.5, 3]  and some others.
Can you fix this one syntax error for me, then i can proceed myself.
Guenther
blender_functions.txt

Your program contains this code:
let
make_blend config r n = {
We had discussed changing it to 'make_blend config arg = { ...', so that it
isn't necessary to always pass two separate arguments to a blending kernel.
stairs is defined as
stairs = make_blend { ... };
If you just type 'stairs' with no arguments, you get 'make_blend _', which
is a partially applied call to the function 'make_blend', with only one
argument (the config argument) specified. 'stairs' needs two more
arguments, 'r' and 'n'. If you just type 'stairs (0.5, 3)', then you have
supplied the 'r' argument, but 'n' is still missing, so you get another
partially applied function that prints as 'make_blend _ _'.
By the way, this is helping me think about how Curv could print better
error messages, so thanks for that opportunity.
On 4 September 2018 at 16:50, gsohler<EMAIL_ADDRESS>wrote:

Doug,
it did not take me much to find out that i cannot proceed.
Introducing the paranthesis i could not get it clean anymore.
I tried with (0.5,3) , (0.5 3) , [0.5, 3] and some others.
Can you fix this one syntax error for me, then i can proceed myself.
Guenther
blender_functions.txt
https://github.com/doug-moen/curv/files/2350183/blender_functions.txt
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/doug-moen/curv/pull/33#issuecomment-418513360, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AFB6ocWEjOHENxxDuovJFBQGL0dj-rjvks5uXueugaJpZM4V-CWQ
.

Hi Doug,
I was able to improve all code for having variable parameter lengths for different blender functions.
Even the tongue and engrave function has the correct number of arguments.
Everthing is checked in.
Most of the blender functions are working.
some of them are annoteted: "have a problem" . they appear to be inside-out
Tell me, what you think

Sorry doug, wrong me.
I was inspired by the mercury code haveing there sqrt(2).  My intent was that the 45deg section of the chamfer would be the dimenstion specified, so the cathetes would by smaller by a factor of sqrt(2).
i put this factor without furrhter thinking, nor closer looking this "interesting" V- like  blender function.
The Error is corrected already.

Columns doesn't work right now so I can't test it.
columns_union = make_blend {
    fmin (a, b, r, n) =

fmin should be declared with (a,b,(r,n)) as the parameter pattern.

Why are columns_union and columns_intersection declared separately? I guess it's because the 'max' function for columns cannot be derived from the 'min' function.
To fix this, we can change make_blend so that the config argument can optionally define an fmax function.
make_blend currently looks like this:
make_blend config args = {
    union (s1,s2) = ...;
    intersection (s1,s2) = ...;
    difference (s1,s2) = ...;
    bmin(a,b) = ...;
    bmax(a,b) = ...;
};

First, change all of the = definitions to : statements inside of the { ... } body of make_blend. Like this:
make_blend config args = {
    union (s1,s2) : ...;
    intersection (s1,s2) : ...;
    difference (s1,s2) : ...;
    bmin(a,b) : ...;
    bmax(a,b) : ...
};

Then, change the definition of bmax to look like this:
    if (defined(config.fmax))
        bmax(a,b) : config.fmax(a, b, args);
    else
        bmax(a,b) : -config.fmin(-a, -b, args);

And now we can define columns using
columns = make_blend {
    fmin(a, b, (r, n)) = ...;
    fmax(a, b, (r, n)) = ...;
};

Hi doug
Thank you for your explaination. I look forward to see the blender function becoming a particular part and easy-to-use functionality of curv.
However, it does not yet work.
Following your instructions to get from a "="syntax to an ":"syntax does not work.
Always get different errors. right now, it tells me: bmin is not defined and i also tried puting the bmin definition to the top. (have been trying many different options during the day and none of them succeeded)
Whats wrong with my code ?

Hi Guenther. I gave you bad advice in my last message. That code indeed does not work. I should have tested it before suggesting you try it. I am now trying to figure out an alternate strategy.

I pushed a new version of make_blend to your repository on github. Now there is a single blending kernel called 'columns'. The output looks approximately correct, similar to the images on Mercury.sexy. However, the distance field is bad.

The last 4 operators, called pipes, engrave, groove and tongue, are not blending kernels with .union, .intersection and .difference variants. So you should not be using make_blend to define them. For example, the interface to pipes should look like this:
pipes  0.2 (sphere, cube >> move(1,1,1))

Hi Doug, of course the "union" info for pipes is extra and can be skipped in a nice syntaxxed library.
For me its just not as easy to implement this.
I have starting deriving a simplified blender, which only contains the union, but i cannot remove the " union"hierarchy". its not yet syntax clean.
In order to succeed i need to understand the exact concept, how values map to function arguments in this quite "object oriented" approach to user the blender function.
I tried to read several chapters of the doc e.g. records, functions, grammar. But i am not yet clear, how the parameters map exactly.
e.g. its clear that for stairs, '3' maps to n
but in my latest checkin, blender_simplified does not know s1 and s2 and i dont know at which exact place in the function definition i need to install the receptor so the function can capture it.
Can you point me to the best rst file in your doc directory, which explains it ?

I think you want to read a tutorial on the basics of functional programming in Curv. I don't have anything like that in the documentation right now. It's something I know that we need.
Try this:
make_blend_simple config args (s1,s2) =
    make_shape {

For something simple like pipes, you could also implement it directly, like this:
pipes r (s1, s2) =
    make_shape {
        dist p = mag(s1.dist p, s2.dist p) - r;
        ...

Try this:
engrave  0.2 (sphere>>colour red, cube >> move(1,1,1))

The colours are wrong. It should be all red.
This is similar to a difference operation, where the cube is used to specify what to remove from the sphere. So the colour should only come from the sphere, as it does in a difference (or intersection) operation.
I think the same is true for all of the non-blending operations: pipes, engrave, tongue, groove.
You should define the colour to be the same as s1.colour, like this:
    colour = s1.colour;

The same code is used by make_blend to define the colour for an intersection.

Here is an example of an incorrect bounding box.
engrave  0.2 (circle>>colour red, square >> move(1,1)) >> show_bbox

This bounding box is too large, since it encloses both the circle and the square (s1 and s2).
Since engrave just removes material from s1, it would be appropriate to define the bounding box to be equal to s1.bbox. This might be too large, but it is a good approximation.

tongue doesn't work. Here is the definition:
tongue = make_blend_simple {
    fmin (a, b, ra, rb) =
    min(a,max(a-ra,abs(b)-rb));
};

It should be defined as
tongue = make_blend_simple {
    fmin (a, b, (ra, rb)) =
    min(a,max(a-ra,abs(b)-rb));
};

With the corrected version of tongue, here is an example of a bad bounding box:
tongue (0.2,0.1) (circle, square) >> show_bbox

The bounding box is too small to contain the shape, so when you run this program, you have to zoom out to see the entire shape. The parts of the shape that stick out of the bounding box are coloured in red.

I suggest you get rid of make_blend_simple, and just define the non-blend operators directly. The reason is: I think that the bbox definition needs to be different for each of the 4 operators. Once you define the bbox separately for each operator, there is little code duplication between the 4 operators, and make_blend_simple isn't providing much benefit.
For example, consider this definition of pipes:
let
pipes r (s1, s2) =
    make_shape {
        dist p = mag(s1.dist p, s2.dist p) - r;
        colour = s1.colour;
        bbox = [ max(s1.bbox[MIN], s2.bbox[MIN]) - r,
                 min(s1.bbox[MAX], s2.bbox[MAX]) + r ];
        is_2d = s1.is_2d && s2.is_2d;
        is_3d = s1.is_2d && s2.is_2d;
    };
in
pipes 0.2 (circle, square >> move(1,1)) >> show_bbox

I think this code is pretty clear.
An alternative is to add a bbox function to the config record of make_blend_simple, for computing the bbox from arg.

Hi Doug,
Your proposal works like a charm!
I have coded all 4 extra functions now and checked them in.
Günther

Hi Doug,
in fact all the ordinary blending operators did have a wrong bbox.
I have rewritten the bbox expression. in fact now it only uses one line of code instead of two.
Now the bbox appears correct. was the problem really with the line break or is there another issue i did not find ?

Doug,
I was wrong with my assumption ,that after removing the line break the code becomes correct.
When I removed the line break and it was correct, but it was correct before.
All your 4 Testcase are extreme cases blending a object with a object of the exact same shape.
Normally the blender functions render some special "shape" at the transition between the object.
In your case of the chamfer or the round its raised by 0.5.
In your special case the objects are equal and the transition happens everywhere, thus the object is raised everywhere.
Both objects beeing equal is definetly not a case where a user would use a blending function for and just enlarging the bbox by 0.5 so the result is correct in 0.00001% and overcorrect 99.9999% is not something what we should implement. I suggest  this is not a bug ;)
P.S in normal cases the objects are apart by more than 0.5 and the input objects bboxes are dominant in the max functions in contrast to the raising in the transition. so the bbox ' as is'  is correct

In cases like this (blending functions), the bounding box is an approximation. If the bounding box is too large, nothing bad happens. If the bounding box is too small, then:

in 2D, the default view will not show the entire shape (the edges are cut off, until you zoom out)
in 3D, if you export the object as STL for 3D printing, then the edges are cut off

So it is best if the bounding box is large enough to handle every case.
These blending functions have the property that you can get "bulges", and it's not difficult to encounter this situation. The bulges stick out of the currently defined bounding box. The trick of unioning a shape with itself is just a guaranteed way to force a "bulge" to occur, for testing purposes.
For example, check out this model on shadertoy: https://www.shadertoy.com/view/MsXGWr
Notice the bulges at the elbow and knee? Those bulges are created by smooth union operator.  So the bulge can occur in practice, and it needs to be accounted for.

you are right.
you can also easy create those bulgs in curv
let
caps=capsule{d:0.5, from:[0,0,0],to:[1,0,0] }
in
chamfer .5 .union(caps,caps >> rotate(3.14))  >> show_bbox
i checked in my modified bbox with accounts for this extreme.
However, i have coded a fixed value of 0.5 because i cannot extract the amount of bulg from the parameters(and there are several forms)
Günther

A fixed value of 0.5 is a start, but we will need a more general solution.
First, recall that dist(x,y,z,t) computes the distance of the point (x,y,z) from the boundary of the shape at time t. This distance value is 0 on the boundary of the shape, negative inside the shape, and positive outside the shape.
Let's consider smooth union. The fmin function for smooth union is
    fmin (a, b, r) =
        let
        h = clamp( 0.5+0.5*(b-a)/r, 0, 1 );
        in lerp( b, a, h ) - r*h*(1.0-h);

Consider the case where we smooth union two identical circles.
smooth r .union (circle, circle)

At the boundary of the input circle, the distance field has the value 0. So a and b in fmin will be zero. Substituting a=0 and b=0 into fmin, we get:
        let
        h = clamp( 0.5+0.5*(0-0)/r, 0, 1 );
        in lerp( 0, 0, h ) - r*h*(1.0-h)

h = clamp( 0.5+0.5*(0-0)/r, 0, 1 );
h = clamp( 0.5+0.5*0/r, 0, 1 );
h = clamp( 0.5+0/r, 0, 1 );
h = clamp( 0.5, 0, 1 );
h = 0.5;
in lerp( 0, 0, h ) - r*h*(1.0-h)
in lerp( 0, 0, 0.5 ) - r*0.5*(1.0-0.5)
in 0 - r*0.5*(1.0-0.5)
in 0 - r*0.5*0.5
in 0 - r*0.25
-r/4

So this means, at points on the boundary of the original input circle, the distance field for the smooth union will have the value -r/4. If the distance field is accurate, this means that these points are a distance of r/4 units inside the boundary of the smooth union. So the "bulge" has a thickness of r/4, assuming the distance field is accurate.
To test this theory, I modified the bbox of smooth union in lib/std.lib by adding/subtracting a "bulge factor" of r/4. Tested it, and it works. I have pushed this change to your branch. Here is the test code:
smooth .5 .union (circle,circle) >> show_bbox

To perform some of these computations, you can use curv in interactive mode. Type the curv command with no arguments, and you get an interactive shell:
$ curv
curv> clamp( 0.5, 0, 1 )
0.5
curv> lerp( 0, 0, 0.5 )
0

Next things to figure out: Can smooth .intersection and smooth .difference create a bulge? What is a good test case for this? How do you fix the bbox?

The smooth intersection and smooth difference operations are like regular intersection and difference, except that they subtract some additional material from the result. In contrast to smooth union, which adds additional material to the result of a regular union.
For this reason, and based on some limited testing, I don't think that smooth intersection and smooth difference can create a bulge. So I think that no bbox adjustment is needed.

Next thing to figure out: what is the bulge expression for chamfer .union?

Note. I think each blending operator has its own bulge function. For smooth, the bulge function is:
bulge r = r/4

If the analysis I used for smooth union works for the other blending operators, then the bulge can be generically computed as bulge = -bmin(0,0).

And that works fine for the following test cases:
//smooth 0.5 .union(circle, circle) >> show_bbox
//chamfer 0.5 .union(circle, circle) >> show_bbox
//stairs (0.5,3) .union(circle, circle) >> show_bbox
columns (0.5,3) .union(circle, circle) >> show_bbox

So I just pushed that change. Please look at the code and run some more tests, see if everything looks okay.

its a great idea with the -bmin(0,0)
Thank you for implementing.
will do some tests ;)

i have done quite some tests, rerun all my testcase, and made some experiments with the capsule and the bbox
even the tests which were marked "Problem" work with lipschitz now.
thank you for realizing the blending functions with me. without you i would have never mastered the syntax neither implemented object oriented approach

Thanks for all your hard work. I did some final cleanup and accepted the PR.

Np. It was fun for me, too.
During taking a bath, I got an extra idea for a blender. I think its the easiest, when i just post it here:
gap g (s1, s2) =
make_shape {
dist p = let
a=s1.dist p;
b=s2.dist p;
d=if(a > g || b > g) min(a,b)
else -abs(a-b)+g
;
in
d;
colour = s1.colour;
bbox = s1.bbox;
is_2d = s1.is_2d && s2.is_2d;
is_3d = s1.is_3d && s2.is_3d;
};
gap 0.1 (sphere, sphere >> move(1,0,0) )
it has the same bbox like the union and works best for identical objects. Would you include my name into the blend.curv ?

I added credits to blend.curv
Your gap function is cool. I'm playing with it to see if I would be able to
use it in a model.
On Thu, 27 Sep 2018 at 15:44, gsohler<EMAIL_ADDRESS>wrote:

Np. It was fun for me, too.
During taking a bath, I got an extra idea for a blender. I think its the
easiest, when i just post it here:
gap g (s1, s2) =
make_shape {
dist p = let
a=s1.dist p;
b=s2.dist p;
d=if(a > g || b > g) min(a,b)
else -abs(a-b)+g
;
in
d;
colour = s1.colour;
bbox = s1.bbox;
is_2d = s1.is_2d && s2.is_2d;
is_3d = s1.is_3d && s2.is_3d;
};
gap 0.1 (sphere, sphere >> move(1,0,0) )
it has the same bbox like the union and works best for identical objects.
Would you include my name into the blend.curv ?
—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub
https://github.com/doug-moen/curv/pull/33#issuecomment-425218991, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AFB6ofZ0lYNAvBb7QK2YO0kRQKei8Xg2ks5ufSqQgaJpZM4V-CWQ
.

I modified the colour function in gap. Check out my model.
let
gap g (s1, s2) =
    make_shape {
        dist p =
            let a=s1.dist p;
                b=s2.dist p;
                d=if(a > g || b > g) min(a,b) else -abs(a-b)+g;
            in d;
        colour p =
            let d1 = s1.dist p;
                d2 = s2.dist p;
            in if (d1 <= d2) s1.colour p else s2.colour p;
        bbox = s1.bbox;
        is_2d = s1.is_2d && s2.is_2d;
        is_3d = s1.is_3d && s2.is_3d;
    };

in
gap 1.5
    ( sphere 33 >> colour (sRGB.HSV(0,.8,.8)),
      gyroid >> shell .2 `intersection` cube 30 )
  >> lipschitz 2

Hi Doug,
Thank you for the credits.
Glad you like the new blender. I never considered using it in a concentric way, though ...
Great sponge :)


Void pointer argument between Dart and C

Im not sure if this is the right place to ask, but I saw a few other type-questions and thought I would give it a shot. I'm currently working on making the C implementation of BLAKE3 compatible with Dart. BLAKE3 has the following function:
void blake3_hasher_update(blake3_hasher *self, const void *input,
                          size_t input_len) {
    ...
}

Which is converted by FFIGEN into Dart:
void blake3_hasher_update(
    ffi.Pointer<blake3_hasher> self,
    ffi.Pointer<ffi.Void> input,
    int input_len,
  ) {
    ...
}

But I'm unsure how to call this or even provide input data to this function?

StackOverflow is a better place to ask questions.
Make sure to read https://dart.dev/guides/libraries/c-interop before you jump into using ffigen. This should give you some idea of how to dart:ffi works.

But I'm unsure how to call this or even provide input data to this function?

Do you understand how you would call it in C? Do you have experience with C? In Dart you would call it in a similar way as you would do it in C, i.e. you need to allocate blake3_hasher object somewhere (e.g. via malloc), initialise it via blake3_hasher_init, then you need to allocate input buffer somewhere (e.g. via malloc), copy data into that buffer and then call blake3_hasher_update with hasher and buffer.

Thanks @mraleph !


allow alreadyHaveEvent fn to return boolean | Promise

I have the feeling that this kills all the performance gains from alreadyHaveEvent.

But it was just a feeling, I don't really know!

I see, then we must support it. Can you profile a similar case on https://jsbench.me/? Just to see if it's worth using a different way for async people or if just making the current way async will be good enough.


MFM to HTML support

Do you have a plan to support MFM to HTML direct parsing?
Currently, if I want to implement the MFM parser in my projects, I need to write my own encoder to convert the returned MFM tree to HTML.
I'm sorry to bother you but Discord link is dead and the forum no longer exists so...

Hi with the package @opera7133/mfmp you can
import { toHtml } from '@opera7133/mfmp'
import * as mfm from 'mfm-js'
toHtml(mfm.parse(MFM_STRING_HERE))

@gabboman Thank you! I'll check it out.

its a bit wonky. In wafrn I ended up disabling it. a lot of custom clasees, and broken links

Oh is it? When I checked (the code) earlier, it didn't look like it has custom classes though. But I do see some custom dataset attributes.
ig I have to find another one then :)


Add createQueries to System

Makes it slightly easier to create queries dynamically when needed, e.g. in System.init() instead of from static queries.
Relates to #20

This would still simplify some of my code. "Nice to have", however, not "need to have."


clean up record logic

This PR changes the record logic.
Previously, when a duplicate request is received (either because the client retries the request or the replica receives a missed index), the duplicate entry is added to ProcessQueue. The duplicate entry is then handled depending on the status of the entry.
In this PR, if a duplicate request is received, recordTd checks the status of the entry. If PROCESSED, the entry is routed to fastReplyQu so the reply can be resent. If not processed, the other request is still being processed, and recordTd does nothing with the new request.
This significantly simplifies the logic of processTd because now processTd only handles entries with status INITIAL.

@Steamgjk  this is the first logic change I have made. I believe this change does not affect correctness, but I may be missing some nuances of the codebase. Can you please double check my logic? Thanks.


Expressions UI

Expressions are a major part of a Vega specification -- e.g., filter and formula transforms, text marks, etc. Lyra 1 used a contentEditable div to allow users to both type text and drop fields to build an expression. There were several disadvantages with this approach:

Building the Vega expression required parsing HTML, which is dubious at best (#144).
A contentEditable div where some of the child elements (dropped fields) are not editable caused a host of issues including cursor placement (#143), poor cross browser support (#223), difficult to have placeholder information (#25), and difficulty testing (#75).

Moreover, users frequently reported being frustrated that fields required a drop operation. This would break their flow with typing out an expression. We should be able to support field selection (e.g., via an autocomplete).

Done with #398. Excellent work @YiyangXu!


Code Cleanup and Enhancement: Applied Constants, Update Class Names and optimised the Multi-GPU Support.

When comparing the new script to the old one several improvements and changes have been made to improve functionality and readability of the script.
First, using names of stores for LinearStrings such as `const errImageDecode = ‘Image decode error’ improves the read and maintain ability of code all over the script. This change means that any time there is need to alter these values, it has to be done only once hence minimizing chances of making errors while making the changes.
The class names have been changed to follow the naming standards and the class names are ‘MiniCPMV2. 5’ but it has been changed to ‘MiniCPMV2_5’ and the another class name is ‘MiniCPMV2. 6’ but it has been changed to ‘MiniCPMV2_6”. This change follows Python’s convention of meaningful and clear naming of variables, thus improving readability of the code and making it easier to get an idea of what does a certain class in the code does out of the box.
Local variables which are not used like ‘context’ in the MiniCPMV2_5 class have been named with underscores to show that they are deliberately unused. Such an adjustment eliminates confusion and makes it clearer as to what the code is seeking to achieve.
Also included are constant contexts to replace duplicated string literals like llm. model. embed_tokens of this project. This makes the code much cleaner and also gives the proper way to update them if ever needed efficiently.
The layout also has improved error checking capabilities and better from the ground up logic for multi-GPU, it is better and more reliable. There are also new features like Dynamic Device Mapping for activating and managing all idle devices and GPU load for making computations on large models much faster.
In other words these changes can be described as those which make code more concise, maintainable and compliant with common conventions and thus make the script cleaner.

This pull request includes several key updates to the script aimed at improving maintainability, readability, and performance:

Defined Constants for Repeated Strings: To avoid duplication and enhance code clarity, repeated string literals such as "Image decode error" and "llm.model.embed_tokens" have been replaced with constants.

Updated Class Names: Class names such as MiniCPMV2_5 and MiniCPMV2_6 have been renamed to adhere to standard naming conventions, improving readability and consistency across the codebase.

Optimized Multi-GPU Model Handling: Refactored the multi-GPU setup to ensure better resource management and performance. Device maps are now handled more efficiently to allocate resources properly.

Refined Error Handling: Improved error handling related to image decoding to provide clearer error messages and ensure robustness.

These updates collectively enhance the script’s maintainability and performance, ensuring a more robust and readable codebase.


Add notify method to AsyncGroup

support
let group = AsyncGroup()
group.background {
print("This is run on the background queue")
}
group.background {
print("This is also run on the background queue in parallel")
}
group.notify {
print("Both asynchronous blocks are complete")
}

:+1:

@duemunk @eneko  updated~

@duemunk  @eneko  Any feedback?

@100mango I'm sorry for just leaving this working hanging. I'm don't use groups myself, so I kind of like the current solution since it looks like the GCD syntax.
Though a lot is going to change a lot with Swift 3.0 (se here), and Async probably isn't going to be as useful after that.

Hello @duemunk,
It's been a while since this PR was open and seems to be outdated now. Unless you are planning to do any work on it, I would suggest closing it.
What do you think?
Regards,
Eneko


Returning back LabeledPoint into public

in referece to the discussion in : https://github.com/dmlc/xgboost/pull/2532#discussion_r137172759

Hi @CodingCat , @superbobry,
can you please review and merge.

LGTM


feat(wash-cli): start secrets backend with wash dev

Feature or Problem

Related Issues

Release Information

Consumer Impact

Testing

Unit Test(s)

Acceptance or Integration

Manual Verification

Hey @vados-cosmonic ! Just wanted to touch base because in https://github.com/wasmCloud/wasmCloud/pull/3524 I added just a bit of code to make sure that the NATS KV policy was added to the manifest if any secrets were specified for components/providers (not for links yet, but I added a note for that)
Feel free to take my commit or let me know if my implementation is bad and I can reconcile with yours 😄

Hey @vados-cosmonic looks like this one got out of date, are we still planning on doing this for wash dev?


style overrides ignored because of wrong classname order

This is best explained with an example, I would expect a style override to result in its classname to be referenced after the classname of the style it is overriding. Instead, it's placed before that classname, requiring an !important
CommonStyles.js
import { Grid, Col } from 'react-styled-flexboxgrid';

export const GutterCol = styled(Col)`
	background-color:white;
	padding:0;
	align-items:stretch;
`

Screen.js
import { GutterCol } from './CommonStyles';

const GutterColTrans = styled(GutterCol)`
	background-color: : transparent;
`;

<GutterColTrans/>

resulting style:
.bxsLdR {
	background-color: : transparent;
}

.gNjXHN {
	background-color: white;
	padding: 0;
	-webkit-box-align: stretch;
	-ms-flex-align: stretch;
	align-items: stretch;
}

Darn. it was a typo.


GitHub: Language setup and test of flow

Info fra Christian:
Workflow testing på en egen fork: et lite subsett av filene kopieres til en ny branch for oversetting
https://github.com/xt1/superoffice-docs/tree/translate_ggg/user-guide
En zip fil genereres som inneholder bare de endrede EN filene.

Info fra Tony:

Should the output in the ZIP artifact contain the same folder structure as the source? Currently it does not.
It probably shouldn't matter...
Christian Mogensen 12.10.2022 13:58 • Should - but the create-archive cmdlet probably needs some additional params to preserve the paths
Christian's workflow for requesting/created translation files has been added. First test run successful, output here:
https://github.com/SuperOfficeDocs/superoffice-docs/actions/runs/3249553914

The process begins by clicking Actions, then selecting the workflow

The view will change and you have the option to click Run Wokflow
Specify a name, optionally a sensible since when, Then, click Run workflow.

When successfully completed, the Zip is available under the Artifacts section
Christian:
New branch is created with copies of the english files placed into the target language folders:
https://github.com/SuperOfficeDocs/superoffice-docs/tree/translate_Translation-a-14.10.2022/user-guide/
This is the branch that Semantix would pull and update with translated files, then create a PR for.

Info fra Christian:
Workflow testing på en egen fork: et lite subsett av filene kopieres til en ny branch for oversetting
https://github.com/xt1/superoffice-docs/tree/translate_ggg/user-guide
En zip fil genereres som inneholder bare de endrede EN filene.

Info fra Tony:

Should the output in the ZIP artifact contain the same folder structure as the source? Currently it does not.
It probably shouldn't matter...
Christian Mogensen 12.10.2022 13:58 • Should - but the create-archive cmdlet probably needs some additional params to preserve the paths
Christian's workflow for requesting/created translation files has been added. First test run successful, output here:
https://github.com/SuperOfficeDocs/superoffice-docs/actions/runs/3249553914

The process begins by clicking Actions, then selecting the workflow

The view will change and you have the option to click Run Wokflow
Specify a name, optionally a sensible since when, Then, click Run workflow.

When successfully completed, the Zip is available under the Artifacts section
Christian:
New branch is created with copies of the english files placed into the target language folders:
https://github.com/SuperOfficeDocs/superoffice-docs/tree/translate_Translation-a-14.10.2022/user-guide/
This is the branch that Semantix would pull and update with translated files, then create a PR for.


Allow space before C++11 attributes

Modify rule checking for spaces before [s to ignore C++11 attributes, which usually should have spaces. This fixes an incorrect warning on code like:
#define ABIEXPORT [[gnu::visibility("default")]]

Fixes #165.

I signed it!
My understanding is that we (i.e. Kitware, my employer) have a CLA in place. This user and e-mail is used for contributions under Kitware and should be associated with Kitware's CLA.

Ping? Is this project alive?

Consider submitting the patch to the fork at https://github.com/cpplint/cpplint