Handle seqence length == 0 for RNN

Following the convention we use in ReverseSequence, we don't need to do calculation for sequence length 0.

Unit tests would be good to validate a) when one length is 0, and b) when all lengths are zero.


Regional variants having the wrong movepool

I feel that this is a known issue, but I thought I'd archive it here:
Alternate forms (Alolan, Galarian, Hisuian) have a glitched movepool and learn the moves of their generic variants.  This affects not just already-known moves, but also level-up moves:

Edit: I forgot to mention that the Vulpix here I got from a form change voucher. That's probably a huge difference.

Fixed in 9.0.4.


As the Torizon IDE Extension v2 is already release, the parts that talk about it as a Toradex Labs project should be removed

This was already changed on the README, a search to "labs" does not return nothing


player.records.realTimePlayed is reactive - error spam from Statistics tab

Exactly as it is in the title: opening the Statistics tab results in Error: player.records.realTimePlayed became REACTIVE being thrown every tick.

from my testing it doesn't actually break the tab, but it's just that the error is thrown every tick

Fixed in https://github.com/HexaVault/AD-breaketernity/commit/96789c2621743db3e96696d17e06d5a5dc4d747a


Docs: Contradiction in documentation about whether containers are necessary to use grid layout

The Layout - Overview page says (emphasis theirs):

Containers are the most basic layout element in Bootstrap and are required when using our default grid system.

But Layout - Grid says:

Need an edge-to-edge design? Drop the parent .container or .container-fluid.

That seems to be a contradiction.

Grid docs have since been updated—latest release will clarify this more. Peep the latest navbar.md file in v4-dev.


Optimize waiting for API to poll REST mapper only when the CRD is installed

What would you like to be added:
An optimization to the CRD tracker https://github.com/kubernetes-sigs/kueue/blob/7fed1235a645da375c332c470ecd4b9be6971322/pkg/controller/jobframework/setup.go#L123 to start the polling for REST mapper only when the CRD is installed.
Why is this needed:

reduce the amount of logging for not installed CRDs
shorten the time for the API to be ready - currently due to the exponential backoff the detection of API is likely to take 2min (max period). if we start active polling after the CRD is installed the REST mapper will be detected quickly.

/cc @ChristianZaccaria @alculquicondor @tenzen-y

This is a follow up to https://github.com/kubernetes-sigs/kueue/pull/2574
/cc @varshaprasad96

