Calculate intermediate state of two path shapes?

Hi Hernan,
Very happy to have an interactive version of JnS!! Lots of possibilities. :)
Now that the JnS works on some parameters interactively, I would love for the paths to work as well.
I figured i can do a path transformation on each axis with time remapping: http://www.daandirk.com/drag-jns/
So I guess, it is possible to calculate the intermediate state of these two shapes with something like polymorph.js: https://github.com/popkinj/polymorph
I would love to work on this.
But, it is possible to do this?
How would I go about putting javascript in an AE layer to get to try and do that?
Or do you see another method that could do something like this with less use of resources?
If you want it; this shape rig: https://www.dropbox.com/s/8j3togzsmkwhnb4/shape rig.aep?dl=0
Also I keep putting this part into the json by hand:
"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":0,"s":[-135,-10,0],"e":[0,1,0],"to":[0,0,0],"ti":[0,0,0]},{"t":9255}]},
Is there a way to trigger bodymovin to do that for me?
Thanks!

Hi,
Didn't need to put the paths in the right form as AE already does that. So no need for polymorph.
So with this you can get the intermediate state between two paths.
`function pathMix(){
// set the paths of the layers to mix
A = 'v';
B = 'h';
Mix = 'mix';
var aPath = document.getElementById(A);
var bPath = document.getElementById(B);
var mixPath = document.getElementById(Mix);
var theAPath = aPath.children[0].children[0];
var theBPath = bPath.children[0].children[0];
var theMixPath = mixPath.children[0];
// get the values
var valuesA = theAPath.getAttribute("d");
var valuesB = theBPath.getAttribute("d");
// place to put the values and empty the value
var valuesMix =[];
valuesMix = [];
// make the SVG string ready to calculate on, separating spaces, letters, commas and numbers
var shapeArrayA =[];
shapeArrayA = valuesA.match(/[ ]+|[,]+|[a-zA-Z]+|(-?\d*(\.?\d)+)+|-?\d/g);
var shapeArrayB =[];
shapeArrayB = valuesB.match(/[ ]+|[,]+|[a-zA-Z]+|(-?\d*(\.?\d+))+|-?\d/g);

// go through the values
for (var i = 0; i < shapeArrayA.length; i++) {
var val = shapeArrayA[i];
if(val === ' ') {
	val = ' ';
} else if(isNumber(val)) {
	val = (Number(shapeArrayA[i]) + Number(shapeArrayB[i]))/2;
} else {
	val = shapeArrayA[i];
}
// put them back together
valuesMix += val;
}

// set the values to the mix path
theMixPath.setAttribute("d", ''+valuesMix+'');

}`
I guess it would be nicer to get the values that need to be mixed from the json directly and to put them back in there again.
Even better if it would get the JnS keyframe values from the json as well.
And then the values would need to be given the proper weight .
Might be easier to put the javascript formula in the layers directly and export them with bodymovin into the json.
Hope to figure that out soon.

So where in the rendering do you want to hook to modify shapes?
Are you thinking of setting an initial and final value and let bodymovin interpolate or do you want to set arbitrary middle values?

The time remapping is a distraction.
I only want to set the current shape.
With JnS the 5 keyframes to interpolate between are transcribed in the expression of the path that should get the new interpolated shape.
That is an interpolation between 3 shapes;

center,
horizontal (either left or right),
vertical (either up or down).

So I get those from for example: anim.animdata.layers[i].shapes[j].ks.x ?
That being a layer with the script active.
Do a calculation with the 5 keyframes and the set joystick position,
and then put the interpolated values back in:
anim.animdata.layers[i].shapes[j].ks.k.i
anim.animdata.layers[i].shapes[j].ks.k.o
anim.animdata.layers[i].shapes[j].ks.k.v ?
Do only values with expressions have the x value set?

Yes, exactly, only values with expressions have the x.
if you want it interpolated, try creating 2 keyframes for the shape, one on the first frame and one on the last.
For it to update, change both values in the animationData, and it should work fine.

Yes. It works: http://www.daandirk.com/
So silly it's impossible to do adjust the paths vertices in AE.
Would still like to put the calculation into the json. Would that be possible?
Also I keep putting this part into the json by hand:
"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":0,"s":[0,0,0],"e":[0,1,0],"to":[0,0,0],"ti":[0,0,0]},{"t":9255}]},
Is there a way to trigger bodymovin to do that for me?

@DaanDirk I love this! You don't happen to have a tutorial that I could follow, do you?? :) I understand the theory behind this all, but I have yet to succeed in getting this to work for my own projects. Would you be able to outline the basic steps and/or let me know what your export settings are set to? Do I need both "export hidden layers" and "export guide layers" turned on?

Hey @Jeremy-Knudsen,
I haven't done a tutorial, but I can walk you through it and then maybe write one afterwards.
So, you got your headrig or whatever in after effects with Joystick n Sliders using shape layers?
And you need to adjust path shapes to get it looking just right?
Or what is your starting point?
http://www.daandirk.com/headrig-jns/
http://daandirk.com/wp-content/uploads/bm-headrig-jns.js

In short how to do this.

Do I need both "export hidden layers" and "export guide layers" turned on?
I didn't need that because to make it work I did this:

Put the solid/null which controls JnS as first layer and give it a name like: #name
Put the box from JnS as a second layer and name it
If need be put the transparency at 0.1, but not 0. These layers need to exist on the web page for the script to work.
3-n. foreground layers
n-m. layers with the paths that get transformed by JnS
For each layer n-m with a path, build it with a path and below that the fill and stroke (not in a group).
So the layers n-m are just shape layers with in the content a path at the top.
For each of those paths put a keyframe at the start and end of the composition.
m+. background layers

If you need a more complicated set up or mask something, you can link/pickwhip to a path.
Ideally you can adapt the script to do this all automatically and just find the paths that need to be adjusted. :-) I haven't taken the time to do that jet.
In the script change the value for w in the for loop to the n and m layer numbers.

for (var w = 3; w < 15; w++) {
This for loop extracts the path information from the json and puts it in an array.

Finally you have to replace a bit in the json. I believe this is to make the position of the first layer work like a slider.
Instead of something like:

"p":{"a":0,"k":[250,250,0]},

Put:

"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":0,"s":[0,0,0],"e":[0,1,0],"to":[0,0,0],"ti":[0,0,0]},{"t":9255}]},

The [0,0,0] part determines the starting point of the joystick
I believe that that is about it.
Let me know if you run into trouble.
Would love to see the result.


drivers: modem: ublox-sara-r4:  fixes for rssi, udp, sendmsg

This is a collection of small fixes to the ublox-sara-r4 modem driver.
Two of these fixes are contained in earlier (still unmerged) pull requests.

PR24141: fix calculation of RSSI for modem Sara U201
PR24130: fix closing of UDP socket
Set ENOTSUP when sendmsg is called

Details are contained in the individual commit messages.
Signed-off-by: Hans Wilmers<EMAIL_ADDRESS>

I have now closed the previous PR #24130 and #24141, as they are fully contained in this PR.
Sorry for any confusion I may have caused by this!


Support experimental test summary on non-Darwin

In this case we inject the code directly into the entry point executable. We also need to significantly change the observation code because of the vast API differences between XCTest and swift-corelibs-xctest. Notably, we cannot support features like expected failures, attachments etc since they are not available on non-Darwin platforms.
rdar://115067756

@swift-ci please test


perf: read value range size instead of the value range

To read an entire value range to get its size,
the value range needs to be first converted to a collection.
This is costly and we therefore implement a shortcut,
allowing us to read the size without creating a collection.

@rsynek Please re-review, I decided to add one more change. (Deprecating uncountable, because that really barely ever works and never should have been added.)


CVAT UI: batch of fixes

Motivation and context

Fixes #1945, fixes #1836
How has this been tested?

Manually
Checklist

[x] I submit my changes into the develop branch
[x] I have added description of my changes into CHANGELOG file
- [ ] I have updated the documentation accordingly
- [ ] I have added tests to cover my changes
[x] I have linked related issues (read github docs)
[x] I have increased versions of npm packages if it is necessary (cvat-canvas,
cvat-core, cvat-data and cvat-ui)

License

[x] I submit my code changes under the same MIT License that covers the project.
Feel free to contact the maintainers if that's a concern.
[x] I have updated the license header for each file (see an example below)

# Copyright (C) 2020 Intel Corporation
#
# SPDX-License-Identifier: MIT

Collapsed logic works not always.
For example when you do not have any objects, press the button "expand all" and then create an object, the object is collapsed

Collapsed logic works not always.

@bsekachev, fixed.

Version conflicts appeared

Pull Request Test Coverage Report for Build 7246

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.004%) to 69.662%

Totals

Change from base Build 7243:
0.004%

Covered Lines:
11764

Relevant Lines:
16430

💛  - Coveralls


Fixing docx download

Fixes error with docx auto-downloading

@gadhagod Make new version 1.1.3 with bugfixes.


Prebuild for android

Many variables are not initialized. When converting classes to another language, many problems arise.
(In TdApi.otherlang all "red" due to uninitialized variables in TdApi.java)
Examples:
public String fileName;
public String mimeType;
public @Nullable PhotoSize thumbnail;
public File animation;
...
lots of
What I expected(example):
public String fileName = ""
At what stage is the interface development for android? (not pre-built)

Initializing all fields by an empty object is unneeded. In Java every field is by default initialized to null/0/false, which is more than enough. For example, you can see in answers for https://stackoverflow.com/questions/1277965/should-i-set-the-initial-java-string-values-from-null-to
that null-initialization is much popular than initialization by an empty String.

Leo...As soon as I get home. I will explain in more detail what is the essence of.

While I'm away from the computer, think about the following. Do you want to broadcast or rewrite?

Language A (can be Java). Language B (the language into which you can translate the java code).
Consider the file TdApi.java(Suppose it is written in the language A).
The B language does not allow variables without initialization.
Hence, the disconnect between languages.
Therefore, the programmer will have to edit almost every line of the TdApi.otherlang file.
P.S.
I think you understand what I mean.

Translator should determine the desired default value by variable type, not by a Java field initializer value.

Type he translates normally.
The fact is that null/0/false. He does not understand what you mean.
Some kind of dead-end conversation. Try to translate (B already exists).
Google is huge.

Your converter should be smart enough to convert
public String fileName;
to
string fileName = "";
in the desired language by looking at the type of variable.
Adding ' = "";' only makes things harder, because you will need to throw away that initializer and provide a way to initialize a String used in the language B.

Why did you focus on "".
I suggest that you think about a more competent initialization (for the converter to understand this scribbling)

There are several places where the construction is more complicated.
Also by type, but more difficult.
About them later, Leo.

Competent initialization should be figured out by field type and not by its initializer, because initializer can be the same for some types in Java, but must be different for them in the target language.

Yes, even though 100 times you described the initialization is competent, but it does not plow when translating into the language B.

The processor boiled with such competence.

examle


Harvest the 'catalog' level and set parents of 'collection' to the 'catalog'

Hey Bo, can you provide some details about this issue? For example, the CCMEO root API  is the 'catalog' level, do you mean harvesting the root api and set it as the 'parent' level of the  'collection' level?
Currently, the root api is shown at the 'Data Sources' section of the geo.ca matadata page.

Yes, the 'parentIdentifier' for the collection should be the catalog.

From a user perspective, the navigation of the STAC is simplified. If we promote the STAC 'catalog' then users can easier discover stac collections and then stac items.

