--bisect deadlocks when reporting results

--bisect deadlocks when reporting results
david@davids:~/git/puppet-resource_api$ bundle exec rspec --seed 40589 --bisect=verbose --pattern spec/\*\*\{,/\*/\*\*\}/\*_spec.rb  --exclude-pattern 'spec/{fixtures/**/*.rb,fixtures/modules/*/**/*.rb}'
Bisect started using options: "--seed 40589 --pattern spec/**{,/*/**}/*_spec.rb --exclude-pattern spec/{fixtures/**/*.rb,fixtures/modules/*/**/*.rb}" and bisect runner: :fork
Running suite to find failures...^C

Bisect aborted!

The most minimal reproduction command discovered so far is:
  (Not yet enough information to provide any repro command)

Bisect aborted!

The most minimal reproduction command discovered so far is:
  (Not yet enough information to provide any repro command)

david@davids:~/git/puppet-resource_api$

at the point of ctrl+c, the process has been already sitting a lot longer than the test suite would run.
stracing the processes shows the following situation:
david@davids:~$ strace -s 10000 -p 6090 -p 6096
strace: Process 6090 attached
strace: Process 6096 attached
[pid  6090] wait4(6096,  <unfinished ...>
[pid  6096] ppoll([{fd=10, events=POLLOUT}], 1, NULL, NULL, 8^Cstrace: Process 6090 detached
strace: Process 6096 detached
 <detached ...>

david@davids:~$

where pid 6090 is the --bisect process and pid 6096 is the child rspec process. From other traces I've been running, I understand that the ppoll is waiting on an IO event after/while writing the results to fd 10. Meanwhile the main process is hanging in waitpid at https://github.com/rspec/rspec-core/blob/2800fe118fa2efeb87b7bdc7888476373debf6ca/lib/rspec/core/bisect/fork_runner.rb#L95
A common reason why this might not show up in testing is if the result report in the tests is smaller than the underlying OS's buffer size. In that case the runner process exits after writing to the buffer and the parent continues happily reading from the buffer. In my case the testsuite results are ~93kB and the processes deadlock.
Your environment

Ruby version: ruby 2.5.5p157 (2019-03-15 revision 67260) [x86_64-linux-gnu]
rspec-core version: 3.8.0

Steps to reproduce

checkout https://github.com/DavidS/puppet-resource_api/tree/rspec-core-repro
bundle install the gems according to the Gemfile.lock
the following command hangs:

david@davids:~/git/puppet-resource_api$ bundle exec rspec --bisect=verbose --seed 40589 --pattern 'spec/**{,/*/**}/*_spec.rb' --exclude-pattern 'spec/{fixtures/**/*.rb,fixtures/modules/*/**/*.rb}'
Bisect started using options: "--seed 40589 --pattern spec/**{,/*/**}/*_spec.rb --exclude-pattern spec/{fixtures/**/*.rb,fixtures/modules/*/**/*.rb}" and bisect runner: :fork
Running suite to find failures...

while this creates results:
david@davids:~/git/puppet-resource_api$ bundle exec rspec --bisect=verbose --require shell --seed 40589 --pattern 'spec/**{,/*/**}/*_spec.rb' --exclude-pattern 'spec/{fixtures/**/*.rb,fixtures/modules/*/**/*.rb}'
Bisect started using options: "--require shell --seed 40589 --pattern spec/**{,/*/**}/*_spec.rb --exclude-pattern spec/{fixtures/**/*.rb,fixtures/modules/*/**/*.rb}" and bisect runner: :shell
Running suite to find failures... (2 minutes 48.2 seconds)
 - Failing examples (1):
    - ./spec/puppet/resource_api_spec.rb[1:16:2:1]
 - Non-failing examples (1398):
    - ./spec/acceptance/array_spec.rb[1:1:1]
[...]

Thanks a lot for this detailed answer and the clues.
I would love to take a deeper look on this one. In the meantime did you see this discussion https://github.com/rspec/rspec-rails/issues/1353 ?

@DavidS I'd love it if you could provide us with an isolated reproduction of this, my time is quite limited at the moment and I won't be able to get to a reproduction containing complex code like puppet, another reason for this is to exclude the possibility of puppet itself causing the deadlock. Alternatively I'm open to suggestions for detecting deadlocks and preventing them within RSpec itself?

Alternatively I'm open to suggestions for detecting deadlocks and preventing them within RSpec itself?

Definitely 💚

require 'rspec'

RSpec.describe "a bunch of nothing" do
  (0...3000).each do |t|
    it { expect(t).to eq t }
  end
end

is an example that immediately deadlocks for me when running under rspec --bisect:
david@davids:~/tmp/rspec-deadlock-example$ bundle exec rspec spec/nil_spec.rb --bisect
Bisect started using options: "spec/nil_spec.rb"
Running suite to find failures...^C

Bisect aborted!

The most minimal reproduction command discovered so far is:
  (Not yet enough information to provide any repro command)

Bisect aborted!

The most minimal reproduction command discovered so far is:
  (Not yet enough information to provide any repro command)

david@davids:~/tmp/rspec-deadlock-example$ cat spec/nil_spec.rb

root@davids:~# strace -p 27326 -p 27329
strace: Process 27326 attached
strace: Process 27329 attached
[pid 27326] wait4(27329,  <unfinished ...>
[pid 27329] ppoll([{fd=8, events=POLLOUT}], 1, NULL, NULL, 8^Cstrace: Process 27326 detached
strace: Process 27329 detached
 <detached ...>

root@davids:~#

By changing the 3000, you can make the result set arbitrarily large if you OS has a larger default buffer size.

Thanks, yes that triggers the issue for me, as a work around the shell runner of course works, but then I guess thats why you have #2638 open :joy:

Exactly :-D
Thanks a lot for the time and work y'all put into rspec.

Thanks. I was able to reproduce it on my mac with a very basic example like the one you mentioned.
https://github.com/benoittgt/rspec_repro_bisect_deadlock

A very interesting answer has been posted by @palkan here : https://github.com/benoittgt/rspec_repro_bisect_deadlock/issues/1
I had also success removing Process.waitpid but I was not sure it was a good idea. I didn't understand it's usage here.

@palkan comes to the same conclusion that is in my original analysis. Process.waitpid does some OS-level cleanup that is sometimes necessary for the overall health of the OS. In this case of a single child process, we can be lazy and not do it at all, or defer it until all output is read and processed.

Thanks a lot @DavidS for those additionnals information.
What do you think about the proposal of @palkan

Use IO#write_nonblock should work. That would require changes in both send and receive methods.

I tried in utilities.rb
        def send(message)
          packet = Marshal.dump(message)
-         @write_io.write("#{packet.bytesize}\n#{packet}")
+         @write_io.write_nonblock("#{packet.bytesize}\n#{packet}")
        end

        # rubocop:disable Security/MarshalLoad
        def receive
          packet_size =<EMAIL_ADDRESS>-         Marshal.load(@read_io.read(packet_size))
+         Marshal.load(@read_io.read_nonblock(packet_size))

but
Traceback (most recent call last):
	18: from /Users/benoit.tigeot/.rvm/gems/ruby-2.5.1/bin/rspec:23:in `<main>'
	17: from /Users/benoit.tigeot/.rvm/gems/ruby-2.5.1/bin/rspec:23:in `load'
	16: from /Users/benoit.tigeot/.rvm/gems/ruby-2.5.1/gems/rspec-core-3.8.1/exe/rspec:4:in `<top (required)>'
	15: from /Users/benoit.tigeot/.rvm/gems/ruby-2.5.1/gems/rspec-core-3.8.1/lib/rspec/core/runner.rb:45:in `invoke'
	14: from /Users/benoit.tigeot/.rvm/gems/ruby-2.5.1/gems/rspec-core-3.8.1/lib/rspec/core/runner.rb:69:in `run'
	13: from /Users/benoit.tigeot/.rvm/gems/ruby-2.5.1/gems/rspec-core-3.8.1/lib/rspec/core/invocations.rb:36:in `call'
	12: from /Users/benoit.tigeot/.rvm/gems/ruby-2.5.1/gems/rspec-core-3.8.1/lib/rspec/core/bisect/coordinator.rb:17:in `bisect_with'
	11: from /Users/benoit.tigeot/.rvm/gems/ruby-2.5.1/gems/rspec-core-3.8.1/lib/rspec/core/bisect/coordinator.rb:27:in `bisect'
	10: from /Users/benoit.tigeot/.rvm/gems/ruby-2.5.1/gems/rspec-core-3.8.1/lib/rspec/core/bisect/coordinator.rb:49:in `start_bisect_runner'
	 9: from /Users/benoit.tigeot/.rvm/gems/ruby-2.5.1/gems/rspec-core-3.8.1/lib/rspec/core/bisect/fork_runner.rb:38:in `start'
	 8: from /Users/benoit.tigeot/.rvm/gems/ruby-2.5.1/gems/rspec-core-3.8.1/lib/rspec/core/bisect/coordinator.rb:31:in `block in bisect'
	 7: from /Users/benoit.tigeot/.rvm/gems/ruby-2.5.1/gems/rspec-core-3.8.1/lib/rspec/core/bisect/example_minimizer.rb:20:in `find_minimal_repro'
	 6: from /Users/benoit.tigeot/.rvm/gems/ruby-2.5.1/gems/rspec-core-3.8.1/lib/rspec/core/bisect/example_minimizer.rb:117:in `prep'
	 5: from /Users/benoit.tigeot/.rvm/gems/ruby-2.5.1/gems/rspec-core-3.8.1/lib/rspec/core/bisect/example_minimizer.rb:155:in `track_duration'
	 4: from /Users/benoit.tigeot/.rvm/gems/ruby-2.5.1/gems/rspec-core-3.8.1/lib/rspec/core/bisect/example_minimizer.rb:118:in `block in prep'
	 3: from /Users/benoit.tigeot/.rvm/gems/ruby-2.5.1/gems/rspec-core-3.8.1/lib/rspec/core/bisect/fork_runner.rb:59:in `original_results'
	 2: from /Users/benoit.tigeot/.rvm/gems/ruby-2.5.1/gems/rspec-core-3.8.1/lib/rspec/core/bisect/fork_runner.rb:71:in `dispatch_run'
	 1: from /Users/benoit.tigeot/.rvm/gems/ruby-2.5.1/gems/rspec-core-3.8.1/lib/rspec/core/bisect/utilities.rb:47:in `receive'
/Users/benoit.tigeot/.rvm/gems/ruby-2.5.1/gems/rspec-core-3.8.1/lib/rspec/core/bisect/utilities.rb:47:in `load': marshal data too short (ArgumentError)

Reading through the docs of write_nonblock (https://apidock.com/ruby/IO/write_nonblock) I also think that in the original error case you would just get a Errno::EWOULDBLOCK instead of writing the data out.

the original error case you would just get a Errno::EWOULDBLOCK

I tried this: it fills the buffer and returns 65536. Not sure when Errno::EWOULDBLOCK could happen.
So, that would be a partial write (and that's why we see marshal data too short).
My initial suggestion that we can leverage write_nonblock was not correct: we need to initiate the read before calling waitpid. That's the main problem.
Probably, the following refactoring could be a bit better than just dropping Process.waitpid:
def dispatch_run(run_descriptor)
- @run_dispatcher.dispatch_specs(run_descriptor)
+ pid = @run_dispatcher.dispatch_specs(run_descriptor)
  @channel.receive.tap do |result|
    # ...
    Process.waitpid(pid)
   end
end

@palkan do you feel like working up a patch with something like that?

@JonRowe Not in the next couple of weeks. I can try to find another evil martian to help with this)

It is working with @palkan proposal
@@ -1,9 +1,10 @@
         def dispatch_run(run_descriptor)
-          @run_dispatcher.dispatch_specs(run_descriptor)
+          pid = @run_dispatcher.dispatch_specs(run_descriptor)
           @channel.receive.tap do |result|
             if result.is_a?(String)
               raise BisectFailedError.for_failed_spec_run(result)
             end
+            Process.waitpid(pid)
           end
         end

@@ -23,6 +24,5 @@
           end

           def dispatch_specs(run_descriptor)
-            pid = fork { run_specs(run_descriptor) }
-            Process.waitpid(pid)
+            fork { puts run_specs(run_descriptor) }
           end

But I didn't verified yet what David mentioned.

Process.waitpid does some OS-level cleanup that is sometimes necessary for the overall health of the OS

I dig into MRI source
code but at the moment I no clue of what can happens when it not "cleanup". I don't see it.
Also another proposal will be to use WNOHANG. From waitpid doc:

If WNOHANG was specified in options and there were no children in a waitable state, then waitid() returns 0 immediately (...)

--- a/lib/rspec/core/bisect/fork_runner.rb
+++ b/lib/rspec/core/bisect/fork_runner.rb
@@ -92,7 +92,7 @@ module RSpec

           def dispatch_specs(run_descriptor)
             pid = fork { run_specs(run_descriptor) }
-            Process.waitpid(pid)
+            Process.waitpid(pid, Process::WNOHANG)

It is working too.

I recently use my last proposition with the Process::WNOHANG in a project with stuck bisect. It helped us having a result instead of a locked bisect.
Don't you think a PR with that change will be a good idea? Not sure about how we can test this at the moment. I have to think about it.

@benoittgt 's Process::WNOHANG solution also worked for me.

I just ran into this—I'm on rspec-core 3.9.2 on OS X and still seem to get the hanging behavior right before it outputs the failing and non-failing examples. Using shell runner works... Does anyone have suggestions on how to debug what is going on?

Hello @agibralter
There is many commands in the PR that may help you to understand what is happening.
If you succeed to find an easy way to reproduce it I would be very happy to patch it.

@agibralter Could you try https://github.com/rspec/rspec-core/pull/2739 ?

I've contributed a PR which addresses a specific situation in which rspec --bisect hangs.
Specifically when encoding is set to UTF-8 (eg. by Rails) and the forked child process tries to send back BINARY/ASCII-8BIT encoded data to the parent, but the communication channel (Bisect::Channel) rejects it silently due to the encoding mismatch. The parent process, whose output you're seeing, wait indefinitely for the child process, which has since error'ed out.

I've contributed a PR which addresses a specific situation in which rspec --bisect hangs.
Specifically when encoding is set to UTF-8 (eg. by Rails) and the forked child process tries to send back BINARY/ASCII-8BIT encoded data to the parent, but the communication channel (Bisect::Channel) rejects it silently due to the encoding mismatch. The parent process, whose output you're seeing, wait indefinitely for the child process, which has since error'ed out.


"Aborted (core dumped)" on Ubuntu w/ Simple Example From DockerHub

Trying to run the following simple example from DockerHub on my Ubuntu VM and I get "Aborted (core dumped)":
$ sudo docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=MyStrongPassword123456!' -p 1433:1433  microsoft/mssql-server-linux
Aborted (core dumped)

Screenshot:

I even tried mapping a volume to /var/opt/mssql to see if I could get any log output but nothing is generated but empty folders for logs, secrets, data.
I'm able to run other containers such as an ASP.NET Core website on this same VM, just not SQL Server.
I have 4GB of RAM allocated and 12 GB of available storage on this VM.
Any ideas?

I've upped my VM resources to 2 cores and 6 GB of RAM thinking maybe this was the problem, but it did not change anything.

I just created a fresh new VM and mssql is running just fine on it. I don't know what is wrong with the original VM (it was a fresh install as well) but I will keep it around if you guys want me to debug anything for you.


Add deploy logs and improve rollbacks

Improves on #154. Writes log entries for deploys and rollbacks done with bedrock-ansible. For rollback, it checks available releases on server and parses their most recent entries in logs/revisions.log, aborting/warning if there may be trouble. I've tested on DigitalOcean, but not development on Vagrant.
This may not fit your plans. I didn't realize how complicated it would get. A next iteration could extract most of rollback/defaults/main.yml into a module for integrated logs and rollbacks.

Basic: ./deploy.sh <environment> <site name>
Specific version from repo (default is 'master'):    ansible-playbook -i hosts/<environment> deploy.yml --extra-vars "site=<site name> branch=<branch>" where branch is branch name, sha, or tag for your git repo. (This was already built in to deploy.yml. Just pointing out that the log will pick up on it.)

Rollback. ansible-playbook -i hosts/<environment> rollback.yml --extra-vars "site=<site name>"
--extra-vars for rollback.yml
site=<site name> (required, no default)
version=<RELEASE> (default is auto-rollback; also accepts SHA and VERSION). Choose a release from the columns labeled "NEW". Can roll forward to existing release.
version=list (default is auto-rollback) Doesn't rollback. Just lists most recent log entry for each release.
priorby=<activation | creation> (default is 'activation') Determine whether auto-rollback selects the prior version according to recency of activation or creation. Imagine you create release A then B then C, then rollback to B, then create D, and now want to auto-rollback.

summary: A -> B -> C -> B -> D -> ?
which prior release should be used for auto-rollback?

B: prior in terms of activation (sort by DATE & TIME in log), obtained via priorby=activation
C: prior in terms of creation (sort by RELEASE in log) obtained via priorby=creation

markfail=true (default is 'false') Set the status of the currently active release to 'fail' in the deploy log before rollback. This is useful if the current release had a problem and you don't want it to be a candidate for future auto-rollback. This isn't the only way a release gets marked with 'fail' status. Each deploy/rollback starts by writing an entry to the log with status 'fail', which is overwritten to 'ok' at the end (unless it fails).
force=true (default false) Override all the error-checking and just create the damn symlink.
Error Checking
Diagnoses and gives user specific feedback.

When revisions.log appears corrupted in formatting (which could lead to failed rollbacks).
When no prior version is available for auto-rollback. Can also warn if the current version is somehow not in the log, making it impossible to know which version would be prior.
When user specifies a version but...

version doesn't exist
version is non-unique (e.g., version=master would probably match multiple)
version exists but isn't in log (i.e., it isn't 'trusted')
version's status is not 'ok' (e.g., was marked 'force' or 'fail' in the log)
version is already the currently active version

Output from version=list will notify of directories in example.com/releases that are not in log.

Time Stamps
I switched to naming releases using a UTC timestamp that should result in releases having same name across multiple servers (credit). This should make things easier for rollbacks. Log entries would also then be strictly chronological even if people deploy from multiple timezones. But TBH, I haven't tried any of this across multiple servers.

I think this is on the right track in terms of features, but not in terms of implementation. The scripting type issues ought to be handled in a module, not in a maze of jinja filters in defaults/main.yml. I started with jinja, not anticipating how it all would keep growing and growing. So, I could learn a little python, and take another stab at it, doing it right, but I'm guessing you already have your own plans for implementing these features.

@fullyint not really :)
I've left this here for a bit because it is complicated. It's just a lot of code to go through. But yeah I agree that a library/module would be better suited for a lot of this.
Let me know what you want to do with this in the short term. Is there anything smaller to break out of it first?

As it's your project/repo, I respect anything you decide. Part of me thinks the features and logic are super smart, but part of me fears that it could be just a beginner's silly contraption in code. I simply don't have broad enough experience and perspective to know.
I'll have to rely on your judgment as to whether this has merit, or any place in your project. My view is that it works, and is really convenient, and I like the logs. I did enough testing to share it for others to respond to, but I didn't hammer on it hard, so I expect we'd find bugs.

It's just a lot of code to go through.

That's the fault of my bad implementation. Had I put all the logic in a python-based library/module, it'd be easier (of course). I bet that it'd be easiest to evaluate while test driving, trying to stump it, then looking at the code to see its strategy.

Is there anything smaller to break out of it first?

It could merged as is and require zero change in how people use bedrock-ansible. It uses the same commands for deploy and rollback as at present. It just has the extra features available in the --extra-vars and in the error-checking. I'm not sure why break out a smaller piece of it, unless you see pieces in my description above that you know you'd never want to include in the final version anyway.
A big argument for not including ANY of it would be if you expect that a next iteration/implementation would be totally different. In that case, maybe there's no reason to adding something you'll just turn around and rip out. Another reason not to include it might be to avoid having its weird jinja implementation in your repo history, kind of like, "don't ship code that is doing it wrong."
Some notes I have to myself of what I would add/change, if it's worth pursuing:

add a dry-run option
rename logs/revisions.log to logs/{{site}}.revisions.log (like the access and error logs)
use multiline variables for the messages, like I did in the logrotate_scripts variable
maybe write a bash wrapper script

Closing. A PR is not the place for "hey, what do you think of my poorly-implemented idea?" Wish I had time right now to re-do it with a library/module, but it'll have to wait. Anyone is welcome to beat me to it.


Question on memory leak

Hi,
I using ScalePageView to show 10 different video that are bundled in the app.  In profiling the app with the Xcode Leak Instrument, I see leaks related to PagingCollectionViewController.update and .collectionView.
In the Leak tool, when I double click on the cellForItemAt I get the cell.update....and I see that parent captures self.  I'm wondering if this causes a leak when the cell gets dequeued or for some other reason?  It could be my implementation that is some how causing this.  I did run your sample app in the Leak tool and the same leak does not occur.
Would you have any suggestions and how I can further debug or eliminate this leak?
Thanks,
Dave

Hi, thanking for reporting the issue, I can tell the line you mentioned cell.update(value: list[indexPath.row], index: indexPath, parent: self) doesn't cause any memory leak since it's not async, but there might be another cause for the memory leak.
Could you send a simple project that reproduces the memory leak issue? I can use that to investigate the problem


CR-8437 rollback installation in case of failure

informative summary

/e2e

/e2e

/e2e

Codecov Report

Merging #201 (0e5cd68) into main (989c0ac) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main     #201   +/-   ##
=======================================
  Coverage   25.13%   25.13%
=======================================
  Files           1        1
  Lines         187      187
=======================================
  Hits           47       47
  Misses        134      134
  Partials        6        6

Continue to review full report at Codecov.

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

/e2e


fix linking issue with latest vitasdk

See vitasdk/vita-headers#400

so the order matters ?

I'm against the idea of having to modify project to workaround SDK bugs introduced after the project has been stable.

On this special case, the most stable is taihen and not vitasdk function names confusions.
So I agree, fix the vitasdk and don't touch taihen.

I'm against the idea of having to modify project to workaround SDK bugs introduced after the project has been stable.

Agree, this is just a temporary solution for latest vitasdk, before upstream fixes done from vitasdk maintainers.
Close this, hope they'd get a new naming rule to resolve conflict asap.


typo: Datatbase -> Database

OPS Build status updates of commit 65bfe3e:
:clock10: Preparing: average preparing time is 3 min(s) 17 sec(s)

OPS Build status updates of commit 65bfe3e:
:clock10: Incremental building: average incremental building time is 54 min(s) 18 sec(s)

OPS Build status updates of commit 65bfe3e:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

api/Access.DoCmd.TransferDatabase.md
:white_check_mark:Succeeded
View

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


Convert timestamp values to date string

I have some epoch timestamps in my data set. How can convert them date string while writing to xlsx ?
Any help!!

If you've got data that represents dates then you should be giving it to sheetjs as a Date so that it can do the right thing depending on what file format you are writing. Whilst you could format it as a string yourself I would strongly recommend against doing that, as it'll end up as a string column in Excel, which is probably not what you want.
Formatting your data set correctly is up to you. You can do this easily with standard JS (read the documentation for the Date class), or by using a library like momentJS.

As @SystemParadox mentioned, if you pass JS Date objects it will write.
JS and Unix share the same epoch (midnight of January 1 1970) but JS timestamps represent milliseconds while UNIX timestamps represent seconds.  Converting from UNIX to JS involves a simple division:
function unix_to_Date(unix) { return new Date(unix * 1000); }


PullBot Repository Blacklist

PullBot Repository Blacklist
I have 2 repositories i don't want PullBot to send pull requests. Is there a way to blacklist repositories? if so, how?
If this isn't a feature yet, could you consider adding this feature?

Thanks for the suggestion, I will definitely consider it.
At this time you can setup a branch protection rule on master to prevent auto merge.

👍 tyvm

UPDATE: i found a way to blacklist forked repositories.
When asked to authorize the PullBot app, instead of "All Repositories" select "Only Selected Repositories".
From now, it's self-explainable. Select the forked repositories you only want PullBot to send pull requests.
Ignore forked repositories that you don't want PullBot to send pull requests; don't select them.
If you need more infos, feel free to ask :)


Should we be using GGLContext (iOS) in plugins to configure Google services?

GGLContext is provided as a utility that configures Google services (signin, analytics, gcm etc). However, do we really need it?

According to this, it configures all shared google services. We use it only in one plugin right now (GoogleSignIn) and only when client id is null. It seems like client_id is a way of overriding what's given in GoogleService-Info.plist, which does not make much sense as client_id isn't something apps should be overriding.

GGLContext complicates plugin rolls into internal Google system as it is not provided by the default firebase libraries.

GGLContext is a nice utility for selectively configuring Google services (analytics, gcm, signin etc). However, this clashes with our plugin infrastructure. Each plugin configures itself separately and thus will need to call this resulting in multiple calls within app lifecycle which isn't correct.

In Flutter, the use of a plugin in an app indicates the desire to turn that feature on. Having a separate GoogleService-Info.plist which can toggle these features is confusing.

I propose that we get rid of this dependency and entirely rely on clientId being passed in from Dart side for the plugins that need it.

@tvolkert @goderbauer for comments.

I tracked down a bit more interesting history for this:

Internally, we never relied on GGLContext. ClientId was always configured during init explicitly ever since the plugin was created back in mid-2016.
For some reason, the external version diverged at some point (and in fact, until @tvolkert fixed it, GGLContext was the only way to set the clientId). I cannot see past @goderbauer 's merge of all plugins to this repository so I am not sure why this was done.

/cc @collinjackson

I think @collinjackson knows the history here as to why we read the clientId from GoogleServices-Info.plist vs having the developer specify it in their Dart code.

Also /cc @mit-mit

I think we rely on as that is the workflow that the various Google consoles for registering your app provides, e.g. https://firebase.google.com/docs/ios/setup

Thanks Michael. The link you shared only applies to Firebase family of plugins. Google Sign In is a bit of an oddball. It pretends to be in that family but it really isn't. It does not get configured by [FIRApp configure]; command which is typically what you would do to configure Firebase components.  It also requires a lot of additional parameters to properly initialize (such as scopes). Compare that to Firebase Auth plugin which is properly integrated to Firebase workflow.
I think we should not mix these two worlds. Yes, it is tempting to provide user the smoothest experience possible but in this particular scenario, I don't think it is making much of a difference due to additional parameters required. Thus, it is making our own lives harder for not much gain.
If a google (or external) app is using google_signin, there's non-negligible chance they are not using Firebase at all and thus won't have a GoogleService-Info.plist. Then, it actually makes users lives harder because it is not immediately obvious why the plugin does not work.

Doesn't the Google sign-in developer workflow rely on that same file? https://developers.google.com/identity/sign-in/ios/start

If you're using the Firebase plugin the way to configure it is to provide a GoogleService-Info.plist, so it would be an extra step to make developers copy information out of that file and hard code it into their Dart code for Google Sign In. If they have different configuration files for different platforms and different types of builds (production/enterprise/dev), it seems like some devs might prefer to have their Dart code be oblivious to the flavor of build and have configuration occur in native-land.
I agree that if you're not using that file internally, it would be nice to not have to depend on GGLContext, although I suspect that most devs who just want to use the plugin and have it work don't care either way.
Some options:

Split off the code that calls GGLContext configureWithError: into a separate category that has its own target that is not enabled by default for internal builds. This would enable us to keep the internal and external versions "in sync" while one depends on GGLContext and the other doesn't.
Have a separate "gglcontext" plugin that parses the GoogleService-Info.plist for you.
We could look for GoogleService-Info.plist file ourselves and parse the clientID out of it without using GGLContext.

If Michael is correct and GoogleService-Info.plist is the way to go to configure any Google service (Firebase or not), then what makes sense to me the most is to provide this as the only option to get client id.
Let's decide based on the internal discussion on the availability of GGLContext.

If it is officially supported and available internally, let's make it the canonical way of getting client id and deprecate client id param.
If it is not supported internally, then @collinjackson 's (1) solution makes sense to me. We already have to change the GGLContext import anyway so it is a matter of providing a stub in the same package as the imported plugin that throws an error when used.

I will follow up on this with @tvolkert internally.

Additional details came into light (specifically Google cocoapod deprecation and the subsequent internal library deprecation) that made us reconsider this. Todd is leaning towards what Collin's (3) proposal especially if it is cheap to implement. We can declare GoogleService the canonical way of defining client-id for GoogleSignIn and use our own code to configure the library. Assigning to Todd since this blocks the internal push of GoogleSignIn.


Mixcloud fix

(and an update for the gitignore) :tv:

Yeah, I snatched it from https://github.com/github/gitignore. To lazy to trim it. :smile:


Timeline for a new release?

Hi,
Is there any plans for when a new release to include fixes done in master could be done?
Any help needed to get there?

@sweco-semhul ,
just published the 0.9.1 relesase

@pantsel awesome, thanks!


XCode 8.1 constantly freezes

Running Sierra Xcode constantly freezes when making changes in the source code.
I verified that it is not the Xcode Injection plugin being the culprit by removing it.
Running the signed XCode Version is no problem.
Running the unsigned XCode version constantly shows me a spinning beachball.

As it turns out other projects are reporting of the same problem running Sierra.
https://github.com/fpg1503/MakeXcodeGr8Again/issues/19

I have this issue too

Thanks for the update @prefect42. My primary computer is off getting serviced right now, so I'm unable to try this out myself until I have it back.
The concerning thing is that all my script is doing is providing an easy mechanism for running unsign and for restoring the original binary. It's entirely possible that Apple has changed something in Xcode 8.1 causing this to no longer work anymore, in which case there may not be much we can do about it...
One question... did you ever try running this with a version of Xcode before 8.1? If not, please try installing Xcode 8.0 and see what happens when running against that version. That would help narrow down whether the issue is something specific to your system or 8.1 specifically.

this problem happens to me at version 8.0

It works on El Capitan, just not on Sierra!

here is the solution:
https://github.com/XVimProject/XVim/issues/966#issuecomment-247276024
I've had the same problem and it seems that I managed to solve it.
Right after I click on the editor, my Activity Monitor shows a tccd process taking around 50% of the CPU usage.
So I investigate on this and it seems to be linked with the authorization to access the user's AddressBook.
So I went to System Preferences->Security & Privacy->Contacts and uncheck Xcode.app. Then, I restart Xcode and it works like a charm !! \o/


DNN-9410: Change the JWT logout to retun valid JSON instead of empty …

…string.

The change is good, but I need you to modify the related integration test to take the new change into consideration.


Code Snippets play

First thing, PLEASE READ THIS: ReactPlay Code Review Checklist

Description
Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context. List any dependencies that are required for this change.
Fixes # (#803)
Type of change
Please delete options that are not relevant.

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

How Has This Been Tested?
Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce.
Checklist:

[x] I have performed a self-review of my own code
[x] I have commented my code, particularly in hard-to-understand areas
[x] My changes generate no new warnings

Screenshots or example output

Yeah sure. I'll take care of it.

Yeah sure. I'll take care of it.

We still get this error


Stuck on the windows loading screen

It is not booting up for Some reason it is stuck on the windows boot logo and the spinning wheel

same on me

same any solution guys??


update git repository url

@JamesClonk, I'm really sorry to have to ask you for this level of admin for such a small (and useful) change; but could you send me a signed CLA (see https://github.com/logsearch/licensing/) so we can get this merged please.
Thanks

@JamesClonk - CLA received, thanks!


YouTube Links

Don't accept this pull request / talk about these publicly on social media until tomorrow. :)

Note: I already added the youtube links since I was on the site when you were posting them, so... I don't think this PR is needed?  Unless I got some of the links wrong?

No worries, go ahead and close it!


Beta testing...

With a number of almost-working features stacking up in my 2.7.0 branch i was thinking about how best to make these available for users who are willing to help with testing these ahead of completion and full integration into the project.
So I envisaged having a bash/betas folder and similar structure to the feeders/extras whereby the user could be presented with a list of beta features which could be installed, ideally without any significant changes to the base system :)
This would seem particularly relevant to mostly 'stand alone' features such as an ACARS decoder where a basic scripted install may be useful to some users ahead of any future work to store and/or display this data in the portal...
And in this case it would seem possible to simply create the bash/betas folder and put suitably stand-alone features in there for interested users to install by running the script directly, once ready for release the install script could be moved to the relevant decoders/feeders/extras folder and integrated into the install script so that its available in the appropriate menu.
Sound reasonable?

Defiantly sounds reasonable. Don't take it personal that I am closing this issue it is only due to the fact it is not an issue and I am trying to clean up the tracker after returning from my absence.


Switcher Bug

BkCommonLib version: 1.13.2 V2
TrainCarts version: 1.13.2 V1
Spigot version: 1.13.2

Problem or bug: Switcher signs only work for trains five carts or less. Any train 6+ carts or more is always switched to the left. The syntax is:
[+train]
switcher
1
1
Expected behaviour: all sizes of trains should go thru switcher signs with it switching.
Steps to reproduce:
P.S was going to put in a vid but file was too big

Update BKCommonLib and TrainCarts to version 1.14.4-v1. Those work on 1.13.2, and check if issue persists there.

how do i update? im on an aternos server platform

You don't use alternos. they don't give you direct control over files witch is needed as they don't have an updated version of bkcommonlib and traincarts

and i use linux mint

What os you use has nothing to do with this unless you plan to host it yourself

You don't use alternos. they don't give you direct control over files witch is needed as they don't have an updated version of bkcommonlib and traincarts

well how do i UPDATE?

You can't on alternos. I said this already.

so ill be stuck on 1.13.2?

If they don't allow you to update, then it's not our problem at this point, contact them for the problem. We can't do anything about your problem.


Verse selector

Navigation to verses should be possible on selecting a verse

Linking the above issue as it was raised during 1.3.0 testing for Verse Level Navigation for Reading plan

As of now selecting the verse selector would navigate to a passage where the verse is also available.

Moving to Done


Bump pre-commit/action to 2.0.3

Bump pre-commit/action to 2.0.3 so Dependabot will not PR this right after first push to GitHub.
Description
Simply update pre-commit/action to 2.0.3.
Checklist:

[x] I've made sure that tests/test_cookiecutter_generation.py is updated accordingly (especially if adding or updating a template option)
[x] I've updated the documentation or confirm that my change doesn't require any updates

Rationale
Dependabot is already creating a PR to Bump pre-commit/action from version 2.0.0 to version 2.0.3 as soon as a project created with cookiecutter-django is pushed to GitHub.
This should also be committed in preparation for #3401.

Thanks 🎉


Pipe (%>%) is treated as LaTeX comment in R Sweave files

Using the R Sweave Syntax, code is greyed out/treated as Latex comment, when preceded by the pipe %>% within r chunks.
Matter of fact, everything after the first % is treated as latex comment.

Thx for quick fix. Issue appears to be solved!

I dont see the quick fix in here, I dont get how to use that sublime-syntax.file here, is it relevant? Could some please help me on that? Thanks.


ELEMENT: Simple Modal

Information

Element Type: Centered Modal with single action
Framework:

[ ] Bootstrap
[x ] Tailwind
[ ] None
[ ] Other (Specify)

I will work on it


[RTM] FIX: Correctly resample T1w images in ConformSeries

This PR stems from #599, which revealed that we've been conforming wrongly. The error was so small that the error only appears for highly anisotropic voxels in an oblique orientation.
In addition, it introduced the case where high- and low-quality T1w scans coexist in the same dataset, and the upsampling involved would ultimately degrade the quality of a template produced by averaging the images.
The following changes are introduced:

Rescaling is applied to affine columns, as opposed to rows, which will correctly set the zooms in the resampled dataset
A size (dimension) factor is recalculated to be less sensitive to large differences in dimension
A max_scale factor (default: 3) discards images which require upsampling over a given ratio
An HTML reportlet is created to describe the conformation step

Todo:

[x] Integrate reportlet into report
[x] Test on ds000114 sub-02 (See #538/#545)
[x] Test on ds000114 sub-07/09 (See #562/#564)
[x] Test on ds000031

Closes #599.

Reportlet of ds31, where 7 images were discarded:

Displayed the basename, with the full (albeit within-docker) path as hover text.

Integrated reports:

https://654-78558509-gh.circle-artifacts.com/1/home/ubuntu/ds005/out/fmriprep/sub-01.html
https://654-78558509-gh.circle-artifacts.com/0/home/ubuntu/ds054/out/fmriprep/sub-100185.html

The code and reports look great, but could you also add a description of this procedure to the documentation?

Added description with link to ConformSeries API entry.
Updated sample report.


Test db

In log_test.go I commented out the assert issues and added some TODOs to get them fixed.
It seems like when github is running the tests it sees that errors are being logged out (even tho errors being logged is apart of the test) and counts the check as failed?

The tests in github.com/jak103/powerplay/internal/server/apis/sports/stats have a failure.
In github.com/jak103/powerplay/backend/internal/utils/log I commented out the asserts that where giving a failure and added a todo to get them fixed.


Clarify boot diagnostics managed storage price implications

What type of managed disk is used for storing the boot diagnostics data? Is it separate from OS disk. Can it be shared by multiple VMs?

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

ID: 691353ad-7c13-bce2-510f-b9a641cf95c4
Version Independent ID: afced714-86a0-0fb7-b885-3021839b2fe3
Content: Azure boot diagnostics - Azure Virtual Machines
Content Source: articles/virtual-machines/boot-diagnostics.md
Service: virtual-machines
GitHub Login: @mimckitt
Microsoft Alias: mimckitt

Thanks for the question! Give me a moment to take a look.

Hi @juho-hanhimaki ,
Thanks for the question. If you use a custom storage account Boot Diagnostics data is stored as page blobs. However by default azure will use a pre-provisioned storage account managed by Microsoft but you can specify your own storage account and then set multiple VMs to use that account if you wanted them to use the same account.
I spoke with the PG Team for costs and was informed that you are charged at the snapshot rate which is:

snapshots and images are charged at $0.05/GB per month for both LRS and ZRS snapshot options based on the used portion of the disk. For example, if you create a snapshot of a managed disk with provisioned capacity of 64 GB and actual used data size of 10 GB, snapshot will be billed only for the used data size of 10 GB.

https://azure.microsoft.com/en-us/pricing/details/managed-disks/
Let me know if you have other followup questions. Thanks!

I spoke with the PM on the project and they will update the doc to include some of this information so I'm assigning the issue to author.

Thanks, managed disk is definitely desirable because of it's benefits and the pricing based on the snapshot rate is very reasonable. This added information makes it possible to do well informed decision.

We have updated the page with the following note:

Changes will be live later this afternoon.
#please-close


Remove extraneous alls

If we're going to remove them anyway, then adding a bunch of alls into a And iterator slows down Optimize() -- so let's just never make them from the query side in the first place.

Maybe it's worth to set duplicate Alls to nil in the slice (except the first), thus next loop in the function will skip these, even if we still have a useful iterator inside.

Done.


failed to create container

I'm having issues getting started with fedora-toolbox. I am able to recreate this reliably even in a freshly deployed VM.
➜  fedora-toolbox git:(master) ./fedora-toolbox -v create
error reading image "fedora-toolbox-sean:29": error reading image: error locating image "fedora-toolbox-sean:29" for importing settings: error locating image with name "fedora-toolbox-sean:29": image not known
ERRO[0000] exit status 1
Error determining manifest MIME type for docker://localhost/fedora-toolbox:29: pinging docker registry returned: Get https://localhost/v2/: dial tcp [::1]:443: connect: connection refused
ERRO[0000] exit status 1
Getting image source signatures
Copying blob sha256:af19ce19de5ee70d1ca852c65f9927fab6ba09de2864af2acdf18d60774bffbd
 85.70 MiB / 85.70 MiB [===================================================] 10s
Copying blob sha256:6df1bfffa76ae08ebcb61de2ae28fbf5f8a84079b6cb316d095cdf4cb5e2bdbb
 182.56 MiB / 182.56 MiB [=================================================] 20s
Copying config sha256:032b427fbbf72ac22336638af319ef989a2b99e038ca087743c132ab71445ed8
 2.69 KiB / 2.69 KiB [======================================================] 0s
Writing manifest to image destination
Storing signatures
bpasswd: Note: deleting a password also unlocks the password.
passwd: Note: deleting a password also unlocks the password.
Getting image source signatures
Skipping fetch of repeat blob sha256:8080f9aa6262000ad12d3d7e55331d275d412faa730b75c41bbf444b4ce056e9
Skipping fetch of repeat blob sha256:d399ea65472cbad41d640ec2a09724c2f11ac7fa52636b6cec6905e8fa490865
Copying blob sha256:e3518f4673581285a8029c0503002cbc08ff0c737a73449888b3d42af3522b36
 1.94 KiB / 1.94 KiB [======================================================] 0s
Copying config sha256:2c61bc9552383aad9f8e1579f8a31d7ba15a7bfa1b9fbc7f275ef98ca2422c8e
 1.43 KiB / 1.43 KiB [======================================================] 0s
Writing manifest to image destination
Storing signatures
error looking up container "fedora-toolbox-sean:29": no container with name or ID fedora-toolbox-sean:29 found: no such container
Trying to pull docker.io/fedora-toolbox-sean:29...Failed
Trying to pull registry.fedoraproject.org/fedora-toolbox-sean:29...Failed
Trying to pull quay.io/fedora-toolbox-sean:29...Failed
Trying to pull registry.access.redhat.com/fedora-toolbox-sean:29...Failed
Trying to pull registry.centos.org/fedora-toolbox-sean:29...Failed
unable to pull fedora-toolbox-sean:29: 5 errors occurred:

* Error determining manifest MIME type for docker://fedora-toolbox-sean:29: Error reading manifest 29 in docker.io/library/fedora-toolbox-sean: errors:
denied: requested access to the resource is denied
unauthorized: authentication required

* Error determining manifest MIME type for docker://registry.fedoraproject.org/fedora-toolbox-sean:29: Error reading manifest 29 in registry.fedoraproject.org/fedora-toolbox-sean: manifest unknown: manifest unknown
* Error determining manifest MIME type for docker://quay.io/fedora-toolbox-sean:29: Error reading manifest 29 in quay.io/fedora-toolbox-sean: error parsing HTTP 404 response body: invalid character '<' looking for beginning of value: "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 3.2 Final//EN\">\n<title>404 Not Found</title>\n
Not Found
\n
The requested URL was not found on the server.  If you entered the URL manually please check your spelling and try again.
\n"
* Error determining manifest MIME type for docker://registry.access.redhat.com/fedora-toolbox-sean:29: Error reading manifest 29 in registry.access.redhat.com/fedora-toolbox-sean: unknown: Not Found
* Error determining manifest MIME type for docker://registry.centos.org/fedora-toolbox-sean:29: Error reading manifest 29 in registry.centos.org/fedora-toolbox-sean: manifest unknown: manifest unknown
./fedora-toolbox: failed to create container fedora-toolbox-sean:29

The README on this project doesn't make it obvious if there are any prerequisites that I should meet before running this, it sounds like I should just be able to run the script and get a working toolbox.
Let me know if I'm missing anything or if you need any more info to get an idea of what is happening.

Have you tried the fedora package?

I didn't realize there was a package for this. I installed it with rpm-ostree install fedora-toolbox, rebooted and ran fedora-toolbox -v create and received the same message in my original post.
In this bug (https://github.com/containers/libpod/issues/2015) it looks like this stems from a bug in libpod and might be fixed in a future release.
Looks like the toolbox will remain broken for now

So I've reinstalled Fedora Silverblue, installed fedora-toolbox with rpm-ostree and once again ran fedora-toolbox -v create. It printed all of the same errors in the original post but now when I run podman ps -a I can see a container named fedora-toolbox-sean:29 even though the output of the command stated failed to create container fedora-toolbox-sean:29.
Not sure why this is or what caused it to work this time but the errors are all still present. Not sure if this is something you want to investigate any further.

I too am getting this error. My error output is a this...
[mike@mustang fedora-toolbox]$ ./fedora-toolbox -v create error looking up container "fedora-toolbox-mike:29": no container with name or ID fedora-toolbox-mike:29 found: no such container invalid container path, must be an absolute path "" ./fedora-toolbox: failed to create container fedora-toolbox-mike:29

Okay so I see that PR #22 was part of my problem. I fixed that and now I see the exact same output as Sean. But it seems that event though buildah has created and configured the image, podman cannot find the image for some reason.
Writing manifest to image destination Storing signatures error looking up container "fedora-toolbox-mike:29": no container with name or ID fedora-toolbox-mike:29 found: no such container
I am using an up to date silverblue ostree base. Here is the details...
[mike@mustang fedora-toolbox]$ buildah -v buildah version 1.5 (image-spec 1.0.0, runtime-spec 1.0.0) [mike@mustang fedora-toolbox]$ podman -v podman version <IP_ADDRESS> [mike@mustang fedora-toolbox]$ rpm-ostree status State: idle AutomaticUpdates: disabled Deployments: ● ostree://fedora-workstation:fedora/29/x86_64/silverblue                    Version: 29.20181230.0 (2018-12-30T01:02:02Z)                 BaseCommit: 37251e33ea38cf92dff8c863d1debd50bb6801003d73535f2aba006af2fbbf3f

It found that the storge driver config for my local user was corrupted. After I removed all my buildah images and deleted the ~/.local/share/containers/storage directory and then re-run the fedora-toolbox create, it all worked correctly. Hope this can help someone else that is stuck on this.

Yes, the original problem reported by @seandjones92 was caused by various incompatibilities between rootless buildah and rootless podman that had crept into the stable Silverblue images. That was very unfortunate, but it looks like the two of them are back together again.
Thanks for getting in touch. Closing.


Game Resize / Image Resize issue in 3.12 Beta

Hello,
On that example, i'm using Phaser 3.11.0 : https://jsfiddle.net/s3La9crn/
When you resize the window at the bottom right, you can see that the sprite fits the maximum available space in the window.
Now check the same example, with Phaser 3.12.0 : https://jsfiddle.net/d08e4v7q/
The behavior is different and strange.
Maybe I'm not doing this the right way, but it sounds more like an issue.
(I have the same problem with a tilemap instead of a sprite)

Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

Thank you for submitting this issue. We have fixed this and the fix has been pushed to the master branch. It will be part of the next release. If you get time to build and test it for yourself we would appreciate that.


fix: update e2e dependencies, minor updates to e2e tests

testing ci build at /yubathom

Hey @yubathom,
Something went wrong with the build.
TravisCI finished with status errored, which means the build failed because of something unrelated to the tests, such as a problem with a dependency or the build process itself.
View build log
TravisBuddy Request Identifier: 4d59fa20-453f-11ea-8ac1-cf2d15c11453

Hey @yubathom,
Something went wrong with the build.
TravisCI finished with status errored, which means the build failed because of something unrelated to the tests, such as a problem with a dependency or the build process itself.
View build log
TravisBuddy Request Identifier: 015fb4c0-4549-11ea-8ac1-cf2d15c11453

Hey @yubathom,
Something went wrong with the build.
TravisCI finished with status errored, which means the build failed because of something unrelated to the tests, such as a problem with a dependency or the build process itself.
View build log
TravisBuddy Request Identifier: 5c602840-454f-11ea-8ac1-cf2d15c11453

Hey @yubathom,
Something went wrong with the build.
TravisCI finished with status errored, which means the build failed because of something unrelated to the tests, such as a problem with a dependency or the build process itself.
View build log
TravisBuddy Request Identifier: cae065c0-4552-11ea-8ac1-cf2d15c11453

Hey @yubathom,
Something went wrong with the build.
TravisCI finished with status errored, which means the build failed because of something unrelated to the tests, such as a problem with a dependency or the build process itself.
View build log
TravisBuddy Request Identifier: f718d2b0-4554-11ea-8ac1-cf2d15c11453

Hey @yubathom,
Something went wrong with the build.
TravisCI finished with status errored, which means the build failed because of something unrelated to the tests, such as a problem with a dependency or the build process itself.
View build log
TravisBuddy Request Identifier: fe782ec0-4554-11ea-8ac1-cf2d15c11453

Hey @yubathom,
Something went wrong with the build.
TravisCI finished with status errored, which means the build failed because of something unrelated to the tests, such as a problem with a dependency or the build process itself.
View build log
TravisBuddy Request Identifier: 20042590-4559-11ea-8ac1-cf2d15c11453

Hey @yubathom,
Something went wrong with the build.
TravisCI finished with status errored, which means the build failed because of something unrelated to the tests, such as a problem with a dependency or the build process itself.
View build log
TravisBuddy Request Identifier: 5349afe0-455b-11ea-8ac1-cf2d15c11453

Hey @yubathom,
Something went wrong with the build.
TravisCI finished with status errored, which means the build failed because of something unrelated to the tests, such as a problem with a dependency or the build process itself.
View build log
TravisBuddy Request Identifier: 0b267940-455c-11ea-8ac1-cf2d15c11453

Hey @yubathom,
Something went wrong with the build.
TravisCI finished with status errored, which means the build failed because of something unrelated to the tests, such as a problem with a dependency or the build process itself.
View build log
TravisBuddy Request Identifier: afbe8d30-455c-11ea-8ac1-cf2d15c11453

Hey @yubathom,
Something went wrong with the build.
TravisCI finished with status errored, which means the build failed because of something unrelated to the tests, such as a problem with a dependency or the build process itself.
View build log
TravisBuddy Request Identifier: a7a8d210-455f-11ea-8ac1-cf2d15c11453

Hey @yubathom,
Your changes look good to me!
View build log
TravisBuddy Request Identifier: 989668c0-456c-11ea-8ac1-cf2d15c11453

Hey @yubathom,
Your changes look good to me!
View build log
TravisBuddy Request Identifier: 756e3b30-4575-11ea-8ac1-cf2d15c11453

Hey @yubathom,
Something went wrong with the build.
TravisCI finished with status errored, which means the build failed because of something unrelated to the tests, such as a problem with a dependency or the build process itself.
View build log
TravisBuddy Request Identifier: ac31a1a0-4577-11ea-8ac1-cf2d15c11453

Hey @yubathom,
Something went wrong with the build.
TravisCI finished with status errored, which means the build failed because of something unrelated to the tests, such as a problem with a dependency or the build process itself.
View build log
TravisBuddy Request Identifier: 4be0d7c0-4578-11ea-8ac1-cf2d15c11453

Hey @yubathom,
Your changes look good to me!
View build log
TravisBuddy Request Identifier: a53b2ea0-4579-11ea-8ac1-cf2d15c11453


Caps Lock does not turn off

Windows 10 is configured to cancel CapsLock mode when Shift is pressed, switching languages is only Win + Space, and Switchy starts up. When you press the Shift + CapsLock combination (and it's easy to accidentally press, missing one of the keys), CapsLock mode is activated, which cannot be turned off from the keyboard until the Switchy process is stopped through the task manager.
If CapsLock turns on when you press Shift + CapsLock, you need to turn it off when you press the same combination again.

To achieve the behavior you want, you can configure to cancel CapsLock mode with the CapsLock key, not the Shift key.


DSD-1326: Adding backdropBackgroundColor prop for campaign Hero component

Fixes JIRA ticket DSD-1326
This PR does the following:

For the "campaign" Hero variant, an additional prop backdropBackgroudColor is configured to set the backdrop to an image or a color. Only the "campaign" variant can use this prop and will be ignored otherwise.

How has this been tested?
Locally and through examples in Storybook.
Accessibility concerns or updates

N/A but we should be aware that devs could set terrible color schemes that don't look right or are bad in contrast and we cannot readily prevent that.

Checklist:

[ ] I have updated the Storybook documentation accordingly.
[ ] I have added relevant accessibility documentation for this pull request.
[ ] All new and existing tests passed.

Front End Review:

[ ] Review the Vercel preview deployment once it is ready.

Updated


Off-line support with auto generated service worker

Is your feature request related to a problem? Please describe.
One of my apps needs off-line support
Describe the solution you'd like
Auto generated service worker based on the assets

Can you have a try with rollup-plugin-workbox?

What you can do while the writeBundle hook is still unsupported, is to create an empty placeholder file public/sw.js and import that from your index.html file.
Something like this:
<!DOCTYPE html>

    <meta charset="UTF-8" />
    <link rel="icon" href="/favicon.ico" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Vite App</title>

And the call the workbox-cli after vite build has finished.
"scripts": {
    "build": "vite build && workbox generateSW"
  }

For this to work though you need to have the workbox-cli installed and a workbox-config.js file. You can generate one with workbox wizard. There you have to make sure to override the placeholder file from above like so:
module.exports = {
  globDirectory: 'dist/',
  globPatterns: ['**/*.{js,css,ico,html}'], // add all .js,.css,.ico and .html files to the service workers manifest
  swDest: 'dist/sw.js', // This is the important part

It is awkward yes, but currently the only working solution that I could find.

End the end we just made a local copy for the use case and hard installed it.

Did tried your config, my html having ended like this.
<!DOCTYPE html>

    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Vite App</title>
  <link rel="stylesheet" href="/_assets/style.343661e4.css">

This is out of scope for Vite.

This is out of scope for Vite.


Uncaught TypeError: Cannot convert a Symbol value to a number

The following code sample with throw said error because after the validation failed the refine function is still called:
z.union([z.number(), z.string().transform(z.number(), Number.parseFloat)])
  .refine((v) => v >= 1)
  .parse("foo");

This is supposed to accept 5 or "5" and reject anything that is not parsable into a positive number.
But the refine will be called even if the union parsing failed and then v will be Symbol("invalid_data")
> z.union([z.number(), z.string().transform(z.number(), Number.parseFloat)]).refine((v) => v >= 1).parse("foo");
Uncaught TypeError: Cannot convert a Symbol value to a number
    at repl:1:92
    at Object.check (/home/despairblue/git/wunderflats/api/node_modules/zod/lib/cjs/types/base.js:167:34)
    at ZodUnion.parse (/home/despairblue/git/wunderflats/api/node_modules/zod/lib/cjs/parser.js:892:41)
>

Without the refine it works as expected:
> z.union([z.number(), z.string().transform(z.number(), Number.parseFloat)]).parse("foo");
Uncaught ZodError: [
  {
    "code": "invalid_union",
    "unionErrors": [
      {
        "issues": [
          {
            "code": "invalid_type",
            "expected": "number",
            "received": "string",
            "path": [],
            "message": "Expected number, received string"
          }
        ]
      },
      {
        "issues": [
          {
            "code": "invalid_type",
            "expected": "number",
            "received": "nan",
            "path": [],
            "message": "Expected number, received nan"
          }
        ]
      }
    ],
    "path": [],
    "message": "Invalid input"
  }
]
    at new ZodError (/home/despairblue/git/wunderflats/api/node_modules/zod/lib/cjs/ZodError.js:73:28)
    at ZodUnion.parse (/home/despairblue/git/wunderflats/api/node_modules/zod/lib/cjs/parser.js:195:17) {
  issues: [
    {
      code: 'invalid_union',
      unionErrors: [Array],
      path: [],
      message: 'Invalid input'
    }
  ],
  addIssue: [Function],
  addIssues: [Function],
  flatten: [Function]
}
>

Question regarding this. It seem refine function are not allowed to throw. Does that mean a refine function must succeed?
Forget the last part as they can return false obviously.

I thought about this for a bit. So what I actually need is a combination of transform and refine:

transform takes a value of one type and returns a value of another type

it is not allowed to fail

refine takes a value of one type and returns a boolean signaling if that value passes some validation

it can fail by returning false
it can't change the type of the value passed in

So what I actually wanted to do above is first, using transform to try to turn a string into a number, and if that succeeds using refine to make sure that the number is positive.
And doing so I hit the weird error where the refine function is typed to receive a number, but receives a Symbol instead. :shrug:

I managed to do it by first refining, then transforming and then refining again:
const schema = z.object({
  positiveNumber: z
    .union([z.number(), z.string()])
    .refine(
      (value) => {
        const parsed = Number.parseInt(String(value));

        if (Number.isNaN(parsed)) {
          return false;
        } else if (!Number.isFinite(parsed)) {
          return false;
        } else {
          return true;
        }
      },
      { message: "mustBeTypeOf:number" },
    )
    .transform(z.number(), (value) => Number.parseInt(String(value)))
    .refine((v) => v > 0, { message: "mustBeMin:1" })
    .optional(),
})

Sadly I had to repeat the parseInt and actually I also need to try catch the first and second refinement for safety reasons, otherwise schema.parse and schema.safeParse could through.
So I end up with this:
const schema = z.object({
  positiveNumber: z
    .union([z.number(), z.string()])
    .refine(
      (value) => {
        try {
          const parsed = Number.parseInt(String(value));

          if (Number.isNaN(parsed)) {
            return false;
          } else if (!Number.isFinite(parsed)) {
            return false;
          } else {
            return true;
          }
        } catch {
          return false;
        }
      },
      { message: "mustBeTypeOf:number" },
    )
    .transform(z.number(), (value) => Number.parseInt(String(value)))
    .refine(
      (v) => {
        try {
          return v > 0;
        } catch {
          return false;
        }
      },
      { message: "mustBeMin:1" },
    )
    .optional(),
})

So now I'm just wondering if I'm doing something wrong :smile:

In the code of v2 I can see that transformers probably could throw in the past:
https://github.com/colinhacks/zod/blob/f6759d0963e36f352fab9e688f19a5281af8ab35/src/parser.ts#L1066-L1089
Is this going to be added back?

Actually I found a nice way to do it:
const toInt = z.transformer(z.any(), z.number(), Number.parseInt);
const schema = z.object({
  positiveNumber: toInt
    .refine((v) => v > 0, { message: "mustBeMin:1" })
    .optional(),
})

Only caveat is that it now reports that it received NaN instead of what it actually received:
For `schema.parse({positiveNumber: "foobar"})
    [
      {
        "code": "invalid_type",
        "expected": "number",
        "received": "nan",
        "path": [
          "positiveNumber"
        ],
        "message": "Expected number, received nan"
      }
    ]

But that's ok.

Glad this is working for you. Transformers can be very counterintuitive when you nest them inside other schemas, like you did in your first attempt. Best to keep all transforms at the top level where possible.
The Cannot convert a Symbol value to a number error is a weird side effect of how Zod is implemented. If an error is detected, Zod sets the output to Symbol('invalid_data'). Zod is supposed to throw when this happens, looks like you find an edge case where that symbol continues through the parsing/validation chain. I'll look into this.
For now this seems solved so I'm going to close.

@colinhacks thanks for the quick reply. Let me summarize what I've taken away from this, so I can make PRs to the readme and one with a failing test, if you like me to.

Rules of Refinements

MUST NOT throw
failure MUST be notified by returning false

Rules of Transformers

MUST NOT throw
input and output are parsed according to the first 2 arguments
transforms from one type to another MAY fail by returning a value that fails the output validation

example:// OK `lodash.toNumber` does not throw, but returns NaN if conversion fails
z.transformer(z.any(), z.number(), lodash.toNumber)

// OK
z.transformer(z.string(), z.boolean(), value => {
	if (value === 'true') {
		return true
	} else if (value === 'false') {
		return false
	} else {
		// This will return a string, which fails the `z.number()`
		// validation zod is going to do with the return value.
		return value as any
	}
})

// NOT OK `z.any()` passes everything along, but `Number.parseFloat`
// sometimes returns NaN and sometimes throws, like for Symbols.
z.transformer(z.any(), z.number(), Number.parseFloat)

transforming from the same type to the same type MUST NOT fail (it cannot use the above trick and returning something that will fail

use a refine in combination with a transform for that
example// NOT OK
z.transformer(z.string(), z.string(), filePath => {
	const parts = filePath.split(".");

	if (parts.length > 1) {
		return parts[parts.length -1]
	} else {
		// What now? Return a wrong type? That would give a wrong error message.
		// We have to refine the string first making sure there is an extension.
	}
})

// OK
z.string()
	.refine(
		// Now we know the string has at least 2 elements separated by a period.
		value => value.split(".").length > 1,
		{ message: "file path has not extension" }
	)
	.transform(z.string(), filePath => {
		const parts = filePath.split(".");

		return parts[parts.length -1]
	})

@colinhacks

Are my assumptions above correct regarding how to use transformations and refinements?
Would you accept a PR to the readme making some of those things clear (e.g. never to throw or how to fail transformations)
Still wondering about the commented out code in the parser that leads me to think that throwing from a transformer will be allowed in the future, is this going to come?
Should I create a PR with a failing test regarding the Symbol error (I would try to fix it too)?

Best.

This is a good writeup. To your points:

Transformation functions should never throw. I don't think the "trick" you're referring to should be documented as a valid/acceptable approach. Like you say elsewhere, you should use refinements to make sure the inputs are valid before calling .transform. The strong distinction between refinements and transformations is deliberate. The idea is that ALL modifications to the value occur within transformers, and nowhere else.
Absolutely!
That commented section is just a remnant of a different implementation, I don't think it makes sense to catch errors in the transformation function. Though I suppose I could be convinced 🤷♂  Perhaps I could introduce a new ZodIssue subtype for failed_transformation. Perhaps it makes sense for Zod to catch all transformation/refinement errors so you don't need to write separate try/catch logic for Zod errors and other unexpected errors. If you feel strongly about that, you could write it up as an RFP so the community can comment on it. Here's an example RFP you could use as a model: https://github.com/colinhacks/zod/issues/197
Also absolutely! Make sure you're forking the v2 branch. 👍

I created 2 PRs, one for the bug and one for making it clear that refinements and transformers must not throw.

don't think the "trick" you're referring to should be documented as a valid/acceptable approach. Like you say elsewhere, you should use refinements to make sure the inputs are valid before calling .transform

Makes sense, but I'll probably just continue using it like this. The reason is that needing a refinement and a transformer to be kept in sync (which may also be defined in totally different places) is a bug that is just waiting to happen. Technically it's a clean separation of concerns, but the usability for the developer/team using this is hurt by this I fear.
Regarding 3. I currently went with defining all refinements and transformations in another file and wrap them in a try catch function, the refinement one returns just false on error and the transformer the value that was passed in. Seems to work so far.

Thanks for all your work on this! I merged these last night 🤙


use a type alias for the STK

Codecov Report

Merging #818 into master will decrease coverage by <.01%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##           master     #818      +/-   ##
==========================================
- Coverage   91.03%   91.02%   -<.01%
==========================================
  Files          87       87
  Lines        6063     6060       -3
==========================================
- Hits         5519     5516       -3
  Misses        345      345
  Partials      199      199

Impacted Files
Coverage Δ

handshake/stk_generator.go
90.24% <ø> (ø)
:arrow_up:

server.go
91.53% <100%> (ø)
:arrow_up:

session.go
85.74% <100%> (-0.09%)
:arrow_down:

Continue to review full report at Codecov.

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


High memory consumption for Convolution Layer

Hello
I was trying out neural network creation using the ARM Compute Neon Library.
I have used below configuration parameters for Convolution Layer:
conv0.configure(&src, &weights0, &biases0, &out_conv0, PadStrideInfo(2,2,3,3,DimensionRoundingType::FLOOR));
Input dimensions are as below (all data type float):
weights - [64773];
biases - [64];
input image - [448448*3];
Output dimesions (all data type float):
[224x224x64]
The expected total memory consumption should be less than ~20MB
However, the memory consumption noted after execution of above  conv0.configure is >250MB
Could you clarify whether this high memory usage is expected.
(As memory is main constraint on neural n/ws - I have posed this query).
Thanks
kamrao

typo in above query: please read as below
weights - [64 x 7 x 7 x 3];
biases - [64];
input image - [448 x 448 x 3];
thanks

Are you using the latest release ? (17.04)
Are you using auto padding or accurate padding ( documentation )
Which function are you using ? (Neon or OpenCL ?)

Hello

Are you using the latest release ? (17.04)
Yes,  i am using latest release(17.04)

Are you using auto padding or accurate padding ( documentation )
I am not setting any type of padding

Which function are you using ? (Neon or OpenCL ?)
I am using the Neon APIs.

Let me know, if any further information is needed.
Thanks
Kamrao

Can you please post the code where you initialize, configure, allocate, fill the tensors / functions so that we can try to reproduce on our end?

From: mkamrao<EMAIL_ADDRESS>Sent: 19 Apr 2017 18:00
To: ARM-software/ComputeLibrary
Cc: Subscribed
Subject: Re: [ARM-software/ComputeLibrary] High memory consumption for Convolution Layer (#54)
Hello
Are you using the latest release ? (17.04)
Yes, i am using latest release(17.04)
Are you using auto padding or accurate padding ( documentation )
I am not setting any type of padding
Which function are you using ? (Neon or OpenCL ?)
I am using the Neon APIs.
Let me know, if any further information is needed.
Thanks
Kamrao
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHubhttps://github.com/ARM-software/ComputeLibrary/issues/54#issuecomment-295345532, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AZt0Sn_S4AkWddK3P31KTi0ZcgjEpw2Iks5rxj2zgaJpZM4NBpMn.
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.

Hello
Please find the code that was used, pasted below:
constexpr unsigned int width_src_image  = 448;
constexpr unsigned int height_src_image = 448;
constexpr unsigned int ifm_src_img      = 3;

const TensorShape src_shape(width_src_image, height_src_image, ifm_src_img);
src.allocator()->init(TensorInfo(src_shape, 1, DataType::F32));

// Initialize tensors of conv0
constexpr unsigned int kernel_x_conv0 = 7;
constexpr unsigned int kernel_y_conv0 = 7;
constexpr unsigned int ofm_conv0      = 64;

constexpr unsigned int kernel_x_out = 224;
constexpr unsigned int kernel_y_out = 224;

const TensorShape weights_shape_conv0(kernel_x_conv0, kernel_y_conv0, src_shape.z(), ofm_conv0);
const TensorShape biases_shape_conv0(weights_shape_conv0[3]);
const TensorShape out_shape_conv0(kernel_x_out, kernel_y_out, weights_shape_conv0[3]);

weights0.allocator()->init(TensorInfo(weights_shape_conv0, 1, DataType::F32));
biases0.allocator()->init(TensorInfo(biases_shape_conv0, 1, DataType::F32));
out_conv0.allocator()->init(TensorInfo(out_shape_conv0, 1, DataType::F32));

/* -----------------------End: [Initialize tensors] */

/* [Configure functions] */

conv0.configure(&src, &weights0, &biases0, &out_conv0, PadStrideInfo(2,2,3,3,DimensionRoundingType::FLOOR));
/* -----------------------End: [Configure functions] */

/* [Allocate tensors] */

// Now that the padding requirements are known we can allocate the images:
src.allocator()->allocate();
weights0.allocator()->allocate();
biases0.allocator()->allocate();
out_conv0.allocator()->allocate();

The high memory consumption (>250MB) is noted immediately after conv0.configure in above code.
Hence, allocate or filling the tensors may not be needed.
Thanks

Thanks for providing your code. We have been able to reproduce the problem. The high memory consumption is caused by an error in the padding calculation for intermediate tensors in the convolution layer function.
The issue will be fixed in the next release.

Hello
Thank you. When is the release with fix expected.
Kamrao

It seems that this memory issue also happens when calling OpenCL Api.
It works fine when trying to initialize, configure, and allocate 1 or 2 conv layers(with relu/pool/norm) which has the correct results; while for configuring, allocating more layers repeatedly, the error occurs:
ERROR in void arm_compute::Window::validate() const ./arm_compute/core/Window.inl:73: _dims[i].end() <= _dims[i].start() Illegal seek
!!!!!!!!!!!!!!!!!!!!!!!!!!!
right after calling layer configure function.
is there a way to share memory usage or manually free some of the buffer no long used?

Hi...
Any update on when the next release with the fix is expected. Thanks
Kamrao

Sorry for the wait.
Hopefully by the end of the week.

Hello @mkamrao,
Fix has been applied in v17.05 release. Can you check if this solves your issue?

Hello
Memory consumption is better now (~70MB), but higher than expected. Is this due to memory padding? Can this be reduced further? Thanks
kamrao


Same indentation

Hello @piraz!
Could we have one indentation only?
$ grep -rFn "WARNING:"
automatoes/info.py:56:            print("    WARNING: Server won't return your key information.")
automatoes/authorize.py:111:                print("    WARNING: Old order. Setting it as expired.\n")
automatoes/authorize.py:129:                    print("    WARNING: Invalid order, renewing it.\n    Just "
automatoes/authorize.py:133:                    print("  WARNING: Expired order. Renewing order.\n")
automatoes/authorize.py:220:            print("  WARNING: The current order will be invalidated. "
automatoes/acme.py:257:                logger.warning("WARNING: The account is using Let's Encrypt "
automatoes/acme.py:259:                logger.warning("WARNING: Upgrading account to ACME V2 "
automatoes/acme.py:261:                logger.warning("WARNING: Please run 'manuale upgrade' to make "

I think the indentation is related to the code block the warning is located.
What about remove trim the four spaces from the beginning of the line returned?
I'll see where those are warning are located and see it is possible, but I cannot see what would be the point here...

So those indentation have a meaning??

If yes, this is the highest level of cryptography I've ever seen 🙃

I understand what you mean. Now I got it!!!
The indentation is to display the information in a "better" way in the console. It is "better" for me.
I'll transform that in a technical dept and see how that can be displayed better.


chore(ci): cancel redundant workflow runs

Summary
Copied from https://github.com/nodejs/node/pull/42017

Test plan
Will push a bit to this PR, verifying stuff is cancelled (like circle already does)

It works! It removed interpolation from job names, but who cares


fix: api: HasMiner returns not correct

1 fix HasMiner api
2 rename func name: GetMiner to GetUserByMiner

Codecov Report

Merging #71 (419313b) into main (5aeb43c) will not change coverage.
The diff coverage is 66.66%.

@@           Coverage Diff           @@
##             main      #71   +/-   ##
=======================================
  Coverage   25.12%   25.12%
=======================================
  Files          30       30
  Lines        2539     2539
=======================================
  Hits          638      638
  Misses       1793     1793
  Partials      108      108

Flag
Coverage Δ

unittests
25.12% <66.66%> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

auth/transport.go
55.55% <ø> (ø)

cmd/jwtclient/client.go
35.41% <0.00%> (ø)

storage/mysql.go
0.00% <0.00%> (ø)

auth/app.go
24.13% <100.00%> (ø)

auth/jwt.go
34.37% <100.00%> (ø)

auth/route.go
55.88% <100.00%> (ø)

cli/api.go
42.02% <100.00%> (ø)


Fix compile_commands.json generation in newer cmake versions [BUILD-286]

How does this fix things? Do we need to set this in the non-old clang tidy module?

Currently we sort rely on at least on of these modules being included so that the compile_commands.json file gets output. This just makes it so that any module that requires the file makes sure to explicitly set the option to emit it.
The titles probably not super accurate.


Handle asynchronous messages

Currently messages get lost due to time out, which causes conversations to be incomplete even between two versions of our bot.
Solution will allow a conversation to continue as long as moves are being proposed.

I've been investigating this over the past couple of weeks, and I finally reached a point where I was able to verify the bug was happening as described and to determine what is causing the "bug".
It appears that SmartOrderAccepterBot only reads messages at the start of each phase. Although it sends messages throughout the phase, there is no "message loop" to ensure that back-and-forth communication happens. In addition, it does not appear that messages from previous phases are taken into account, either. Changing this will require some larger architectural changes. I created #167 as some preliminary code cleanup to make that easier, but a lot more work will need to be done.

As of e5ecf5e8b64d3e7e21e33f6cb4c1cc3b39e56ad2, the SOA bot now has a messaging loop and reads incoming messages at the start of each iteration.


/dev/net/run -> /dev/net/tun this was a typo yes?

Total typo thanks!!!

Done globally in bb2319762931efa0e8db1138a8e646e224cd2b8d - I mentioned you in the commit message, credits to you sir 🫡

No worries, thanks for the work you do!


Create sudoku.py

Sudoku game class implemetation python.

Sudoku game class implemetation python.

Just a class won't be enough to make it running and let other contributors run and explore.


Ensure all safety comments quote and cite a specific version of the documentation

All safety comments should be of the following form:
// SAFETY: The alignment cannot be greater than the size [1].
//
// [1] Per https://doc.rust-lang.org/1.81.0/reference/type-layout.html#size-and-alignment:
//
//   The size of a value is always a multiple of its alignment.

Note in particular:

Cites a specific version of the documentation (in this case 1.81.0)
Cites a stable version of the documentation (rather than nightly or beta)
Quotes the relevant part of the citation

This issue tracks getting all existing safety comments up to this standard.
Mentoring instructions
Interested in contributing? See our contributing guide.
Find any comment that doesn't follow this standard and update it!

I'd like to take this up

Awesome, it'd be great to have the help! Let me know if you have any questions 😃

For example, this is a safety comment in the current code
/// Coverts `self` into a `&[u8]`.
    ///
    /// # Safety
    ///
    /// The returned reference has the same address and length as `self.deref()`
    /// and `self.deref_mut()`.
    ///
    /// Note that, combined with the safety invariant on [`ByteSlice`], this
    /// safety invariant implies that the returned reference is "stable" in the
    /// sense described in the `ByteSlice` docs.
    ```

What should the resultant structure be?

Great question; I should clarify a few things:
This issue is only concerned with // SAFETY: comments (ie, justifying why it's okay to call an unsafe function or implement an unsafe trait). That's distinct from the # Safety section of a doc comment, which describes what a user must guarantee in order to use an API that we define.
This is also only relevant to // SAFETY: comments that cite external documentation (some don't, and those don't need to be fixed). Here's an example:
https://github.com/google/zerocopy/blob/b35123b0f62e80d0d3ca7a11e38378abe488a558/src/impls.rs#L13-L22
This is very close since it already quotes the relevant documentation. We'd only need to change it to cite a specific version of the docs (note the added 1.81.0 in the URL):
 /// SAFETY:
 /// Per the reference [1], "the unit tuple (`()`) ... is guaranteed as a
 /// zero-sized type to have a size of 0 and an alignment of 1."
 /// - `Immutable`: `()` self-evidently does not contain any `UnsafeCell`s.
 /// - `TryFromBytes` (with no validator), `FromZeros`, `FromBytes`: There is
 ///   only one possible sequence of 0 bytes, and `()` is inhabited.
 /// - `IntoBytes`: Since `()` has size 0, it contains no padding bytes.
 /// - `Unaligned`: `()` has alignment 1.
 ///
 /// [1] https://doc.rust-lang.org/1.81.0/reference/type-layout.html#tuple-layout

Here's a more involved example:
https://github.com/google/zerocopy/blob/b35123b0f62e80d0d3ca7a11e38378abe488a558/src/impls.rs#L245-L268
This needs two things: it needs to cite a specific version of the docs and it also needs relevant quotes from the docs:
 /// SAFETY:
 /// - `IntoBytes`: `NonZeroXxx` has the same layout as its associated
 ///    primitive. Since it is the same size, this guarantees it has no
 ///    padding - integers have no padding, and there's no room for padding
 ///    if it can represent all of the same values except 0.
 /// - `Unaligned`: `NonZeroU8` and `NonZeroI8` document that
 ///   `Option<NonZeroU8>` and `Option<NonZeroI8>` both have size 1. [1] [2]
 ///   This is worded in a way that makes it unclear whether it's meant as a
 ///   guarantee, but given the purpose of those types, it's virtually
 ///   unthinkable that that would ever change. `Option` cannot be smaller
 ///   than its contained type, which implies that, and `NonZeroX8` are of
 ///   size 1 or 0. `NonZeroX8` can represent multiple states, so they cannot
 ///   be 0 bytes, which means that they must be 1 byte. The only valid
 ///   alignment for a 1-byte type is 1.
 ///
 /// TODO(#429):
 /// - Add quotes from documentation.
 /// - Add safety comment for `Immutable`. How can we prove that `NonZeroXxx`
 ///   doesn't contain any `UnsafeCell`s? It's obviously true, but it's not
 ///   clear how we'd prove it short of adding text to the stdlib docs that
 ///   says so explicitly, which likely wouldn't be accepted.
 ///
 /// [1] Per https://doc.rust-lang.org/1.81.0/std/num/type.NonZeroU8.html:
 ///
 ///   `NonZeroU8` is guaranteed to have the same layout and bit validity as `u8`
 ///
  /// [2] Per https://doc.rust-lang.org/1.81.0/std/num/type.NonZeroI8.html:
 ///
 ///   `NonZeroI8` is guaranteed to have the same layout and bit validity as `i8`

Hope that helps!

Please let me know if any changes are required


Prototype: Find the Design system

As a practitioner I want to easily find the Design system from the Guides homepage so that I can quickly find the information I need.

I have a hunch that we can tackle much of this with copy. Will share some thinking in next jam.


Don't send SampleRate in dry run mode

It seems quite wrong to send the sample rate when refinery is running in dry run mode. For example, it could mess up your COUNTs even though the data isn't actually being sampled.

I could see sending this field conditionally by way of configuration, but only on events that Refinery would have sent when running wetly. For the events that Refinery would not have sent, they don't represent that approximate number of missing events.
With that approach, you can exclude the events that Refinery wouldn't have sent and inspect the sample rates reported on the events that it would have sent.

Internal support ticket about DryMode sending Sample Rate being confusing: https://app.asana.com/0/526085303034087/1203714518944317/f


Can you add a props for custom button or component

@pansuriyaimpexIT where you want a button/component inside a component?

I want button/any component to render in every row just like checkbox


No module named funkyAD

It currently seems you have to install the package before you can run any of the files, because the scripts otherwise throw an error saying there is no module namedfunkyAD – even though there is a directory by that name.

Resolved by #33. Tests and examples now run on an installed version of the package, not the local code, by design.


Enhancement: Add support for Selenium's cookie manipulation methods

Originally submitted to Google Code by c.martin.taylor on 28 Nov 2008

I implemented this and have attached the modified init.py file.  Feel
free to incorporate it into the next revision of
robotframework-seleniumlibrary.  The only method I really needed for my
testing was "delete_cookie", so that's the only one I've actually tested
under robotframework-seleniumlibrary.  Since the other methods in the
_Cookies class are just direct wrappers for the corresponding Selenium
methods, I expect they will work, too.

Originally submitted to Google Code by @yanne on 1 Dec 2008

These keywords will be in the next release of SeleniumLibrary, which will be
released on friday, 5th December

Originally submitted to Google Code by @yanne on 4 Dec 2008

After looking through this more thoroughly, I decided to change the names of some of
the keyword. Also, since I am loathe to add any keywords without tests, I didn't
actually add them all. These are implemented in r109:
Get Cookies
Get Cookie Value
Delete Cookie
Delete All Cookies

Originally submitted to Google Code by @yanne on 4 Dec 2008

Documentation for these keywords has been finalized in r110
A separate issue may be opened if the rest of the cookie functionality is needed.

Originally submitted to Google Code by @pekkaklarck on 5 Dec 2008

Could you list what cookie functionality was not implemented?


Could not install from "node_modules/react-navigation/react-native-tab-view@github:react-navigation/react-native-tab-view

Bug

Current behaviour
I am trying to run `npm install` on my React Native project. I am running React Native version 0.53.3 and react-navigation version 1.5.11 and I get this error:
npm ERR! code ENOLOCAL
npm ERR! Could not install from "node_modules/react-navigation/react-native-tab-view@github:react-navigation/react-native-tab-view#36ebd834d78b841fc19778c966465d02fd1213bb" as it does not contain a package.json file.

Expected behaviour
My team ran into this issue last year and it seems that what fixed it was to do add "react-native-tab-view": "^1.3.2",, because the project did not have it inside the package.json file before. I expected for it to fully run npm install afterwards.
 Closing since it's not actionable for me.

I have the same issue. How to fix..?


wiremock 1.35 proxy modifies requests before calling the actual web service

I would love to use Wiremock to help unit test some client software I'm writing that calls a third-party REST service.  It appears that running the standalone jar with --proxy-all causes the header to be rewritten in a way that is not compatible with the web service I'm calling.  I need the request to be passed through to the proxy without the header changes, etc.
I'm writing to see if this is something you'd be interested in supporting, or perhaps someone in the community has a suggestion for how to get Wiremock to behave in a way that will work with this web service.  Any thoughts?
Wiremock is started like this:
java -jar wiremock-1.35-standalone.jar --proxy-all="http://<IP_ADDRESS>" --record-mappings --verbose
The web service calls arrive at the Wiremock proxy looking like this:
PUT /rest/testdata/22fb095c8fac450296bf889e8192a5b5 HTTP/1.1
Cookie: hcp-ns-auth=cmlhbHRv:89efe08fe280e438f3b3085fa94309b1
User-Agent: Jakarta Commons-HttpClient/3.0.1
Host: rialto.rialto.something-demo.somethingdomain.com
Transfer-Encoding: chunked

3
abc
0

However, the call to the actual web service is rewritten: it has a Content-Length instead of chunked encoding, and some of the headers are removed or changed:
PUT /rest/testdata/299e861855584fbfa8121af313edbff5 HTTP/1.1
Cookie: hcp-ns-auth=cmlhbHRv:89efe08fe280e438f3b3085fa94309b1
User-Agent: Jakarta Commons-HttpClient/3.0.1
Content-Length: 3
Content-Type: text/plain; charset=utf-8
Host: <IP_ADDRESS>
Connection: Keep-Alive

abc

Hi @tomakehurst, Similar to the above problem I faced an issue with Proxy when the response returned by the actual service had the transfer-encoding header "chunked".
In the standalone mode, this header is lost & replaced by "content-length".
In the Webapp mode, there is no response from the service.
I resolved it for my local web app by overriding the implementation of DispatcherServlet & invoke  httpServletResponse.getOutputStream().flush() if there is "chunked" header.
All these problems are with version 1.53

Yeah, unfortunately because it buffers responses at the moment, you always end up with a known-length byte array and hence a Content-Length header being added by Jetty.
I'll have a look at fixing this in a future version I think, as it's useful to be able to test with both.

Thanks @tomakehurst for looking into my request.