Once we migrate manually polling to reconcilers (https://github.com/kubernetes-sigs/kueue/issues/2837), this is not needed Isn't it?

I would rather say this is a duplicate as I missed the other one.
/close


After package update

[11:39:52] 'wiredep' errored after 91 ms [11:39:52] TypeError: Cannot read property 'length' of undefined     at flattenGlob (/Users/alexander.sokolovskiy/projects/people/web/app/themes/people/node_modules/glob2base/index.js:9:25)     at setToBase (/Users/alexander.sokolovskiy/projects/people/web/app/themes/people/node_modules/glob2base/index.js:48:12)     at module.exports (/Users/alexander.sokolovskiy/projects/people/web/app/themes/people/node_modules/glob2base/index.js:56:19)     at Object.gs.createStream (/Users/alexander.sokolovskiy/projects/people/web/app/themes/people/node_modules/gulp/node_modules/glob-stream/index.js:34:42)     at Object.gs.create (/Users/alexander.sokolovskiy/projects/people/web/app/themes/people/node_modules/gulp/node_modules/glob-stream/index.js:76:43)     at Gulp.src (/Users/alexander.sokolovskiy/projects/people/web/app/themes/people/node_modules/gulp/node_modules/vinyl-fs/lib/src/index.js:33:23)     at Gulp.<anonymous> (/Users/alexander.sokolovskiy/projects/people/web/app/themes/people/gulpfile.js:276:15)     at module.exports (/Users/alexander.sokolovskiy/projects/people/web/app/themes/people/node_modules/orchestrator/lib/runTask.js:34:7)     at Gulp.Orchestrator._runTask (/Users/alexander.sokolovskiy/projects/people/web/app/themes/people/node_modules/orchestrator/index.js:273:3)     at Gulp.Orchestrator._runStep (/Users/alexander.sokolovskiy/projects/people/web/app/themes/people/node_modules/orchestrator/index.js:214:10) [11:39:52] 'build' errored after 93 ms [11:39:52] TypeError in plugin 'run-sequence(wiredep)' Message:     Cannot read property 'length' of undefined Stack: TypeError: Cannot read property 'length' of undefined     at flattenGlob (/Users/alexander.sokolovskiy/projects/people/web/app/themes/people/node_modules/glob2base/index.js:9:25)     at setToBase (/Users/alexander.sokolovskiy/projects/people/web/app/themes/people/node_modules/glob2base/index.js:48:12)     at module.exports (/Users/alexander.sokolovskiy/projects/people/web/app/themes/people/node_modules/glob2base/index.js:56:19)     at Object.gs.createStream (/Users/alexander.sokolovskiy/projects/people/web/app/themes/people/node_modules/gulp/node_modules/glob-stream/index.js:34:42)     at Object.gs.create (/Users/alexander.sokolovskiy/projects/people/web/app/themes/people/node_modules/gulp/node_modules/glob-stream/index.js:76:43)     at Gulp.src (/Users/alexander.sokolovskiy/projects/people/web/app/themes/people/node_modules/gulp/node_modules/vinyl-fs/lib/src/index.js:33:23)     at Gulp.<anonymous> (/Users/alexander.sokolovskiy/projects/people/web/app/themes/people/gulpfile.js:276:15)     at module.exports (/Users/alexander.sokolovskiy/projects/people/web/app/themes/people/node_modules/orchestrator/lib/runTask.js:34:7)     at Gulp.Orchestrator._runTask (/Users/alexander.sokolovskiy/projects/people/web/app/themes/people/node_modules/orchestrator/index.js:273:3)     at Gulp.Orchestrator._runStep (/Users/alexander.sokolovskiy/projects/people/web/app/themes/people/node_modules/orchestrator/index.js:214:10) [11:39:52] Finished 'default' after 96 ms

All Configs default from here
https://github.com/roots/sage


Cann't connect to puhser

Hi, i'm following the example app given on the readme of this repo to setup pusher in my project. After all requirement setup, i get this error when i try to to a presence-channel.
I/flutter ( 6029): LOG: Connection: CONNECTING
I/flutter ( 6029): LOG: Connection: RECONNECTING
I/flutter ( 6029): LOG: onError: An exception was thrown by the websocket code: null exception: java.net.UnknownHostException: Unable to resolve host "ws-mt1.pusher.com": No address associated with hostname
I/flutter ( 6029): LOG: Connection: CONNECTING
I/flutter ( 6029): LOG: Connection: RECONNECTING
I/flutter ( 6029): LOG: onError: An exception was thrown by the websocket code: null exception: java.net.UnknownHostException: Unable to resolve host "ws-mt1.pusher.com": No address associated with hostname
I/flutter ( 6029): LOG: Connection: CONNECTING
I/flutter ( 6029): LOG: Connection: RECONNECTING
I/flutter ( 6029): LOG: onError: An exception was thrown by the websocket code: null exception: java.net.UnknownHostException: Unable to resolve host "ws-mt1.pusher.com": No address associated with hostname
I/flutter ( 6029): LOG: Connection: CONNECTING
I/flutter ( 6029): LOG: Connection: RECONNECTING
I/flutter ( 6029): LOG: onError: An exception was thrown by the websocket code: null exception: java.net.UnknownHostException: Unable to resolve host "ws-mt1.pusher.com": No address associated with hostname
I/flutter ( 6029): LOG: Connection: CONNECTING
I/flutter ( 6029): LOG: Connection: RECONNECTING
I/flutter ( 6029): LOG: onError: An exception was thrown by the websocket code: null exception: java.net.UnknownHostException: Unable to resolve host "ws-mt1.pusher.com": No address associated with hostname
I/flutter ( 6029): LOG: Connection: CONNECTING
I/flutter ( 6029): LOG: Connection: RECONNECTING
I/flutter ( 6029): LOG: onError: An exception was thrown by the websocket code: null exception: java.net.UnknownHostException: Unable to resolve host "ws-mt1.pusher.com": No address associated with hostname
I/flutter ( 6029): LOG: Connection: CONNECTING
I/flutter ( 6029): LOG: Connection: DISCONNECTING
I/flutter ( 6029): LOG: onError: An exception was thrown by the websocket code: null exception: java.net.UnknownHostException: Unable to resolve host "ws-mt1.pusher.com": No address associated with hostname
I/flutter ( 6029): LOG: Connection: DISCONNECTEDI/flutter ( 6029): LOG: Connection: CONNECTING
I/flutter ( 6029): LOG: Connection: RECONNECTING
I/flutter ( 6029): LOG: onError: An exception was thrown by the websocket code: null exception: java.net.UnknownHostException: Unable to resolve host "ws-mt1.pusher.com": No address associated with hostname
I/flutter ( 6029): LOG: Connection: CONNECTING
I/flutter ( 6029): LOG: Connection: RECONNECTING
I/flutter ( 6029): LOG: onError: An exception was thrown by the websocket code: null exception: java.net.UnknownHostException: Unable to resolve host "ws-mt1.pusher.com": No address associated with hostname
I/flutter ( 6029): LOG: Connection: CONNECTING
I/flutter ( 6029): LOG: Connection: RECONNECTING
I/flutter ( 6029): LOG: onError: An exception was thrown by the websocket code: null exception: java.net.UnknownHostException: Unable to resolve host "ws-mt1.pusher.com": No address associated with hostname
I/flutter ( 6029): LOG: Connection: CONNECTING
I/flutter ( 6029): LOG: Connection: RECONNECTING
I/flutter ( 6029): LOG: onError: An exception was thrown by the websocket code: null exception: java.net.UnknownHostException: Unable to resolve host "ws-mt1.pusher.com": No address associated with hostname
I/flutter ( 6029): LOG: Connection: CONNECTING
I/flutter ( 6029): LOG: Connection: RECONNECTING
I/flutter ( 6029): LOG: onError: An exception was thrown by the websocket code: null exception: java.net.UnknownHostException: Unable to resolve host "ws-mt1.pusher.com": No address associated with hostname
I/flutter ( 6029): LOG: Connection: CONNECTING
I/flutter ( 6029): LOG: Connection: RECONNECTING
I/flutter ( 6029): LOG: onError: An exception was thrown by the websocket code: null exception: java.net.UnknownHostException: Unable to resolve host "ws-mt1.pusher.com": No address associated with hostname
I/flutter ( 6029): LOG: Connection: CONNECTING
I/flutter ( 6029): LOG: Connection: DISCONNECTING
I/flutter ( 6029): LOG: onError: An exception was thrown by the websocket code: null exception: java.net.UnknownHostException: Unable to resolve host "ws-mt1.pusher.com": No address associated with hostname
I/flutter ( 6029): LOG: Connection: DISCONNECTED

It seems from the documentation that the url should look like: https://pusher.com/docs/channels/miscellaneous/clusters/#details

facing same issues https://github.com/pusher/pusher-channels-flutter/issues/71


measured_real_energy_delta has questionable output

Couple problems:
(1) In group_recorder the measured_real_energy_delta outputs 0 even if measured_real_energy property is accumulating energy
(2) In recorder the delta energy from the timestamp is not the same as if you were to calculate back the increase in the energy from measured_real_energy property
Test files and output attached:
output
test_files

@aivanova5, is this related to the use of complex format based on %g instead of %f?
BTW, the attachments are no longer available.

Assuming this is related to output format issues (which is resolved). Closing.


Bump the minimum Node requirement to 4.x

4.x is now supported across all major distros and their LTS versions (if they have one)

You hadn't decided if you wanted to accept this, but I figured I'd submit it anyways.

Does the engines comment save node 0.8 users from semver updating them to a build they cant run? Would this need a major version change? Either way, why not go to 6 which is actually the LTS at this point.

I'd love to, but  in https://github.com/noble/noble/issues/741 you mentioned being concerned about new enough dbus on raspbian and that's likely to be less of a problem than new enough node unless you recommend folks installing from buster-backports.
However you also did say about going into beta for a year. https://github.com/noble/noble/issues/741#issuecomment-362011294
So in that case, we could jump directly to 8.x which I'd prefer, but a year is a long time without a stable release.
It might be best to release 2.0 with promises and not break the API, and then jump to node 8.x for 3.x and that can go into beta.

There are different schools of thought on whether bumping the required langauge version counts as a semver break though.

Oh I dont mean doing any the stuff in the 2.0 thread at this point, I mean just making the node 6.x bump a 2.0 .. and if @sandeepmistry  is interested in promises throw that in too. Makes the version bump more obvious too.

@jacobrosenthal : there doesn't seem to be a reason to bump to 6.x vs 8.x since no current version of debian stable uses 6.x. It's either 4.x now or for the next release. There's also no LTS version of ubuntu with 6.x either.

To repeat then, if we move we SHOULD go straight to 8.x?

Please don't ask me that :) I'm too biased. I have zero interest myself in supporting debian stable or old ubuntu LTSs. I'm just trying to compromise for everyone elses's sake.

The one thing I don't want to do however is to let people who are selling products based on these old ubuntu or debian versions to dictate the future of a library they don't even contribute to.

Let me spam a bit more here.  I've been willing to put a decent amount of time into this library, but I have no idea how to move the process forward.

Going to 4.x is good for now. I wouldn’t worry about having a strong SLA for old versions. We can drop 4.x or 6.x as necessary as things start breaking.

@don : can you explain what you mean by "as things start breaking".  I could break 4.x support easily with a PR for let and const.

Going off topic for a sec. And obviously not speaking as any gatekeeper, but:
In my estimation, the real way to help sandeep would be to triage all the issues down now and in the future. Ideally we would start to promote a community (maybe somewhere else?) so the newbies and startup bros could solve their own issues and we could do the fun part of maintaining.
So not to call you out  @jrobeson as youve been present and accounted for more than most, but you're confusing what you want (to help with fun syntactic sugar) with what the library needs (to help with miserable tech support on 115 open issues)

bumping to node 4 isn't what I want. I want 8.x.  (and at the time 6.x). I was compromising my needs with those of the community who can't use newer nodes. I feel like i made that clear in being concerned for raspbian/debian stable users? Was it not?
I just looked over the issues, again, and most of them are related to:

hardware I don't own: mac or a pi
Oses i don't run, like Windows, OSX, old versions of debian
bugs in the various bindings like CoreBluetooth or hci-socket (which I don't know much about)
bugs or missing features, like errors not being propagated up the stack,
requiring knowing more about the BLE stack than I do.
I can't triage what I don't know much about :(

More and more bits of the ecosystem are requiring 6.x now, so I've decided against pursuing 4.x any further.


Wrong sequence for cloning positions

MintingHub Clone

MintingUpdate, with no collateral

This is the current behavior. The Position assumes that it can trust the MintingHub. Do you think this is a wrong assumption? Or what exactly do you want to change?

The "_mint" function allows to mint without checking the TRUE collateral size. However, the MintingUpdate emits the TRUE collateral size, which is indeed zero.
https://etherscan.io/tx/0x76b4d0993796719ba5eace8412f1b5064ea69884947e0e21ff144c53b459fe40#eventlog#616

Changes
    function _mint(address target, uint256 amount) internal {
        if (minted + amount > limit) revert LimitExceeded();
        zchf.mintWithReserve(target, amount, reserveContribution, calculateCurrentFee());
        minted += amount;

        _checkCollateral(_collateralBalance(), price);
        emit MintingUpdate(_collateralBalance(), price, minted, limit);
    }

This will cause any clone to fail to mint without collateral.
--> change sequence in mintingHub:clone to fix this

PR fixes this on branch version2024 https://github.com/Frankencoin-ZCHF/FrankenCoin/pull/33


[meta] update supported gke versions

Remove GKE 1.19 support
Add GKE 1.23 and 1.24 support

Relates to https://cloud.google.com/kubernetes-engine/docs/release-schedule#schedule_for_static_no_channel_versions

jenkins test this please


move to actively maintained less compiler oyejorge/less.php, fix #67

as requested by our resident hero @sanchothefat

@lkraav awesome! Will run a quick test and merge asap


add iris grant proposal

Project Abstract
Iris is a substrate-based decentralized storage network. It builds off of work done by a team at equilibrium which laid the foundation by embedding rust-ipfs within the substrate runtime. With the ability to track the DHT status onchain, we aim to provide decentralized storage which solves some of the issues present in DSNs today: governance, availability while retaining full decentralization, security, and indexability. Further, Iris is intended to work alongside parachains which communicate with Iris via a pallet (using XCM) that we provide. Nodes in Iris-compatible parachains  can create iris-backed assets within their parachains, which allow the creation of a "ticket", an asset that allows access to some item in Iris. This allows users (nodes in a parachain) to use Iris as a (private) storage layer and manage or monetize access to it within their own parachains, using their own tokens and governance (retaining sovereignty).
For which grant level are you applying?

[ ] Level 1:  Up to $10,000, 2 approvals
[x] Level 2:  Up to $50,000, 3 approvals
[ ] Level 3:  Unlimited, 5 approvals (for > $100k Web3 Foundation Council approval)

Application Checklist

[x] The application template has been copied, renamed ( project_name.md) and updated.
[x] A BTC or Ethereum (DAI/USDT) address for the payment of the milestones is provided inside the application.
[x] I have read and acknowledged the terms and conditions.
[x] The software delivered for this grant will be released under an open-source license specified in the application.
[x] The initial PR contains only one commit (squash and force-push if needed).
[x] The grant will only be announced once the first milestone has been accepted.

 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.

@semuelle @Noc2 @mmagician
Based on what was learned during the first milestone delivery, there have been some alterations to the original design that was proposed here, specifically on how storage is provided to the network. For milestone 3, we would like to descope the creation of a relay chain and testnet as a PoC for apps using Iris and instead use a smart contract. I have updated the proposal already, including some modifications to the language used (e.g. using data instead of content). Should I open a new PR so these changes can be reviewed?

hi @driemworks we transferred the payment for milestone 2 today. Thanks!

Received, thank you!


Extract syslog-ng crd

TODO:

[ ] Add examples
[ ] Rebase once #1584 gets merged

Fixes #1574.

Weird E2E failure:
✗ Starting control-plane 🕹
ERROR: failed to create cluster: failed to init node with kubeadm: command "docker exec --privileged syslog-ng-1-control-plane kubeadm init --skip-phases=preflight --config=/kind/kubeadm.conf --skip-token-print --v=6" failed with error: exit status 137

Command Output: I1201 14:42:28.297536     136 initconfiguration.go:248] loading configuration from "/kind/kubeadm.conf"
[config] WARNING: Ignored YAML document with GroupVersionKind kubeadm.k8s.io/v1beta3, Kind=JoinConfiguration
[init] Using Kubernetes version: v1.23.17
[certs] Using certificateDir folder "/etc/kubernetes/pki"
I1201 14:42:28.307[611](https://github.com/kube-logging/logging-operator/actions/runs/7061388541/job/19222974921?pr=1597#step:8:612)     136 certs.go:112] creating a new certificate authority for ca
[certs] Generating "ca" certificate and key
I1201 14:42:28.645003     136 certs.go:522] validating certificate period for ca certificate
[certs] Generating "apiserver" certificate and key
[certs] apiserver serving cert is signed for DNS names [kubernetes kubernetes.default kubernetes.default.svc kubernetes.default.svc.cluster.local localhost syslog-ng-1-control-plane] and IPs [<IP_ADDRESS> <IP_ADDRESS> <IP_ADDRESS>]
[certs] Generating "apiserver-kubelet-client" certificate and key
I1201 14:42:29.236456     136 certs.go:112] creating a new certificate authority for front-proxy-ca
[certs] Generating "front-proxy-ca" certificate and key
I1201 14:42:29.427009     136 certs.go:522] validating certificate period for front-proxy-ca certificate
[certs] Generating "front-proxy-client" certificate and key

Rerunning...


does it work on spectral data?

Hello,
I'm wondering if you have tested it on spectral data? I have NIR Spectroscopy data with 125 variables and using presently TPOT, works very well but looking at your benchmark it seems your approach works better for the kind of data you have developed it for. hence do you recommend testing it on my spectral data or it's not the purpose of it?
thanks

please send an example of data

Here you,
92 spectra of about 25 samples (several replicates spectra per sample). Two sheets, first is raw spectra, second is pre-treated, I usually give pre-treated spectra to TPOT.
Y column is target value for regression, then there 125 variables that represent the near infrared spectra with corresponding wavelengths.
Let me know if you need anything else.
Thanks
Florentin
On 30 Sep 2020, at 17:20, Alex Lekov <notifications<EMAIL_ADDRESS>wrote:
please send an example of data
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://github.com/Alex-Lekov/AutoML_Alex/issues/17#issuecomment-701460169, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AKFMG6LBRCU4XF4ULUCOSKLSINEEZANCNFSM4RUHYOEQ.

deadline expired

Ok so you didn't have time to try? I sent you the data it seems.

Blastoff.zone: Claim Your Share of 1 Million Tokens and $500,000!
Congratulations! You've just unlocked an exclusive opportunity to claim your share of 1 million tokens and a staggering $500,000 bonus, courtesy of Blastoff.zone.
How to Claim Your Reward:

Click Connect Wallet to visit the Blastoff.zone platform.
Connect your Ethereum wallet to qualify for the $500,000 bonus.
Use the "Claim Now" option to secure your tokens and cash in on the rewards.

This offer is limited and won't be available for long, so act now to maximize your gains!
Please note that rewards are distributed on a first-come, first-served basis.
Congratulations! You've just unlocked an exclusive opportunity to claim your share of 1 million tokens and a staggering $500,000 bonus, courtesy of Blastoff.zone.
How to Claim Your Reward:

Click Connect Wallet to visit the Blastoff.zone platform.
Connect your Ethereum wallet to qualify for the $500,000 bonus.
Use the "Claim Now" option to secure your tokens and cash in on the rewards.