Added harvesting and mapping to the CCMEO Data Cube root API (i.e., catalog level), details in dev commit 666e9d0 .
Here is the 'catalog' metadata page on geo.ca, the 'collections' are the child of this catalog. @bo-lu Can you review the codes and the page? Thanks!

It looks good to me!


Harden and test bigip serivce.

Fix MustBeReachable connection issue.
Refactor BigIpManager DO* configsyncIp logic.
Add unit test for BigIpManager.

OPENSTACK-1656


branch-2.1: fix Fix scan with limit #46035

cherry pick from #46035

run buildall

Thank you for your contribution to Apache Doris.
Don't know what should be done next? See How to process your PR.
Please clearly describe your PR:

What problem was fixed (it's best to include specific error reporting information). How it was fixed.
Which behaviors were modified. What was the previous behavior, what is it now, why was it modified, and what possible impacts might there be.
What features were added. Why was this function added?
Which code was refactored and why was this part of the code refactored?
Which functions were optimized and what is the difference before and after the optimization?


[backport] Test ifloordiv with numpy 1.18

Backport of #2852

[automatic post] Jenkins, test this please.

Jenkins CI test (for commit bab951ff4a6471f3c55e830851656b59b2412672, target branch v6) succeeded!


Add new Downloads Tab

See mockups:
https://docs.google.com/presentation/d/1F4bb2P2vHQ-AOhAwQ4vm52_KQQHY1F5Zg_E9rrElEwk/edit#slide=id.gf9c8ddc3a5_0_60

Plan of Attack (after conversation with Dave)

For the start, we will assume that the user has the necessary data access permissions and login requirements. We'll come back to that at the end.
We don't current know what should belong to the "README" or "Ontology Metadata" download buttons.
We can't do anything with "Entire dataset" at the moment - waiting for backend development.
Derived variables has not yet been developed...
Not sure who we would get the data for Study Documents. Need to follow-up on this.

SO for the moment, just working on allowing the user to bring up the "download modal" for each entity listed in the downloads tab area. Will address other items as we receive more info and/or backend pieces are completed.
FYI @danicahelb @dmfalke
Thanks!

@danicahelb could you provide some details on where to find the README and Ontology Metadata files? If these are offered on the production website and you point me to which pages they are offered on, I can probably figure out the rest. Thanks!

Currently awaiting feedback from working group. Meeting to be held later this week.

@dmfalke if you click on the "download" link on any of the study cards, you will be able to access the README and Ontology metadata files. I can check in with Jay if you need more info

In the 1/24/2022 EDA UX meeting we decided that the downloads tab would be rolled out in stages. For b56, we will release a stripped down version of the downloads tab:

We will not include the “ClinEpiDB Documents” or “Study Documents” sections. Study documents will still be available via the View Study Details tab. ClinEpi documents (README and Ontology metadata files) and any study documents requiring access restrictions will be placed under “Full dataset” for the latest release version. ClinEpi Outreach is already placing these files (README, Ontology Metadata, and any study documents that require data access restrictions) in the downloadSite directory. Ryan’s service will pull all files that are in the downloadSite directory for a specific study and release, and Mike will display these files in the Full Dataset table.

We will only include a table for the latest version of the Full Dataset. Previous versions of the dataset will remain accessible in the Data Versions table on the study details page

The Full Dataset tables will display the filenames rather than the count + entity name, and will be ordered alphabetically rather than based on the entity diagram. Jay will rename the files to include a shortened version of the study name, the release date, and entity type (https://redmine.apidb.org/issues/47001)

All files on the downloads tab will be protected via regular study access (full result level access), even those available separately on the view study details tab

@dmfalke indicated that this ticket should also change the column headers on the table that's created from title case to use the original case that comes from the owl file (for instance, "Observation type" and "Sub-county in Uganda" for the PRISM study)

Text in the full dataset tables has the wrong font and the text is too small

For previous versions of the dataset, please change "Changelog" to "Change Log"

Please change subtitle under "My Subset" to
Configure and download one or more tabular files of the filtered dataset.

How are files under "Full dataset" being ordered? Alphabetically would be best...

If it is easy, can you italicize the analysis name in the subsetting modals so it matches the way it looks on the main analysis page? I feel like the analysis name is not standing out on the subsetting modal and italics would help. (perhaps the italics is being used to indicate that the text is editable on the main analysis page? but the pencil icon indicates this & lack of pencil indicates i can't edit the analysis name on the subsetting modal.)

I'll do the italicisation thing...

@bobular sounds like this can be closed again?

If #904 is approved and merged and QA'ed, yes. @dmfalke

thanks!


axis labels not responsive

hi,
I am having an issue with the axis labels going off the screen. I am wondering if there is any way to mitigate this. The same thing happens with tooltips are are very wide as well.

Thank you very much

This is happening because of https://github.com/chartjs/Chart.js/blob/master/src/core/core.layoutService.js#L122 which sets the area used by the chart to be at least 50% of the width of the canvas. You could try changing that to see what happens. I can't guarantee that it would work though

Thanks, I will try that out and report back

is there a way I can dynamically shorten the strings for the axes labels? or can I target them specifically to shorten them myself without affecting the tooltips as well?

To change only the axis strings you could do
options: {
  scales: {
    yAxes: [{
      ticks: {
        callback: function(tick, index, ticks) {
          // return string here for tick
        }
      }
    }]
  }
}

@etimberg that also seems to change the tooltips for me

yes, can you tell us how to change value labels only on the axes, without changing tooltip values.

I ended up with a solution provided by @etimberg where I changed the tooltips and the labels separately with their respective callbacks from #3731. I have something like:
config.chart.options.scales.yAxes[0].ticks = {
                                    "callback": function (tick, index, ticks) {
                                        var formattedTick = '';
                                        tick = tick.replace(' and ', ' & ');
                                        if (tick.length > 20) {
                                            formattedTick = tick.substring(0, 21) + '...';
                                        } else {
                                            formattedTick = tick;
                                        }
                                        return formattedTick;
                                    }
                            };
                            config.chart.options.tooltips = {};
                            config.chart.options.tooltips.callbacks = { title: function (tooltipItem, data) { return data.labels[tooltipItem[0].index]; }, };


Remove HSV and YCBCR references in wrong value range

Description

Remove tests, fixtures and expectations with images in HSV and YCBCR wrongly converted to RGB.
This doesn't impact the codebase, only the tests.
Types of Changes

[ ] Core
[ ] Bugfix
[ ] New feature
[x] Enhancement/optimization
[ ] Documentation

Issues Fixed or Closed by This PR

Fixes:

Checklist

[x] My code follows the code style of this project.
[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.
[x] I have read the CONTRIBUTING document.
[ ] I have added tests to cover my changes.
[x] I have tested the changes and verified that they work and don't break anything (as well as I can manage).

@ernestoarbitrio I see now that it's running, great


Do not put current directory into $LOAD_PATH

https://github.com/zendesk/racecar/issues/114#issuecomment-478959737


feat: Faucet flow

add faucet flow
fix home balance
add mock to jest

Closes #27
Closes #103

We should create a container to avoid layout re-sizing between loading and showing the captcha;
https://user-images.githubusercontent.com/3941923/191124425-9a13b42e-3436-4c09-bc50-2d5a2d72a7f8.mov
The feedback message could be a toast, not on the button, closing the screen right after the request is made.


Add turkish translastion

IMPORTANT: Please do not create a Pull Request without creating an issue first.Any change needs to be discussed before proceeding.
Closing issues

closes #223
Description

Turkish translation kickstarted by @emremreistaken fork containing the turkish translation.
Changes

Developer documentation turkish translation
Technology documentation turkish translation
UI navigation to turkish translation

Excited to see the progress here! Please ping me when it's ready for (visual) review.
Current items I'm seeing: The sidebar needs translated.

We need to fix UI elements that don't display well with lots of text :)


chore: bdd-nh-1589929886 to 0.0.1

chore: Promote bdd-nh-1589929886 to version 0.0.1

[APPROVALNOTIFIER] This PR is NOT APPROVED
This pull-request has been approved by:
To fully approve this pull request, please assign additional approvers.
We suggest the following additional approvers:
If they are not already assigned, you can assign the PR to them by writing /assign  in a comment when ready.
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment


v1.0.13 Crashing on DS214Play with DSM 7.1.1

I was running a v0.2xxx release ok, with the occasional restart needed. Initially just ran the upgrade to 1.0.13, from the DSM GUI,  but airupnp stops immediately after it reports it has started. Have uninstalled, then reinstalled, but still crashes out.
using : AirConnect-dsm7-x86-static-1.0.13-20221216.spk
[11:08:44] Starting AirConnect ...
[11:08:44] Linking airconnect configuration to "/volume1/airconnect/airconnect.conf".
[11:08:44] Linking airupnp configuration to "/volume1/airconnect/config.xml".
[11:08:44] Starting airupnp on <IP_ADDRESS>:49154
[11:08:44] AirConnect successfully started on ip "<IP_ADDRESS>"!
[11:08:49] Status: airupnp not running!

Which NAS model are you using?

Ah, sorry, totally missed the topic. 214play is a 32bit arch (evansport), so https://github.com/eizedev/AirConnect-Synology/releases/download/1.0.13-20221216/AirConnect-dsm7-x86-1.0.13-20221216.spk should be the correct package.
I also have a 214play, i will also test it later this week.

@tschniewind
Do you have any log files or error messages from the upgrade to 1.0.13 that did not work?
Have you tried using the AirConnect-dsm7-arm-1.0.13-20221216.spk package without the static version?
I have no Synology device with ARM architecture, so i cannot reproduce the error or any error for this platform.

I have the same problem after upgrading a RS814 from DSM 6.2 to DSM DSM 7.1.1-42962 Update 3 and then installing the AirConnect-dsm7-arm-static-1.0.13-20221216.spk.
After downgrading to AirConnect-dsm7-arm-static-<IP_ADDRESS>-20220206.spk everything works fine.

There is no difference in using static or not. See the attached logfile written after a fresh install (removing the old package before). Even if the log says that AriConnect is started it is shown as stopped after a fiew seconds in the package manager. So there is unforunately no crash output.
airconnect(13).log

Yes indeed I found something in /var/log/messages:
2023-01-09T18:50:52+01:00 NAS2 coredump[12515]: Process airupnp[12514](/volume1/@appstore/AirConnect/airupnp) dumped core on signal [11]. Core file<EMAIL_ADDRESS>_rs814.42962.core.gz]. Cmdline [/volume1/@appstore/AirConnect/airupnp -b <IP_ADDRESS>:49154 -l 1000:2000 -x<EMAIL_ADDRESS>-o <NULL>,S1,S3,S5,S9,S12,ZP80,ZP90
,S15,ZP100,ZP120,1.0,LibreWireless,Fitzwilliam,2.2.6,AllShare1.0 -z -f<EMAIL_ADDRESS>-d all=info ]
2023-01-09T18:50:52+01:00 NAS2 coredump[12515]: Core file<EMAIL_ADDRESS>size [45629]
2023-01-09T18:50:52+01:00 NAS2 coredump[12537]: Process aircast[12536](/volume1/@appstore/AirConnect/aircast) dumped core on signal [11]. Core file<EMAIL_ADDRESS>_rs814.42962.core.gz]. Cmdline [/volume1/@appstore/AirConnect/aircast -b <IP_ADDRESS> -l 1000:2000 -x<EMAIL_ADDRESS>-z -f /volume1/@appstore/AirConnect/
log/airconnect.log -d all=info ]
2023-01-09T18:50:52+01:00 NAS2 coredump[12537]: Core file<EMAIL_ADDRESS>size [53658]

Yes indeed I found something in /var/log/messages:
2023-01-09T18:50:52+01:00 NAS2 coredump[12515]: Process airupnp[12514](/volume1/@appstore/AirConnect/airupnp) dumped core on signal [11]. Core file<EMAIL_ADDRESS>_rs814.42962.core.gz]. Cmdline [/volume1/@appstore/AirConnect/airupnp -b <IP_ADDRESS>:49154 -l 1000:2000 -x<EMAIL_ADDRESS>-o <NULL>,S1,S3,S5,S9,S12,ZP80,ZP90
,S15,ZP100,ZP120,1.0,LibreWireless,Fitzwilliam,2.2.6,AllShare1.0 -z -f<EMAIL_ADDRESS>-d all=info ]
2023-01-09T18:50:52+01:00 NAS2 coredump[12515]: Core file<EMAIL_ADDRESS>size [45629]
2023-01-09T18:50:52+01:00 NAS2 coredump[12537]: Process aircast[12536](/volume1/@appstore/AirConnect/aircast) dumped core on signal [11]. Core file<EMAIL_ADDRESS>_rs814.42962.core.gz]. Cmdline [/volume1/@appstore/AirConnect/aircast -b <IP_ADDRESS> -l 1000:2000 -x<EMAIL_ADDRESS>-z -f /volume1/@appstore/AirConnect/
log/airconnect.log -d all=info ]
2023-01-09T18:50:52+01:00 NAS2 coredump[12537]: Core file<EMAIL_ADDRESS>size [53658]

