ToDo: diffs FF73-FF74

FF74 is scheduled for release Mar. 10th
FF74 release notes [when ready]
FF74 for developers
FF74 compatibility
FF74 security advisories

[ ] weren't we going to add a note about ion/jit ? 1599226 [FF75 but we could do it in this issue so we don't forget]

72 diffs ( 46 new, 11 gone, 15 different )
new in v74.0:

[x] pref("geo.provider.network.url", "https://www.googleapis.com/geolocation/v1/geolocate?key=%GOOGLE_LOCATION_SERVICE_API_KEY%"); - https://github.com/ghacksuserjs/ghacks-user.js/commit/24777c9ac2013a17751919f090f9696a1a413456
[x] pref("privacy.userContext.newTabContainerOnLeftClick.enabled", false); 1606265 - https://github.com/ghacksuserjs/ghacks-user.js/commit/6f7e09ad431966a78f8b78e57de7b024f3547e2c
FYI: pref("browser.tabs.allowTabDetach", true); - for people who accidentally tear tabs off :)

pref("browser.newtabpage.activity-stream.feeds.recommendationproviderswitcher", true);
pref("dom.textMetrics.actualBoundingBox.enabled", true);
pref("layout.css.serialize-grid-implicit-tracks", true);

removed, renamed or hidden in  v74.0:

[x] pref("geo.wifi.uri", "https://www.googleapis.com/geolocation/v1/geolocate?key=%GOOGLE_LOCATION_SERVICE_API_KEY%"); 0203 - https://github.com/ghacksuserjs/ghacks-user.js/commit/24777c9ac2013a17751919f090f9696a1a413456

[x] geo.wifi.logging.enabled also renamed to geo.provider.network.logging.enabled - https://github.com/ghacksuserjs/ghacks-user.js/commit/24777c9ac2013a17751919f090f9696a1a413456

[x] pref("privacy.userContext.longPressBehavior", 0); 1704 1606265 - https://github.com/ghacksuserjs/ghacks-user.js/commit/6f7e09ad431966a78f8b78e57de7b024f3547e2c
[x] pref("webgl.disable-extensions", false); 2012 - 1477756 https://github.com/ghacksuserjs/ghacks-user.js/commit/b6e2a3f64f030fa3586984f294931d3d0334cfbd

changed in  v74.0:

pref("security.tls.version.min", 3); // prev: 1 [is being rolled back remotely]

[ ] consider setting security.tls.version.enable-deprecated=false to make re-enabling TLS1.0/1.1 per-session only

[ ] permissions.delegation.enabled [FF73+]

ignore
click me for details
==NEW
pref("apz.touch_acceleration_factor_x", "1.0");
pref("apz.touch_acceleration_factor_y", "1.0");
pref("browser.newtabpage.activity-stream.discoverystream.personalization.modelKeys", "nb_model_arts_and_entertainment, nb_model_autos_and_vehicles, nb_model_beauty_and_fitness, nb_model_blogging_resources_and_services, nb_model_books_and_literature, nb_model_business_and_industrial, nb_model_computers_and_electronics, nb_model_finance, nb_model_food_and_drink, nb_model_games, nb_model_health, nb_model_hobbies_and_leisure, nb_model_home_and_garden, nb_model_internet_and_telecom, nb_model_jobs_and_education, nb_model_law_and_government, nb_model_online_communities, nb_model_people_and_society, nb_model_pets_and_animals, nb_model_real_estate, nb_model_reference, nb_model_science, nb_model_shopping, nb_model_sports, nb_model_travel");
pref("browser.newtabpage.activity-stream.discoverystream.personalization.version", 1);
pref("browser.urlbar.update1.interventions", false);
pref("browser.urlbar.update1.searchTips", false);
pref("browser.urlbar.update2.expandTextOnFocus", false);
pref("canvas.mozgetasfile.enabled", false);
pref("devtools.performance.recording.preset", "web-developer");
pref("dom.about_newtab_sanitization.enabled", false);
pref("dom.image-lazy-loading.enabled", false);
pref("dom.input_events.beforeinput.enabled", false);
pref("dom.security.skip_about_page_csp_allowlist_and_assert", false);
pref("dom.security.skip_about_page_has_csp_assert", false);
pref("dom.security.skip_html_fragment_assertion", false);
pref("dom.security.skip_remote_script_assertion_in_system_priv_context", false);
pref("dom.textMetrics.baselines.enabled", false);
pref("dom.textMetrics.emHeight.enabled", false);
pref("dom.textMetrics.fontBoundingBox.enabled", false);
pref("dom.worker.console.dispatch_events_to_main_thread", true);
pref("extensions.experiments.enabled", false);
pref("full-screen-api.exit-on.windowOpen", true);
pref("full-screen-api.exit-on.windowRaise", true);
pref("geo.provider.network.timeout", 60000);
pref("gfx.webrender.debug.tile-cache-logging", false);
pref("gfx.webrender.enable-capture", false);
pref("gfx.webrender.enable-item-cache", false);
pref("gfx.webrender.enable-multithreading", true);
pref("javascript.options.property_error_message_fix", false);
pref("layout.css.comparison-functions.enabled", false);
pref("layout.css.prefixes.columns", false);
pref("media.videocontrols.picture-in-picture.keyboard-controls.enabled", false);
pref("network.socket.forcePort", "");
pref("places.search.matchDiacritics", false);
pref("privacy.dynamic_firstparty.limitForeign", false);
pref("privacy.restrict3rdpartystorage.expiration_redirect", 900);
pref("privacy.restrict3rdpartystorage.heuristic.redirect", true);
pref("toolkit.shutdown.fastShutdownStage", 0);
pref("toolkit.shutdown.lateWriteChecksStage", 0);
pref("webgl.out-of-process", false);

==REMOVED or HIDDEN
pref("browser.urlbar.update1.expandTextOnFocus", false);
pref("devtools.toolbox.content-frame", true);
pref("extensions.contentblocker.enabled", false);
pref("extensions.legacy.enabled", false);
pref("geo.wifi.xhr.timeout", 60000);
pref("javascript.options.parser_defer_allocation", false);
pref("layout.css.parsing.parallel", true);
pref("signon.management.page.enabled", true);

==CHANGED
pref("browser.tabs.documentchannel", true); // prev: false
pref("browser.tabs.remote.separatedMozillaDomains", "addons.mozilla.org,accounts.firefox.com"); // prev: "addons.cdn.mozilla.net,addons.mozilla.org,accounts.firefox.com"
pref("browser.tabs.remote.useCORP", true); // prev: false
pref("corroborator.enabled", true); // prev: false
pref("dom.missing_prop_counters.enabled", true); // prev: false
pref("dom.security.featurePolicy.enabled", true); // prev: false
pref("dom.serviceWorkers.parent_intercept", true); // prev: false
pref("gfx.webrender.enable-low-priority-pool", true); // prev: false
pref("layout.css.outline-style-auto.enabled", true); // prev: false
pref("layout.css.text-underline-position.enabled", true); // prev: false
pref("layout.css.use-counters.enabled", true); // prev: false
pref("layout.css.use-counters-unimplemented.enabled", true); // prev: false
pref("media.peerconnection.ice.obfuscate_host_addresses", true); // prev: false
pref("webgl.default-low-power", true); // prev: false

some bugzilla tickets

apz.touch_acceleration_factor_x
Bug 1605755 Add touch acceleration

apz.touch_acceleration_factor_y
Bug 1605755 Add touch acceleration

browser.newtabpage.activity-stream.discoverystream.personalization.modelKeys
Bug 1615734 - Update v2 models
Bug 1612337 - Moving to ff prefs

browser.newtabpage.activity-stream.discoverystream.personalization.version
Bug 1612337 - Moving to ff prefs

browser.tabs.allowTabDetach
Bug 616130 - Add option to disable tab detaching

browser.tabs.documentchannel
Bug 1610888 - Disable DocumentChannel and SW-e10s.
Bug 1596682 - Allow DocumentChannel to ride the trains.

browser.tabs.remote.separatedMozillaDomains
Bug 1582132 - Remove addons.cdn.mozilla.net from the list of separatedMozillaDomains
Bug 1556655 - Add addons.cdn.mozilla.net to the list of separatedMozillaDomains

browser.tabs.remote.useCORP
Bug 1602363 - Also pref on Cross-Origin-Resource-Policy for Android
Bug 1602363 - Let Cross-Origin-Resource-Policy ride the trains
Bug 1594748 - Enable resab on Nightly except Android;

browser.urlbar.update1.expandTextOnFocus
Bug 1613699 - Rename browser.urlbar.update1.expandTextOnFocus pref to ...update2...
Bug 1603780 - Set browser.urlbar.update1.expandTextOnFocus default value in Nightly.
Bug 1601339 - Disable expandTextOnFocus.
Bug 1599784 - Enable update1 prefs by default.
Bug 1597698 - Move all megabar prefs under a urlbar.update1 branch.

browser.urlbar.update1.interventions
Bug 1613608 - Enable Interventions in Nightly but not in xpcshell tests.
Bug 1613608 - Enable Interventions in Nightly.
Bug 1606917 - Port the Interventions experiment into a new provider.

browser.urlbar.update1.restrictTabAfterKeyboardFocus
Bug 1608766 - Disable tabbing through results after focusing the Urlbar with the keyboard, behind a pref.

browser.urlbar.update1.searchTips
Bug 1613869 - Enable urlbar.update1.* prefs on early Beta.
Bug 1609699 - Rename browser.urlbar.searchTips pref to browser.urlbar.update1.searchTips.

browser.urlbar.update2.expandTextOnFocus
Bug 1613699 - Rename browser.urlbar.update1.expandTextOnFocus pref to ...update2...

canvas.mozgetasfile.enabled
Bug 1588980 - Part 1: Hide HTMLCanvasElement.mozGetAsFile behind a preference;

corroborator.enabled
Bug 1608308 - Enable Corroborate.jsm telemetry on release.

devtools.performance.recording.preset
Bug 1597381 - Create profiler presets for about:profiling;

devtools.toolbox.content-frame
Bug 1585747 - Remove devtools preference devtools.toolbox.content-frame

dom.about_newtab_sanitization.enabled
Bug 1609635 - Whitelist about:newtab/home from content sanitization

dom.image-lazy-loading.enabled
Bug 1608905 - Parse the HTMLImageElement.loading attribute.

dom.input_events.beforeinput.enabled
Bug 970802 - part 3: Implement beforeinput event dispatcher and add onbeforeinput event handler attribute

dom.missing_prop_counters.enabled
Bug 1610972 - Enable unimplemented use counters in all channels

dom.serviceWorkers.parent_intercept
Bug 1610888 - Disable DocumentChannel and SW-e10s.
Bug 1588154 - make dom.serviceWorkers.parent_intercept true by default

dom.storage.next_gen
Bug 1608449 - Disable LSNG in 73.

dom.textMetrics.actualBoundingBox.enabled
Bug 1102584 - patch 3 - Enable support for the actualBoundingBox* attributes of TextMetrics.
Bug 1102584 - patch 2 - Implement extended attributes of the TextMetrics object (preffed off by default).

dom.textMetrics.baselines.enabled
Bug 1102584 - patch 2 - Implement extended attributes of the TextMetrics object (preffed off by default).

dom.textMetrics.emHeight.enabled
Bug 1102584 - patch 2 - Implement extended attributes of the TextMetrics object (preffed off by default).