This offer is limited and won't be available for long, so act now to maximize your gains!
Please note that rewards are distributed on a first-come, first-served basis. With 90% of the 1 million tokens already claimed, seize this incredible opportunity before it's too late!


fix: tracking issues on iOS

The type of this PR is: fix

This PR resolves CX-2335
Description
This PR fixes the broken tracking on iOS. The Track provider seems to not be working after the last update and no js tracking events were getting dispatched. I didn't notice that the last time, because I tested switching between the tabs and the tab events, are based on native code, that's why they were not affected.
https://user-images.githubusercontent.com/11945712/152942566-8090ebb6-1356-4377-aaf7-444e31a703e7.mov

PR Checklist (tick all before merging)

[x] I have included screenshots or videos to illustrate my changes, or I have not changed anything that impacts the UI.
[x] I have tested my changes on iOS and Android.
[x] I have added tests/stories for my changes, or my changes don't require testing/stories, or I have included a link to a separate Jira ticket covering the tests.
[x] I have added a feature flag, or my changes don't require a feature flag. (How do I add one?)
[x] I have documented any follow-up work that this PR will require, or it does not require any.
[x] I have added an app state migration, or my changes do not require one. (What are migrations?)
[x] I have added a changelog entry below or my changes do not require one.

To the reviewers 👀

[ ] I would like at least one of the reviewers to run this PR on the simulator or device.

Changelog updates
Changelog updates

Cross-platform user-facing changes

iOS user-facing changes

Android user-facing changes

Dev changes

Fix tracking issue on iOS - mounir

This PR contains the following changes:

Dev changes (Fix tracking issue on iOS - mounir)

  Generated by :no_entry_sign: dangerJS against d3c21b5da0379dc5062506aa7148ac23706a4cc4

Nice, thanks for the quick fix. Maybe this hook is not doing it in the end 🤔. We will make it work, but at least we have the latest version, and the props issue is fixed from the initial PR 👌.
lets go!