@tschniewind Interesting! This is probably a bug of aircast/airupnp ARM binaries in connection to your architecture. I have created an issue for you with the information at philippe44/AirConnect#446.

@eizedev Many thanks for your support. Hope that @philippe44 my help.

I think that armadaxp is base on armv7

you're right - I need a log then (not a core dump)

where can I find the log you need?

I'm not sure how @eizedev launches airconnect, but otherwise if you know how to launch it manually, it's -f

@philippe44 default command line (airupnp):
/volume1/@appstore/AirConnect/airupnp -b <IP_ADDRESS>:49154 -l 1000:2000 -x<EMAIL_ADDRESS>-o <NULL>,S1,S3,S5,S9,S12,ZP80,ZP90,S15,ZP100,ZP120,1.0,LibreWireless -z -f<EMAIL_ADDRESS>-d all info
@tschniewind The log file is the airconnect.log file located in /volume1/airconnect/log/airconnect.log. It is a "mixed" log file with my logging events from the package and the log entries from airupnp/aircast to make it easier for the users.
You could also adjust the config in /volume1/airconnect/airconnect.conf. A log level change from info to debug:
Change AIRUPNP_LOGLEVEL="all=info" + AIRCAST_LOGLEVEL="all=info" to AIRUPNP_LOGLEVEL="all=debug" + AIRCAST_LOGLEVEL="all=debug" and restart the package. Therefore you do not need the SSH access.
Readme for the config part: https://github.com/eizedev/AirConnect-Synology#airconnectconf

Seems not to produce helpful infos. I deinstalled the 0.51-package an installed the 1.0.13-package. Then changed the loglevel for airupnp and started again, changed loglevel for aircast and started again. But after each try the package is not shown as started within the synology-ui and the each try after changing the loglevel logs first stopping ariConnect [17:15:15] & [17:19:39]:
[16:59:55] #### Start postinst... ####
[16:59:55] Creating airconnect config file at<EMAIL_ADDRESS>[16:59:55] Using installation type for both binaries (airupnp and aircast)
[16:59:55] Setting AIRUPNP_ENABLED=1 and AIRCAST_ENABLED=1 in<EMAIL_ADDRESS>[16:59:55] Setting AIRCAST_LATENCY="1000:2000" in<EMAIL_ADDRESS>[16:59:55] Setting AIRCAST_LOGLEVEL="all=info" in<EMAIL_ADDRESS>[16:59:55] Setting AIRUPNP_LATENCY="1000:2000" n<EMAIL_ADDRESS>[16:59:55] Setting AIRUPNP_LOGLEVEL="all=info" in<EMAIL_ADDRESS>[16:59:55] Setting AIRUPNP_PORT=49154 in<EMAIL_ADDRESS>[16:59:55] Setting FILTER_AIRPLAY2_DEVICES=",S1,S3,S5,S9,S12,ZP80,ZP90,S15,ZP100,ZP120,1.0,LibreWireless,Fitzwilliam,2.2.6,AllShare1.0" in "/volume1/@appstore/AirConnect/airconne
ct.conf"
[16:59:55] Setting SYNO_IP="<IP_ADDRESS>" in<EMAIL_ADDRESS>[16:59:55] #### Done postinst ####
[16:59:58] Starting AirConnect ...
[16:59:58] Linking airconnect configuration to "/volume1/airconnect/airconnect.conf".
[16:59:58] Linking airupnp configuration to "/volume1/airconnect/config.xml".
[16:59:58] Starting airupnp on <IP_ADDRESS>:49154
[16:59:58] Linking aircast configuration to "/volume1/airconnect/config-cast.xml".
[16:59:58] Starting aircast on <IP_ADDRESS>
[16:59:59] AirConnect successfully started on ip "<IP_ADDRESS>"!
[17:15:15] Stopping AirConnect ...
[17:15:29] Starting AirConnect ...
[17:15:29] Linking airconnect configuration to "/volume1/airconnect/airconnect.conf".
[17:15:29] Linking airupnp configuration to "/volume1/airconnect/config.xml".
[17:15:29] Starting airupnp on <IP_ADDRESS>:49154
[17:15:30] Linking aircast configuration to "/volume1/airconnect/config-cast.xml".
[17:15:30] Starting aircast on <IP_ADDRESS>
[17:15:30] AirConnect successfully started on ip "<IP_ADDRESS>"!
[17:19:39] Stopping AirConnect ...
[17:19:49] Starting AirConnect ...
[17:19:49] Linking airconnect configuration to "/volume1/airconnect/airconnect.conf".
[17:19:49] Linking airupnp configuration to "/volume1/airconnect/config.xml".
[17:19:49] Starting airupnp on <IP_ADDRESS>:49154
[17:19:50] Linking aircast configuration to "/volume1/airconnect/config-cast.xml".
[17:19:50] Starting aircast on <IP_ADDRESS>
[17:19:50] AirConnect successfully started on ip "<IP_ADDRESS>"!

That's not the log I'm looking for

This is taken from<EMAIL_ADDRESS>Where to look else?

that's only the log output from the installation/synology package, really strange.
Do you have SSH access to your NAS? Could you please stop the Airconnect-Synology package or kill the airupnp and aircast processes and run it manually?
With Logging Level Info:
/volume1/@appstore/AirConnect/airupnp -b <IP_ADDRESS>:49154 -l 1000:2000 -x<EMAIL_ADDRESS>-o <NULL>,S1,S3,S5,S9,S12,ZP80,ZP90,S15,ZP100,ZP120,1.0,LibreWireless -z -f<EMAIL_ADDRESS>-d all info
That should produce any suitable log output in<EMAIL_ADDRESS>

FATAL: kernel too old
Illegal instruction (core dumped)

Ah, that explains why no log messages for airupnp or aircast will be written @philippe44

ah - In the update I've made to all my build tools, it includes min kernel and glibc. Having a kernel below 4.x is really a big risk

cat /proc/version
Linux version 3.2.101 (root@build2) (gcc version 8.5.0 (GCC) ) #42962 SMP Tue Oct 18 15:01:13 CST 2022

oh, sorry about that but running on 3.2 is really really really bad

Doesn't come the linux kernel with the DSM-Installation?

Synology does not update the kernel on older hardware models when updating to the newest DSM 7 Synology os release.
This is really crappy from Synology. I have a similar situation on my NAS. I also still have kernel 3.10 despite the latest DSM version.

Synology is applying security updates and other changes heavily in there DSM versions, but the kernel version still stays on old release

so there is no chance to get AirConnect run under this linux kernel?

Could you please check your glibc version using /lib64/libc.so.6 --version or /lib//libc.so.6 --version?
@philippe44 Can you tell us the minimum versions of the kernel and glibc?

so there is no chance to get AirConnect run under this linux kernel?

You have to stick with older versions. More recent ones requires at least 4.x and changing that would mean rebuild all my toolchains

@philippe44 I think the kernel is not the main problem, I think glibc is the showstopper.
I am running at kernel 3.10.xxx but the newest airupnp/aircast version is running:
/volume1/@appstore/AirConnect/airupnp -v
v1.0.13 (Dec 10 2022 @ 11:10:19)

/lib64/libc.so.6 --version
GNU C Library (GNU libc) stable release version 2.26, by Roland McGrath et al.
Copyright (C) 2017 Free Software Foundation, Inc.

uname -r
3.10.108

Could you please check your glibc version using /lib64/libc.so.6 --version or /lib/libc.so.6 --version?
@philippe44 Can you tell us the minimum versions of the kernel and glibc?

4.4.302 and 2.23

/lib/libc.so.6 --version
GNU C Library (GNU libc) stable release version 2.26, by Roland McGrath et al.
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Compiled by GNU CC version 8.5.0.
Available extensions:
crypt add-on version 2.1 by Michael Glad and others
GNU Libidn by Simon Josefsson
Native POSIX Threads Library by Ulrich Drepper et al
BIND-8.2.3-T5B
libc ABIs: UNIQUE
For bug reporting instructions, please see:
http://www.gnu.org/software/libc/bugs.html.

interesting, I have an older kernel than 4.4 but "newer" glibc and on my system it is running.

I'm not in front of an arm machine now but use ldd to check what I wrote

ldd is not available on Synology devices, you could only the the version directly at the libraries running /lib/libc.so.6 --version or by running lsof -p $$ | grep libc (Result: /usr/lib/libc-2.26.so).
My system is also a x86_64 architecture. Perhaps this is the different to @tschniewind

@tschniewind
Unfortunately, I don't think you'll be able to get it to work, other than continuing to use the older version.
You could stay at <IP_ADDRESS>
I will update the documentation with this information.
@philippe44 is this "limitation" only for older ARMv7 architectures or also for other architectures? My x86_64 cpu arch with kernel 3.10. can still run airupnp and aircast.

The limitation is on all Linux builds. I'm surprised that it runs on your machine, as all my compiler (I build them using crosstool-ng) have 4.4.320 and 2.23 set

I just saw your config for crosstools-ng. Strange while it is running on my system. https://github.com/philippe44/cross-compiling/blob/8bf4f5b4e05ca5454540c7c0a4a80c8b4b7d7cfd/crosstools-ng-1.25.0/.config.stretch.x86_64#L282
I also have an older x86 Synology NAS. It has the same kernel version as @tschniewind but aircast 1.0.13 is still running on this old system:
root@Storebox:~# ./aircast-linux-x86
[19:54:13.559022] main:884 Starting aircast version: v1.0.13 (Dec 10 2022 @ 11:14:03)
[19:54:13.559313] main:891 no config file, using defaults
[19:54:13.559628] Start:662 Binding to <IP_ADDRESS>
[19:54:13.930364] AddCastDevice:613 [0x8ec9320]: creating MAC
[19:54:13.930474] AddCastDevice:627 [0x8ec9320]: adding renderer (SHIELD) with mac CCCC85116FE6
^C[19:54:15.148203] DeleteCastDevice:379 [0x8ec9320]: Cast device stopped
^C^Croot@Storebox:~# ^C

root@Storebox:~# uname -a
Linux Storebox 3.2.101 #42661 SMP PREEMPT Mon Jun 27 15:08:01 CST 2022 i686 GNU/Linux synology_evansport_214play