dom.textMetrics.fontBoundingBox.enabled
Bug 1102584 - patch 2 - Implement extended attributes of the TextMetrics object (preffed off by default).

dom.worker.console.dispatch_events_to_main_thread
Bug 1613147 - Console API on worker dispatches messages to the main-thread behind prefs,

extensions.contentblocker.enabled
Bug 1357107 - Remove nsContentBlocker.
Bug 1597541 - Added pref and disabled nsContentBlocker by default.

extensions.experiments.enabled
Bug 1524327 remove MOZ_ALLOW_LEGACY_EXTENSIONS and extensions.legacy.enabled

extensions.legacy.enabled
Bug 1524327 remove MOZ_ALLOW_LEGACY_EXTENSIONS and extensions.legacy.enabled

full-screen-api.exit-on.windowOpen
Bug 1432856 - Added prefs for DOM fullscreen leave on window open or raise.

full-screen-api.exit-on.windowRaise
Bug 1432856 - Added prefs for DOM fullscreen leave on window open or raise.

geo.provider.network.timeout
Bug 1613627 - Rename all 'geo.wifi' related preferences to match the 'geo.provider.' convention and move default values to all.js.

geo.provider.network.url
Bug 1613627 - Rename all 'geo.wifi' related preferences to match the 'geo.provider.' convention and move default values to all.js.

geo.wifi.uri
Bug 1613627 - Rename all 'geo.wifi' related preferences to match the 'geo.provider.' convention and move default values to all.js.

geo.wifi.xhr.timeout
Bug 1613627 - Rename all 'geo.wifi' related preferences to match the 'geo.provider.' convention and move default values to all.js.

gfx.webrender.compositor
Bug 1592509 - Re-enable gfx.webrender.compositor by default on Windows
Bug 1592016 - Enable gfx.webrender.compositor by default on macOS.
Bug 1592044 - Reduce the frequency of IOSurface and framebuffer creation and destruction with the help of a surface pool.
Bug 1604088 - Switch OS compositor off by default on Windows.
Bug 1592509 - Enable gfx.webrender.compositor by default on Windows
Bug 1592150 - Enable support for partial updates in the WebRender OS compositor on macOS.
Bug 1592510 - Make partial updates with WebRender OS compositor work on Windows

gfx.webrender.debug.tile-cache-logging
Bug 1605283 - Improve support for invalidation debugging and testing

gfx.webrender.enable-item-cache
Bug 1558926 - Part 1: Add data structures and pref for display item caching

gfx.webrender.enable-low-priority-pool
Bug 1595708 - Cargo build timings SVG output Freezes the entire browser with WebRender
Bug 1604570 - Enable low priority thread pool on Linux
Bug 1602905 - Enable low priority thread pool on Windows

gfx.webrender.enable-multithreading
Bug 1613167 - Enable/Disable rayon in WebRender via pref.

javascript.options.parser_defer_allocation
Bug 1610340 - Remove deferred allocation switch
Bug 1607930 - Enable deferred allocation mode by default
Bug 1603188 - Add a pref to allow enabling deferred allocation mode by default in the browser

javascript.options.property_error_message_fix
Bug 1259822 - Part 1: Add pref to enable fix for accessing property of null or undefined.

layout.css.comparison-functions.enabled
Bug 1609428 - Implement min() / max() / clamp() for simple css types behind a pref.

layout.css.outline-style-auto.enabled
Bug 1031664 - Enable outline-style: auto.

layout.css.parsing.parallel
Bug 1608907 - Remove layout.css.parsing.parallel.

layout.css.prefixes.columns
Bug 1308636 Part 3 - Remove moz-prefixed aliases for column-gap and CSS multi-column properties.

layout.css.serialize-grid-implicit-tracks
Bug 1599206 - Don't serialize implicit tracks for grid-template properties, as they make the computed style not round-trip.

layout.css.text-underline-position.enabled
Bug 1606997 - Let text-underline-position ride the train.
Bug 770780 - Enable CSS text-underline-position property on Nightly builds.
Bug 770780 - Add support for parsing of the CSS text-underline-position property.

layout.css.use-counters.enabled
Bug 1610972 - Enable unimplemented use counters in all channels

layout.css.use-counters-unimplemented.enabled
Bug 1610972 - Enable unimplemented use counters in all channels

media.peerconnection.ice.obfuscate_host_addresses
Bug 1598001 - Add default value for obfuscate_host_addresses.whitelist pref;
Bug 1588817 - Enable mDNS hostname obfuscation on desktop platforms;
Bug 1554976 - Add plumbing to enable/disable host address obfuscation;

media.videocontrols.picture-in-picture.keyboard-controls.enabled
Bug 1613460 - Only enable keyboard control for PiP in Nightly.
Bug 1602841 - Implement keystroke handling for PiP window for video controls.

network.socket.forcePort
Bug 1596799 - Have a preference to force remote TCP/UDP port remapping for easier local network testing,

permissions.delegation.enabled
Bug 1603674 - Add a new API to check if permission delegation and Feature Policy are enabled
Bug 1600883 - Enable Feature Policy allow attribute and permission delegation by default
Bug 1483631 - Restrict nested permission requests in webrtc with permission delegate
Bug 1610572 - Disable Feature Policy for FF73.

places.search.matchDiacritics
Bug 1606731 - Ignore diacritics when searching the browser history.

privacy.dynamic_firstparty.limitForeign
Bug 1587182 - add limitForeignContexts attribute to support dynamic FPI;

privacy.restrict3rdpartystorage.expiration_redirect
Bug 1507055 - Implement Anti-tracking heuristic for redirects,

privacy.restrict3rdpartystorage.heuristic.redirect
Bug 1507055 - Implement Anti-tracking heuristic for redirects,

privacy.userContext.longPressBehavior
Bug 1606265 - Work on new tab containers menu popup.

privacy.userContext.newTabContainerOnLeftClick.enabled
Bug 1606265 - Work on new tab containers menu popup.

security.tls.version.min
Bug 1606734 - Disable TLS 1.0 and 1.1 by default,
Bug 1579270 - Disable TLS 1.0 and TLS 1.1 in Nightly,

signon.management.page.enabled
Bug 1606888 - remove signon.management.page.enabled

toolkit.shutdown.fastShutdownStage
Bug 1606880 - Implement fast shutdown prefs

toolkit.shutdown.lateWriteChecksStage
Bug 1606880 - Implement fast shutdown prefs

webgl.default-low-power
Bug 1579984 - Default to low-power for WebGL powerPreference.

webgl.disable-extensions
Bug 1477756 - Client-side bindings mirror for precise CC, and merge similar codepaths.

webgl.out-of-process
Bug 1477756 - Initial out-of-process WebGL implementation.

FYI/OT: https://scotthelme.co.uk/crlite-finally-a-fix-for-broken-revocation/

pref("media.peerconnection.ice.obfuscate_host_addresses", true); // prev: false
Nice, now Firefox passes https://browserleaks.com/webrtc without touching media.peerconnection.ice.default_address_only or media.peerconnection.ice.no_host.

OT: @earthlng hah, this is quite interesting

click me - list of cipher suite codes
click me - cipher suite usage
and then click me - bugzilla

I went through all of 1477756 patches and cannot see where webgl.disable-extensions was removed - please advise

Thank you all. I ❤ you. 😄

I went through all of 1477756 patches and cannot see where webgl.disable-extensions was removed - please advise

the title of the actual commit where webgl.disable-extensions was removed is right there in my list of bugzilla tickets:

Bug 1477756 - Client-side bindings mirror for precise CC, and merge similar codepaths.

ie here: https://hg.mozilla.org/mozilla-central/rev/ccfa767dba64#l151.12

Thanks. Well .. F me ... I went through all those patches including D54019 and on each one I used the findbar to search for webgl.disable-extensions and I came up empty - either I searched too fast without the page loading or I had a typo in my copypasta

OT: Ha! 1621732

javascript.options.property_error_message_fix - moved to ignore: this is baking in Nightly only, and flipping it changes your fingerprint (I doubt anyone checks for it, except me: it's been baked into TZP's error hash for a long time while). Not sure why you left it visible
browser.tabs.allowTabDetach - moved to the list to consider:

either: to help mitigate leaking new window sizes even with LBing
or: just as something for 5000s

dom.security.featurePolicy.enabled - moved to the list to consider:

my thinking is that it could be added (enforced on?), as delegation ties in with it, and we could add the two sequentially

I haven't really gone through the test in ignore, but was wondering about a few of them: i.e not saying we add them or anything, but they remind of me of something (e.g when we ignore loads of things because they're flipped off till they bake), or the name makes me want to check them out further. No need to answer, unless you want to save me some time - this is more of a note to myself
currently in ignore