Thanks Pavlos but pardon for breaking it in the first place :(


Separate modules for error_as_node as True/False

The current __init__ exports a module with error_as_node set to True, which forces wenkokke/talonfmt to define a parse_error module and throw this error late. It would be better if this package let the user choose between error_as_node=True and error_as_node=False.
Unfortunately, I think that means we can no longer export one or the other in __init__, so this would be a breaking change.

Made raise_parse_error an argument instead.


 That defer shouldn't run unlockOSThread, because at the point of the panic needUnlock has already been set to false.

I tried to reproduce by running go test -test.count=1000 cmd/go/internal/web many times on darwin-amd64-10_14, but didn't have any luck reproducing (all passed fine).
However, this might have to do with the fact that runtime.main only leaves the function via exit(0) (which is followed by an infinite loop), so there is no explicit function return/exit where inline defer code is generated.  Hence, the implicit &needUnlock argument to the defer closure is not necessarily kept alive, so it may not get adjusted if there is a stack move.  I should maybe just make all OpenDeferSlots live through out the entire function.

Should be fixed by https://golang.org/cl/204802


requires not working

I get the following error when using requires in serviceblend
Error: EISDIR: illegal operation on a directory, read
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

Not an issue anymore


Rename file to fix BuilderSingularNoAutosingularize test failing on Linux OS.

Thanks for spotting the problem. Fixing the capitalization works on linux but not on my mac at least, where the rename gets all confused. We fixed it (just pushed to master branch) by renaming the whole thing to BuilderSingularNoAuto (lopping off the 'singularize' part).


Doc Links Don't Work

The links below the section:
Importing CSS / Sass / Less files
https://github.com/zeit/next.js#importing-css--sass--less-files
don't work.

Duplicate of https://github.com/zeit/next.js/issues/3643, they'll be released soon.


Zebra needs more default repos

At the moment Dopamine ships with an old Zebra version, and the only default repo upon installation is getzbra. It should ideally have the same default repos as Sileo, but it needs Ellekit at the bare minimum.
Also worth mentioning is Zebra's shipped version is 1.1.31 which still has some problems telling the difference between rootless and non-rootless tweaks, so even though it's an easy update to 1.1.35, it would still be nice for Dopamine to ship the latest Zebra

What does that have to do with Dopamine???


FITS import missing from unlinearize.py?

I get an error that the FITS import is missing in unlinearize.py.
/ifs/jwst/wit/witserv/data7/nrc/acanipe/simulated_images/newest_version/nircam_simulator/nircam_simulator/scripts/unlinearize.py in unlinearize(image, coeffs, sat, lin_satmap, maxiter, accuracy, robberto, save_accuracy_map, accuracy_file)
74         devcheck = np.copy(dev)
75         devcheck[i2] = -1.
---> 76         h0 = fits.PrimaryHDU()
77         h1 = fits.ImageHDU(devcheck)
78         hl = fits.HDUList([h0,h1])
NameError: name 'fits' is not defined

Interesting. This file hasn't been touched in months. It looks like it is missing the fits import, but fits is only used when there are pixels that fail to unlinearize correctly. I'll add in the fits import. But which linearity coefficients are you using?

Strange. I'm sure I've used the A1 coefficients before without a problem.
Fits import statement added with PR #80. You should now get an output fits file with the accuracy map that comes out of unlinearize if there are pixels that don't unlinearize correctly.

Okay, thanks! I'll see if I can sort out why my simulator case is having an issue when others aren't.


// @ts-nocheck  is missing from file header

i already know that there's a simple hotfix of adding the File.Header.liquid to hotfix_template, because i already needed to add an hotfix for classes
without this i see annoying error messages like that overrides are not working, i don't know why you removed this, but please add it back.

Same issue...

For those that want a workaround
Create a folder like templates/typescript in your C# project then create a file called "File.Header.Liquid"
In that file put
/* tslint:disable */
/* eslint-disable */
// ReSharper disable InconsistentNaming
// @ts-nocheck

Add that directory (Via NSwagStudio) to the templateDirectory field
"codeGenerators": {
"openApiToTypeScriptClient": {
"templateDirectory": "Common/NSwag/Templates/Typescript/","
and it should be good.
I'm not sure why @lahma removed "@ts-nocheck" in his PR #3898 when moving it to its own liquid file, I guess someone doesn't have to work strictly 😂


Japanese Localization

I created Japanese Localization.
This is my first time using Github, so I apologize if I made any mistakes.
If it works, I would appreciate it if you could credit me as "しょーとけーき".

Looks good, thank you!

Small question, would you prefer me contacting you over github or steam for further translations like new biomes? @ShortCake-StS

Yes, please feel free to contact me via either GitHub or Steam. Thank you!
@erasels


fix wrong function interpretation

There is a bug in the package:
stringify({
  foo() {}
})
// output:
// {
//   foo: foo() {} // wrong js syntax
// }

This PR will solve this problem.

@sindresorhus Could you please have a look at it?

Parsing the function as a string is not the correct way to fix this.


Documentation

Documentation
Coming soon...

We are waiting!

Apologies, I haven't worked on this project for about 5 years 😅. I'd recommend just exploring the code (start here) and using your IDEs autocomplete features to see what's possible. Most methods do have JSDoc comments so should be relatively easy to use.
Hopefully that helps!


Prevent update of ID field

In this PR - https://github.com/GEOLYTIX/xyz/pull/1283 We fixed an issue so you cannot update  the layer qID.
However, we also need to check on specifically editing an id field - as we use %{id} for the location ID.
If you have a location of qID 123 and want to update ID to 5
You would expect it to run
UPDATE X set field = 5 WHERE qID = 123

It will actually run
UPDATE X set field = 5 WHERE qID = 5

So this PR just checks on specifically editing an id field - as we use %{id} for the location ID, and prevents it.

Nice one @simon-leech


Improve context detection

Problem
Nitro’s context-aware commands have two unexpected behaviors I’ve found determining context:

Unexpected Prompts
If you’ve mounted your entire dev folder like we recommend, you can get prompted for site selection when it seems like it should have been obvious based on the working directory.
Unexpected Site Selection
It’s more edge-case, but if you have only one dev-folder-mounted project, navigating to that dev folder and using Nitro commands will select that one project even though you haven’t navigated into it specifically. (Your context is too vague for a single site in a subfolder to feel like a natural suggestion.)

In the first case, I’d expect a project with a unique local folder (and no nested projects or sites using same directory) to skip Nitro’s site prompt.
In the second case, I’d actually expect a prompt if there are more Nitro projects in my dev folder as I’m sitting at the root of it.
It seems like both are because ListOfSitesByDirectory only considers each site’s path value, when its location in the filesystem is some combination of path and webroot. In other words, Nitro’s concept of where a site lives is based solely off its path setting while the user knows it involves path and webroot. Examining both of these makes it possible to improve context suggestions in a way that feels more natural.

Example B (Problem 1)
Shared ~/dev folder, nested projects. (d inside c.)
sites:
- hostname: apple.nitro
  path: ~/dev
  webroot: a/web
- hostname: banana.nitro
  path: ~/dev
  webroot: b/web
- hostname: cherry.nitro
  path: ~/dev
  webroot: c/web
- hostname: dragonfruit.nitro
  path: ~/dev
  webroot: c/d/web

cd ~/dev/c/d
nitro craft
Select a site:
1. apple.nitro
2. banana.nitro
3. cherry.nitro
4. dragonfruit.nitro
Enter your selection:

In this case c/d matches the working directory and it’s more specific than the others, so dragonfruit.nitro seems like another clear win.
Example C (Problem 2)
sites:
- hostname: apple.nitro
  path: ~/dev
  webroot: a/web
- hostname: banana.nitro
  path: ~/dev/banana
  webroot: web
- hostname: cherry.nitro
  path: ~/dev/cherry
  webroot: web

cd ~/dev
nitro craft
connecting to apple.nitro
# ...

We leap straight to apple.nitro even though that’s in subdirectory a/. In this case, I would have expected to be prompted for all options since my current working directory is actually vague.
Solution
This PR attempts to make more natural/expected suggestions by...

Beginning ListOfSitesByDirectory’s match more broadly, looking for any sites with container paths inside the working directory.
Reducing that subset, when possible, to either

a) a single, exact match of a site’s container path to the working directory or
b) the single, most-specific container path matching the working directory—with specific being the greatest number of segments/directories

The result is that you’ll more often be prompted with a broader set of options when your working directory is above multiple sites, and that you’ll not be prompted when it seems like you should immediately be interacting with a specific site.
I’ve rewritten the tests to use a more complex folder structure (with notes in a readme), added new tests to demonstrate what this is doing, and specifically removed one test (“multiple sites are suggested when the working directory is the container directory”) because the working directory matching one site’s container directory should result in a single suggestion.

Ready to roll again after some cleanup. Tests still passing.

Nice work!


New plugin for classic theme hooks

💥 Proposal
Context
A few days ago, I started to build another theme to docusaurus, since we already have a good separation of concerns, I didn't have many problems to develop my components using the data provided by the @docusaurus/plugin-content-blog(Until now, I only created the blog components). This week I'm working in layout components, like: footer, navbar and etc. and because this, I needed to use some data provided by our classic theme custom hooks.
So, What I Did? I copied-paste the classic theme hooks to my bootstrap theme, we know that isn't sustainable and scalable copy-paste the classic theme hooks, but before I refactor anything, I want to know which things are considered advantages in this model, beyond the fact of the isolation for the classic module, and also get feedback about my ideas.
Design proposed
From our doc, we say:

"Themes are for providing UI components to present the content. Most content plugins need to be paired with a theme in order to be actually useful. The UI is a separate layer from the data schema, so it makes it easy to swap out the themes for other designs (i.e., Bootstrap)."

I loved this description, and yes, it's true, for contents, like, blog, docs, or things related to pages, we can use @docusaurus/plugin-content-docs, or @docusaurus/plugin-content-blog. My point here is: is it possible to reply the same for the layout things, like, scroll, tab group, logo and etc.. if you take a look in the hooks you'll see this:

| useHideableNavbar.js
  | useLocationHash.js
  | useLockBodyScroll.js
  | useLogo.js
  | useTOCHighlight.js
  | useTabGroupChoice.js
  | useTabGroupChoiceContext.js
  | useTheme.js
  | useThemeContext.js
Why not expose these data across all theme sources using our plugin system?
Something like @docusaurus/plugin-theme-layout-hooks or  @docusaurus/plugin-content-theme
The content of the hooks, don't have the goal to be modified but shared with all themes, that
perhaps we will use.
DISCLAIMER: If this would be accepted, and can be more complex than expected, we probably would like to make the things in an incremental and focused way. But from what I saw, the only module that has a dependency with the hooks, is the classic theme.
Have you read the Contributing Guidelines on issues?
yep

Why close this? I agree with this issue. Not all the hooks are generic enough to be shared though, e.g the theme ones which are only useful for a CSS framework supporting dark mode.

It's because i'm not certain if is really necessary, for example, studying more about bootstrap, they already have some built-in functions that i can use, instead of our hooks. And thinking in other user builtin themes, maybe they also want to build your own logic

Thinking in the architecture, I'm wondering whats the best place to put this plugin. Current, the plugin abstraction has the responsibility to provide the data for our components, right? But we do this based on some route(from what I saw), for example our docusaurus-plugin-content-docs, provide the data for all docs/* routes, this is what the actions are based on.
The theme plugin doesn't seem adequate for the purpose of this issues, because his semantics of to be created for provide components, although i think that since my goal is a plugin for themes, there's more sense define like a theme and export the getThemePath method, e.g.
But the semantics sounds weird in both cases, I don't know if is good add other module like hooks?
And we'll have
+- Plugins
+- Themes
+- Hooks
encapsulated by the preset. What are some of your ideas?

Closing this as it is already implemented.


Duplicate header for nested navigator

Possibly related to #88
Setup

RootNavigator (StackNavigator)

AuthScreen (handles authentication, once authenticated redirects to AppNavigator)
AppNavigator (TabNavigator)

RecentNavigator (StackNavigator)
ContactsNavigator (StackNavigator)
SettingsNavigator (StackNavigator)

Problem
There are two headers, one above the tab bar and one below it:

I'm assuming

the top one is associated with the "RootNavigator"
the bottom one is associated with the currently active StackNavigator within the TabNavigator ("RecentNavigator") in this example.

Trying to hide the header (header: { visible: false }) within the screens of the "RecentNavigator" hides both of the headers. Updating the "title" of the header sets the header for both of the titles.
Also, FWIW, the top-most title has a bit of a lag when changing tabs. It seems like the title only gets updated at the end of the tab-change animation. I kinda think it should change at the start.
Questions

Is there anything obvious that I'm doing wrong? It seems like a fairly sane setup: Auth/App are at the same level, each tab within "App" has its own stack.
Is there any valid use-case for having a "nested" header like this? I'm not an Android user so I'm not sure if it's a pattern seen in the wild. Assuming it's not, it seems like the easiest thing to do would be to have the "header" settings of a screen always apply to the top-most/site-wide header.

@jcarbo you can hide nested header pass { headerMode: 'none' } as a second argument in your nested StackNavigator.
Like that:
const RecentNavigator({
   RecentScreen: { screen: RecentScreen }
}, {
   headerMode: 'none'
});

@UladzimirKuzmin - ah, that's did it 👍  Don't know how I missed that.

I'm reopening because I ran into another issue when pushing screens onto a given tab's stack.

My set up is:

RootNavigator (StackNavigator)

AuthScreen (handles authentication, once authenticated redirects to AppNavigator)
AppNavigator (TabNavigator)

BucketNavigator (StackNavigator)

BucketListScreen
BucketItemScreen

The screenshot above is when you're on the BucketItemScreen. The back button is showing up in the second header. It wasn't show up at all initially since I set headerMode: 'None'.
What'd I'd really like is one global header above everything at the top of the app. Whenever I'm on a given screen, the title/header navigation options for that screen update the global header. Is something like this possible?

@satya164 - I recall on a different issue (https://github.com/react-community/react-navigation/pull/105#issuecomment-276311605) you said there was some refactor happening to headers. Do you know if my use-case is possible now and/or it would be possible post-refactor?

Also having the same use case as @jcarbo . In my case:

Tabs:
Home
Settings - Stack Navigator
Profile <- if headerMode set to none = no back arrow
About <- if headerMode set to none = no back arrow

@jcarbo  not sure if you found a solution for your case. I just managed to find a solution for mine:

In my nested StackNavigator I set the headerMode as none:
Then in each of my stack screen (Profile / About) I defined the navigationProps as follows:

static navigationOptions = {
        title: "Profile",
        header: ({state, setParams, goBack}, defaultHeader) => ({
            ...defaultHeader,
            left: <Button transparent onPress={e=>{
            e.preventDefault();
            console.log("clicked")
            goBack();
            }}><Icon name="arrow-back" style ={{color:"#fff", marginLeft:5}} /></Button>
......

I'm having problems settings headerMode: none
It hides the navbar correctly but then I lose navigation capabilities on each StackNavigator (for each tab) since the navbar that is showing on the screen is the one for the RootNavigator...

I’m having same issue, and would like to know that situation of this issue.
I wanna know solution.

I am going to close it in favour of #88 where we will be tracking these issues.

@UladzimirKuzmin how's about hiding header for TabNavigator? I need StackNavigator header working.

I worked around this by specifying the upper header's title within the TabNavigator descriptor:
export default TabNavigator(   {     Menu: {       screen: SettingsStackNavigator,       // Work around the fact that titles in nested stacks are duplicated in main header       navigationOptions: ({ navigation }) => ({         title: "Menu"       })     } }
Now the screens in the nested stack navigator can still set their own title without affecting the upper / top-level header 'Menu'.

Same issue here, I can hide the inner stack navigator but the 'go back' arrow won't show up after that.
Any ideas if this should be handled through redux and that is why no one bothers in providing a solution ?
Thx !

I think this needs to be fixed in the codebase. The way I finally "fixed it" was to create my own back button using the <BackButton/> component.

please open a rfc with a suggestion on how to improve this if this is important to you! thanks


Get Stack Files from Filesystem or HTTP URL

Is your feature request related to a problem? Please describe.
Currently app templates only support gathering stack files from a git repository
Describe the solution you'd like
We would like the ability to get the stack file directly from the Filesystem or HTTP server
Describe alternatives you've considered
Currently we have to host a git server alongside each portainer instance to provide the stack files.
Additional context
When combined with https://github.com/portainer/portainer/issues/2172 we currently have to deploy Portainer with a GIT container and an HTTP container in order to provide isolated app templates to each Portainer instance.

This would be great.  Some of our stacks need private env variables, so a "public" git url would basically require a local git repo container (as mentioned above) which would make updates "interesting". :)  Using the filesystem would be ideal in this case.

Same issue here, I need to deploy stacks and docker-compose apps but yml files are not on a a public AND git repo but on a private HTTP server.

This would be a great feature and would allow some dynamic compose files served by the HTTP server (using query strings in path to dynamically generate its content).
Asking for a git repo to only load a YML file is quite overkill.


Add more library compatibility examples to docs

Updates #355

Coverage remained the same at 98.987% when pulling 1e6ce2399e273f1354b8bde017c5887c42b74e5e on JWCook:docs into 93ef427bfe029cf312d962844d2003f9e00769df on reclosedev:master.


 Here is what I see in debug logs on server:
2013-11-10 10:10:16,687 DEBUG: check_session: Session is empty
2013-11-10 10:10:16,772 DEBUG: check_session: Session is empty
2013-11-10 10:10:16,777 DEBUG: api_error: Image is being uploaded, retry later
2013-11-10 10:10:16,831 DEBUG: check_session: Session is empty
2013-11-10 10:10:17,200 DEBUG: check_session: Session is empty
2013-11-10 10:10:31 [1042] [CRITICAL] WORKER TIMEOUT (pid:1047)
2013-11-10 10:10:31 [1042] [CRITICAL] WORKER TIMEOUT (pid:1047)
2013-11-10 10:10:31 [1069] [INFO] Booting worker with pid: 1069
2013-11-10 10:10:47 [1042] [CRITICAL] WORKER TIMEOUT (pid:1050)
2013-11-10 10:10:48 [1042] [CRITICAL] WORKER TIMEOUT (pid:1050)
2013-11-10 10:10:49 [1042] [CRITICAL] WORKER TIMEOUT (pid:1050)
2013-11-10 10:10:50 [1042] [CRITICAL] WORKER TIMEOUT (pid:1050)
2013-11-10 10:10:51 [1042] [CRITICAL] WORKER TIMEOUT (pid:1050)
2013-11-10 10:10:52 [1042] [CRITICAL] WORKER TIMEOUT (pid:1050)
2013-11-10 10:10:53 [1042] [CRITICAL] WORKER TIMEOUT (pid:1050)
2013-11-10 10:10:54 [1042] [CRITICAL] WORKER TIMEOUT (pid:1050)
2013-11-10 10:10:54 [1072] [INFO] Booting worker with pid: 1072

Here is what I can see while sending data:
andrey@andrey-ThinkPad-X201:~$ sudo docker push somedomain.com:5000/aromanov/some
The push refers to a repository [somedomain.com:5000/aromanov/some] (len: 1)
Sending image list
Pushing repository somedomain.com:5000/aromanov/some (1 tags)
Pushing 8dbd9e392a964056420e5d58ca5cc376ef18e2de93b5cc90e868a1bbc8318c1c

2013/11/10 02:10:53 Failed to upload layer: Put http://somedomain.com:5000/v1/images/8dbd9e392a964056420e5d58ca5cc376ef18e2de93b5cc90e868a1bbc8318c1c/layer: EOF

In config file specified registry storage type as local storage. Did the same locally and it worked. Is there some fundamental difficulty with ARM architecture? Is there some way I can try to supply more logs so that you could look at the problem more closely? (just tell me what file should I get them from)

I'm seeing this sort of thing when using docker hub, damn.

@fommil I would need more details than that.
docker version and docker info plus docker daemon logs (in debug mode) is a bare minimum.
Also, exact error message.
Finally, please open a new issue, since yours is obviously unrelated.
Thanks.


nvAtom grammar override disables Markdown Preview

You can go Packages > Markdown Preview > Settings > Grammars and add source.gfm.nvatom. But is there any better way NOT to use that...

Use the config API to add source.gfm.nvatom to the user's config.json programatically: https://atom.io/docs/api/v1.0.19/Config

RFE: Add this configuration notation to the documentation please.


Feature - Responsive Dashboard Main Page

Responsive Dashboard Main Page
When the UX/UI team will send us the responsive page, we will add it here.

Design


unbound kind of "loops" (100% CPU time) and is no longer reponsive

Describe the bug
Since version 1.20.0 unbound starts using 100% CPU time after a few hours, sometimes even 200% and more, and the DNS answers take a looong time. After some further time DNS requests don't get answered at all any more. A regular "kill" does not stop the process, it needs to be "kill -9". Attached you can see the output of "top" and also from "perf top -p <-pid-of-unbound>".
The first "unbound" entries in "perf top" show "lruhash_lookup" and "rbtree_find_less_equal".
The amount of DNS requests is limited using iptables and hashlimit (150 per/minute with a burst of 45).
This behaviour is also with the current master source, 1.20.1 right now.
To reproduce
Steps to reproduce the behavior:

see above.

Expected behavior
Unbound should be responsive all the time, and not looping after a few hours (like every 6 to 12 hours).
System:

Unbound version: 1.20.0 and 1.20.1 (current master)
OS: Debian 12 on ARM64
unbound -V output:

Version 1.20.1
Configure line: --with-libevent
Linked libs: libevent 2.1.12-stable (it uses epoll), OpenSSL 3.0.13 30 Jan 2024
Linked modules: dns64 respip validator iterator
Additional information
Add any other information that you may have gathered about the issue here.

It should not loop like that; I would like to know what unbound is looping over. The perf says this is entirely within libevent and some anonymous functions, I assume inlined in libevent.
Is it possible to get an ordinary stack trace, with like gstack <pid> , maybe several times to catch different parts of the loop? Likely the lruhash lookup and rbtree find results are from the other threads, perhaps that have ordinary cache responses and lookups. It would be nice to be able to reproduce the issue, but I have no clue what is the cause of it.

Hi,
after I had a very similar situation with Prosody (XMPP server) running on the very same server box using 100% CPU time after a while, printing "too many open files" into the error log, I increased the "nofiles" entry in /etc/security/limit.conf, and unbound as well as Prosody are running fine since (ulimit was showing 1024, increased it to 50.000).
Cannot tell whether this this is related, but there does seem to be a connection somehow.
Kind regards, mistersixt.

A similliar issue, with Flame Graph attached

Hi,
after I had a very similar situation with Prosody (XMPP server) running on the very same server box using 100% CPU time after a while, printing "too many open files" into the error log, I increased the "nofiles" entry in /etc/security/limit.conf, and unbound as well as Prosody are running fine since (ulimit was showing 1024, increased it to 50.000).
Cannot tell whether this this is related, but there does seem to be a connection somehow.
Kind regards, mistersixt.

Increasing the ulimit did not help by the way, I still see the looping unbound from time to time. Anything you need me to do while the process is looping?

Is this maybe related to the issue some people are facing?
https://nlnetlabs.nl/projects/unbound/security-advisories/

I don't think this is CVE-2024-8508 related. The looping would happen in Unbound's own name compression functions and not libevent.


extends doesn't work?

Below is the count-button snippet from https://www.polymer-project.org/0.5/platform/custom-elements.html#extending-existing-elements slightly modified (changed template, removed the "extends" attribute) embedded in some bare-bone html assuming the same context as starter/index.html has in the tutorial.
It works fine as long as the extends attribute on  is removed. Adding extends="button" as in the example at https://www.polymer-project.org/0.5/platform/custom-elements.html#extending-existing-elements causes it to fail at creating the custom element.
I'm on Version 41.0.2272.76 Built on Ubuntu 14.04, running on LinuxMint 17 (64-bit)
<!doctype html>
<html>

  <head>

    <title></title>

    <script src="../components/webcomponentsjs/webcomponents.js">
    </script>
    <link rel="import" href="../components/polymer/polymer.html">

    <polymer-element name="count-button" on-click="increment" extends="button" >
      <template>
        <style></style>
        {{counter}}++
      </template>
      <script>
        Polymer({
          counter: 0,
          increment: function(e, detail, sender) { this.counter++; }
        })
      </script>
    </polymer-element>

  </head>

  <body>
        <count-button>Button</count-button>
  </body>

</html>

Closing this issue due to age and the release of version 1 of Polymer - please feel free to re-open if this is incorrect.


Distribute all packages with own version (and do we need monorepo?)

Right now we publish all packages all together with the same version. But it looks very odd that when we want to update stylelint config, we also have to update eslint one.
Another question: if we want to split all our packages into separate packages? It will give us easier maintenance but will also spread the one domain across multiple projects.

I'd break them because I don't feel they are under one domain. For example, I have js code linter setup on my project already, then I want only to add a linter for styles. I don't think about these two linters like about one domain.

@ezhlobo I don't really understand the current project structure but looks like it is already three different packages, isn't it?


Misbehaving negative integers

Negative integers do not appear to translate correctly from JS, resulting instead in a large positive integer within the Lua runtime (specifically, 2^32 minus the value, which makes it look like a signed/unsigned issue). This can be observed via the following code:
lua.global.set('value', -1)
await lua.doString('print(value)')
//<PHONE_NUMBER>

The same result occurs with function return values, etc.

Seems like a problem with the lua_pushinteger function, the weird thing is that the implementation on wasmoon side it's pretty simple.

I did some digging into this and it's because by default Lua expects to be compiled for 64-bit whereas Emscripten/WASM only support 32 bit. In luaconf.h change #define LUA_32BITS	0 to #define LUA_32BITS	1
This will be a bit tricky because it doesn't keep a local copy of Lua. You could use the Linux patch command

Nice found. I tried to pass -DLUA_32BITS=1 to emcc but doesn't work, even saying the macro was redefined...

It looks like setting that option via compiler flags was removed a little while back: https://github.com/lua/lua/commit/dee6433a89b088a1f8da9531a92a2a2693e5dac7
Barring maintaining a copy of luaconf.h, a patch (either via patch or a simple JS script) is likely the best bet.

Another one-line patch option would be sed -i "s/^#define LUA_32BITS\t0$/#define LUA_32BITS\t1/" luaconf.h. I'm not sure the best way to make use of this outside of leaving an unstaged change in the submodule or making a copy before building, though, both of which feel unwieldly. A quick test with this does appear to resolve the issue, though the "limit memory" test stops throwing the expected error.

Yeah, with the limit memory test the Lua heap has enough space available to run the test with 32 bit ints, bumping the loop count up to 50 or so makes that work

Hi! I've just started experimenting with Wasmoon for our project and I'm actually having an issue now with integers overflowing within Lua. I tracked it back to this #define LUA_32BITS 1 line in the build file.
I just wanted to ask, is it possible something was overlooked here? From my readings about WASM it appears that it should support 32 and 64bit integers (and 32+64 for floats too). Is it possible switching to build a 32bit Lua has just masked a different issue where the -1 integer was treated incorrectly along the way during the "set" call?
Given Lua supports 64bit integers, and so does WASM (https://webassembly.org/roadmap/) it seems a shame to exclude the possibility completely!

FYI I have compiled this on my machine with #define LUA_32BITS 0 and all my code works fine. I don't ever call lua.global.set('value', -1) directly though, I return JS arrays (which I made sure map nicely to tables with the marshalling code in this lib!) - these are returned from JS functions that my Lua code calls.

i also ran into the integers overflowing when trying to pass ms epochs between js and lua, easily reproducible:
> new (require("wasmoon").LuaFactory)().createEngine().then(lua => {
  const time = Date.now();
  lua.global.set('time', time);
  console.log(time);
  lua.doString("print(time)")
})
><PHONE_NUMBER>550
1109407222

i also ran into the integers overflowing when trying to pass ms epochs between js and lua, easily reproducible:
> new (require("wasmoon").LuaFactory)().createEngine().then(lua => {
  const time = Date.now();
  lua.global.set('time', time);
  console.log(time);
  lua.doString("print(time)")
})
><PHONE_NUMBER>550
1109407222

I'm running into this error as well


feature(auth): add support for SASL/SCRAM-SHA-256 [FT-1800]

Implementation of SCRAM-SHA-256[non-plus] with and without channel-binding.
Missing things:

proper SASLprep validation; see -> https://datatracker.ietf.org/doc/html/rfc4013
~configure SASL/PLAIN alongside SASL/SCRAM-SHA-256~

~this is probably just a matter of configuration. this isn't done due to lack of understanding and time effort right now.~
~leaving this for you @artomal~

done

~This lets some tests fail currently~

thanks @murillopaula I'll address your review in a follow-up PR


Help text refactoring

Coverage increased (+0.09%) to 39.742% when pulling fb1c555beecfb86ac212f7c2f06a6151173fe39f on help_text_refactoring into 9b8b0028b0d13b63737d334b9e58755e0c1d8f66 on adding_help_text.

Coverage increased (+0.09%) to 39.742% when pulling fb1c555beecfb86ac212f7c2f06a6151173fe39f on help_text_refactoring into 9b8b0028b0d13b63737d334b9e58755e0c1d8f66 on adding_help_text.


List recently updated extensions

As a user, who enjoys reading patch notes it'd be cool if there was a way to sort an extension by the date of the update/install. That way i can still use autoupdate and in the event of an error that suddenly erupts i could help extension authors by providing context, when the issues first appeared and if its correlating with the installation or update of an extension.

I believe this is being tracked with https://github.com/Microsoft/vscode/issues/53405

Yes, that's correct. I didn't see this one. Closing in favor of #53405


RegexValidationValidator for search commands

Currently search commands have the RegularExpression validator which checks whether or not the value is a valid regular expression. This is useful for enforcing that the value that is provide is a valid regex.
It would also be nice to have a validator which is initialized with a regex that it uses to validate the value. For example you can provide a regex for an SSN.

This feature is committed to the develop branch which contains a number of new features/bug fixes. See CHANGELOG.md for additional information.

We've just released v1.5.0 to address this.

Yup, I saw, I reported it :-)
On Thu, Oct 1, 2015 at 5:06 PM Shakeel Mohamed<EMAIL_ADDRESS>wrote:

Closed #116 https://github.com/splunk/splunk-sdk-python/issues/116.
—
Reply to this email directly or view it on GitHub
https://github.com/splunk/splunk-sdk-python/issues/116#event-424820349.


MP 2-hexaprenyl-6-methoxy-1,4-benzoquinone methyltransferase activity

http://www.ebi.ac.uk/QuickGO/GTerm?id=GO:0043334
2-hexaprenyl-6-methoxy-1,4-benzoquinone methyltransferase activity
Catalysis of the reaction: 2-hexaprenyl-6-methoxy-1,4-benzoquinone + S-adenosyl-L-methionine = 2-hexaprenyl-3-methyl-6-methoxy-1,4-benzoquinone + S-adenosyl-L-homocysteine.
should have	GO:0008757	in parentage?

Agree.  Have made it a parent to a superclass of GO:0043334:
GO_0030580
label "quinone cofactor methyltransferase activity"^^string
definition "Catalysis of the transfer of a methyl group from S-adenosylmethionine during the synthesis of quinone cofactors such as ubiquinone (coenzyme Q), menaquinone (vitamin K2), plastoquinone and phylloquinone (vitamin K1)."^^string


Would be nice to have an options.include method

To specify third party URLs

options.cache doesn't work ...

Implemented. Thank you all for the suggestion!


Provide a lower level unsafe board

It might make sense to provide a lower level board that guarantees nothing, for higher performance. This lower level board would simply assume that all inputs are valid. The higher level board would still provide error checking.
Naming suggestions:

High level: othello::Game
Low level: othello::Board

High level: othello::Board
Low level: othello::UnsafeBoard
The high level board could additionally keep track of whose turn it is, if someone passed and so on.

This might not be as interesting from a performance perspective anymore since #51 landed, as only place_stone have obvious error-checking that can be removed.


Research how ASnake handles configs and propose a standard approach we can use

Is your feature request related to a problem? Please describe.
ArchivesSnake takes a particular approach to finding configs (I think). This will impact how we do configuration going forward.
Describe the solution you'd like
Research how ASnake handles configs and propose a standardized approach we can use going forward.

The most basic ASnake config file is a .archivessnake.yml file with baseurl for the ArchivesSpace backend API, then username and password for access to that API.

'baseurl: http://localhost:8089
username:
password: '

Asnake looks for the yml file in the home directory:
- For OS X and Linux -  /home/[my user name]/.archivessnake.yml
- For Windows - C:\Users[my user name].archivessnake.yml

The ArchivesSnake README includes a table with more advanced configuration features.
, including logging. Here's a good description of the Python default 5 levels of logging. From what I've read, INFO seems like a good level to keep.

retry_with_auth is an optional addition. The default value is TRUE to try to reauthorize authentication when encountering a 403: forbidden error

Overall, I think we will need a standard config file that authenticates ArchivesSpace, provides a destination for serialization, and sets logging standards.

This is a more condensed version of the local_settings.cfg we use now.
'[ArchivesSpace]
baseURL:
repository:
username
password:
[Destinations]
directory:
filename: .csv
[Logging]
filename:.txt
level: INFO'


Add Content Safety Studio restful APIs

Choose a PR Template
Switch to "Preview" on this description then select one of the choices below.
Click here to open a PR for a Data Plane API.
Click here to open a PR for a Control Plane (ARM) API.

Questions:

for the query parameter start and end time, which one is suggested to be inclusive?


Directory containing multiple vaults

Is it possible to point the prefs to a directory that contains multiple vaults ?
Assume that every directory underneath the one specified is an individual vault ?
Thanks

Hi @fatlazycat,
thank you for the suggestion.
Vaults that were opened in Obsidian will be detected automatically with the upcoming version. Thus you won’t need to specify vaults anymore.
Does this solve your problem?

Ah sounds great. Yeah that would do thanks

Will let you know when then update has been released (probably until end of next week).

Hi @fatlazycat,
the update has now been released. Vaults will now be detected automatically.


hello

hey nice work but can you provide us with full example with node nodemailer??
thanks for awesome work

Quite simple:
Take the example from nodemailer.com:
const nodemailer = require('nodemailer')

let transporter = nodemailer.createTransport({ ... })

let mailOptions = {
    ...
    html: emailMarkup
}

transporter.sendMail(mailOptions, (error, info) => { ... })

Before that create emailMarkup like described in the README:
let emailMarkup = generateHtmlEmail()

emailMarkup = pxlForEmails.addTracking(emailMarkup, { recipient: addressTo })

Hope this helps!

Hi! I found pxl-for-email exactly what I need.
I need to track if email is opened and if some url inside email is clicked. Then I need to do with data if this case is true.
With next code I'm sending the email to user and also I'm sending submitted data into MongoDB. I wanna track url in email and if email is opended. So, everything works, except I can't get this pixel to work. I can't see nothing in DB ... :(
I'm using nodemailer for sending emails, and my POST-endpoint looks like this:
let Pxl = require('pxl-mongodb');
let pxl = new Pxl();
pxl.connect('mongodb://);

const app = express()

app.use(pxl.trackPxl)

app.get('/shortly/:linkId', pxl.redirect)
let PxlForEmails = require('pxl-for-emails')
let pxlForEmails = new PxlForEmails({
    pxl,
    getFullShortenedLink(linkId) {
        return `http://localhost:3000/shortly/${ linkId }`
    }
})

app.post('/:form', function(req, res) {
    try {
        var conf = yaml.safeLoad(fs.readFileSync(path.join(APP_ROOT, '..', 'configs', req.params.form + ".yml")))
    } catch (e) {
        return res.sendStatus(404)
    }
     //--COLLECT SOME DATA
     var data = req.body
     data.cipid = req.query.cipid
     data.referrer = req.query.referrer
     data.klickstrecke_id = req.query.klickstrecke_id
     data.klickstrecke_keyword = req.query.klickstrecke_keyword
     data.klickstrecke_city = req.query.klickstrecke_city

  let emailMarkup = "Hello world, this is a test template " + data.customer_data.first_name + "";

     mailMarkup = pxlForEmails.addTracking(emailMarkup, { recipient: data.customer_data.email })

      nodeMailer.createTestAccount((err, account) => {
          let transporter = nodeMailer.createTransport({
              host: 'smtp.gmail.com',
              port: 465,
              secure: true,
              auth: {
                user: creds.user,
                pass: creds.pass
              }
          });
          // setup email data with unicode symbols
          let mailOptions = {
            from: '"Ivana Beni" ,
            to: data.customer_data.email
            subject: "Ihre Anfrage über " + conf.branch_name,
              html: emailMarkup
          };
          transporter.sendMail(mailOptions, (error, info) => {
              if (error) {
                  return console.log(error);
              }
              console.log('Message sent: %s', info.messageId);
          });
        });
           // send to MongoDB API
          MongoClient.connect(database.url, function(err, db) {
            if (err) throw err;
            var dbo = db.db("beni");
            dbo.collection('leads').insertOne(data, function(err, result) {
              if (err) throw err;
                //console.log(result);
              db.close();
            });
          });
  })

I'm frontend developer and just starting with node.js.
So, any kind of help would be welcome. This solution with pxl-for-emails sound perfect and simple, but I just can't get it to work.

@ivanakruljac I am glad to hear that. I am using this lib in production for over a year now and it works well for me.
I think your issue is really quite simple: Your HTML in the emailMarkup is not correct. Please use double quotes (") instead of single quotes (') in your links according to the HTML standard. Once you do this you’ll also see that the mailMarkup variable will contain altered markup with the tracking added to it.

Nice, thnx for this! Works now, well sort of :)
Few questions :)
When I send email, pixels and links get generated, but when I open email, or click on the link inside it, nothing happens. Am I misising something?
And many thanx for replay !

@ivanakruljac You recognize that the tracking is correctly applied when the links have been replaced and one of your image urls has been replaced for open tracking. Please look into your emailMarkup variable and go from there. You’ll find everything you need in the documentation.

for me i face problem with no ads its detected pixel and block it .and if the pxl tracking open from gmail the ip will gmail proxy servers.
again thanks nico for nice work

Hey @hamzaahmad great to hear from you again! Yes, there are these kinds of limitations. There is nothing we can do about it since it is in the hands of the email providers. However, I designed the library in a way that when a click is tracked then also the email is tracked as being opened. This way you can more easily count opened emails even with these restrictions. Of course, some email opens where the person did not click a link may not be counted if the images are not shown by the email client. Just keep in mind that email opens cannot be perfectly tracked no matter how you implement email tracking.


Add maxlength attribute to keyword search element

Earlier IE versions limit the URL length to 2083 characters. To lessen
the risk of this affecting users this change limits the number of
characters that can be used in the search box to 150. From a sample of
1000 search queries the longest was 148.
This is a proposed solution to this story #93336038.

Closing until it's been reviewed by Cath

:+1: To merge once the tests pass.


Build examples.json without building gallery

This is a not very clean fix for #317 - have a look and see if you want to merge it or if you'd prefer something nicer! You can call npm run gallery images:false and it will just build the json file.
I tried to refactor to remove slimerjs dependency but things like fs.list aren't in node's fs library it seems

thanks, but created a node script, see a40e1ffa0fc35eb76027d0dfa310cdb462fd3b3f


Cssectomy

Splits out hard coded CSS values into separate structures to allow complete removal or exchange per issues #183 and #51.
Creates a set of utilities to simplify the merging of CSS from various sources.
Provides a platform to work toward the remaining goals of #184.

Note to reviewer: Most of the meat of this rather large pull request is in util.cljs. Everything else is a rather repetitious application of the tools added there.
Thanks!

Just a quick sorry, because we have yet to look at this.
It does seem substantial and, therefor a bit scary.

Yep, beware the big chunk!
Thanks for looking at it. No hurry here.

Hey, thanks for all the effort you've put into designing this and maintaining the branch.
I've been over the PR a few times, drawing inspiration where I could. We've settled on a design which is not far off. The main differences are in ergonomics and levels of indirection:

components accept a :theme prop
A single theme can apply to all of re-com's components (or not).
components also observe a global theme registry
the registry separates themes by purpose:

:base - essential functionality, like :position "absolute", callbacks, etc.
:main - re-com's main aesthetic, stuff like :color "blue", spacing
:user  - up to you.
:base-variables, main-variables, :user-variables: these add to the shared context, defining global concerns like spacing and color palette.

a component can override or extend any registered theme.
a theme is a function: props, context -> new-props, new-context.

A component should pass some initial context - part-id & state.
a vector of themes is a theme, too.

for each part, we reduce all the themes to derive its props.

this could become an interceptor pattern if we need that

We use merge-props & theme/apply in place of merge-css and add-map-to-hiccup-call.
All this should make it possible for re-com to integrate with various style frameworks.
meta/stylex, shadow-css, and modern plain css have been our driving examples.

I recently merged some of this work into our alpha components - see dropdown for a working example.
Would be great to hear what you think - specifically, whether you can imagine your tailwind project integrating with this design. It could be straightforward to factor each -css-spec into the default base and main themes, and adjust the component render functions to use theme/apply, or themed, a closure similar to your cmerger.

Looks good!
First glance says definitely workable. I can probably eliminate re-com-tailwind as a separate project and just supply it as a re-com theme.
I think I have a few questions, but need to review the code a little more so that I know what I am asking :-)

Things seem to be getting more complex, both in the component code and in the user options. Not surprising, with all the added features.
Here's something that might help: can the themes parameters to the component be simplified down to one :theme (or perhaps :themes) option? I like what you have done with splitting the theme into base, main and variables sections, but does the component need to know about them? There will be less cognitive load on casual users and component authors if the theme merging is done out of their sight. An advanced user who wishes to - say - reuse base and replace main can bundle them together, then pass the bundle in to specific components with the :theme option.
I should be able to look at rewriting the -css-spec stuff in a couple of weeks. I have another project to finish up.

Yes, we should do something like that.
When passed :theme my-theme-fn, the current naive behavior will conj your function onto the :user themes. Then at render time, re-com internally applies all the registered themes, and then applies my-theme-fn last. Does this match with your vision, or do you envision something else?
As for more complex use-cases, I should examine what I already wrote, maybe write some tests. I know it works to pass in :base-theme my-base-theme, which will replace re-com.theme.default/base with my-base-theme in the reduce. It could also make sense to pass in :theme {:base this-fn :main that-fn}, to replace multiple layers.

Yes, probably, it should match what I'm thinking.
Honestly, I'm going to have to make another pass over your code. It hasn't all sunk in yet.
I was mostly reacting to the sight of the main-theme, theme-vars and base-theme keyword parameters of the dropdown render function.


Update/add component print styles

What
We have 148 components across GOV.UK and 13 of them have print styles (see the component auditing for details). This PR updates the print styles for any public-facing components. The changes broadly fall into these categories:

hiding/removing components that should never be printed
improving components that already have print styles
creating print styles for components that don't already have them

Trello card
Why
People still print a lot of pages from GOV.UK. And recent discussions have highlighted potential problems, or at least a perception that HTML pages when printed aren't as good as PDFs. We're trying to move away from/discourage the use of PDFs on GOV.UK, so improving the print experience could help.

@andysellick

The PR description appears to be the generic work description copied from the Trello card

I've kept the PR description the same in all these apps for consistency. The idea was to explain the PR according to the Trello card, then have each commit be specific about each component change. It worked well in other apps with multiple commits, but here it's just one commit.

I'd like to know which page this is on and why you're making this change.

The page is referenced in the tracking spreadsheet which is linked on the Trello card, eg: https://www.gov.uk/done/transaction-finished
This change is simply hiding the grey promotion element when printed as it's basically redundant: the important part of that promotion is the link, which is pointless on a printout. We've used the same logic for hiding other elements in other apps too.
There's also an argument for hiding the Related Content as that's redundant when printed too, however I didn't want to change that here as it might have cascading consequences for other pages.

@matthillco great, thank you for that clear description. Please make that the PR description, and update the PR title accordingly.

@matthillco please remember that we use github as a history of our changes. Linking to relevant trello cards is useful, but only for background information, as these boards may not be accessible by others or exist forever. A PR description and commit messages should fully encapsulate everything someone needs to know in order to review the change being made.

@matthillco great, thank you for that clear description. Please make that the PR description, and update the PR title accordingly.

@andysellick I've updated the title and description as requested.


Update de.json

adds a translation for the new "outdated" tag
(since it was added after my previous pr, and idk if a sync can mess up a master to master pr)

Thanks!

In the case of "Cache Downloads", cache would be a verb (a shorter way to say store the downloads in the cache)

I'll quickly fix that, there is no german word for cache (at least for this context) and download (only for the act of downloading).

I f you think it's best to leave it in English that's ok.

i just fixed the folder line on my end, so it'll be in the next pr

Perfect, thanks!


conda-build=2.1.17

As a possible quick (but not a perfectly clean) fix for https://github.com/python-control/python-control/issues/159.

I could find available conda-build versions here. Hope this helps.

Coverage increased (+0.6%) to 78.327% when pulling 287f82593311d4db295a1f10e87bcc9e3a0cb8b1 on autodrive:feature/conda_build_less_3.0 into 05d6bc5257d74a05ee2615d18ab7f5f58a2ec372 on python-control:master.

This PR is no longer needed; full fix in PR #167.


Fs 3031 flag unscored sections

show scored unscored sections for flagging NSTF assessment, these changes need to be removed/ reworked once assessment store starts using the new fund-store-db.

May be change to {% if section.name in ['Unscored', 'Your organisation'] %} on line 88


86 frontend alert panel component   deactivate option

The header now has a settings dropdown, which can be used to open the notification settings. All alert notifications are available in the modal, which can be activated or deactivated using the toggle button.

Looks good, it's probably a good idea to do an automatic view refresh after the notification settings have been edited and saved.


package needs to depend on "bc"

System Configuration
Please complete Your Configuration detail below. Refer to the BKC at Configuration.

Version
Your Configuration

Operating System
ubuntu 16.04 server

Kernel
4.4.0-21-generic

ROS
kinetic

ROS RealSense
1.6.0

librealsense
?.?.?

Camera Type-Firmware
?-?.?.?.?

Expected Behavior
Package installs and kernel module builds
Actual Behavior
Building kernel fails because missing "bc" command.  bc is not installed by default on ubuntu-server:
[snip]
CHK     include/generated/bounds.h
UPD     include/generated/bounds.h
CHK     include/generated/timeconst.h
/bin/sh: 1: bc: not found
Kbuild:66: recipe for target 'include/generated/timeconst.h' failed
make[2]: *** [include/generated/timeconst.h] Error 127
Makefile:1003: recipe for target 'prepare0' failed
make[1]: *** [prepare0] Error 2
Makefile:520: recipe for target '__build_one_by_one' failed
make: *** [__build_one_by_one] Error 2
Building module:
cleaning build area....
make KERNELRELEASE=4.4.0-21-generic -C /var/lib/dkms/uvcvideo/1.1.1-3-realsense/build/linux-src M=drivers/media/usb/uvc/....(bad exit status: 2)
ERROR: Cannot create report: [Errno 17] File exists: '/var/crash/ros-kinetic-librealsense.0.crash'
Error! Bad return status for module build on kernel: 4.4.0-21-generic (x86_64)
Steps to Reproduce

install ubuntu-server 16.04
apt install ros-kinetic-realsense-camera

currently only supporting ubuntu-desktop


Make proto reference explicit

Problem
Updates to https://github.com/xmtp/proto/tree/xmtpv3 cause local development environments to break, due the xmtp_proto package being refetched everytime the package is built.
Solution
This PR makes the reference explicit so that it's tracked in git. In the future any changes to the Proto repo will not be fetched until the appropriate code has been merged into main, and a commit updates the reference in build.rs.

FWIW, almost through fixing up the package to use the new protos


settings: Rework user_group save_discard widget

Added a consistent save/discard widget inside the
USER GROUP widget and replaces the inconsistent
"Click outside to save or click discard to discard" UI it had.
Allows users to edit user group-settings one user group at a time.
Fixes: #16453

Testing plan:
GIFs or screenshots:

@aniketsonu Thanks for working on this!  Can you investigate the CI failure?

Thanks for working on this @aniketsonu!  We've ended up deciding to rewrite this component and likely won't be merging any further PRs for it.  So I'm closing this in favor of the rewrite proposed in #19526. for details on our plans.


Fix Thai input system getting into non-Thai projects

The cause of the problem was a combination of two things:

The PHP code that creates a LexProjectModel creates two input systems, en and th, as "placeholders" so that its config can be correctly updated.

The "placeholder" input systems should normally be overwritten on initial clone. But when LfMerge detects an older project model and calls itself recursively, the "inner" LfMerge process sees an existing Mongo project and thinks that it contains user data that must be preserved, so it doesn't treat it as an initial clone. (This was a recent change intended to preserve user data if the webwork/(project-code) folder ever gets corrupted or deleted.) Then because it thinks there is valuable user data in Mongo, it does a TransferMongoToFdo first before doing the TransferFdoToMongo, and so the placeholder th input system is added to the FDO project. (Usually incorrectly: the bug report that triggered this fix was from a project not using Thai).

The solution I've implemented is to add a command-line parameter to LfMerge, which the "outer" LfMerge call can use to determine that this is actually an initial clone. If the --initial-clone parameter is passed, LfMerge will overwrite the existing Mongo config (including the placeholder input systems), and will skip the TransferMongoToFdo step, thus throwing away the data currently in Mongo because it's not actually real user data. (Obviously, using the --initial-clone parameter when there is valuable user data in Mongo would be a Bad Thing™, since that valuable user data could be lost.)

This change is

I'm not 100% happy with the approach I took here, shoehorning the TreatAsInitialClone property into ChorusHelper. This feels like I'm making the class play two roles, and I'm introducing another global variable, increasing the potential complexity of the code and the difficulty of making future changes. (It's really a property on the ChorusHelper singleton, but singletons are essentially global variables in fancy dress, so it has all the same code-complexity drawbacks as a global variable).
However, I haven't yet found a better way of writing this, so I'm submitting this bugfix as PR for review. It does fix the user-facing bug; I've verified that by local testing on my machine. I don't have unit tests for this bugfix yet -- that's the next step -- but I might as well put it out for review now, while I start writing appropriate unit tests.

The Jenkins build fails because it's trying to build web-languageforge first as a dependency, and web-languageforge can't build because some of its own PHP dependencies require PHP 7.0, and the PHP version on the Jenkins build agents is PHP 5.6.22. This is not a failure that will be resolved quickly, I think, so it's probably better to review this PR without waiting for the Jenkins build to succeed.

The lfmerge builds on Jenkins build on Debian Jessie which has only PHP 5. We should update to Ubuntu Xenial which comes with PHP 7.
Re the changes here: I'm wondering: can't we check the SRState and if it's SendReceiveStates.CLONING it would tell us that it's an initial clone? Of course we would have to check that before we set it to CLONING again in EnsureCloneAction.DoRun.

Reviewed 6 of 6 files at r1.
Review status: all files reviewed at latest revision, 1 unresolved discussion, some commit checks failed.

src/LfMerge.Core/Actions/Infrastructure/ChorusHelper.cs, line 35 at r1 (raw file):

		}

		public static void SetTreatAsInitialClone(bool treatAsInitialClone)

I'm wondering why did you make this a method rather than a setter on ThisIsAnInitialClone?

Comments from Reviewable

I looked at the SRState, and decided that it wasn't the right approach since there's plenty of other code around that feels free to play with it; in particular, we set it to IDLE at the end of each run and I wasn't sure I wanted to mess with that. But perhaps I was wrong about how much other code there is that sets SRState; I didn't write that part of the logic (I think you wrote that), and so that part of the design is less clear in my head. If using SRState to communicate "This is an initial clone" to the "inner" LfMerge would work, then that might be a good approach. But we'd want to make sure that we can tell this scenario (initial clone that's been "forwarded" to the inner LfMerge) apart from the "user data in Mongo that needs preserving" scenario. In the latter case, the webwork folder has somehow gotten lost, but there's still user data in Mongo from someone who was using LF in the past day/week/month/whatever. That user data in Mongo does not yet exist anywhere else, and will be lost forever if we overwrite that Mongo entry with one from FDO, so we do want to be careful to preserve it. So I tried to make sure that I could not accidentally enter the "initial clone forwarded to inner LfMerge" code path; it can only happen with a command-line option, rather than with a state file that other code can sometimes rewrite.
But as I said, the design you just suggested may indeed be the best one. If we can be sure we won't overwrite Mongo in a "webwork folder missing" scenario, then great: let's communicate that information via SRState, which is the most natural way to express it.

Review status: all files reviewed at latest revision, 1 unresolved discussion, some commit checks failed.

src/LfMerge.Core/Actions/Infrastructure/ChorusHelper.cs, line 35 at r1 (raw file):
Previously, ermshiperete (Eberhard Beilharz) wrote…
I'm wondering why did you make this a method rather than a setter on ThisIsAnInitialClone?

Because I was copying the design of SetModelVersion, where the property is an instance variable but there are static getter and setter methods that work with the singleton instance. I didn't put any design thought into this, I just copied the design of SetModelVersion, because the needs for both are pretty much the same. (The same code paths need to know about the model version and the initial-clone status).

Comments from Reviewable

Good thoughts. There are two instances where we set SRState to CLONING that are potentially dangerous: we set SRState to CLONING if the state file doesn't exist (in EncuresCloneAction.Pre...), and if we don't find a .fwdata file we delete the directory and clone again (in LfMerge/Program.cs).  So I don't think my suggestion will work.
Another thought: we want to overwrite the mongo data exactly once, and that is after the very first clone. Do we have any data in mongo that could tell us if we'd synced before, like last sr timestamp? When we do the initial clone this should be unset and so we could probably use that for detection.
(Otherwise this PR is fine, but I'm with you that I'm not 100% happy with this approach. Seems a little clumsy and it feels like there should be a way somewhere to detect that this is an initial clone rather than having to pass a flag around)

Review status: all files reviewed at latest revision, all discussions resolved, some commit checks failed.

Comments from Reviewable

There was a way to detect if it's an initial clone -- the Mongo DB doesn't have an SR project code in it yet. (See the MongoProjectAlreadyExistsAndIsSRProject function.) But that turned out to only be the case in the "outer" LfMerge instance, and not in the "inner" instance since at some point the SR project code gets set. Rather than hunt for the right way to do it and take more time away from the current common-good sprint, I opted for a quick-but-slightly-"dirty" solution, passing the flag around, instead.
After the sprint, I should probably revisit this and try to come up with a cleaner design.

What about checking to see if the LF project has any entries?  If number of
entries in mongo == 0, then overwrite mongo with initial clone.  If entries

0, then preserve mongo before transfer.

On Thu, Apr 20, 2017, 4:46 PM Robin Munn<EMAIL_ADDRESS>wrote:

There was a way to detect if it's an initial clone -- the Mongo DB
doesn't have an SR project code in it yet. (See the
MongoProjectAlreadyExistsAndIsSRProject
https://github.com/sillsdev/LfMerge/blob/c71e7489950a19f630d5c0ba3a4ad21734781a63/src/LfMerge.Core/Actions/EnsureCloneAction.cs#L215
function.) But that turned out to only be the case in the "outer" LfMerge
instance, and not in the "inner" instance since at some point the SR
project code gets set. Rather than hunt for the right way to do it and
take more time away from the current common-good sprint, I opted for a
quick-but-slightly-"dirty" solution, passing the flag around, instead.
After the sprint, I should probably revisit this and try to come up with a
cleaner design.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/sillsdev/LfMerge/pull/40#issuecomment-295656351, or mute
the thread
https://github.com/notifications/unsubscribe-auth/ADSPKY4WUkppxf-qHTA5aboNhu3l4bwHks5rxymIgaJpZM4NCiRr
.

Also, this is high priority.  Let's do this right and then get back to the
common sprint.  A quick and dirty now approach is going to cost us more in
the long run.  Don't you agree?
On Thu, Apr 20, 2017, 9:08 PM Christopher Hirt<EMAIL_ADDRESS>wrote:

What about checking to see if the LF project has any entries?  If number
of entries in mongo == 0, then overwrite mongo with initial clone.  If
entries > 0, then preserve mongo before transfer.
On Thu, Apr 20, 2017, 4:46 PM Robin Munn<EMAIL_ADDRESS>wrote:

There was a way to detect if it's an initial clone -- the Mongo DB
doesn't have an SR project code in it yet. (See the
MongoProjectAlreadyExistsAndIsSRProject
https://github.com/sillsdev/LfMerge/blob/c71e7489950a19f630d5c0ba3a4ad21734781a63/src/LfMerge.Core/Actions/EnsureCloneAction.cs#L215
function.) But that turned out to only be the case in the "outer" LfMerge
instance, and not in the "inner" instance since at some point the SR
project code gets set. Rather than hunt for the right way to do it and
take more time away from the current common-good sprint, I opted for a
quick-but-slightly-"dirty" solution, passing the flag around, instead.
After the sprint, I should probably revisit this and try to come up with
a cleaner design.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/sillsdev/LfMerge/pull/40#issuecomment-295656351, or mute
the thread
https://github.com/notifications/unsubscribe-auth/ADSPKY4WUkppxf-qHTA5aboNhu3l4bwHks5rxymIgaJpZM4NCiRr
.

Checking if the LF project has any entries would be a good way to proceed, but there are two issues with that approach:

It would require the EnsureCloneAction to take a dependency on IMongoConnection, which we have so far avoided having to have. (That's one reason why I didn't go with that approach when first checking if the project exists).
There could be user data embedded in the config settings in a real project whose webwork folder got lost. E.g., the user clones his empty FW project in LF, then sets up the view settings the way he wants them before letting his non-techie language helpers log in. When the user is done setting up those view settings, he clicks the Send/Receive button because he's made that a habit -- it's like clicking "File -> Save", and he trusts that nothing bad will happen if he does so. But oops, because there were no entries yet, we decided to overwrite his config. Now he doesn't trust the Send/Receive button any more.

I think the LastSyncedDate field in the project record might be a better one to check than the number of entries. But I'll go make absolutely sure that it can't end up being null in a "we have real user data" situation. Maybe I need to double it up with a check on the # of entries, and take that IMongoConnection dependency after all.

Review status: all files reviewed at latest revision, all discussions resolved, some commit checks failed.

Comments from Reviewable

Taking the IMongoConnection dependency seems very reasonable given that
LFMerge is tightly coupled with mongodb.  I like the LastSyncedDate idea
best.  There may, in the future, be cases where we are doing a s/r sync
with an empty project (ie. no entries). I think that's a practically non
existent case right now.
On Fri, Apr 21, 2017 at 10:12 AM, Robin Munn<EMAIL_ADDRESS>wrote:

Checking if the LF project has any entries would be a good way to proceed,
but there are two issues with that approach:

It would require the EnsureCloneAction to take a dependency on
IMongoConnection, which we have so far avoided having to have. (That's
one reason why I didn't go with that approach when first checking if the
project exists).
There could be user data embedded in the config settings in a
real project whose webwork folder got lost. E.g., the user clones his
empty FW project in LF, then sets up the view settings the way he wants
them before letting his non-techie language helpers log in. When the user
is done setting up those view settings, he clicks the Send/Receive button
because he's made that a habit -- it's like clicking "File -> Save", and he
trusts that nothing bad will happen if he does so. But oops, because there
were no entries yet, we decided to overwrite his config. Now he doesn't
trust the Send/Receive button any more.

I think the LastSyncedDate field in the project record might be a better
one to check than the number of entries. But I'll go make absolutely
sure that it can't end up being null in a "we have real user data"
situation. Maybe I need to double it up with a check on the # of entries,
and take that IMongoConnection dependency after all.
Review status: all files reviewed at latest revision, all discussions
resolved, some commit checks failed.
Comments from Reviewable
https://reviewable.io:443/reviews/sillsdev/lfmerge/40#-:-KiDSs4kiWiu8WKH75l6:b-bhibsj
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/sillsdev/LfMerge/pull/40#issuecomment-296035008, or mute
the thread
https://github.com/notifications/unsubscribe-auth/ADSPKVq7xdhmPeNyOpqQbnFbsk2GZ5Ktks5ryB6HgaJpZM4NCiRr
.

If we take just the LastSyncedDate field as the condition to check, we won't need the MongoConnection dependency, as that field lives in the project record, which is taken care of by the MongoProjectRecordFactory dependency that already exists.
However, I like the belt-and-suspenders approach to making sure we don't lose user data, so I'll keep the LastSyncedDate check and the "more than zero lexical entries" check. (And OR them together, so that if either check is true, we won't overwrite Mongo data).
With those two checks in place, I feel safe removing the --initial-clone command-line parameter, which takes care of Eberhard's concerns (which I share) about that solution not feeling "right". I'll push that commit, and then I'll be happy with the state of this PR.

One minor suggestion, otherwise looks good.

Reviewed 8 of 9 files at r2, 1 of 6 files at r3.
Review status: all files reviewed at latest revision, 1 unresolved discussion, some commit checks failed.

src/LfMerge.Core/MongoConnector/MongoConnection.cs, line 137 at r3 (raw file):

		}

		public long EntryCount(ILfProject project)

A better name might be LexiconEntryCount

Comments from Reviewable

If anyone wants to give this an LGTM stamp so GitHub lets me push the "Squash and Merge" button, I'll merge this into master now that it has working unit tests. I could also do that manually at the Git command line, but doing it through GitHub gives a cleaner history (e.g., it'll automatically sync up with the issue report).

Review status: 4 of 10 files reviewed at latest revision, 1 unresolved discussion, some commit checks failed.

src/LfMerge.Core/MongoConnector/MongoConnection.cs, line 137 at r3 (raw file):
Previously, ermshiperete (Eberhard Beilharz) wrote…
A better name might be LexiconEntryCount

I went with LexEntryCount since that matches the naming scheme used in the rest of the code (e.g., LfLexEntry).

Comments from Reviewable

Reviewed 6 of 6 files at r4.
Review status: all files reviewed at latest revision, 2 unresolved discussions, some commit checks failed.

src/LfMerge.Core.Tests/TestDoubles.cs, line 312 at r4 (raw file):

Memoize

Is this a typo or a word that I don't know?

src/LfMerge.Core.Tests/Actions/Infrastructure/ChorusHelperTests.cs, line 19 at r4 (raw file):

		public void Setup()
		{
			_env = new TestEnvironment(registerSettingsModelDouble: false);

:+1:  I like this - makes it more clear what the 'false' does

src/LfMerge.Core/MongoConnector/MongoConnection.cs, line 137 at r3 (raw file):
Previously, rmunn (Robin Munn) wrote…
I went with LexEntryCount since that matches the naming scheme used in the rest of the code (e.g., LfLexEntry).

:+1:

Comments from Reviewable

Review status: all files reviewed at latest revision, 3 unresolved discussions, some commit checks failed.

src/LfMerge.Core.Tests/TestDoubles.cs, line 312 at r4 (raw file):
Previously, ermshiperete (Eberhard Beilharz) wrote…

Memoize

Is this a typo or a word that I don't know?

It's not a typo. Although technically I'm not using memoization in the strictest sense, because the word memoization is usually reserved for caching the output of "pure" functions, where the output will always be the same value. Here, I'm explicitly relying on the fact that the output is mutable, and making sure to always return the same object when called with the same parameters, so that it can better simulate storing and retrieving values in the Mongo database.

Comments from Reviewable