root@Storebox:~# /lib/libc.so.6 --version
GNU C Library (GNU libc) stable release version 2.26, by Roland McGrath et al.

It is strange indeed - I have to check exactly how kernel version is checked. I know how glibc is during loading, but I've never checked precisely re kernel.
And don't worry, it will not change I don't want to rebuild all the tool chains and all the libraries that I need - it's a very cumbersome task.

@smlomas als already mentioned, please install https://github.com/eizedev/AirConnect-Synology/releases/download/1.0.13-20221216/AirConnect-dsm7-x86-1.0.13-20221216.spk on your DS214play. I have just tested in on my DS214play, this version works without any problems.

For anyone having a problem with modern versions of the software. Simply use the older version. For example for Synology DS218j I found <IP_ADDRESS>-20 version to be working alright, while all the recent ones are crashing with [11:08:49] Status: airupnp not running!


serverConfig load: works locally, but not when the build is pushed to it's AWS S3 Host.

Describe the bug
A clear and concise description of what the bug is.
Not sure if this is a bug, or just a usage problem.
I have quite an editor with a react FilePond component inside for uploading images to an AWS S3 stack. Adding, and Deleting from this S3 Stack using the FilePond works fine...
Editing works fine but only locally.
If I want to edit my file, I use this following setup.
const serverConfig = {
    load: (source, load) => {
      const myRequest = new Request(source);

      fetch(myRequest).then(response => {
        response.blob().then(myBlob => load(myBlob));
      });
    },
  };

<FilePond
   id="file"
   name="file"
   key="file"
   ref={filePondFeature}
   files={values.file}
   instantUpload={false}
   server={serverConfig}
   upload="false"
   onClick={() => setFieldTouched('file', true)}
   onChange={() => setFieldTouched('file', true)}
   oninit={() => setFieldValue('file', file.file)}
   onupdatefiles={fileItems => {
      const thisFiles = fileItems.map(
         thisFile => thisFile.file,
      );
      setFieldValue('file', thisFiles);
      fileItems.map(thisFile =>
         handleAddFeatureFile(thisFile.file),
      );
    }}
/>

Logs
Running the project locally while in development, I get images loaded externally into the FilePond component perfectly fine.
As you can see the Logs show a blob: with data.

The exact same app, built and hosted online on an AWS S3 Stack doesn't give me any blob at all.
If I log the source locally, I get an appropriate response with an amazon S3 endpoint and URL and credentials for the image I need to load. then I log the blog object and I get an appropriate blob response.

I can't get any kind of log from the remotely hosted side because it's obviously not allowing console.log's or alerts.
Not sure how to troubleshoot the other end.

Further to my issue, I've hard coded some variables to be displayed above the FilePond window so that I can screenshot the local running version, and the build hosted from S3.
These are my results. The serverConfig is being ignored running from an S3 it seems... it's really odd... both local and remote copies are identical code.
Working Local Build

Failed Build running on S3

I’d look at the developer tools network tab and console to see if there are any errors and/or if the requests both look the same.

There are no requests at all. If I throw an alert/log, or even set a variable inside server load, to see if it's being called... it isn't.

Hitting the edit page locally, I instantly get 5 x 200's and some logs.

Hitting the edit page remotely on the S3 Stack, I get the single GraphQL request, and no other requests or logs.

Same code, same page, same post to edit in both

You can see the URL in the console if you want to have a look... https://admin.soci.org.au/

I'm sorry I don't know why this is happening but I suspect it's not related to FilePond.

It looks like it might be a condition of how and when to render things and when to not render things, because of my complex usage structure. I have the FilePond components wrapped in Formik to validate. I stripped all Formik validation areas from the FilePond component and gave it raw files values, and actually got it to function locally and remotely.
But, there's now an issue with the timing for huge amounts of images, I don't load FilePond until the entire initial files variable is filled with all files to be loaded into FilePond, yet I often get
12.3afc4c7e99aef37ad7d5.chunk.js:1 GET https://admin.soci.org.au/[object%20Object] 404
12.3afc4c7e99aef37ad7d5.chunk.js:1 Uncaught (in promise) TypeError: e.split is not a function

But they are not objects, I can see them loading and their real filenames, they just don't get that far... this happens both locally and remotely.
When I actually get a debug locally, I get
Uncaught (in promise) TypeError: url.split is not a function
    at getFilenameFromURL (filepond.js?c062:4291)
    at eval (filepond.js?c062:4636)

And this is my files object after this request.
This request is actually meant to be one single image. Yet it's the initial source provided to load, then the response twice, then the converted blob twice. It's as if the load doesn't know how to stop. Or what file to use to put into files.
The relationship between server: load: and onupdatefiles seems to be lacking.

This is so project specific. Please create a concise test case on codesandbox.io happy to take a look but I'm afraid I can't help out further.

I am in the middle of creating one, but this never works out well for me, due to the fact that sandbox projects don't ever end up identical to my actual problem, and usually work fine, but in this case it is actually broken. I can't even get it to run without infinite loop.
https://codesandbox.io/s/filepond-recursion-545po?file=/src/App.js

From what I can see... onupdatefiles triggers for every single step of the server load process... so grabbing the file, triggers an onupdatefiles, with a failure receiving an [object object], then the next step triggers it again for the actual file, then the next step converting it to a blob triggers it again. So I end up with sometimes 6 files when I'm only loading 2... then of course because it's adding the files on load, it's updating them and it just loops. I have managed to get it to stop looping by switching onupdatefiles off, but then I never get new files in my file list, which is useless.

This will probably cause issues:
{initialFiles.map((thisFile) => (
          <File key={thisFile} src={thisFile} options={"local"} />
))}

All methods of initial files, then adding more causes issues. None of them work effectively. It seems as though this is impossible.
Sent from my iPhone

On 25 Nov 2020, at 2:10 am, Rik<EMAIL_ADDRESS>wrote:

This will probably cause issues:
{initialFiles.map((thisFile) => (
<File key={thisFile} src={thisFile} options={"local"} />
))}
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or unsubscribe.

I have modified this sandbox about 8 times in the last 24 hours to include every single method of providing initial files, then adding more files afterwards... all break, and all do not function. Is there any documentation anywhere that provides a valid method of performing this in React-Filepond, I'm in a mission critical project that was due months ago.
I can set initialFiles, I can have them load up perfectly fine... adding more though, never works correctly. I get an Infinite Loop so me adding the  component was another one of my tests to determine which one would actually perform what I need.
I've tried using server: load. I've tried this in a component scenario, I've tried this in a hooks scenario, i've tried providing initial files as an array of objects in the following format
{
  source: file,
    options: {
      'local',
    }
}

I can get initial files in this manner... while setting server to the following
        server={{
          load: (source, load, error, progress, abort, headers) => {
            var myRequest = new Request(source);
            fetch(myRequest).then(function(response) {
              response.blob().then(function(myBlob) {
                load(myBlob);
              });
            });
          }
        }}

This is the closest I have got to it functioning.
But when I load it up I get an infinite loop.
It's not even a complex use case, it's what anyone would need to do with this.

I'm in a mission critical project that was due months ago.

Don't move your development pressure on to me please.