browser.tabs.remote.useCORP - flipped on
corroborator.enabled - flipped on (seen this before but I can't remember WTF it is)
extensions.experiments.enabled - new, default off

everything else in ignore seems fine to ignore

corroborator.enabled - flipped on (seen this before but I can't remember WTF it is)

#791
Basically reads omni.jar on every startup to check its signature then report telemetry.

^ thanks. Whatever "then report telemetry" means exactly, telemetry should be covered by the master switch (I'm not going to bother checking - feel free to do so yourselves), so we're fine to ignore the corroborator pref unless there is something else about it

^ thanks. Whatever "then report telemetry" means exactly, telemetry should be covered by the master switch (I'm not going to bother checking - feel free to do so yourselves), so we're fine to ignore the corroborator pref unless there is something else about it

It uses Services.telemetry.scalarSet, so I think the master telemetry switch covers it.
IMO, this "Corroborator" costs disk I/O even when telemetry is master off-ed, so I would still disable it, but that's me.

IMO we don't need allowTabDetach nor the featurePolicy pref (but add the delegation pref)
While looking at privacy.dynamic_firstparty.limitForeign I saw that we missed a new value 5 for cookieBehavior (2701), added in FF69 (1547813)
The 2 new restrict3rdpartystorage prefs relax the ETP restrictions on storage for certain redirects, to reduce breakage. I assume this only applies if the cookieBehavior is set to 4 or 5 and therefore doesn't affect us since we block all 3rd party cookies and site data.
Reduced breakage is probably something that people who change the cookieBehavior pref appreciate and thus I think we can ignore these 2 prefs.
extensions.experiments.enabled allows DevEdition + nightly users to install Webextensions with "experimental" (ie custom) APIs. Irrelevant for Release users (unless they mod their omni.ja files)

https://www.fxsitecompat.dev/en-CA/docs/2020/tls-1-0-1-1-support-has-been-removed/ - read the update

I would shuffle 1204,1205,1206 all up one number (1207 doesn't exist free-in-use), so this can reside sequentially next to TLS min/max
/* 1203: ensure TLS 1.0 and 1.1 downgrades are session only */
user_pref("security.tls.version.enable-deprecated", false);

Note: if this is a locked value in 74+: see 1617275 then you don't get the button to downgrade
nits? @earthlng

IMO we don't need allowTabDetach

detaching tabs can actually leak real inner window sizes when LBing is on - but it's would pretty much out there as exploitable: first a script would have to catch the stepping in sizes as LBing kicks in on new windows, and secondly, it requires the end user to do something (and outside the web content too) .. so yeah, we can leave it

^^ SGTM

sorry for being MIA - I was super busy guarding my toilet paper reserves ;)

I would ask where are you from... but I would not get an answer... I guess.
Anyway, I hope you are all OK and be safe. 😄

does the ^^ refer to the proposed tls deprecated and does giggling mean it's OK?
how do we want to frame delegated?
dom.textMetrics. (there are three other prefs as well but those are at default false for now)

we should ignore these: in terms of FPing they wouldn't add anything "new" that measureText.width doesn't already do, and disabling the feature is FP'able in itself (and would put you in a tiny group). The solution for all this domrect/textmetrics/webgl is randomizing - use CB or wait for RFP

privacy.dynamic_firstparty.limitForeign I see was moved to ignore - that's fine. Does that mean we don't need to add anything about the confusing extra value for 2701?
do we want to add the ion/jit comment re extensions?
I haven't looked at the other two items left - that AS one and css grid something: feel free to explain if they need including, otherwise I'll take a look when I can

does the ^^ refer to the proposed tls deprecated

yes

does giggling mean it's OK?

what?

[the rest]

IDK and IDC, and frankly I don't want to do this anymore

what?

SGTM ... Silently Giggling To Myself .. but now I realize it's a version of LGTM (looks good to me)

IDK and IDC, and frankly I don't want to do this anymore

Just do what you can, there's no obligation. Even if you do nothing, that's OK - take care of number one first - you've done more than your fair share - so thanks.
I can do the changelogs - but what I can't do is the diffs (just do one at each final release if you can) - unless you can share your scripts / delegate that with someone. Without the diffs, it would hamper quality/knowledge. I would also miss your insights, but at least with diffs there would be other eyes on them.

I'll keep digging... browser.newtabpage.activity-stream.feeds.recommendationproviderswitcher
1544922, D60523 is where they added the RecommendationProviderSwitcher.jsm

RecommendationProviderSwitcher is all the code around switching between two providers, access to the provider, and cleanup of whatever needed in the provider or switcher.

I 99% sure we don't need to worry about this, since AS is not used - but I can never be 100% sure because AS is a constantly changing labyrinth. Also, if you don't use AS then personalization shouldn't even take place, and even if it was collected, it's supposed to be internal. I'm just not entirely sure what is being personalized here (categories for new stories etc is my best guess)
moving that pref to ignore (unless someone comes up with info that we need to disable it)

found an awesome recommend read from Pocket, it looks quite interesting

SGTM ... Silently Giggling To Myself .. but now I realize it's a version of LGTM (looks good to me)

oh, never heard/saw that one.  No guns either. I'm not worried about the virus at all, only about what "The Powers That Shouldn't Be" will do with it.

found an awesome recommend read from Pocket

you faked that, right? really cool if it's real though

it's real

oh, never heard/saw that one

I'm not great with a lot of these online acronyms and often re-look them up - and I don't remember when exactly, maybe 6 to 9 months ago when you used it, I looked it up and I thought that's fuckin weird, but OK, apparently its amusing, cool. But it was so weird, it stuck in my head. And since then, you've used it lots more times, and each time I keep thinking more and more that you might need professional help 😄 .. but now it all makes sense
It's the first result when I search sgtm in google - https://www.urbandictionary.com/define.php?term=SGTM  .. silently giggling...

yeah I can do that

cool 💋

haha, that was a joke

not here ... had to fight off a dozen giant hairy wimmins to get my 9639 rolls. Same deal when I took all the pasta, rice, beans, and whiskey. Spent a fortune on some new assault rifles, uzis, glocks, grenade launchers and a trebuchet - god bless the USA!! (that's a red herring for those who don't get it). Am hunkered down in my bunker like the other 1%ers trying to work out the best way to take advantage of the Shock Doctrine - like 95% facial recognition of people wearing masks - bio-chipping everyone. And free govt handouts for my corporation so I can do buybacks, Going to make a fortune.

I mentioned dom.textMetrics.actualBoundingBox.enabled earlier, and the same goes for layout.css.serialize-grid-implicit-tracks - whatever anyone thinks the FPing threat is, disabling the API/feature is not always the answer. There are already so many ways to measure elements etc. I'm actually struggling to see what the threat is at all in the css one.
Moving them both to ignore - which just leaves the delegation
Anyone got any ideas on where to put it? At a quick glance I was thinking 2600s.

IMO, this "Corroborator" costs disk I/O even when telemetry is master off-ed, so I would still disable it, but that's me.

 Disabling delegation means any prompts for thse will show/use their
 * correct 3rd party origin (and should avoid potential issues with Origin Attributes such as FPI)
 * [1] https://groups.google.com/forum/#!topic/mozilla.dev.platform/BdFOMAuCGW8/discussion */
user_pref("permissions.delegation.enabled", false);

@earthlng nits?

^^ bump .. nits? anyone?

I would drop the stuff in the brackets and add a "Currently applies to ..." on the 1st line.


Stores showing up that I'm not searching for

Im running a snatcher on a VM and I keep getting these messages. It says no store links found but i only have  bestbuy, amazon, newegg, newegg-ca, bestbuy-ca, asus.
[5:03:27 PM] info :: ℹ selected stores: bestbuy, amazon, newegg, newegg-ca, bestbuy-ca, asus
[5:03:27 PM] info :: ℹ selected models: ftw3, ftw3 ultra, xc3 black, xc3, xc3 ultra, tuf, tuf oc, ventus 3x, ventus 3x oc, founders edition
[5:03:27 PM] info :: ℹ selected series: 3080
[5:03:28 PM] warn :: ✖ in order to receive sms alerts, email notifications must also be configured
[5:03:35 PM] warn :: ✖ [amazon-uk] [setup (3080)] :: NO STORE LINKS FOUND
[5:03:35 PM] warn :: ✖ [amazon-uk] [setup (3080)] :: NO STORE LINKS FOUND
[5:03:37 PM] warn :: ✖ [novatech] [setup (3080)] :: NO STORE LINKS FOUND
[5:03:37 PM] info :: ✖ [bestbuy-ca] [msi (3080)] ventus 3x :: OUT OF STOCK
[5:03:38 PM] warn :: ✖ [box] [setup (3080)] :: NO STORE LINKS FOUND
[5:03:39 PM] info :: ✖ [newegg] [asus (3080)] tuf :: OUT OF STOCK
[5:03:40 PM] info :: ✖ [aria] [setup (3080)] :: FOUND 4 STORE LINKS
[5:03:41 PM] info :: ✖ [bestbuy-ca] [evga (3080)] xc3 ultra :: OUT OF STOCK

Fixed in https://github.com/jef/nvidia-snatcher/pull/614

I'm also experiencing this, but I'm also unsure of if this means that stores I deliberately requested to be searched are also not being searched/being overwritten by an "incorrect" list of stores.


csrf token not working for multiple yii projects running on the same host

csrf tokens do not work for multiple yii projects running on the same host even set the config
Project 1 config
'user' => [
'identityCookie' => [
'name' => '_project1User',
'path'=>'/project1/web'
]
],
'session' => [
'name' => '_project1SessionId',
'savePath' => DIR . '/../runtime',
],
Project 2 config
'user' => [
'identityCookie' => [
'name' => '_project2User',
'path'=>'/project2/web'
]
],
'session' => [
'name' => '_project2SessionId',
'savePath' => DIR . '/../runtime',
],
What steps will reproduce the problem?

open a browser tab and go to project 1 (https://<IP_ADDRESS>/project1/web)
open a browser tab and go to project 2 (https://<IP_ADDRESS>/project2/web)
go back the tab of project 1 and csrf does not work and will result in 404 when clicking logout or some links required a form to submit.

What is the expected result?
csrf token can work among different projects under the same host
What do you get instead?
404 not found. I tried to disable csrf and it becomes work.
Additional info

Q
A

Yii version
2.0.29

PHP version
7.2.27

Operating system
Ubuntu 18.04

CSRF protection uses different cookie - you need to adjust https://www.yiiframework.com/doc/api/2.0/yii-web-request#$csrfParam-detail to be different for each project. Or disable enableCsrfCookie.


Can't get any version (above <IP_ADDRESS>717) working?

When I install any version of Nudge, above <IP_ADDRESS>717, Nudge no longer works.
I ran into this issue under 14.5 (and just updated to 14.6 and still have the issue). I'm on an Apple MacBook Pro (M1 Pro), running as an admin user.
I've tested all version above <IP_ADDRESS>717, up to <IP_ADDRESS>760, and having the same issue with all releases.
When I attempt to trigger Nudge via:
/Applications/Utilities/Nudge.app/Contents/MacOS/Nudge
Nudge just hangs. Only way out is to force-quit Nudge.
One thing I've noticed is that, when installing any of the versions above <IP_ADDRESS>717, the following file is no longer being created:
/Users/myusername/Library/Preferences/com.github.macadmins.Nudge.plist
And if I try and run:
defaults delete ~/Library/Preferences/com.github.macadmins.Nudge.plist
I get the following in return (even if the file is actually there, from running Nudge <IP_ADDRESS>717):
Domain (/Users/myusername/Library/Preferences/com.github.macadmins.Nudge.plist) not found.
I've attached console output when I try and trigger Nudge, along with my test .mobileconfig (very basic, just for testing). The .mobileconfig is being deployed via Jamf Now (also tested by manually installing).
Hoping someone might be able to help?
Thanks,
Kristin.
nudge-files.zip

Hi Kristin,
Starting with Nudge <IP_ADDRESS>720, by default there is a random delay when Nudge is triggered (either manually or via the launchagent). The reason for that is in the release notes linked above. In your log, near the bottom it reports that a delay of 482 seconds was being applied before Nudge activated.
There are a number of new command line arguments that will help you test Nudge 2.x, including disabling the random delay, spoofing the OS version you're checking against, spoofing the hardware you're checking against, and more.
In your case, if you want to see what Nudge would display on your computer if it was running a prior version of Sonoma, you can enter this command in Terminal to disable the delay and pretend the current OS is 14.4.1:
/Applications/Utilities/Nudge.app/Contents/MacOS/Nudge -simulate-os-version "14.4.1" -disable-random-delay

OK, when I run the above command, how long should I have to wait until the Nudge UI is triggered? I assumed it would be "right away", but maybe it's tied to the LaunchAgent (30 mins)? I ask, because I've tried that (add setting randomDelay to False in the .mobileconfig), but I still don't get the Nudge UI opening (though, I have to admit, I haven't waited for 30 mins to see if it triggers).
So, when it didn't trigger the UI quickly, I assumed that was unrelated to my issue?
The only way I seem to get the UI to show, is to run that command (or similar), and then launch the Nudge.app (manually, via Finder)?

Correct. This is the intended behavior per the release notes. In production, you also do not want your users all getting nudged at the exact same time. Imagine if there was a bug and throughout all floors of all offices, everyone receives it at the same time.
You can continue to use the CLI option for your testing, but the expectation is randomDelay will occur. You should be getting it immediately with the mobileconfig though. That sounds like a config issue within your MDM. I am going to close this topic as it is expected behavior. Please come to the nudge slack channel if you have more feedback on this.


add Julia compat entry

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Comparison is base (487d6c4) 100.00% compared to head (0e4b0a2) 100.00%.
Report is 1 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff            @@
##              main       #16   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files            1         1
  Lines            3         3
=========================================
  Hits             3         3

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


showing unexpected grid lines with 200'000+ points

when i use heatmapjs render 200 000+ points, unexpected grid line shows.

that's my config:

will nice to get ur feedback!  please~~~~!

how could i remove these grid lines?

that's dataset's problem, not an issue.


[byutv] [ooyala]

Checklist

[x] I'm reporting a broken site support
[x] I've verified that I'm running youtube-dl version 2019.08.02
[x] I've checked that all provided URLs are alive and playable in a browser
[x] I've checked that all URLs and arguments with special characters are properly quoted or escaped
[x] I've searched the bugtracker for similar issues including closed ones

Verbose log

youtube-dl -o "C:/Video/%(title)s.%(ext)s" "https://www.byutv.org/player/fd0ab13f-c37b-44f9-9c43-9489324c0d27/extinct-e106-true-or-false" --verbose
[debug] System config: []
[debug] User config: []
[debug] Custom config: []
[debug] Command-line args: ['-o', 'C:/Video/%(title)s.%(ext)s', 'https://www.byutv.org/player/fd0ab13f-c37b-44f9-9c43-9489324c0d27/extinct-e106-true-or-false', '--verbose']
[debug] Encodings: locale cp1252, fs mbcs, out cp850, pref cp1252
[debug] youtube-dl version 2019.08.02
[debug] Python version 3.4.4 (CPython) - Windows-10-10.0.10586
[debug] exe versions: none
[debug] Proxy map: {}
[BYUtv] extinct-e106-true-or-false: Downloading JSON metadata
ERROR: An extractor error has occurred. (caused by KeyError('dvr',)); please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; type  youtube-dl -U  to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.
Traceback (most recent call last):
  File "C:\Users\dst\AppData\Roaming\Build archive\youtube-dl\ytdl-org\tmpjwvl_v2x\build\youtube_dl\extractor\common.py", line 530, in extract
  File "C:\Users\dst\AppData\Roaming\Build archive\youtube-dl\ytdl-org\tmpjwvl_v2x\build\youtube_dl\extractor\byutv.py", line 78, in _real_extract
KeyError: 'dvr'
Traceback (most recent call last):
  File "C:\Users\dst\AppData\Roaming\Build archive\youtube-dl\ytdl-org\tmpjwvl_v2x\build\youtube_dl\extractor\common.py", line 530, in extract
  File "C:\Users\dst\AppData\Roaming\Build archive\youtube-dl\ytdl-org\tmpjwvl_v2x\build\youtube_dl\extractor\byutv.py", line 78, in _real_extract
KeyError: 'dvr'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\dst\AppData\Roaming\Build archive\youtube-dl\ytdl-org\tmpjwvl_v2x\build\youtube_dl\YoutubeDL.py", line 796, in extract_info
  File "C:\Users\dst\AppData\Roaming\Build archive\youtube-dl\ytdl-org\tmpjwvl_v2x\build\youtube_dl\extractor\common.py", line 543, in extract
youtube_dl.utils.ExtractorError: An extractor error has occurred. (caused by KeyError('dvr',)); please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; type  youtube-dl -U  to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.

Description

byutv download is not working at all in the latest version of youtube-dl, even though the problem was supposedly addressed in https://github.com/ytdl-org/youtube-dl/commit/ab116745020f2edd30de34e8ad7800209cdc4c72

I'm experiencing the same problem, which is distinct from #20574. BYU TV has changed their providers, and now provides keys in the format dash1 and hls1 instead of ooyalaVOD or dvr.
Why was this issue closed, and what does the "DRM" label signify? Can youtube-dl not handle either of these updated formats?


Easy Tables binding is confusing to Mobile Apps developers

In Functions, the "Easy Tables" binding uses the URL of a mobile app, which it looks like can be any table exposed by a App Service mobile app. In Mobile Apps, an "Easy Table" is usually a Node.js backend service, since Easy Tables in the portal doesn't support .NET backend.
This makes "Easy Tables" confusingly overloaded. Instead of Easy Tables we should call it Mobile Tables.

Closing this one, see related issue in script repo. https://github.com/Azure/azure-webjobs-sdk-templates/issues/108

Reactivating. Before I port this bug to the right repo (after failing the first time), we should just decide whether we are likely to take this change.

I was just reading this and it confused the hell out of me :)

@mathewc is it my description that is confusing? I can try to be more clear.

Here's an email thread where this is discussed with Adrian and Paul:
RE Easy Tables.pdf

I've created a new issue with a "Fix to this" here: https://github.com/Azure/azure-webjobs-sdk-templates/issues/139
We'll close this one if we decide to do the rename.


Cannot find node on Windows

This is likely a pathing issue, but running mocha results in
-*- mode: mocha-compilation; default-directory: "c:/Source/MyProject/" -*-
Mocha started at Tue Sep 27 15:13:46

 node node_modules/.bin/mocha --recursive --reporter dot c:/Source/MyProject/tests/client/api/auth.unit.js
module.js:327
    throw err;
    ^

Error: Cannot find module 'c:\Source\MyProject\node'
    at Function.Module._resolveFilename (module.js:325:15)
    at Function.Module._load (module.js:276:25)
    at Function.Module.runMain (module.js:441:10)
    at startup (node.js:139:18)
    at node.js:974:3

Mocha exited abnormally with code 1 at Tue Sep 27 15:13:46

node.exe is in my windows $PATH.
I then tried setting mocha-which-node, with and without an escaped path, and I get the same error.
  '(mocha-which-node "C:\\Program\\ Files\\nodejs\\node.exe")

Where did you set mocha-which-node? Setting it should change the output in the compilation buffer to the path you set it to, did you see that change?
I'm not sure how emacs looks up things on the windows path (I have never used emacs on windows).

@scottaj In my .emacs, so yeah would expect it to work, I'm not sure either.

Can you post the output of the test run buffer after setting that value, so I can see the command it is generating? Are you sure you are setting the variable after the plugin loads so that it is not overriden by the plugin's default?
You may want to try setting the value in the customize UI and see if it sticks then.

Any update on this? I'll close it otherwise.

Same problem here.
I have changed the path of mocha-which-node and I can see the new path in the test buffer, but still not working:
 "c:\Program Files\nodejs\node" node_modules/.bin/mocha --recursive --reporter dot --opts e:/Desarrollo/IGT.POS.WebAdmin/src/WebAdmin/mocha.opts e:/Desarrollo/IGT.POS.WebAdmin/src/WebAdmin/src/app/ui/Login.spec.tsx
module.js:327
    throw err;
    ^

Error: Cannot find module 'c:\Program Files\nodejs\node'
    at Function.Module._resolveFilename (module.js:325:15)
    at Function.Module._load (module.js:276:25)
    at Function.Module.runMain (module.js:441:10)
    at startup (node.js:139:18)
    at node.js:968:3

Any idea?

If you copy that command to your CLI, does it work or give the same error? The error you posted is a nodeJS error, not an error from this plugin. This indicates node actually did run. What is weird is that it looks like it tried to run its own executable, and then blew up doing that.

I've made it work using the following settings:
((nil . (
            (mocha-which-node . "")
            (mocha-command . ".\node_modules\.bin\mocha.cmd")
            (mocha-environment-variables . "NODE_ENV=test")
            (mocha-options . "--recursive --reporter dot -t 5000")
            (mocha-project-test-directory . "test")
            (mocha-reporter . "spec")
            )))

It looks like in windows it's easier to just run the mocha.cmd command installed with mocha than trying to run the script through node.
Thanks for your help and for this great package :-)

@jmhdez any idea how that would translate to 'customize', hoping to avoid having to make a file for every project but have yet to get this package to work unfortunetly

@vidjuheffex the simplest way I found to make it work was to set this vars in .emacs.d to run the mocha installed locally in each project using the mocha.opts for that project.
(setq mocha-command ".\\node_modules\\.bin\\mocha.cmd")
(setq mocha-which-node "")

Works for me! Strangely the exact same values in customize do not work. I also am not sure what you mean by mocha.opts, but I do know that mocha-text-project is working


Apps.ListRepos/Apps.ListUserRepos: Add mercy-preview + nebula-preview headers

What type of PR is this?
feature
What this PR does / why we need it:

mercy-preview: For receiving repository topics
nebula-preview: For visibility information

When calling Apps.ListRepos or Apps.ListUserRepos, the field visibility and topic are always nil.
The reason: Missing headers for developers preview API.
Special notes for your reviewer:
This applies the same fix as in https://github.com/google/go-github/pull/1780
Does this PR introduce a user-facing change?:
None
Additional documentation e.g., usage docs, etc.:

API changes to support internal repository visibility (2019-12-03)

Never mind my last comment.  :joy:  See edit above.

@gmlewis @wesleimp Good to merge? Anything I can do to support?

Thank you, @wesleimp !
Merging.


Creating Task with cio.LogFile fails with no such file or directory even if file exists

Description
Starting a Task on a Container using Go Client and trying to log to file fails with:
2019/08/05 11:54:48 failed to start io pipe copy: containerd-shim: opening file:///tmp/redis.log failed: open file:///tmp/redis.log: no such file or directory: unknown

Even if file esists
I'm using this code https://pastebin.com/5gkWEjaG
Steps to reproduce the issue:

curl -L -o example.go https://pastebin.com/raw/5gkWEjaG
go build example.go
sudo ./example

Describe the results you received:
2019/08/05 11:54:48 failed to start io pipe copy: containerd-shim: opening file:///tmp/redis.log failed: open file:///tmp/redis.log: no such file or directory: unknown

But /tmp/redis.log exists, same error if file not exists
Describe the results you expected:
The container running with output to the specified file
Output of containerd --version:
containerd github.com/containerd/containerd v1.2.7 85f6aa58b8a3170aec9824568f7a31832878b603

Any other relevant information:

Yes, it's up to the caller to create the file first.  You can add a simple:

f, err := os.Create("/tmp/redis.log")
f.Close()

to your code to resolve the issue.

Also i just ran your code

This is because you have a 1.2.7 daemon and LogFile is not supported in that version ( you have the client from master which has that support.)  Update both client and server to master or the 1.3 beta and you will be good to go.


Refactor linear modelling and add new coordinate descent updater

Improvements to linear modelling as discussed in issue #3099

I didn't have much time to review yet, but the restructuring looks nice!
I've updated my branch to working condition, but it wouldn't make much sense to PR it. I'll add my stuff after this would get merged.

Codecov Report

Merging #3103 into master will increase coverage by <.01%.
The diff coverage is 28.14%.

@@             Coverage Diff             @@
##             master   #3103      +/-   ##
===========================================
+ Coverage     43.79%   43.8%   +<.01%
  Complexity      228     228
===========================================
  Files           159     164       +5
  Lines         12507   12568      +61
  Branches        466     466
===========================================
+ Hits           5478    5505      +27
- Misses         6837    6871      +34
  Partials        192     192

Impacted Files
Coverage Δ
Complexity Δ

src/linear/coordinate_common.h
0% <0%> (ø)
0 <0> (?)

src/common/timer.h
47.82% <0%> (ø)
0 <0> (ø)
:arrow_down:

src/gbm/gblinear.cc
13.04% <24.44%> (-0.54%)
0 <0> (ø)

src/linear/updater_shotgun.cc
31.94% <31.94%> (ø)
0 <0> (?)

src/gbm/gblinear_model.h
32.14% <32.14%> (ø)
0 <0> (?)

include/xgboost/linear_updater.h
33.33% <33.33%> (ø)
0 <0> (?)

src/linear/linear_updater.cc
37.5% <37.5%> (ø)
0 <0> (?)

... and 2 more

Continue to review full report at Codecov.

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

One interesting thing I also noticed is that changing the dmatrix column iterator to NOT sort features results in a 2-3x speedup of the entire algorithm. This is due to significantly improved cache utilisation when accessing and modifying the gpair vector. I will push something when I figure out a clean way of implementing it.

changing the dmatrix column iterator to NOT sort features results in a 2-3x speedup of the entire algorithm
Nice! I assume linear boosting does not require a sorted access to features, unlike tree boosting?

Regarding the change in default behaviour with normalisation - I think we don't need a switch as the user can just multiply alpha/lambda by number of training examples. I would consider adding normalisation more like fixing a bug than changing behaviour as i can't think of why you would ever want the unnormalised penalty. I think probably most users would have been unaware that it was not normalised.

While the normalization of likelihood and penalties as in sklearn/glmnet is the most common, other conventions exist out there. What was used in gblinear for a few years was a specific convention, while not without some issues, was not a bug. People were still able to use it and to optimize the penalty factors for their data.
When introducing breaking changes (which, BTW, needs to be marked as such in the NEWS) and not giving an easy option to fall back to the old behavior, at least, you have to be rather specific in describing the change. So, in addition to mentioning that the current convention is consistent with sklearn/glmnet, providing a brief description for how to convert the penalty factors from the previous convention would be a nice thing to do.

I was trying to do some test runs, but something ain't right with the shotgun updater. E.g.:
[1]	train-auc:0.720909	test-auc:0.721105
[2]	train-auc:0.383117	test-auc:0.381982
[3]	train-auc:0.643373	test-auc:0.644198
[4]	train-auc:0.417603	test-auc:0.416076
[5]	train-auc:0.593602	test-auc:0.594589
[6]	train-auc:0.435729	test-auc:0.433470
[7]	train-auc:0.593219	test-auc:0.594222
[8]	train-auc:0.436250	test-auc:0.433684
[9]	train-auc:0.593775	test-auc:0.594641
[10]	train-auc:0.436242	test-auc:0.433523
...

In the same data, AUC was quickly converging to 76% with the old version and with the cyclic or greedy coordinate descent. The random coordinate descent did converge, but with poor AUC ~ 67%.
Other observations that I've got while using it:

could we rename the "linear_updater" parameter to "updater", just as for the gbtree?
also, to keep in spirit with how the updaters are named for gbtree, instead of "updater_shotgun" and "updater_coordinate", could they be named, e.g., as "shotgun" and "coord_descent"? ("coordinate" alone doesn't carry that sense of closure if you get what I mean)
I would prefer renaming "coordinate_selection" to maybe "feature_selector" or "order_selector"? as I would like to reuse this parameter for the shotgun, as well as to keep the "doer" semantics consistency.
Prediction caching does shave-off some time - good idea! And, surely, turning the column sorting off makes things ~2x faster.

That all sounds good. I will try to add some basic tests for shotgun. It's kind of annoying to test because it never gives the same answer.

@khotilov I have added some unit tests for shotgun but am unable to reproduce this divergent behaviour.
Can you provide a reproducible example?

Sure. It's a different simulated d/s, but shotgun still behaves badly:
library(xgboost)
set.seed(1)
n <- 200000
p <- 500
x <- matrix(runif(n*p), n)
b <- rnorm(50)
y = rbinom(n, 1, plogis(x[, 10*(1:50)] %*% b + rnorm(n)))

itr <- sample(n, floor(0.8*n))
dtr <- xgb.DMatrix(x[itr,], label=y[itr])
dts <- xgb.DMatrix(x[-itr,], label=y[-itr])

bst <- xgb.train(data=dtr, watchlist=list(train=dtr, test=dts), nrounds=30,
                 booster='gblinear', objective = "binary:logistic", eval_metric="auc",
                 updater='coord_descent',
                 eta=0.5, nthread = 6, lambda=0.001, alpha=0.001)

[1]	train-auc:0.790928	test-auc:0.794081
[2]	train-auc:0.803214	test-auc:0.805937
[3]	train-auc:0.812966	test-auc:0.815227
[4]	train-auc:0.820719	test-auc:0.822490
...
[30]	train-auc:0.853822	test-auc:0.853279

bst <- xgb.train(data=dtr, watchlist=list(train=dtr, test=dts), nrounds=30,
                 booster='gblinear', objective = "binary:logistic", eval_metric="auc",
                 updater='shotgun',
                 eta=0.5, nthread = 6, lambda=0.001, alpha=0.001)

[1]	train-auc:0.842163	test-auc:0.845236
[2]	train-auc:0.838214	test-auc:0.841844
[3]	train-auc:0.824600	test-auc:0.823935
[4]	train-auc:0.689022	test-auc:0.696358
[5]	train-auc:0.557932	test-auc:0.557538
[6]	train-auc:0.506578	test-auc:0.506170
[7]	train-auc:0.500000	test-auc:0.500000
[8]	train-auc:0.500000	test-auc:0.500000
...
[30]	train-auc:0.500000	test-auc:0.500000

@khotilov this should be fixed now.

Great! I'll PR my additions over the weekend.


Cannot save after ingredient rename

Describe the bug
ingredient save silent fail if you change ingredient name
To Reproduce

open ingredient edit modal
actions -> rename ingredient -> click rename -> click close
change any other data -> click save

Expected behavior
save all edited fields

Desktop (please complete the following information):

OS: MacOS
Browser Safari
Version 16.6 (186<IP_ADDRESS>.2)

I think the problem is that ing post field is statically assigned from php in mgmingredient.php, should be replaced with a var in js and updated after success event of ingredient rename (also ingredients list should be refreshed)
<?php if($ing['name']){?>
					ing: '<?=$ing['name'];?>'
<?php } ?>

That's pretty much expected as the data don't automatically refresh unless the user clicks the link pointing to the new name.

I have added an automatic redirection to the new ingredient upon successful rename, so the data will be able to updated now.

You anticipated my suggestion, I hadn't noticed the link, with a redirect I think it's less confusing
👍🏻


[xgboost4j] how to integrate xgboost in spark pipeline?

Xgboost4j`s api seems to be different than what ml usually would expect e.g. transform instead of predict for a dataset.
How can I nontheless integrate xgboost4j into a spark-ml pipeline?
http://stackoverflow.com/questions/40522665/xgboost4j-spark-evaluate-requires-rdddouble-double

xgboost4j is just the java/scala wrapper of xgboost, to integrate with pipeline, you need to refer to xgboost4j-spark, see examples in https://github.com/dmlc/xgboost/blob/master/jvm-packages/xgboost4j-example/src/main/scala/ml/dmlc/xgboost4j/scala/example/spark/SparkModelTuningTool.scala


Export cpg as json via Neo4j OGM

This PR adds the functionality to export the cpg as json.
The serialization is done via the Neo4j OGM.
Basically the same as when importing to Neo4j Database, just without Database.
So the json export will suffer from known problems, like recursion and bigInt.
Json format might be useful for machine learning or other data science projects.
Proposed json format:
{
"nodes": [],
"edges": []
}

Example json file:
cpg.txt

[ ] compare json export with data from Neo4j Database import
[ ] add test case

The current implementation does not create any Neo4j Session object, which allows the json export to be used without a connection to the database server, which is of course desirable.
This has unfortunately the side effect, that pre-save hooks are not executed, because they are configured in the session.
I have currently two ideas how this could be fixed:
a) create some dummy session, without actual database connection
b) configure pre-save hooks without session

Related issues: #247 #776  #935 . We may want to enable customizing the output format somehow.

We may want to enable customizing the output format somehow

Good point! I created a separate function to export in the proposed json format (exportSimpleJson) .
In future, here one could step in to support other formats.

[ ] Make a pass PrepareForNeo4jSerializationPass
[ ] Turn it on as a default pass for the Neo4j module.

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


Revert "activation functions added to registry and mlps"

Reverts chandar-lab/RLHive#280

reverting this PR, as it uses  one feature from PyTorch >=1.9 and a lot of ongoing projects are using 1.8 or 1.8.1, so it would disrupt them. Will create a new pr removing that feature.


Unbounded values in OpenCV3 (3.4.7) findHomography using UWP build

System information (version)

OpenCV => 3.4.7
Operating System / Platform => Universal Windows Platform x86 / Windows x86
Compiler => Visual Studio 2017

Describe the bug
Hi! I am having some difficulty replicating results of the findHomography method using a OpenCV 3.4.7 Windows x64 (or x86) build with an OpenCV 3.4.7 Universal Windows Platform (x86) build. OpenCV was installed using vcpkg.
Steps to reproduce

./vcpkg.exe install opencv3[core,contrib]:x86-windows
./vcpkg.exe install opencv3[core,contrib]:x86-uwp
Use within a Windows sample or WinRT sample

Expected behavior
Using the following sample data as input to the findHomography OpenCV method. I expect to receive similar results between the UWP and Windows OpenCV builds.
// Opencv includes
#include "opencv2\calib3d.hpp"
#include "opencv2\core.hpp"

using namespace std;
using namespace cv;

// Sample data
// define vector of point2d to hold incoming point correspondences
vector<Point2d> imagePts2d;
vector<Point3d> headRelCamPts3d;

// 2d image points
imagePts2d.push_back(Point2d(634, 360));
imagePts2d.push_back(Point2d(983.2704, 459.7916));
imagePts2d.push_back(Point2d(434.4169, 409.8957));
imagePts2d.push_back(Point2d(584.1042, 260.2085));
imagePts2d.push_back(Point2d(783.6873, 409.8958));
imagePts2d.push_back(Point2d(534.2085, 360));
imagePts2d.push_back(Point2d(634, 310.1042));
imagePts2d.push_back(Point2d(733.7915, 459.7916));
imagePts2d.push_back(Point2d(634.0001, 409.8958));

// 3d head-relative points
headRelCamPts3d.push_back(Point3d(0.01472765, -0.02640389, -0.3878982));
headRelCamPts3d.push_back(Point3d(0.08326837, -0.004306662, -0.3587808));
headRelCamPts3d.push_back(Point3d(-0.02268698, -0.01473189, -0.3792648));
headRelCamPts3d.push_back(Point3d(0.006907673, -0.04194512, -0.3763861));
headRelCamPts3d.push_back(Point3d(0.04511701, -0.01568557, -0.3619232));
headRelCamPts3d.push_back(Point3d(-0.0073684, -0.02303414, -0.3883415));
headRelCamPts3d.push_back(Point3d(0.01698635, -0.03475464, -0.3742433));
headRelCamPts3d.push_back(Point3d(0.03626316, -0.006358631, -0.3806523));
headRelCamPts3d.push_back(Point3d(0.0168939, -0.0155462, -0.3765478));

// compute the homography
Mat H = findHomography(imagePts2d, headRelCamPts3d, _OutputArray(), RANSAC, 3.0);

// C++ Windows result
[-0.0005446450414118441, 3.336943289258746e-06, 0.3012216484900045;
 -3.842030922731304e-06, -0.000484728478551683, 0.2422873242295844;
 -0.0001314966915293313, 0.0002747045201238849, 1]

// C++ UWP result - note unbounded values
[1.4333E+11, -0.757215, -6.76612E+34, 0.398422;
1.93228E+26, -0.406474, -1.27438E+33, -0.74909;
-4.65992E+35, -0.629826, -1.14651E+28, 0.695324]

I am not sure if this is some sort of rounding error, or is due to issues with the UWP build of OpenCV.

This was a painful one... I ended up realizing the values from OpenCV findHomography were okay for the UWP build; instead, it was the way in which I was accessing them that was incorrect.
// float access gave unbounded results
H.at<float>(0, 0).ToString()

// double access is correct
H.at<double>(0, 0).ToString()


When there are only two options, it feels strange

When there are only two options, it feels strange

@yuangu Could you please describe the issue in more details?

sorry for my english. here is this code . when options len Less than 8. appear some inverted items.
here this code.
`

`

I faced the same issue. There is a weird animation when the list items are below 7.


pretrained model

Hello, is there a pre-trained model available?

No, we may release the pre-trained model in the future, and now, you can train the model by yourself, the reproducibility of our method is pretty good.


"icons" should not be a package

Kiosk/src/icons should not be configed a package. Use a plain directory instead. It should also be moved out from scr directory

Fixed


add unit test

Context

Add unit test in linting.yml
Test if the server has successfully started through RCON.
Test if port 8211, 27015 and 25575 are listening with netcat command.
Test the backup command functions and check if the ./palworld/backups/ path contains a backup folder.

Due to the limitation that macOS environments in GitHub Actions do not support Docker for ARM64, it cannot be included.
Refer to: https://github.com/orgs/community/discussions/25777#discussioncomment-3249229
Choices

Improving Efficiency Through CI

Test instructions

create a PR and use docker exec palworld-server rcon-cli Info to Check if the string contains "Welcome to Pal Server."

Checklist before requesting a review

[x] I have performed a self-review of my code
[ ] I've added documentation about this change to the README.
[x] I've not introduced breaking changes.

Due to the limitation that macOS environments in GitHub Actions do not support Docker for ARM64, it cannot be included.

docker/setup-qemu-action adds a layer of emulation that enables Docker to run ARM64 images among others. With that in the workflow, it should be able to run a test for the ARM64 images as well, albeit not an actual macOS environment. Also on that note, you won't need the QEMU step in the workflow for AMD64 images as the ubuntu-latest hosted runner of GitHub is already running on AMD64 architecture.

Due to the limitation that macOS environments in GitHub Actions do not support Docker for ARM64, it cannot be included.

docker/setup-qemu-action adds a layer of emulation that enables Docker to run ARM64 images among others. With that in the workflow, it should be able to run a test for the ARM64 images as well, albeit not an actual macOS environment. Also on that note, you won't need the QEMU step in the workflow for AMD64 images as the ubuntu-latest hosted runner of GitHub is already running on AMD64 architecture.

Thx for your suggest, but when I try to install Docker on macOS, it installs a VM with ubuntu-23.10-minimal-cloudimg-amd64. Is this also acceptable?
Log:
Run brew install docker
Warning: Treating docker as a formula. For the cask, use homebrew/cask/docker
==> Downloading https://ghcr.io/v2/homebrew/core/docker/manifests/2[5](https://github.com/win5923/palworld-server-docker/actions/runs/7857284630/job/21440995946#step:3:6).0.2
==> Fetching dependencies for docker: docker-completion
==> Downloading https://ghcr.io/v2/homebrew/core/docker-completion/manifests/25.0.2
==> Fetching docker-completion
==> Downloading https://ghcr.io/v2/homebrew/core/docker-completion/blobs/sha25[6](https://github.com/win5923/palworld-server-docker/actions/runs/7857284630/job/21440995946#step:3:7):251922be53fecdb926b7ce66165d3552d2bfcd43d65dc6d9a388d0c36edeaf69
==> Fetching docker
==> Downloading https://ghcr.io/v2/homebrew/core/docker/blobs/sha256:82b0e5bc43ea64c[7](https://github.com/win5923/palworld-server-docker/actions/runs/7857284630/job/21440995946#step:3:8)7758d54ff7b1914afc412d56de625e6bca94c6eaf131a42d
==> Installing dependencies for docker: docker-completion
==> Installing docker dependency: docker-completion
==> Downloading https://ghcr.io/v2/homebrew/core/docker-completion/manifests/25.0.2
Already downloaded: /Users/runner/Library/Caches/Homebrew/downloads/09e35[8](https://github.com/win5923/palworld-server-docker/actions/runs/7857284630/job/21440995946#step:3:9)dd98d96a9c7536f96e856fdd9478371c512e8a851160b6b6a3dc20e384--docker-completion-25.0.2.bottle_manifest.json
==> Pouring docker-completion--25.0.2.all.bottle.tar.gz
🍺  /usr/local/Cellar/docker-completion/25.0.2: 9 files, 338.7KB
==> Installing docker
==> Pouring docker--25.0.2.monterey.bottle.tar.gz
🍺  /usr/local/Cellar/docker/25.0.2: 13 files, 25.7MB
time="2024-02-10T20:37:07Z" level=info msg="starting colima"
time="2024-02-10T20:37:07Z" level=info msg="runtime: docker"
time="2024-02-10T20:37:07Z" level=info msg="creating and starting ..." context=vm
time="2024-02-10T20:37:07Z" level=info msg="Terminal is not available, proceeding without opening an editor"
time="2024-02-10T20:37:08Z" level=info msg="Starting the instance \"colima\" with VM driver \"qemu\""
time="2024-02-10T20:37:09Z" level=info msg="QEMU binary \"/usr/local/bin/qemu-system-x86_64\" seems properly signed with the \"com.apple.security.hypervisor\" entitlement"
time="2024-02-10T20:37:09Z" level=info msg="Attempting to download the image" arch=x86_64 digest="sha512:97a6df4d4f4d13267fc7989933da537071513b3175a5785728992a8a198e0ceaaa0eaa2a9a4b01beaf6b998cc20b5995dc701e5c6d9ba2f4308e4208a84215df" location="https://github.com/abiosoft/colima-core/releases/download/v0.6.8-2/ubuntu-23.10-minimal-cloudimg-amd64.qcow2"
Downloading the image (ubuntu-23.[10](https://github.com/win5923/palworld-server-docker/actions/runs/7857284630/job/21440995946#step:3:11)-minimal-cloudimg-amd64.qcow2)

Thx for your suggest, but when I try to install Docker on macOS, it installs a VM with ubuntu-23.10-minimal-cloudimg-amd64. Is this also acceptable?

You probably shouldn't be using the macos-latest in this case. I wouldn't make sense as the runner is still using AMD64 architecture if I remember correctly. It's just the operating system that is different. It's made available for people who want to build stuff for the macOS itself with the likes of Swift and such. If you use macos-latest for Docker images, it would attempt to use a virtualized Ubuntu just to build the image (as you can see on your logs) as most Docker containers need the Linux kernel.
You'd want to still use ubuntu-latest with the QEMU step. Try to review the current workflows on the deployment of the ARM64 image.

arm64 build image process also takes more than 10 minutes.

arm64 build is indeed expected to be longer than the amd64 one as it has another build step for a dependency (rcon-cli) but it shouldn't take that long. The only reason it's taking more than 10 minutes in this case is because you're trying to build a Docker image within a macOS environment.

Thx for your suggest, but when I try to install Docker on macOS, it installs a VM with ubuntu-23.10-minimal-cloudimg-amd64. Is this also acceptable?

You probably shouldn't be using the macos-latest in this case. It wouldn't make sense as the runner is still using AMD64 architecture if I remember correctly. It's just the operating system that is different. It's made available for people who want to build stuff for the macOS itself with the likes of Swift and such. If you use macos-latest for Docker images, it would attempt to use a virtualized Ubuntu just to build the image (as you can see on your logs) as most Docker containers need the Linux kernel.
You'd want to still use ubuntu-latest with the QEMU step. Try to review the current workflows on the deployment of the ARM64 image.

arm64 build image process also takes more than 10 minutes.

arm64 build is indeed expected to be longer than the amd64 one as it has another build step for a dependency (rcon-cli) but it shouldn't take that long. The only reason it's taking more than 10 minutes in this case is because you're trying to build a Docker image within a macOS environment.

Thank you so much!

One thing I'll suggest is turning each unit test into its own reusable worklfow or action
https://docs.github.com/en/actions/using-workflows/reusing-workflows
It'll allow future us to run unit tests remotely in other workflows, which right now isn't all that beneficial but in the future it might be
Only a suggestion, not a reccomendation or requirement.


2.1D upscale decoder

Adds a pixelshuffle mode to the 2.1D network. This avoids the checkerboard artifact introduced by transposed convolution layers.
Initialization (samples from first training epoch) of deconvolution (left) and pixelshuffle (right):

After fitting:

A question: why don't we notice the checkerboard artifact with 2D UNet?

That's because it is using non-trainable bilinear interpolation as the upsampling method. This introduces the least artifact due to random weight initialization (there is no learnable weight), but with the disadvantage that the convolutions have to happen in higher resolution to refine the upsampled features, which incurs $O(s^2)$ cost ($s$ is the scaling factor in 2D) compared to sub-pixel convolution, where upsampling is the last step of a given resolution level. See this paper for details.

Please add a training script for 2.1D model to examples.

Does it need to be a Python script or will a config file suffice?


Add ECI - École de commerce et d'informatique

URL: https://eci-liege.info/
You can see all courses here: https://www.eci-liege.info/sections/ including Bachelor's degree.
https://www.eci-liege.info/sections/technicien-en-informatique/
https://www.eci-liege.info/sections/bachelier-en-informatique-orientation-developpement-dapplication
SECTION-Bachelier-en-informatique-orientation-developpement-d-applications.pdf
SECTION-Technicien-en-informatique.pdf
You can see here https://www.eci-liege.info/notre-equipe/ that the mail i use is the same as the Teacher's/Director one.
Contact me if you need more informations.

@superhize First stage of verification passed, official domain for ECI - École de commerce et d'informatique is eci-liege.info as far as I verified. This is just an informational note. Pull request is still in the review. I appreciate your patience while waiting for the final decision.

@superhize Thank you for your patience while waiting for a review and processing your request. Pull request merged.
Please start requesting the licenses in about an hour, to let the changes to propagate through our system.


How to prevent to close dialog when click outside dialog?

Hello Guys!
How to prevent to close get dialog when click outside dialog?
Tks

Try set barrierDismissible: false


Add method to GetAccountSettings

Coverage increased (+0.08%) to 93.064% when pulling 09339f946af7c1e8f75940c4769ad6e68eaef190 on add-get-account-setting into 978173db2e58d5f44c97c295badf6b0421dc0d6c on master.


Incomplete vs end of input

I have a chain!() parser where if I add an opt!(foo) to the end.  If I try to run it with some input where the optional part isn't present, I actually get Incomplete, since (as I understand it) the thought is that there may be more input which would make foo match.
Is there a way of indicating that this really is the end of the input (eg EOF for a file) so that the opt!() can return None and be finished (or something similar)?

I used complete!, but I think this breaks stream handling (see the function float_parser):
#[macro_use]
extern crate nom;

use nom::is_digit;
use nom::eof;

#[inline]
fn bytes_to_i32(b: &[u8]) -> Result<i32, &str> {
    std::str::from_utf8(b)
        .map_err(|_| "Could not parse utf-8 bytes")
        .and_then(|s| i32::from_str_radix(s, 10).map_err(|_| "Could not parse number"))
}

named!(digits, take_while1!(is_digit));

named!(signed_integer<i32>, chain!(
    sign_chr: one_of!(b"-+")? ~
    n: digits,
    || {
        let sign : i32 = sign_chr.map_or(1, |c|
            match c {
                '-' => -1,
                '+' => 1,
                _ => panic!("This should never happen"),
            }
        );
        bytes_to_i32(n).unwrap() * sign
    }
));

named!(float_parser<f64>, chain!(
    integral: signed_integer ~
    decimal_chr: complete!(preceded!(char!('.'), digits))? ~
    exp: complete!(preceded!(one_of!(b"eE"), signed_integer))?,
    || {
        let mut x = integral as f64;
        let x = x + match decimal_chr {
            Some(d) => {
                let n = bytes_to_i32(d).unwrap() as f64;
                n / (10_f64).powf(d.len() as f64)
            },
            None => 0 as f64,
        };
        // TODO: Handle exponent
        return x;
    }
));

#[cfg(test)]
mod tests {
    use nom::IResult;
    use float_parser;

    #[test]
    fn test_integer() {
        assert_eq!(float_parser(b"1"), IResult::Done(&b""[..], 1_f64));
    }

    #[test]
    fn test_decimal() {
        assert_eq!(float_parser(b"1.2"), IResult::Done(&b""[..], 1.2_f64));
    }
}

Actually, I just realized that this is the way @Geal recommends to use complete!(), since this issue is the same than #144 , which is linked to #145, where Geoffroy explains:

This idea is interesting. Usually, I recommend that people use the complete! combinator, to transform a IResult::Incomplete in an IResult::Error.

As a simple example, say I have:
named!(bananas<&str, ()>,
    chain!(
        tag_s!("ba") ~
        many1!(tag_s!("na")),
        || { () }));

This will correctly match the start of "banaX" or "banananaX", but returns Incomplete for just "banana", since it might later be followed by more that matches.  That's correct for a streaming parser, but doesn't work for a non-streaming one if that can appear at the end of the input.
I can make it work for non-streaming input:
named!(bananas<&str, ()>,
    chain!(
        tag_s!("ba") ~
        many1!(complete!(tag_s!("na"))),
        || { () }));

but now it's no longer correct when streaming.
I can't see a way to have the same parser work in both situations - the parser needs to know the difference between "end" and "end so far".

Also, when parsing a large file in chunks (what I'd want to use a streaming parser for), this would mean you'd need to call a different parser when you've got the last chunk (since you're now effectively not streaming anymore).
I'm hoping I've missed something obvious that makes this all work.  :-)

The end of file is an annoying case. Like, source files that may or may not finished with a line feed, which was an undefined behaviour in some C compilers IIRC.
nom parsers work on buffers, and it is the calling code that must know if we reached the end of the stream or just the end of the currently available data.
I think you could use switch! to indicate which parser you use depending on a parameter to the parser, like this:
fn line(input:&str, eof: bool) -> IResult<&str, ()> {
    terminated!(input,
        tag_s!("hello"),
        switch!(value!(eof)),
          false => opt_complete!(tag_s!("\n")) |
          true  =>  tag_s!("\n")
        )
    )
}
}

I could adapt switch! and cond! to make that kind of pattern easier

I've come back to this, and I think I understand your proposed solution.  I hadn't thought of passing extra arguments into a parser function - that's a useful thing to be able to do!
I'm having problems getting things to actually build after converting a named!() into an explicit function.  Unfortunately the macro errors aren't as good as the usual Rust error messages.
I've got as far as this:
fn header(input: &[u8], at_eof: bool) -> IResult<&[u8], Option<Header>> {
    (closure!(alt!(map!(header_line, Some) |
                   switch!(value!(at_eof),
                       false => map!(header_end, |_| None) |
                       true => map!(header_end_eof, |_| None)))))(input)
}

The closure!() is my possibly clumsy attempt to convert the alt!(...) into something I could call with the input.  That got past some unexpected end of macro invocation type errors, but now I have:
error[E0001]: unreachable pattern
   --> src/maildir/mod.rs:355:6
    |
355 |     (closure!(alt!(map!(header_line, Some) |
    |      ^ this is an unreachable pattern
    |
    = note: this error originates in a macro from the standard library

Any insights that reduce my confusion welcome!

Ok, I've used --pretty expanded and dropped the expanded version into my source.  The problem is that switch!() always adds a default _ => Error rule to the match, and since my rules are already exhaustive (for true and false), that error rule can't ever be hit.
Searches gets me to: https://github.com/rust-lang/rust/issues/4112, which suggests working around this by adding a dummy guard to one of the match rules.  switch!() doesn't seem to let me do this; if I change the above to match true if true I get:
no rules expected the token `if`

FWIW, I worked around it by changing it to:
    switch!(value!(Some(at_eof)),
         Some(false) => ...,
         Some(true) => ...,
    )

...and things seem to be working fine now, thanks!  :-)

Closing this issue; I'll open a new one for the switch!() thing.

Hey guys, I've tried to follow this thread through, but am relatively new to nom, and can't quite wrap my head around what the suggested solution for the original problem actually.
The question is regarding the combination of chain! and opt!. Here's a parser that I've tried to simplify as much as possible to match (hello|hellothere):
named!(pub testopt<&str>,
    chain!(
        h: map_res!(tag!("hello"), str::from_utf8) ~
        opt!(tag!("there"))
        ,
        || h
    )
);

And a test case:
#[cfg(test)]
mod tests {
    use nom::IResult;
    use super::*;

    #[test]
    fn it_parses_testopt() {
        assert_eq!(testopt(b"hellothere"), IResult::Done(&b""[..], "hello"));
        assert_eq!(testopt(b"hello"), IResult::Done(&b""[..], "hello"));
    }
}

This allows the first assert to pass, but fails the second with a Incomplete(Size(10)).
I don't care about the streaming case, so I tried wrapping my opt! in a complete! (which seems to have been suggested above), but that just moves the error to a Error(Position(Complete, [])) instead.
I see that a lot of the suggested solutions have moved away from chain! and into the realm of terminated! and closure!, the use of which I admittedly don't understand given the context. Would someone mind enlightening me in explaining what exactly it would take to get my simple test case doing what I want it to do? Thanks!

Hi,
You need to put complete!() inside the opt!(). This means the Incomplete at the end of input becomes Error, which tells opt!() that the optional part isn't there.

You need to put complete!() inside the opt!(). This means the Incomplete at the end of input becomes Error, which tells opt!() that the optional part isn't there.

Ugh. Okay, in retrospect that makes perfect sense and I can't believe that I didn't see it before. Thanks for the help!


Function request - combine two or more sets of routing products in post-processing

Would be great to have a function to combine routing products from two or more folders into one product. This would be useful in instances where you have two sections of catchments that you ultimately want in one model, but with two distinct outlets.
Something like:
basinmaker.basinmaker.delineate.Combine_Routing_Products(routing_product_folders, gis_platform='qgis')
routing_product_folders = ['folder1','folder2']
gis_platform='qgis'
Output is a single routing product determined from combining one or more routing products. Key challenge would be to confirm that the individual routing products have non-overlapping extents. Note that this can currently be done manually with GIS software, and subsequent operations seem to work ok.

Hi Rob,
Many thanks for the comment.
please check this function that supports routing products for multiple outlets. The post-processing function allows the user to use more than one outlet ID. So we could obtain a product covering multiple outlets at step one. Let me know if this make sense to you. Thanks
Ming
https://colab.research.google.com/drive/1r6t67IRZmVbWAsZIHHxEm5gDan5m6itR?usp=sharing


Restructure public/private headers

Motivation
There was an issue with tt_metal consuming umd, which was surfaced after https://github.com/tenstorrent/tt-umd/pull/277.
The problem is that both tt-metal and umd have common dir, and that metal added umd's root dir to their include path. So in tt_metal, includes were ambiguous. This was solved by https://github.com/tenstorrent/tt-metal/pull/15271
A follow up from that effort was that it wasn't clear what headers in umd are supposed to be publicly exposed. This issue is to track that work.
Initial change on clearing this up is being done in #322 .
Follow up changes might include renaming directories, to follow clearer structure of API headers and private implementation.
Details to be added in comment thread.
Suggested organization
@afuller-TT 's opinionated suggestion:
The root of the repo typically contains bookkeeping: Git files, lint configs, docs, etc.  The code of a project should be immediately discoverable and clearly organized, but not tangled in with the peripheral files.
Something like this:
/
    .git-stuff
    .foo-stuff
    cmake/
    docs/
    src/
        api/
        src/
            firmware/
                api/
                src/
                test/
             moduleA/
                api/
                src/
                test/
        test/

The premise being that any node in the tree has a CMakeLists.txt in its root and can be relocated anywhere else and it remain consistent.  It clearly defines its public API, contains its implementation, and holds the tests for that level of abstraction.  This continues like turtles all the way down.  moduleA in this example is also a self contained entity with unit tests that validate moduleA, and a defined external interface.  It's clearly an implementation detail of the upper scope, and if one day it's deemed useful at a larger scope it could be relocated with a simple mv command and one add_subdirectory removed/added to relink it in its new home.

@afuller-TT I would say though that we have a single "module" which is currently called "device", but we can view it as "umd" module.
Would this simpler structure be sufficient?
/
    .git-stuff
    .foo-stuff
    cmake/
    docs/
    src/
        api/
        umd/
            firmware/ -> this one is just copied from another place, we don't intend on changing it.
                src/
            src/           -> holds private header files and all .cpp files
            test/          -> tests which know internals of umd
        test/              -> tests using only headers from api/, can also be viewed as "programming/api examples"

@broskoTT I like your distinction between blackbox tests and whitebox tests.  The blackbox tests in particular are useful for consumers to see how to interact with the module.
Bikeshedding a bit here, how do you like this flattening of the src/ so files share the same level of abstraction in the directory tree:
/
    .git-stuff
    .foo-stuff
    cmake/
    docs/
    src/
        api/
        src/
            firmware/ -> this one is just copied from another place, we don't intend on changing it.
                api/
                src/
                    test/
                test/
            .                -> holds private header files and all .cpp files
            test/          -> tests which know internals of umd
        test/              -> tests using only headers from api/, can also be viewed as "programming/api examples"

Essentially every 'module' (here we're only discussing the top-level UMD, currently named 'device', but the pattern should apply to anything at any scope), would consist of:

A directory that makes its name clear.  For top-level, this is the name of the repo, so we push it down into a src to separate out the Git repo boilerplate, and which is a common directory name for people to understand.  Other modules can just be their name like firmware above.
Within this directory we have api/ src/ and test/.  The API contains the interface to the module in question.  test/ contains the API-level tests (aka: black box testing, programming examples).  src/ contains the implementation details.  On a leaf node this will simply be the .cpp, .h, and a test/ for whitebox testing.
In larger modules we may break up sub sections of the implementation details and form a module of the same structure, nested under src/ that could trivially be hoisted out if that piece of functionality were valuable in a wider scope.

@afuller-TT I did read your points, but I still can't wrap my head around for root/src/src/ to be okay (the double src is the problem).
"files share the same level of abstraction in the directory tree"
Can you explain this further?
Were you talking about how includes would look like? In general how would includes look like internally and externally, I think this might drive us the right direction.
For example, in your suggestion, files would be:
root/src/api/public.h
root/src/src/private.h
root/src/src/internal.cpp
--- include "api/public.h"
--- include "src/private.h"
external.cpp
--- include "umd/src/api/public.h"
I'm sure I'm wrong, not sure why or where though.


add helm charts for nodeagent

https://github.com/istio/istio/issues/5903
add helm charts for nodeagent to avoid extra manual step to deploy nodeagent

[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 approver: greghanson
If they are not already assigned, you can assign the PR to them by writing /assign @greghanson 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:

install/OWNERS

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

/cc @wattli

[APPROVALNOTIFIER] This PR is APPROVED
This pull-request has been approved by: wattli
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:

install/OWNERS [wattli]

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


FedX runs into Phaser > 65535

Current Behavior
Perform "simple" query on the FedX (see below for more info)
select * where {
    ?x a :X;
       :value ?value;
       :relation1 ?p1.

    ?y a :Y;
       :relation2 ?p1;
       :relation1 ?p2.

    ?z a :Z;
       :relation3 ?p2.
}

Result is:
Query evaluation error: java.lang.IllegalStateException: Attempt to register more than 65535 parties for java.util.concurrent.Phaser@1707c5f1[phase = 0 parties = 65535 arrived = 0] (HTTP status 500)

Expected Behavior
Normal query response.
The following reduction on the query's complexity avoids the issue:
select * where {
    ?x a :X;
       :value ?value;
       :relation1 ?p1.

    ?y a :Y;
       :relation2 ?p1;
       :relation1 ?p2.
}

Steps To Reproduce
Environment:

GraphDB 10.2.1, using RDF4j 4.2.3
FedX repo consisting of two small repos (number of triples between ())

Repo1: Local GraphDB repo (10946)
Repo2: Remote SPARQL repo pointing to an Ontop repo (1968)

Repo contents:

Repo1: Concepts X and Z and the relations related to them
Repo2: Concept Y and the relations related to them
X, Y, Z all inherit from a parent Concept.

Performed the query in the GraphDB query window.
Version
4.2.3
Are you interested in contributing a solution yourself?
None
Anything else?

I can provide a reproduction environment if desired.
Looks like #3106 , but that one is quite old and seems to be fixed.

Thanks for filing up this issue and the example scenario. I also thought we configured the phaser correctly (to use the nesting of phasers) with https://github.com/eclipse/rdf4j/issues/3106
Maybe some case there was missed or something else changed meanwhile.
I will try to look into this and come up with a reproducible test environment. However, I would need a bit of time as I am quite busy these days. Will come back here once I have something

Thanks for your effort.
Two additional points for your information:

The problem is not occurring when I re-order the statements in the first query as follows:

select * where {
    ?y a :Y;
       :relation2 ?p1;
       :relation1 ?p2.

    ?x a :X;
       :value ?value;
       :relation1 ?p1.

    ?z a :Z;
       :relation3 ?p2.
}

If you want a reproducible environment, I can give you (in private) an archive of the contents and definition of my repositories. I guess that would automatically result in a reproducible context.

I found a place in the code of one of the join handlers, where the registration to the phaser was wrong. This should fix the issue: https://github.com/eclipse/rdf4j/pull/4613
Note: I had a local test environment (with some debug tweaking) where I was able to reproduce the error before, and where it was gone after. Unfortunately this cnanot be provided as unit test as it very much depends on concurrency.

Thanks Andreas for this fix.
Although I would obviously like to try the fix, I do not immediately see how I could: I'm using rdf4j through its integration in GraphDB, so I guess I'll need to wait till Ontotext releases a new GraphDB that integrates your fix, no?

I've released this in 4.3.2. It might make it into the next minor release of GraphDB (10.3).


[RFR] Render zoom handlers optional

Zoom handlers were always enabled by default, causing sometimes some issue. This PR makes these handlers optional.
Fixes #38.

:+1:


[otp_ctrl] Update checklist and move to D3

To be merged once all cleanup items have been addressed.
Fix #13438
Signed-off-by: Michael Schaffner<EMAIL_ADDRESS>

This should be ready to merge once #14719 and #14720 have landed.

yay! congrats!


Can't it work without ngrok even if it's locally?

Hello. I need help.
I'm trying bot framework and the emulator in my company. I cannot download ngrok due to my company's security policy.
So, I'm trying to use the emulator without ngrok setting. The bot is running locally at http://localhost:3978/api/messages.
But when I try to connect the emulator to my local bot, only "couldn't send" message is shown and I didn't get any other logs.(see the attachment below.)

I'm sure that my local bot is running because I get "MethodNotAllowedError" when I access to http://localhost:3978/api/messages by my browser.
Can't the emulator work without ngrok even if it's locally?
Or should I concern any other problem?
Regards.

ngrok is not required when running the bot and emulator locally; you should not need to install it. What is interesting about your screenshot is there's no log entry of the emulator sending the message to the bot. I think your message never made it out of the webchat control. The webchat control embedded in the emulator communicates with the "server side" of the emulator over a localhost socket, and I suspect that connection is failing.
Try this experiment: With the emulator running, take note of the port it is listening on. In your screenshot above, it is 63470, but it changes each time. Once you know the emulator's port, open a web browser and navigate to http://localhost:$(port) where $(port) is the emulator's port.
If you can successfully connect to the emulator, you'll see an error message like this:
{"code":"ResourceNotFound","message":"/ does not exist"}
If you cannot connect this way, you'll see something else.

Thank you for your reply.
I accessed http://localhost:${my emulator's port} by browser and I got the same response you wrote.
But when I tried to watch HTTP messages by Fiddler4, I finally found the problem.
My problem was loopback limitation of windows 10.
When I tried to send message to my bot via emulator with running Fiddler4, Fiddler suggested me to exempt loopback limitation of SID of the emulator.
After I clicked "OK" and reboot the emulator, it is working fine.
Thank you.

Sorry, I had misunderstood a little bit.

When I tried to send message to my bot via emulator with running Fiddler4, Fiddler suggested me to exempt loopback limitation of SID of the emulator.

It was not SID of the emulator but SID of Fiddler4.
So, only if Fiddler is running, the emulator works fine. Do you have any idea for making it work fine without Fiddler?

When Fiddler starts up, it changes your proxy settings. I don't have a complete picture of what's happening, but my hunch is it could be related to your proxy settings. The emulator refers to the local machine by <IP_ADDRESS> rather than localhost. I wonder if that's part of the problem. It turns out that localhost doesn't resolve to <IP_ADDRESS> for everyone (this will be fixed in the next release). As a quick test, could you try running the following command (from a command prompt) with and without Fiddler running:
ping -4 localhost
I'm wondering if it returns <IP_ADDRESS> in both cases, or if the non-Fiddler case returns something else.

Thank you for your reply.
I did ping to localhost with and without Fiddler and I got <IP_ADDRESS> in both cases.
I don't think it's proxy or name resolution problem. According to here, Windows restricts apps to reach localhost(<IP_ADDRESS>) by default. For UWP apps, "checknetisolation.exe" will help me. But I can not find how to exempt the limitation for electron apps.
When Fiddler is running, Fiddler exempts the limitation by itself and enables the emulator to reach <IP_ADDRESS> via Fiddler as proxy.

The loopback restriction only applies when trying to connect to Metro/Immersive/UWP apps, and the emulator is not one of those. What do your proxy settings look like with and without fiddler running?

I'm so sorry for my misunderstanding.
I haven't checked my default proxy setting because it is set by WPAD automatically. But I've found that it tries to access to our proxy if I try to connect <IP_ADDRESS>. If localhost, it loops back correctly. So, it might be  problem around our proxy setting as you wrote.

It turns out that localhost doesn't resolve to <IP_ADDRESS> for everyone (this will be fixed in the next release)

I think this enhancement will resolve my problem.
Thank you so much.

I'm glad you found a solution. Closing this issue now.

I m having this issue currently. I m running the bot emulator locally but the emulator is looking for ngrok to be activated, how do I stop it from happening ?


Unlink get_sdk_persist_dir() on uninstall

Uninstalling a SDK version should also remove get_sdk_persist_dir() for that version.
@jneubrand suggested adding an option to keep emulator data.

#17 makes this redundant.

:)


ECDSA Engine Support in OpenSSL 3.0

I was using a OpenSSL 1.0.2j which had EC engine support and provides customized ECDSA and ECDH operations. The good thing about engines is that we don't need to set private keys upfront for any operations from applications. Engines could choose correct private key internally.
Functions used;
int ENGINE_set_ECDH(ENGINE *e, const ECDH_METHOD *ecdh_meth);
int ENGINE_set_ECDSA(ENGINE *e, const ECDSA_METHOD *ecdsa_meth);
These engines are used by TLSClient applications (a 2-way TLS authentication) and there was no need for the TLSClient to provide private key to OpenSSL SSL implementation.
The Engine method ECDSA would be invoked during TLS handshake for ECDSA signature operation using private key. ECDSA method would internally choose the correct private key / implementation from HSMs to provide signatures.
References: https://wiki.openssl.org/index.php/Creating_an_OpenSSL_Engine_to_use_indigenous_ECDH_ECDSA_and_HASH_Algorithms
https://www.opensourceforu.com/2015/03/customising-openssl-for-the-real-world/
I am looking for similar functionality in OpenSSL 3.0 using provider framework. It looks like OpenSSL 3.0 SSL implementation expects private key to be set before SSL_Connect().
But my issue is that we want to choose private key from a custom implementation and not from the TLSClient implementations.
Is this possible in OpenSSL 3.0 OSSL framework.

Here is the solution which can be used to perform private key operations using a private key which is never exposed outside of HSM.
/* Create a custom signing method  which can then be routed to HSM operations /
static void set_custom_pkey_method_ec()
{
/ Define a new EVP PKEY METHODS openssl style */
EVP_PKEY_METHOD *orig_meth, *new_meth;
    /* Get openssl default EVP PKEY Method */
    orig_meth = (EVP_PKEY_METHOD *)EVP_PKEY_meth_find(EVP_PKEY_EC);
EVP_PKEY_meth_get_sign(orig_meth, &orig_pkey_ec_sign_init, &orig_pkey_ec_sign);

     /* create a EVP PKEY method  and replace default method with our method */
new_meth = EVP_PKEY_meth_new(EVP_PKEY_EC, EVP_PKEY_FLAG_AUTOARGLEN);
EVP_PKEY_meth_copy(new_meth, orig_meth);
EVP_PKEY_meth_set_sign(new_meth, orig_pkey_ec_sign_init, custom_pkey_ec_sign);

    /* Add our custom signing method openssl replaces global EVP method with our method */
    EVP_PKEY_meth_add0(new_meth);

    return;

}
static int custom_pkey_ec_sign( EVP_PKEY_CTX *evp_pkey_ctx,
unsigned char *sig, size_t *siglen,
const unsigned char tbs, size_t tbslen)
{
/ Do whatever you want with this method /
/ route the operation to your HSM methods */
}
In the main SSL Handshake function invoke the custom created method using openSSL context.
test_handshake_fn() {
long res = 1;
int ret = 1;
unsigned long ssl_err = 0;
SSL_CTX* ctx = NULL;
BIO *web = NULL, *out = NULL;
SSL *ssl = NULL;
EVP_PKEY *pkey = NULL;
.......................

set_custom_pkey_method_ec();

const SSL_METHOD* method = SSLv23_method();

/* Continue your handshake functions */
.......................................

/* During signing operations your custom sign function is invoked by openssl library */

}