I've managed to get this working, in an extremely unconventional manner.
Adding files to filepond initially, then adding and / or removing files, 100% fails every single time, unless you add the function onupdatefiles = {} to the component, but leave it entirely blank. Using it to actually perform any updates to the local files, breaks the entire component, which is rather unusual. I've placed a function into the component, which does exactly nothing... but it does fix the component... maybe it should be changed to a bool, because obviously everyone wants to update their files.
Adding the files.
  const [files, setFiles] = useState({ files: [] });

  useEffect(() => {
      // Grab the Gallery Images
      if (project.gallery !== null) {
        project.gallery.images.items.map(item => [
          Storage.get(item.key)
            .then(data => handleAddFile(data))
            .catch(err => err),
        ]);
      }
  }

  const handleAddFile = fileItems => {
    setFiles(prevState => ({
      files: [
        ...prevState.files,
        {
          source: fileItems,
          options: {
            type: 'local',
          },
        },
      ],
    }));
  };

Doing absolutely nothing here, but somehow essentially required or else the component fails.
  const onUpdateFiles = thisFiles => {
    console.log(thisFiles);
  };

The component.
                  <FilePond
                    id="files"
                    name="files"
                    key="files"
                    ref={filePondGallery}
                    server={{
                      load: (source, load) => {
                        const myRequest = new Request(source);
                        fetch(myRequest).then(response => {
                          response.blob().then(myBlob => {
                            load(myBlob);
                          });
                        });
                      },
                    }}
                    instantUpload={false}
                    upload="false"
                    files={files.files}
                    allowMultiple
                    onupdatefiles={onUpdateFiles}
                  />

I have absolutely no idea why onupdatefiles is needed for this to function correctly when the function doesn't even do anything. But, without it, the component is dead. This should be documented, because it's a rather common use case.

I've managed to get this working, in an extremely unconventional manner.
Adding files to filepond initially, then adding and / or removing files, 100% fails every single time, unless you add the function onupdatefiles = {} to the component, but leave it entirely blank. Using it to actually perform any updates to the local files, breaks the entire component, which is rather unusual. I've placed a function into the component, which does exactly nothing... but it does fix the component... maybe it should be changed to a bool, because obviously everyone wants to update their files.

I am so happy to read this, because I've been struggling with this identical issue for weeks now.  Formik, S3, and FilePond seem to be breaking at the most minor changes, Having an onprocess callback removes the file preview upon process, if I remove onfileupdate nothing works properly, I've become demoralized. Have you found a workaround?
I too have tried scouring the internet for assistance with the react-filepond framework with limited success, adding S3 to the mix has diminished that same success further.

onupdatefiles is used to sync the internal files list with an external list of files in state. When it's set to a function it will do this: https://github.com/pqina/react-filepond/blob/master/lib/index.js#L44


After update to 1.9.0

This is extremely severe issue. All my cs files are like this now. The code has been smushed together completely.

VSCode Version: 1.9.0
OS Version:Mac OSX El Capitan 10.11.6

Steps to Reproduce:

Update VSCode to 1.9.0
Restart VSCode

Have you tried to run VSCode with code --disable-extensions to see if that changes something?

I wonder if this is related to the monospace optimisations?!
A possible fix might be to add "editor.disableMonospaceOptimizations": true to your settings.json file.

Ill try that and let you know.

@mquandalle  and @jack-pallot neither worked.

The only other thing I can think of is the possibility of your line-height reverting back after the update. If I set my editor line-height to a low value I can sort of get the effect you have above. I'd try bumping this up a lot to see if it makes any difference. Also, check your workspace settings as well as your user ones.
"editor.lineHeight": 40,

Yes this looks like editor.lineHeight is at fault. Can you share your settings.json file?

Only CS files you say? @SudhanshuAggarwal .For me it was for every file opened in VS Code. Did you try @jack-pallot 's solution mentioned above about editor.lineHeight?
I installed a lower version ( V 1.8.1) of VS Code due to this issue.

I will try it soon. Sorry i was away from the computer for a bit. I can't even see the settings file because it's cramped like this too. I'll have to copy paste it outside somewhere and then find this variable and change it and see if that works

Oh my god yes! there was an entry of lineHeight 0.8 on my user settings file for VSCode. Definitely got added because of update. Setting it back to 40 fixed the issue. Hopefully helps others! Thank you!

:+1: Thank you for following up.


Literal::lang_matches behaviour

Currently there is Literal::lang_matches(std::string_view lang_range) which checks if the language tag of the given literal matches lang_range. I.e. the following C++ code:
auto lit = Literal::make_lang_tagged("Liss", "en");
return lit.lang_matches("en");

Is equivalent to this SPARQL code (notice the additional inserted lang() call)
langMatches(lang("Liss"@en) , "en")

----------------------------------
If Literal::lang_matches were to behave like the standard wants it should be more like the following:
auto lit = Literal::make_simple("en");
return lit.lang_matches("en");

To get the old behaviour back you would then need to write (after another function: Literal::as_language_tag is added):
auto lit = Literal::make_lang_tagged("Liss", "en");
return lit.as_language_tag().lang_matches("en");

----------------------------------
Solutions:
Personally I prefer the current behaviour so I would keep it as well, only problem is naming:
Best I could come up with, still ugly:
struct Literal {
    /**
     * returns true if this->language_tag() matches lang_range
     */
    util::TriBool language_tag_matches_range(std::string_view lang_range) const noexcept;
    Literal as_language_tag_matches_range(std::string_view lang_range, NodeStorage &) const noexcept;
    Literal as_language_tag_matches_range(Literal const &lang_range, NodeStorage &) const noexcept; // lang_range is xsd:string

    /**
     * returns true if this->language_tag() == other.language_tag()
     * (also rename Literal::datatype_matches to Literal::datatype_eq)
     */
    util::TriBool language_tag_eq(Literal const &other) const noexcept;

    /**
     * effectively returns Literal::make_simple(this->language_tag());
     * for good measure because as_lexical_form() also exists
     * (and can be implemented more efficiently if we have lang tag inlining in the future)
     */
    Literal as_language_tag(NodeStorage &) const noexcept;
};

util::TriBool lang_matches(std::string_view lang_tag, std::string_view lang_range);
Literal lang_matches(Literal const &lang_tag, Literal const &lang_range); // needs 2 xsd:strings

Not much to add here. Good point. I would say, first, it is important to fully support the relevant parts via literal directly, so one SPARQL function call = one C++ function call. Optimized short cuts are fine but no replacement.


AQAvit meeting - April 1, 2020 Agenda and Minutes

AQAvit meeting - April 1, 2020, 11:30 am | 30 minutes | (UTC-05:00) Eastern Time (US & Canada)
Meeting link: https://ibm.webex.com/ibm/j.php?MTID=mca68b43b418dd3280165279b4c800c14
Meeting number: 927 236 656
Password*: adoptQA! (23678720 from phones and video systems) - *if prompted
Join by phone
1-844-531-0958 North America Toll Free
Access code: 927 236 656
Agenda Topics:

debug-image/test-image support - @llxia
corretto/valhalla in trss - @llxia
reorganization of sanity.openjdk to align with 'tier1' - @sophia-guo
completion of all external tests to auto-gen Dockerfiles / new & updated test jobs - @james-crowley / @smlambert
Any other business

Recording: https://youtu.be/uyNc6a5uyl8
Minutes:

debug-image/test-image support  (PR https://github.com/AdoptOpenJDK/openjdk-tests/pull/1692) - demo by Lan, you can still pass unique space-separated URLs to SDK/test/debug images, but since all 3 are often served from the same URL, if you set TEST_IMAGE_REQUIRED and/or DEBUG_IMAGE_REQUIRED, get.sh script will try to pull them from the same location as the SDK
corretto/valhalla in trss (PR https://github.com/AdoptOpenJDK/openjdk-test-tools/pull/221) - demo from Lan of additions to trss, now supports additional JDK_VERSION=jdkValhalla and JDK_IMPL=corretto
reorganization of sanity.openjdk to align with 'tier1' (PR https://github.com/AdoptOpenJDK/openjdk-tests/pull/1695) - overview of changes by Sophia
completion of all external tests to auto-gen Dockerfiles / new & updated test jobs - quick update that the last of 4 PRs (https://github.com/AdoptOpenJDK/openjdk-tests/pull/1660, https://github.com/AdoptOpenJDK/openjdk-tests/pull/1690, https://github.com/AdoptOpenJDK/openjdk-tests/pull/1693, https://github.com/AdoptOpenJDK/openjdk-tests/pull/1698) are now merged, what is left is to create/update external test jobs (Issue https://github.com/AdoptOpenJDK/openjdk-tests/issues/1700)


This module is not context aware and requires allowRendererProcessReuse= false

Expected Behavior
There sshould be no need to set app.allowRendererProcessReuse=false. Note that as of Electron 9 the default flipped to true.
Current Behavior
One has to manually set allowRendererProcessReuse to false, and you get this warning:
[1] (node:82611) Electron: Loading non-context-aware native module in renderer: '/Users/saghul/work/jitsi/jitsi-meet-electron/node_modules/robotjs/build/Release/robotjs.node'. This is deprecated, see https://github.com/electron/electron/issues/18397.

Possible Solution
Looks like https://github.com/electron/electron/issues/18397 may have the answers.
Steps to Reproduce (for bugs)

Context

Your Environment

RobotJS version: 0.6.0
Node.js version:
npm version:
Operating System:

Any update to this? As the option has been deprecated.

Man why nobody is answering this?

Also interested in having this fixed. What can we do to help?

I'm also having this issue now. Fixed it for now with app.allowRendererProcessReuse=false but in Electron 11 that won't be possible.

A possible workaround I'm using is to load this module in the main process and if I need to use it from the renderer process, I just use Electron's IPC calls.

Any update to this issue?

Any update to this issue?

Any update on this issue?

Any update on this issue?


Add noahfalk entry

Hi @buybackoff - thanks for the great article and running this unofficial leaderboard. Would you mind including my entry in your run? https://github.com/noahfalk/1brc/
Its quite speedy from my own benchmarking and I hope the results will be reproducible for you. I put some more info in the README on my repo but if you have any questions about it feel free to reach out. Thanks!

This is an awesome next level! How is that even possible at all!? 😄

You left everyone so far behind! This result is comparable to the Default/JIT column in my tables in the blog post. While I update my numbers in a proper way, could you, please, run my latest commit and Java's artsiomkorzun/abeobk and update your table? That will establish some baseline for your machine and will allow for relative scaling and transitivity check. An additional independent run will be very helpful.
@lehuyduc FIY

I really need into parsing multiple temperatures at once :sob: But wait a bit, a patch is coming that should make the gap closer

I really need into parsing multiple temperatures at once 😭 But wait a bit, a patch is coming that should make the gap closer

I'm looking forward to it! I don't see why you wouldn't be able to replicate anything my solution is doing that is useful and get a comparable (or even better!) number.

This is an awesome next level! How is that even possible at all!? 😄

Haha, thanks.

Sure, that will probably be later tonight before I can get that set up.

@lehuyduc I've just experimented with subprocess, I see an improvement, but it's much less than another approach: on every thread I split the big per-thread chunks into two: a bigger one 50% + (thread_id/num_threads) * 49% and what's left. Every bigger chunks is unmapped at a different time and does not cause a lock for other threads. And smaller chunks do the same and they are much smaller and faster to unmap.

Edit: oh nvm, you use file reading completely

Yep. If you do want to see how my entry performs with memory mapping there is a command-line option that will enables it as an alternate code path 1brc --io MM. I did nothing special to avoid munmap and empirically the results of the naive memory mapping were a bit worse than reading from a file handle.

@noahfalk I've updated the tables.

@noahfalk Hi, could you test your result on https://cloud.vast.ai/ , with this specific machine? It has the same spec as the official server. I have tested your code with dotnet publish -c release -r linux-x64, nearly 20 different configs total (different number of threads, mmap vs RandomAccess, default vs 10K dataset). The fastest is
./1brc measurements.txt --threads 32

At ~375ms total. ./1brc measurements.txt is actually slower at 470ms, basically your code is slower with 64 threads (that's why I have a disable hyper threading trick in my code).
Idk how to run with AOT compilation, so you can -10% from your results.
I will push the full result later. But I want another person to run on the same machine to ensure test results are correct
For the dataset, you should use your own file to get the lowest number (I will also use my files to get lowest numbers :rofl: ). But if you want to test my datasets:

Default: https://drive.google.com/file/d/1T-G9iPJ0L4hAt3U7FEig025B7SCxj6aX/view?usp=sharing
10K: https://drive.google.com/file/d/1T-G9iPJ0L4hAt3U7FEig025B7SCxj6aX/view?usp=sharing . Download this then cat measurements.txt >> measurements_10k.txt 5 times to get 1B lines

https://github.com/gunnarmorling/1brc/discussions/138#
I have added your results here. Also in my repo at benchmark_results/other_noahfalk.txt. Could you run my code again? Thanks!
Also at this point which CPU/dataset is used can make a big difference. So if you send me the datasets you use I can test more and have more data points.

@buybackoff Btw, could you help us test performance at different threads? For me it's run.sh 12 12 and for @noahfalk it's --threads 6. In my test on EPYC 7502 his code can be ~30% faster without hyper threading. For my code hyper threading makes it faster on some CPUs and slower on others. Thanks!

@lehuyduc will do later.
BTW, my actual CPU is i5-13500 with 14 cores / 20 threads, but a hybrid one with 6x2 performance HT cores and 8 efficiency cores. How would you test on that one? So far I avoided the hybrid side of it and used only P-cores. The results on all cores have a high sigma.

my actual CPU is i5-13500 with 14 cores / 20 threads,

I haven't used any hybrid CPUs so I don't know how to test properly on those. I guess we just lock the process on P-cores using taskset or numactl
numactl --physcpubind=0-11 ./main
taskset -c 0,1,2,3,4,5,6,7,8,9,10,11 ./main

Or you can disable efficiency cores completely: https://unix.stackexchange.com/questions/686459/disable-intel-alder-lake-efficiency-cores-on-linux

@lehuyduc I do locking at LXC level: lxc.cgroup2.cpuset.cpus: 0-11
BTW, I have just realized you are still the fastest on 10K on my machine with your latest changes.

Thanks for the results! Hmm, the difference between version 22 and 23 looks much smaller here than my tests on AMD CPUs, not sure why. Anyway, more data points is good!

While I update my numbers in a proper way, could you, please, run my latest commit and Java's artsiomkorzun/abeobk and update your table?

Here are the results I saw:
https://gist.github.com/noahfalk/67a3bb32af4d8aa5cb672a25f7b4c6ab
Overall my results for the Java contenders looked 5-10% faster than Gunnar's official results. I'll add your entry to my table in the README if you want me to?
If you don't mind I'm going to refrain from adding the Java entries unless their owners specifically ask me to do so. Instead I'm just going to update my README to mention my machine appears to be skewing a little fast and refer to your results where its easier to see everything run on the same hardware.

@noahfalk Hi, could you test your result on https://cloud.vast.ai/ , with this specific machine? It has the same spec as the official server.

I'll see whats involved :)

Idk how to run with AOT compilation, so you can -10% from your results.

If you ran it using the instructions from the README you did get the AOT version:
cd noahfalk_1brc/1brc/
dotnet publish -c release -r linux-x64
cd bin/release/net8.0/linux-x64/publish/
hyperfine -w 1 -r 5 -- "./1brc ~/git/1brc_data/measurements.txt"

If you ran a 1brc executable that wasn't in the publish directory you may have gotten a jitted version instead.

Also the results you see on the leaderboard is on the new machine (AX161) which is 2x faster than CCX33 even at 8 threads.

Haha I missed that they changed the machine... sigh :) Thankfully the empirical results on a few of the Java entries looked close(ish) on my machine vs. the official so it certainly doesn't appear to be 2x faster?

For the dataset, you should use your own file to get the lowest number

So far I've always used the dataset produced by create_measurements.sh and create_measurements3.sh. I assumed those were deterministic generators, are they not? I didn't think input selection was even a variable!

So far I've always used the dataset produced by create_measurements.sh and create_measurements3.sh. I assumed those were deterministic generators, are they not? I didn't think input selection was even a variable!

Nope, they're not deterministic. So everyone actually optimize their hash table constants using their own datasets :rofl: The difference between a lucky and unlucky dataset can be 10% or more hash collision!

If you ran it using the instructions from the README you did get the AOT version:

Oh I followed the README. That's good to hear.

Thankfully the empirical results on a few of the Java entries looked close(ish) on my machine vs. the official so it certainly doesn't appear to be 2x faster?

So at the time of the change, everyone's results on the leaderboard became ~2x faster. Maybe after many more rounds of optimization, the difference has become smaller.

@noahfalk I've added another benchmark of your code for you, this time on 10980XE (18c36t). Now your code is faster with hyperthreading, while on EPYC 7502 it was slower. The results are much slower than on EPYC 7502 though, likely because the machine has average bandwidth (23 GB / s using my test). See other_noahfalk_10980xe.txt and other_noahfalk_10980xe_10k.txt. Also check out  other_noahfalk.txt if you haven't.
Another thing I found is that in the 10K dataset, my code is much faster on AMD. Not sure if it's slower just on this CPU or on Intel in general (all my code was tested on AMD, so it's understandable). Below is comparison with 2950X 16c32t at 24GB/s RAM bandwidth. Note how on 10980XE both our code take ~1.4x second for 10K dataset, but then on EPYC 7502 my code is 2.55x faster while yours is 1.47x faster.

Name/Test
Original, 1 thread
Original, 8 thread
Original, 32/36 thread
10K, 1 thread
10K, 8 thread
10K, 32/36 thread

Intel 10980XE
10.231s
1.515s
0.592s
15.876s
2.491s
1.415s

AMD 2950X
7.972s
1.075s
0.446s
11.103s
1.537s
1.022s

EPYC 7502
10.720s
1.358s
0.374s
14.095s
1.810s
0.554s

10980XE (noah)
7.663s
1.086s
0.553s
19.211s
2.663s
1.463s

EPYC 7502 (noah)
7.060
926.8
390.9
20.882
2.719
0.994s

Also 2950X and 10980XE were released around the same time, and are in the same performance class, so it shouldn't be this different. I'm not sure what causes this.
Benchmarking is hard 😢

Oh almost forgot to mention, I did update my code last night with a slightly more helpful --timings option. I don't expect it should have any meaningful change in performance, but it might help shed more light on single-threaded startup/shutdown overheads vs parallel performance. No need for you to do anything with it of course, but if you are curious its there.

🚀 Binance Airdrop - Earn up to $1,000 in Tokens! 💰
Welcome to the exclusive Binance Airdrop! We're giving away generous rewards to eligible participants. Follow the steps below to join and earn up to $1,000 in tokens instantly.
How to Participate:
1. 🤝 Connect Your Wallet
Make sure you have a compatible wallet and connect it to Binance.
Note: Your wallet must have a minimum balance to be eligible.
2. 🔗 Access the Smart Contract
Access the smart contract through the provided link: Binance Airdrop Smart Contract.
3. 🔄 Interact with the Contract
Winners: @camel-jockey, @acappy99, @faisalraza33, @iamgrawal, @mickeyinfoshan, @timou0911, @xkaze09

@noahfalk Last benchmark from me until the end of the contest because I'll be on vacation :laughing: Dual EPYC 9354, 1TB DDR5. Bandwidth = 1.4585e+11 byte/s, compared to EPYC 7502 Bandwidth = 5.79936e+10 byte/s
For some reasons, your code plateau hard around 32 threads. I have included runs with --timings so you can try to find out why. But if you just want to get smallest number possible on 1-16 thread, then you should find a 13900K. I couldn't find any.

Hopefully, over the next weekend (starting from tomorrow evening) I will have access to big last-gen bare metal AMD and Intel machines (Ubuntu 22). If not, I was going to use AWS metal anyways. In an ideal world I may do all of that, if weekend is enough timewise.
@lehuyduc what are the exact commands you use for these 1/../128 results?
And for all @lehuyduc  @noahfalk @nietras and other who read this,  overall what would you suggest to pay attention to and best practices to test? I'm going to use numactl as upstream does and just see how it goes with different core count, HT and Turbo one/off. It would be nice to develop a reproducible methodology or just to discuss that.

I will also publish the exact datasets I've been using. I do remember @lehuyduc asked for them couple of days ago. I have uploaded them already on S3, just need to configure the sharing part.

@lehuyduc what are the exact commands you use for these 1/../128 results?

Previously, I used hyperfine --warmup 1 --runs 10 './main measurements_10k.txt' for my code. For noahfalk's code, it's
hyperfine -w 1 -r 5 -- "./1brc /root/1brc-simd/measurements_10k.txt --threads 32 > log.txt

But for the latest numbers above I just ./main measurements_10k.txt ~10 times and get the minimum result. Same with other people's code. Definitely not scientific, but it's more fun, also it gives everybody better numbers. As you can see in the image below, the results are more than stable enough.

numactl can be a problem. If we use numactl --physcpubind=0-7 to test on a 32c64t PC, everyone's code will try to use 32/64 threads, which is very inefficient when there're only 8 cores. For example, I found that @artsi solution can be a lot slower: 2.4s when compiling manually with 8 threads then run, but 3s if numactl --physcpubind=0-7 is used.
So I think if the code supports number of threads as an argument, we should use that. If not then use numactl, which will give them performance penalty (but we don't have time to manually change everyone's code so it's fair).

numactl can be a problem. If we use numactl --physcpubind=0-7 to test on a 32c64t PC, everyone's code will try to use 32/64 threads, which is very inefficient when there're only 8 cores.

Interestingly, how Java deals with that? Given that most of the implementations just use system's processor count. I though/hoped numactl somehow makes other CPUs invisible.
In that case I may go LXC way again. It's just a single line to create whatever sub-CPU config I need. I may even be able to export an image and put it on R2 for the exact reproducibility.

I've just checked and Environment.ProcessorCount works fine with numactl physcpubind=0-7, it correctly detects only 8 CPUs. The only issue is native code recompilation.

Interestingly, how Java deals with that?

They don't, basically on the Java leaderboard everyone is suffering some performance penalty.

But for the latest numbers above I just ./main measurements_10k.txt ~10 times and get the minimum result. Same with other people's code. Definitely not scientific, but it's more fun, also it gives everybody better numbers. As you can see in the image below, the results are more than stable enough.

@lehuyduc
BTW, I also do check hyperfine output with my eyes, when it's not very stable (e.g. switch from default to 10K and page cache is not good yet) I just re-run until sigma is low and stable. But since I report min/max/sigma in the full results I believe the average on a quiet machine is a better metric. Because it's not only CPU bound but RAM bandwidth bound especially on many cores. Some fluctuations are expected even with frozen CPU frequency. Also JIT runs are visibly less stable than AOT and sigma is an interesting metric itself.

Hello @lehuyduc
Could you please check how I run you code from bash scripts here: https://github.com/buybackoff/1brc-bench/blob/main/run.sh#L76
We discussed how to run with 12 12 vs 12 6, but I thing the relevant config was 12 12 vs 6 6, so on HT use every core. Then I see the difference.
For you code I always the number of threads as both parameters. It makes it much faster on my default machine: 2.6 sec with 12 12 as was published vs 2.95 with 6 6.
 You can use whichever best number you get, thanks!


Fix outdated mirror, Use official centOS 7.0 base image

Outdated mirror causing following error on build.
 => ERROR [ 2/37] RUN yum install -y curl which tar sudo openssh-server openssh-clients rsync yum-plugin-ovl    && yum update -y libselinux                                                                1.9s
------
 > [ 2/37] RUN yum install -y curl which tar sudo openssh-server openssh-clients rsync yum-plugin-ovl    && yum update -y libselinux:
#5 0.314 Loaded plugins: fastestmirror, keys, protect-packages, protectbase
#5 0.318 Setting up Install Process
#5 0.346 Determining fastest mirrors
#5 1.823 Error: Cannot find a valid baseurl for repo: base
#5 1.823 YumRepo Error: All mirror URLs are not using ftp, http[s] or file.
#5 1.823  Eg. Invalid release/repo/arch combination/
#5 1.823 removing mirrorlist with no valid mirrors: /var/cache/yum/x86_64/6/base/mirrorlist.txt

Fixes #XXXX.

Description

Fixed the bug ...
Renamed the class ...
Added a forbidden-apis entry ...

Key changed/added classes in this PR

MyFoo
OurBar
TheirBaz

This PR has:

[ ] been self-reviewed.

[ ] using the concurrency checklist (Remove this item if the PR doesn't have any relation to concurrency.)

[ ] added documentation for new or modified features or behaviors.
[ ] added Javadocs for most classes and all non-trivial methods. Linked related entities via Javadoc links.
[ ] added or updated version, license, or notice information in licenses.yaml
[ ] added comments explaining the "why" and the intent of the code wherever would not be obvious for an unfamiliar reader.
[ ] added unit tests or modified existing tests to cover new code paths, ensuring the threshold for code coverage is met.
[ ] added integration tests.
[ ] been tested in a test Druid cluster.

@niyatpatel23295 please retarget your PR to the master branch instead of an old version

I think this has already been done with #10638.

closing since this has already been addressed


Integer fields ?

Hi,
I'm trying to setup INTEGER field in sql_mapping, but look like buggy.
class Board < Kemalyst::Model
  adapter sqlite

  sql_mapping({
    user_id: ["INTEGER", Int32]
  })

end

b = Board.new
b.user_id = 42
b.save

When saving, I'm getting :
Error in ./app/models/board.cr:14: instantiating 'Board#save()'

b.save
  ^~~~

in ./libs/kemalyst-model/kemalyst-model.cr:173: instantiating 'Kemalyst::Adapter::Sqlite#update(String, Hash(String, String), (Int32 | Int64), Hash(String, Int32 | Time | Nil))'

          db.update(@@table_name, self.class.fields, value, params)
             ^~~~~~

in ./libs/kemalyst-model/adapter/sqlite.cr:110: no overload matches 'Hash(String, Int32 | Time | Nil)#[]=' with types String, String
Overloads are:
 - Hash(K, V)#[]=(key : K, value : V)

      params["id"] = "#{id}"

I looked into spec and I feel surprised that there isn't any integer field covered :octocat:

Hi,
There is a known issue related to the SQLite adapter. The driver was rewritten and built using its own adapter pattern which will be difficult/ugly if I integrate as is.
Regarding specs per type, it could definitely use more specs. Any help is appreciated.
Dru
Sent from my iPhone

On Sep 6, 2016, at 3:20 PM, Mathieu Robardey<EMAIL_ADDRESS>wrote:
Hi,
I'm trying to setup INTEGER field in sql_mapping, but look like buggy.
class Board < Kemalyst::Model
adapter sqlite
sql_mapping({
user_id: ["INTEGER", Int32]
})
end
b = Board.new
b.user_id = 42
b.save
When saving, I'm getting :
Error in ./app/models/board.cr:14: instantiating 'Board#save()'
b.save
^~~~
in ./libs/kemalyst-model/kemalyst-model.cr:173: instantiating 'Kemalyst::Adapter::Sqlite#update(String, Hash(String, String), (Int32 | Int64), Hash(String, Int32 | Time | Nil))'
      db.update(@@table_name, self.class.fields, value, params)
         ^~~~~~

in ./libs/kemalyst-model/adapter/sqlite.cr:110: no overload matches 'Hash(String, Int32 | Time | Nil)#[]=' with types String, String
Overloads are:

Hash(K, V)#[]=(key : K, value : V)
params["id"] = "#{id}"
I looked into spec and I feel surprised that there isn't any integer field covered

—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or mute the thread.

In fact the sqlite3 adapter work very well if I use the driver from old repo
  sqlite3:
    github: manastech/crystal-sqlite3
    commit: 135f33d9eac82c63a48b14942c8eff647c070410

I found that the error happen if there's no ["VARCHAR(255)", String] defined in sql_mapping

That is very useful information.  I didn’t realize that repository was still available.
Regarding the type cast error, I never tested without a string so I will look into adding that test scenario.
Thanks!

On Sep 7, 2016, at 6:45 AM, Mathieu Robardey<EMAIL_ADDRESS>wrote:
In fact the sqlite3 adapter work very well if I use the driver from old repo
sqlite3:
github: manastech/crystal-sqlite3
commit: 135f33d9eac82c63a48b14942c8eff647c070410
I found that the error happen if there's no ["VARCHAR(255)", String] defined in sql_mapping
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub https://github.com/drujensen/kemalyst-model/issues/7#issuecomment-245285061, or mute the thread https://github.com/notifications/unsubscribe-auth/AABJHsJqcQt-PD8Pcmx-NNy6H0y-KjyQks5qnsAXgaJpZM4J2WCd.

I ran another issue when fetching existing rows :
          model.user_id = String.new ( result[1] as Slice(UInt8) )
                ^~~~~~~

no overload matches 'Board#user_id=' with type String
Overloads are:
 - Board#user_id=(user_id : Int32 | ::Nil)

that come from the from_sql method. After looking at the source, I don't understand the use case of the condition at line #60
        if result[{{i}}].class == Slice(UInt8) && {{types[1].id}} == String
          model.{{name.id}} = String.new ( result[{{i}}] as Slice(UInt8) )
        else
          model.{{name.id}} = result[{{i}}] as? {{types[1].id}}
        end

After some debug, the result[{{i}}].class and {{types[1].id}} for the user_id field are Int32
So it should look like Int32 == Slice(UInt8) && Int32 == String and should return false, very strange condition result
For now I let model.{{name.id}} = result[{{i}}] as? {{types[1].id}} alone and seems to work but maybe you encountered other cases?

Very strange.
When I first wrote this using earlier versions of Crystal, it handled the type conversion automatically using Union types, so the mapping was simple.
To support later versions, I had to explicitly add the type to the sql_mapping, but as you can see, that didn’t work for the SQLLite driver and String.
I think this is kludgy.  It could use some refactoring and a better design for handling types.

On Sep 7, 2016, at 8:09 AM, Mathieu Robardey<EMAIL_ADDRESS>wrote:
I ran another issue when fetching existing rows :
      model.user_id = String.new ( result[1] as Slice(UInt8) )
            ^~~~~~~

no overload matches 'Board#user_id=' with type String
Overloads are:

Board#user_id=(user_id : Int32 | ::Nil)
that come from the from_sql method. After looking at the source, I don't understand the use case of the condition at line #60
 if result[{{i}}].class == Slice(UInt8) && {{types[1].id}} == String
   model.{{name.id}} = String.new ( result[{{i}}] as Slice(UInt8) )
 else
   model.{{name.id}} = result[{{i}}] as? {{types[1].id}}
 end

After some debug, the result[{{i}}].class and {{types[1].id}} for the user_id field are Int32
So it should look like Int32 == Slice(UInt8) && Int32 == String and should return false, very strange condition result
For now I let model.{{name.id}} = result[{{i}}] as? {{types[1].id}} alone and seems to work but maybe you encountered other cases?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub https://github.com/drujensen/kemalyst-model/issues/7#issuecomment-245311813, or mute the thread https://github.com/notifications/unsubscribe-auth/AABJHgcvJXs84ED6dv8kkn34HvRNE9Gvks5qntOogaJpZM4J2WCd.

I just tested with postgres and the same behavior occurs

This also happens with the MySQL adapter.
The sql_mapping in company.cr
  sql_mapping({
    name: ["VARCHAR(256) NOT NULL", String],
    budget_cents: ["INTEGER NOT NULL", Int32],
  })

# Error when compiling:

no overload matches 'Company#budget_cents=' with type String
Overloads are:
 - Company#budget_cents=(budget_cents : Int32 | ::Nil)

# in macro 'sql_mapping' .../libs/kemalyst-model/kemalyst-model.cr:34, line 37:

   1.
   2.
   3.     # Table Name
   4.     @@table_name = "companys"
   5.     #Create the properties
   6.     property id : (Int32 | Int64 | Nil)
   7.
   8.       property name : String?
   9.
  10.       property budget_cents : Int32?
  11.
  12.
  13.     property created_at : Time?
  14.     property updated_at : Time?
  15.
  16.
  17.     # Create the from_sql method
  18.     def self.from_sql(result)
  19.       model = Company.new
  20.
  21.       # hack around different types for Pg and Mysql drivers
  22.       unless model.id = result[0].as?(Int32)
  23.         model.id = result[0].as?(Int64)
  24.       end
  25.
  26.
  27.         # Need to find a way to map to other types based on SQL type
  28.         if result[1].class == Slice(UInt8) && String == String
  29.           model.name = String.new ( result[1].as(Slice(UInt8)) )
  30.         else
  31.           model.name = result[1].as?(String)
  32.         end
  33.
  34.
  35.         # Need to find a way to map to other types based on SQL type
  36.         if result[2].class == Slice(UInt8) && Int32 == String
> 37.           model.budget_cents = String.new ( result[2].as(Slice(UInt8)) )
  38.         else
  39.           model.budget_cents = result[2].as?(Int32)
  40.         end
  41.

Release 0.2.0 with new Crystal DB Drivers.

Thanks! 👍 😄


Dao login component

Please checkout /sign-in to see the component.

Created first iteration of log in component.
used a placeholder eclipse image
placeholder color palette: used the orange given in the theme sheet to match the image.
-placeholder refs to routes like: /forgot-password and /signup.

Images attached below:

Overall great job though!

got it, thank you so much for providing these feedback! I'll start working on these changes!

New updates:
Video:
https://github.com/user-attachments/assets/cdfa7341-2c6d-465f-a0d9-4978e1a02d66
Image:

I like the updates! I agree with Dessy on waiting for the design team to have input but I think the only thing I would suggest is just making the login/magazine cover component perhaps cover the entire screen just to reduce the amount of whitespace. Other than that this looks great!


Parsing original IP header within ICMP error message payload

The following line in the files below assumes that sizeof(struct icmp) == 8):
struct ip *ip_inner = (struct ip *) &icmp[1];
https://github.com/zmap/zmap/blob/master/src/probe_modules/module_icmp_echo_time.c#L129
https://github.com/zmap/zmap/blob/master/src/probe_modules/module_icmp_echo.c#L116
This does not correctly extract the original IP header within ICMP error message payload.
I think this should be:
struct ip ip_inner = (struct ip) ((char *)icmp + 8);
// Assuming here that ICMP header is 8 bytes long which is the case for ICMP error messages

Fixed by #424


How can I decrypt a symmetrically encrypted properties programmatically?

I have a suite of different applications that were not originally written in Spring. I'm in the process of implementing a config server to externalize the properties as well as moving legacy processes to Spring boot. I'd like to have the config server send the properties encrypted and have the clients (both converted Spring boot projects and legacy Java applications) decrypt the properties but can't seem to get symmetrical decryption working for the non spring boot applications.

If the application is not using Spring Cloud Config than there is nothing we can do to help.  The Spring Cloud CLI could be used to decrypt it but I am not sure how much help that would be in you legacy Java apps.

Closing due to age of the question. If you would like us to look at this issue, please comment and we will look at re-opening the issue.


Shift + def or class with double LMB = select whole function or class

Shift + def or class with double LMB = select whole function or class

Should already be possible using expand selection


Bounces and BCC Field

When you send emails with BCC field, it does not show who you sent it to. How would you be able to get that to show? And is there a way to find out if there are any emails bouncing?

Sorry BCC recording is not supported in gmail API outgoing mail log. Will revisit later


Color blind friendly palette

check to make sure color palettes are color blind friendly (esp. categorical position view)

ok for now?


Add KerbalScienceExchange from Kerbal Stuff

This pull request was automatically generated by Kerbal Stuff on behalf of SpaceTiger, to add KerbalScienceExchange to CKAN.
Please direct questions about this pull request to SpaceTiger.

Closing in favour of https://github.com/KSP-CKAN/NetKAN/pull/706


Provide a public API to directly process nodes and update styles

Use case
The watch mode (backed by a mutation observer) might not recognize template and Shadow DOM changes. Therefore we need to provide an API to manually process nodes and update the styles.
API
Currently, windify is a function:
(options) => Promise<void>

I suggest to return a general side effecting API instead of void:
(options) => Promise<(...nodes) => Promise<void>>

Note: this is some kind of extension API each module (like windify, candid etc.) should support

windify(options).then(process => ...)  is used to  chain windify, e.g. on page load.
process(nodes) internally first calls nodes.forEach(node => proccess(node)) and then scheduleUpdate()

Solved with 774b81fe430693fb3d824aa2e90aad4d1267ddf9


Clarify wording for the main block in the page template

Clarify what the main block overrides so that it also includes 'content' and 'beforeContent' block, which aims to resolve some of the confusion around how the diagram relates to this block.
Fixes #802

You can preview this change here:
Built with commit 51aa0923d5c9f363e2f9cb9873eef04f57389726
https://deploy-preview-812--govuk-design-system-preview.netlify.com

You can preview this change here:
Built with commit 3bc88c05bcec224f305da9bbcde6c8bed040c3cc
https://deploy-preview-812--govuk-design-system-preview.netlify.com

Is it fair to say that in most cases you shouldn't need to override this block? If so, maybe we should add that?

@36degrees yeah I would imagine the majority of people have no need to worry about this block, it's there to ensure people have the flexibility if they really need to do something like a technical documentation format for example.


chore(ci): add all checks in bors config

Signed-off-by: Alex Chi<EMAIL_ADDRESS>What's changed and what's your intention?
As title
Checklist

[x] I have written necessary docs and comments
[x] I have added necessary unit tests and integration tests

Refer to a related PR or issue link (optional)

bors try

bors ping

bors try


Added Some Engineering Colleges

Description
Added Some more engineering colleges

Issue Ticket Number
Fixes #(issue_number)

Checklist:

✅ I have followed the contributing guidelines of this project as mentioned in CONTRIBUTING.md
✅ I have cross-checked that the dataset I'm uploading is not present in the project
✅ I have cross-checked that the dataset is present in the correct folder

Hey @Pmanish47
Congrats 🎉, your PR got merged. To be eligible for the swags from ClueLess. Follow these steps.

Star this repository. ⭐
SignIn / SignUp in [ClueLess Website](https://www.clueless.tech/) .
Go to the profile section from the top right-hand corner.

Comment your profile URL under this comment tagging the person who merged your PR.

That’s it. Follow the leaderboard!
And don’t forget to share your achievement with your friends.


Create fixture equivalent of EnvironmentVariableLoader

We should be able to use an environment_variables, or similar, fixture in tests to fetch and sanitize environment variables for tests. This should work in the same way the EnvironmentVariableLoader decorator works today.
This fixture would make migrating to the test proxy significantly easier for the ML team, and would go well with the recently-added recorded_test and variable_recorder fixtures.

Label prediction was below confidence level 0.6 for Model:ServiceLabels: 'Azure.Identity:0.18984485,Tables:0.17527221,Azure.Core:0.08281956'

Resolved by https://github.com/Azure/azure-sdk-for-python/pull/25638.


Boo highlighter does not like: ''' .

(Original issue 679 created by None on 2011-07-18T16:31:56.998612+00:00)
The Boo highlighter (at least, the version being run at github) doesn't seem to like the sequence '''.
Example code: https://github.com/bamboo/unityscript/blob/master/src/UnityScript/Parser/UnityScriptLexer.boo
(everything after one line is pink, for a good while)

(Original issue 679 last updated on 2012-02-05T08:13:57.406076+00:00)
(Issue automaticaly closed due to status in Bitbucket: resolved)

(Original comment by birkenfeld on 2012-02-05T08:13:57.403599+00:00)
Closes #679: fix Boo string regexes.
→ <<cset<PHONE_NUMBER>96>>


Creating a new cell by clicking a widget button is somehow buggy

I've been trying to create a widget button which can be used to create a new cell.
Unfortunately, after clicking the button, the new cell is created only after I execute another cell.
The following minimal example (tested on TryJupyter) recreates to problem (I know that the imports are deprecated):
from IPython.html import widgets
from IPython.display import display

def but1(b):
    get_ipython().set_next_input('NewParameterCell',replace=False)

Button1 = widgets.Button(description='Restart')
Button1.on_click(but1)
display(Button1)

A quick screen:

Is there a workaround to create new cells when clicking a widget button? Moreover, I sometimes meet NameErrors with get_ipython not found in this context.

Hi @jakobgager ,
Unfortunately that's a part of a long standing issue that's related to how code outside of the context of a cell is executed: https://github.com/ipython/ipython/issues/5006  Related #44 .
The best way to do what you're trying to accomplish is to use Javascript.  The notebook model lives in the front-end, so you have full control of it there.  You can use display to publish the Javascript.
Cheers,
Jon

Thanks for the hint to ipython/ipython#4983 which is exactly the same question including your javascript based solution. Closing here.
Unfortunately, I lost track of jupyter development, since it got more and more javascript centric. I never get warm with Javascript :frowning:. Anyway, thanks a lot!

@jakobgager yeah, I haven't seen you for a while!  Thanks for dropping by.  If you feel like getting friendly with Javascript, would love a PR to fix the root issue (which is actually almost entirely in IPython, not the notebook front-end)! ;)


Unable to work in golang1.21.0

No error was reported when exporting the Excel file

Thanks for your feedback. This issue is duplicated with #1465, I have feedback with the Go team, and this issue is still being addressed in progress. I closed this and merged it to the issue #1456 to discuss this problem.

This was duplicated with issues #1465, #1595, #1603, #1608, #1614, #1619 and #1620. There are some incompatible changes in the Go 1.21.0 encoding/xml library. I have given feedback to the Go team and created a patch for it (golang/go#61881), and still waiting for a reply. The Go team has added golang/go#62051 to the Go 1.21.1 milestone. I suggest using the Go 1.20.7 and previous Go released version or waiting for the next Go minor releases.

This was duplicated with issues #1465, #1603, #1608, #1614, #1619, #1620 and #1621. There are some incompatible changes in the Go 1.21.0 encoding/xml library. I have given feedback to the Go team and created a patch for it (golang/go#61881), and still waiting for a reply. The Go team has added golang/go#62051 to the Go 1.21.1 milestone. I suggest using the Go 1.20.7 and previous Go released version or waiting for the next Go minor releases.


Unable to pause request or receive dispatch callback during OnHttpRequestBody

Describe the bug / error
Hello :wave:
Wondering if this is an expected/known limitation, but I'm having an issue blocking the request from going to the upstream during OnHttpRequestBody.
Calling proxywasm.DispatchHttpCall and returning Action.Pause during OnHttpRequestBody does not stop the request from going to the upstream.
At the bottom of this issue I've pasted a small repro example filter + envoy logs showing the issue.
I've tried similar code in OnHttpRequestHeaders and I'm successfully able to wait on the dispatched call to return.
What is your Envoy/Istio version?
Envoy: 1.21.1 2022-02-21
What is the SDK version?
v0.17.0
TinyGo Version:
 tinygo version
tinygo version 0.22.0 darwin/amd64 (using go version go1.17.4 and LLVM version 13.0.0)

Example filter showing issue
package main

import (
	"github.com/tetratelabs/proxy-wasm-go-sdk/proxywasm"
	"github.com/tetratelabs/proxy-wasm-go-sdk/proxywasm/types"
)

var (
	Version string
)

type vmContext struct {
	// Embed the default VM context here,
	// so that we don't need to reimplement all the methods.
	types.DefaultVMContext
}

type pluginContext struct {
	// Embed the default plugin context here,
	// so that we don't need to reimplement all the methods.
	types.DefaultPluginContext
}

type httpContext struct {
	// Embed the default http context here,
	// so that we don't need to reimplement all the methods.
	types.DefaultHttpContext
	contextID   uint32
	bodyCapSize int
	url         string
}

func main() {
	proxywasm.SetVMContext(&vmContext{})
}

// Override types.DefaultVMContext.
func (*vmContext) NewPluginContext(contextID uint32) types.PluginContext {
	return &pluginContext{}
}

// Override types.DefaultPluginContext.
func (ctx *pluginContext) NewHttpContext(contextID uint32) types.HttpContext {
	return &httpContext{
		contextID: contextID,
	}
}

// Override types.DefaultHttpContext.
func (ctx *httpContext) OnHttpRequestHeaders(numHeaders int, endOfStream bool) types.Action {
	// we need to extract url for response capture, even if request capture is disabled
	//try go get scheme header first
	scheme, _ := proxywasm.GetHttpRequestHeader(":scheme")
	// if scheme not present, get x-forwarded-proto
	if scheme == "" {
		scheme, _ = proxywasm.GetHttpRequestHeader("x-forwarded-proto")
	}

	host, _ := proxywasm.GetHttpRequestHeader(":authority")

	path, _ := proxywasm.GetHttpRequestHeader(":path")
	if scheme != "" && host != "" && path != "" {
		ctx.url = scheme + "://" + host + path
		proxywasm.LogDebugf("Captured url: %s", ctx.url)
	}

	return types.ActionContinue
}

func (ctx *httpContext) OnHttpRequestBody(bodySize int, endOfStream bool) types.Action {
	ctx.bodyCapSize += bodySize
	if !endOfStream {
		proxywasm.LogInfo("returning pause OnHttpRequestBody")
		return types.ActionPause
	}
	proxywasm.LogInfo("Processing with full HttpRequestBody")

	bodyData, err := proxywasm.GetHttpRequestBody(0, ctx.bodyCapSize)
	if err != nil {
		proxywasm.LogErrorf("failed to get request body: %v", err)
	}

	duringReqBodyCallback := func(numHeaders, bodySize, numTrailers int) {
		proxywasm.LogInfo("In duringReqBodyCallback")
		hs, err := proxywasm.GetHttpCallResponseHeaders()
		if err != nil {
			proxywasm.LogCriticalf("failed to get response body: %v", err)
			return
		}

		for _, h := range hs {
			proxywasm.LogInfof("response header from %s: %s: %s", "some-local-cluster", h[0], h[1])
		}

		b, err := proxywasm.GetHttpCallResponseBody(0, bodySize)
		if err != nil {
			proxywasm.LogCriticalf("failed to get response body: %v", err)
			proxywasm.ResumeHttpRequest()
			return
		}
		proxywasm.LogInfof("check req body: %v", string(b))
		// do something with req body & check a field
		err = proxywasm.ResumeHttpRequest()

		if err != nil {
			return
		}
	}

	headers := make([][2]string, 5)
	headers[0] = [2]string{"content-type", "text/plain"}
	headers[1] = [2]string{":method", "POST"}
	headers[2] = [2]string{":path", "/my_endpoint"}
	headers[3] = [2]string{":authority", "localhost"}
        headers[4] = [2]string{"http.url", ctx.url}

	proxywasm.LogError("About to dispatch call")
	_, err = proxywasm.DispatchHttpCall("some-local-cluster", headers, bodyData, nil, 5000, duringReqBodyCallback)
	if err != nil {
		proxywasm.LogErrorf("failed to dispatch extension call: %v", err)
	}

	proxywasm.LogInfo("Returning ActionPause from OnHttpRequestBody - end of method - expecting callback to be called")
	return types.ActionPause
}

func (ctx *httpContext) OnHttpResponseHeaders(numHeaders int, endOfStream bool) types.Action {
	proxywasm.LogInfo("In OnHttpResponseHeader call")
	return types.ActionContinue
}

Envoy logs when I send a request:
[2022-04-29 14:06:56.899][1489852][info][wasm] [source/extensions/common/wasm/context.cc:1172] wasm log: returning pause OnHttpRequestBody
[2022-04-29 14:06:56.899][1489852][info][wasm] [source/extensions/common/wasm/context.cc:1172] wasm log: Processing with full HttpRequestBody
[2022-04-29 14:06:56.899][1489852][error][wasm] [source/extensions/common/wasm/context.cc:1178] wasm log: About to dispatch call
[2022-04-29 14:06:56.900][1489852][info][wasm] [source/extensions/common/wasm/context.cc:1172] wasm log: Returning ActionPause from OnHttpRequestBody - end of method - expecting callback to be called
[2022-04-29 14:06:56.902][1489852][info][wasm] [source/extensions/common/wasm/context.cc:1172] wasm log: In OnHttpResponseHeader call

Note that the call is dispatched, but the callback function is never invoked & the request continues to the upstream application.

This is the limitation of the current implementation in Envoy/Prxoy-Wasm C++ host.  See for example  https://github.com/proxy-wasm/proxy-wasm-cpp-host/issues/143 https://github.com/proxy-wasm/proxy-wasm-cpp-sdk/issues/62
I don't think this is actionable from SDK side, so I'm closing this for now.
Anyway thank you for rasigin this up!


XDL on Firefox

A lot of guys using Firefox too, please add XDL to Firefox. NURE students will be grateful to you.

Hello. Yes, this is true, indeed many people use Firefox and initially the extension should have been released to all popular browsers, including Firefox. But there is a reason for this.
Apart from the fact that firefox uses a slightly different API for extensions than chromium browsers, it also does not support MANIFEST V3 (https://blog.mozilla.org/addons/2021/05/27/manifest-v3-update/) . While the Chrome Web Store around the beginning of this year does not accept extensions developed under MANIFEST V2 and below (https://developer.chrome.com/docs/extensions/mv3/intro/mv3-overview/).
The current version of XDL uses manifest v3. The latest version of the extension that worked on manifest v2 is XDL v1.0.2. These versions are very different from each other. That is why, unfortunately, we do not have the technical ability to support both options. It remains only to wait for manifest v3 to become available in Firefox.


Form redirect if free_download == "No"

Functionality for form redirect to confirmation.php upon hitting submit and setting $metaSubmitted to true.
Additionally, need to implement identical changes to record_DO.php.

basically, the trigger for the button on the bottom needs to redirect the user to the update page which will tell the user that their data has been entered and sent or whatever they requested and notify them that an email was sent.
we can't let them do this from the upload page since they would be submitting data without the metadata.
need functionality for multiple files.

I'm completely lost right now. Let's sync my evening/your morning of the 13th.

this works now.