Add Gamma sampler

This PR is an attempt to implement Gamma sampler based on this reference. The current version is slow so I very appreciate any help from JAX team to address this performance issue.
TODO:

[x] Address the performance
[x] Using lax api instead of numpy.

I haven't looked at the code or thought about the problem, but I wanted to throw out an idea: it can be useful to look at algorithms that are specialized to the GPU because they are often focused on vectorization, and vectorization will be salient both for performance and for expressibility in lax and numpy. If there's a gamma sampling routine in CUDA or a related library, or as a TF kernel, I'd be curious how it's done there.
@slinderman do you know how gammas are sampled, especially on vector machines?

Re: your second todo item, it's okay to use the numpy api instead of the lax one. The lax one just has slightly lower overheads, and fewer accidental casts to f64, because of its simpler broadcasting / dtype promotion logic. But convenience should come first!

Thank you @mattjj ! Marsaglia and Tsang's method, which I used, is popular for Gammar sampling (numpy/pytorch uses this method). In CUDA, it seems that cuRAND provides an API to support sampling in parallel. And if I understand correctly, then it is quite similar to what vmap does.

Actually, in CPU, the jit version is 10x slower than numpy and 4.5x slower than pytorch. It is not bad to me given than the implementation is purely in python. The comparison can be found in my gist.

Well, we think @jit can be faster than C. But XLA's while_loop is a known performance cliff.
I will also tag @hawkinsp because he knows how to make XLA code fast. In the worst case, we can make primitives that translate into CPU / GPU library calls as appropriate, like we have done with LAPACK / cuSOLVER.

@mattjj Previous implementation requires a while_loop inside a while_loop (kind of an if-else inside an if-else). It turns out that computations of outer loop are quite cheap (only involves a few mul operators) quite the inner loop is expensive (log, uniform sampling, normal sampling). So I join two loops (by moving the inner body_fn outside and merging two cond_fn). Now, this implementation is only 2x slower than pytorch and 3x slower than numpy. I personally satisfy with this performance so I have removed draft state.
You are right that the lax one just has slightly lower overheads and their jaxpr are quite similar. :)

Marsaglia and Tsang (@fehiepsi's reference above) is the standard method for generating gammas.  It's a rejection sampling algorithm with a very high acceptance rate for most parameter regimes.  Rejection samplers do not seem particularly well suited to GPU's since each thread may execute a variable number of iterations, and if one thread rejects then the whole warp waits. I don't have any better suggestions right now.  (I'm assuming the inverse CDF would be even more expensive on a GPU and that integer shape restrictions are out.)
I wrote a blog post about this many years ago.  With some googling, I found this much better post.  It suggests some useful performance enhancements.

Thanks a lot @slinderman for your suggestions! Warp-based parallelism is neat to me. If I understand it correctly then instead of the sequential while_loop, we do body_fn in parallel (with a fixed number of threads M) and after that, selecting among ones which pass cond_fn. According to your experiment, 10e-7 failure rate (for M=8) is pretty small so we should definitely check it out. I'll mark this technique in my TODO list at #552.

Thanks, @slinderman! My ulterior motive is to get you excited about working on JAX too ;)

Thanks so much for this PR! Just a heads-up, we probably won't be able to review this until Wednesday.

Thanks, please take your time @mattjj !

(Sorry, being slow on this, but I haven't forgotten about it!)

(@mattjj Thanks! No worries, this is just an enhancement. I understand that there are many other things which need to address first. ;) )

Sorry again for the long delay.
We asked the XLA team for some advice on how to make this kind of rejection sampler more performant, and an idea that came up is that we could generate gamma variates in a loop that consumes a smaller array, then scatter them out into a larger array until the larger array is full. That would reduce the amount of extra work done. But it's probably too tricky to pursue, and this approach is nice and simple!
The convention of calling into e.g. lax.mul and lax.add instead of using infix operators makes the code a bit harder to read, so we should consider switching that. For now this code is quite consistent with everything else in the file, though!

Thanks again for this contribution! This is a totally new type of sampler for us, and probably opens the door for more to come. It's also useful for pushing forward our understanding of how to generate fast code with XLA for new kinds of computations.

Thank you a lot @mattjj ! With this, I can add beta/dirichlet/studentT sampler in upcoming PRs. After that, I will address pathwise derivative for Gamma. :)

I have a quick question:
To me, this Gamma distribution (sampler) seems to be parameterized by a single parameter a. I have only seen parameterizations of the Gamma distribution with two parameters -- the shape parameter and the rate parameter (for example see here).
Can anyone explain this discrepancy? I'm sure there is a reason but I can't find one after scowering online for a bit.
For example, how would I create a sample from a $Gamma(\alpha=1, \beta=3)$ distribution with the Jax sampler?
Thank you!

@PaulScemama thanks for the question!
I'm not sure but I would guess that it's because the rate or inverse scale parameter can be dropped without loss of generality, as the caller can rescale the sample by multiplication. That is, using the shape-rate parameterization if $X \sim \textrm{Gamma}(\alpha, , 1)$ then $X / \beta \sim \textrm{Gamma}(\alpha, , \beta)$. Or in code, we could say
def gamma(key, alpha, beta, shape=None, dtype=dtypes.float_):
  return jax.random.gamma(key, alpha, shape, dtype) / beta

It's analogous to how you could drop the variance (or even the mean!) parameter from a Gaussian sampler function, since the caller can always scale (and/or add) to transform the distribution.
That said, it might arguably be a less confusing API to provide a rate or scale parameter. On the other hand, by not providing it, the user never has to figure out whether the API follows the rate parameterization or the scale parameterization! That's kind of nice...
WDYT?

That definitely makes sense! Thank you for the thorough and clear answer. I agree that the user never has to figure out whether the API follows the rate/scale parameterization. However, I do think maybe the docs should say something like
"we implement the standard gamma density. Dividing the sample by the rate is equivalent to sampling from $\text{Gamma}(\alpha, \text{rate})$. And multiplying the sample by the scale is equivalent to sampling from $\text{Gamma}(\alpha, \text{scale})$."
I'm not sure that wording is good 😅 but it could be useful. No worries if you think this is not needed or "overkill". Thanks again for answering the question!

Good idea. Could you open a new issue so we don't forget to improve the docs that way?

Definitely! Should I @ you in the issue?


Alternate RSS feed doesn't parse

I really love this as it doesn't require any external JavaScript and works with the different feeds I've tested except UptimeRobot RSS and I just can't figure out why.
I do understand you wrote this for Medium but could you please explain why this RSS feed doesn't parse with your code? https://api.rss2json.com/v1/api.json?rss_url=https://rss.uptimerobot.com/u1547170-7f480a74203d142f1ed154a4b64ce5cb
Thanks

I am not sure what problem you faced, but it worked for me.
fetch('https://api.rss2json.com/v1/api.json?rss_url=https://rss.uptimerobot.com/u1547170-7f480a74203d142f1ed154a4b64ce5cb')
  .then((res) => res.json())
  .then(data => {
  data.items.forEach(key => console.log(key.title))
})

I really love this as it doesn't require any external JavaScript and works with the different feeds I've tested except UptimeRobot RSS and I just can't figure out why.
I do understand you wrote this for Medium but could you please explain why this RSS feed doesn't parse with your code? https://api.rss2json.com/v1/api.json?rss_url=https://rss.uptimerobot.com/u1547170-7f480a74203d142f1ed154a4b64ce5cb
Thanks

I am not sure what problem you faced, but it worked for me.
fetch('https://api.rss2json.com/v1/api.json?rss_url=https://rss.uptimerobot.com/u1547170-7f480a74203d142f1ed154a4b64ce5cb')
  .then((res) => res.json())
  .then(data => {
  data.items.forEach(key => console.log(key.title))
})

Hi @ratul16 thanks for replying, I've attached some screenshots to better explain what's happening and hopefully you can tell me what I'm doing wrong?
https://medium.com/feed/@ratul16

https://www.feedforall.com/sample.xml

http://rss.uptimerobot.com/u1547170-7f480a74203d142f1ed154a4b64ce5cb

Thanks

Hi @ratul16 thanks for replying, I've attached some screenshots to better explain what's happening and hopefully you can tell me what I'm doing wrong?
https://medium.com/feed/@ratul16

https://www.feedforall.com/sample.xml

https://rss.uptimerobot.com/u1547170-7f480a74203d142f1ed154a4b64ce5cb

Thanks

Hi @brentonv the reason that https://rss.uptimerobot.com/u1547170-7f480a74203d142f1ed154a4b64ce5cb isn't working because the categories key doesn't have any value (empty array) to it.


[DOCFIX] Improve the guide to configure Spark on Alluxio

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/159/
Test PASSed.

@calvinjia  thanks for reviewing the doc. I will address your comments. In addition, in your opinion, is there anything we should cover in this doc ?

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/163/
Test PASSed.

@apc999 Maybe include a section about reading the Spark UI's stages tab that shows input/output/shuffle read/shuffle write and call out that Alluxio is currently involved in in/out but not shuffle?

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/179/
Test PASSed.

@calvinjia as talked offline, you or @gpang  will add a section on how to diagnose issues like locality into this doc after this is merged.
@aaudiber do you have any comments ?

@calvinjia @aaudiber  PTAL

Build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/191/
Test PASSed.


why is the exlint:source-code-fxer shouldFix parameter false

I am using eslint v8.57.0 and I use eslint-config-prettier with my prettier rules in my eslint config.
I have pasted my eslint settings from my vscode settings at the end of this post.
Formatting on save has suddenly stopped working and I have no idea why.
I did notice this entry in the eslint output of vscode.

eslint:source-code-fixer shouldFix parameter was false, not attempting fixes

I can see this in the eslint source code here.
And it appears to be an option that is somehow passed in as option here.
Can I set this value on the extension so that it starts formatting on save again?
  "eslint.debug": true,
  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": "explicit"
  },
  "eslint.codeActionsOnSave.mode": "all",
  "eslint.timeBudget.onFixes": {
    "warn": 300000,
    "error": 600000
  },
  "eslint.onIgnoredFiles": "warn",
  "editor.formatOnSave": false,
  "eslint.lintTask.enable": true,
  "eslint.validate": [
    "javascript",
    "javascriptreact",
    "typescript",
    "typescriptreact"
  ],
  "[javascript]": {
    "editor.formatOnSave": false,
  },
  "[javascriptreact]": {
    "editor.formatOnSave": false
  },
  "[typescript]": {
    "editor.formatOnSave": false
  },
  "[typescriptreact]": {
    "editor.formatOnSave": false
  },

rolling back @typescript-eslint/eslint-plugin to 7.7.0 fixed my problem but I am still curious to know how that fix parameter can be set.....if indeed it can be set externally,

You can pass options to the linter using eslint.options settings. The option structure is decribed here: https://eslint.org/docs/latest/integrate/nodejs-api#-new-eslintoptions

Let me know how it goes.

@dbaeumer  can this option be set in the eslint.config.js file? It seems like VsCode autosets the "source.fixAll.eslint" to "explicit" now, as it doesn't support boolean values anymore.

@Derasm yes that is correct. But the extension / VS Code handles them equally so things should work the same way. Do you see it not working with the explicity value?

@dbaeumer I console logged the fix value in the source code of eslint in node_modules here and it was false until I rolled back @typescript-eslint/eslint-plugin to 7.7.0

The options literal passed to the linter is the one from eslint.options. I don't set any fix property on it to ensure the default is taken. So I am a little bit lost why this is false for you.

I'm also having the same issue. I've tried everything outlined here, including many in stackoverflow, and it's always false. Any ideas?

@dagda1 are you still experiencing the problem?

@dagda1 are you still experiencing the problem?

I think it is good now, cheers


Depth map causes issues because it changes object

Because we cannot (easily) make a deep copy of a handle object, when we change the recipe for the depth map we end up changing the original reference to the object as well. This causes a lot of issues if you don't reread the scene after every render.
I need to figure out how to make a deep copy to avoid this issue.

Fixed (perhaps temporarily) by having the recipe class inherit "matlab.mixin.Copyable" so we can call:
newRecipe = copy(recipe);


Any reason behind making intention = 0 when sample_type = 'all'?

Hi,
Thanks a lot for this amazing work. I have recently started working with JAAD data and had confusion on this line(https://github.com/ykotseruba/JAAD/blob/a958453ef952c8a594bbd55dc630b531d0bb655e/jaad_data.py#L1292). Could you please let me know the reason behind making intention as 0 for all the pedestrians when the sample_type = 'all'. According to my understanding, there should still be pedestrians having an intention of 1, even is sample_type='all'. Please correct me if I am wrong.
Thanks!

Hi,
Thank you for bringing that to our attention. The idea was that the intention of the samples that do not have behavioral labels should be set to 0  because they do not have crossing intention. This was, however, incorrectly implemented as you pointed out. We corrected the issue so only the ones without crossing intentions are set to 0.

Thank you so much for such a prompt response! :) The change makes complete sense to me. Just a follow-up question, should this(https://github.com/ykotseruba/JAAD/blob/4268bae2c0023a2b8ac631f4cb6946368e5c8535/jaad_data.py#L1259) line be also changed? As it is also being skipped if the sample_type='all'

Once again you are right. I changed that to check based on pedestrian id, not sequence type

Thanks for resolving my doubts. Really appreciate your quick responses. Looks all good now :100:


Passed the event object as second argument in all onChange calls #42

#42
You should re-run the webpack/minification in your environment because I wasn't able to create the minified version for some reason.

I only run webpack build when bumping version anyway ;-)
I would be curious to see this working and integrated with newform! Out of curiosity what's the purpose of bubbling up the event ?

I want to run the example, but there is an error

Can you maybe elaborate? Context ? Stack trace?
—
Sent from Mailbox
On Thu, May 7, 2015 at 8:20 PM, fcm10101<EMAIL_ADDRESS>wrote:

I want to run the example, but there is an error
Reply to this email directly or view it on GitHub:
https://github.com/quri/react-bootstrap-datetimepicker/pull/43#issuecomment-100086875

If you're familiar with newforms I'd love to hear your advice or an alternative solution. I'm relatively new to the library.
I'm implementing this as a Widget. This widget can be added to either DateInput or DateTimeInput like so:
  some_date_field: forms.DateField({
    required: true,
    label: 'Employment Date',
    widget: DateTimePickerInput,
    widgetAttrs: {
       onlyDate: true
    }
  }),

bootstrap-datetimepicker is already using onChange on the input so I basically need to extend that by doing a little trickery - saving BoundField's onChange from kwargs to a variable, removing it (let orgOnChange = finalAttrs.onChange;), and then calling it manually from within a local onChange that's interfacing with the datetimepicker (which is currently only supplying the value). Basically, relaying the call as if it was actually on the input.
You'll notice I'm using the boolean onlyDate to determine what format it display. This serves my purposes well for this application but if there is interest in open sourcing the implementation I'd probably make properties to provide a custom format.
Here is the full widget below:
/**
 * @module app/components/newforms/Widget/DateTimePickerInput
 */
import React from 'react';
import forms from 'newforms';
import DateTimeField from 'react-bootstrap-datetimepicker';

/**
 * Widget to extend.
 * @constructor
 * @type {function}
 */
const DateTimeBaseInput = forms.DateTimeBaseInput;

/**
 * Creates a custom Bootstrap DateTimePicker widget.
 *
 * Both format and inputFormat should be provided as newform's datepicker and
 * bootstrap's datepicker require a different format.
 *
 * @constructor
 * @extends DateTimeBaseInput
 * @type {function}
 */
const DateTimePickerInput = DateTimeBaseInput.extend({
  constructor: function DateTimePickerInput(kwargs) {
    if (!(this instanceof DateTimePickerInput)) {
      return new DateTimePickerInput(kwargs);
    }
    DateTimeBaseInput.call(this, kwargs);
  },

  /**
   * Create the element.
   * @see { @link: http://momentjs.com/docs/#/displaying/format/ } }
   * @see { @link: https://github.com/insin/isomorph#formatting-directives } }
   */
  render: function(name, value, kwargs) {
    let finalAttrs = this.buildAttrs(kwargs.attrs, {
      type: this.inputType,
      name: name,
      dateTime: value || Date.now().toString()
    });

    // Save the onChange from the BoundField.
    let orgOnChange = finalAttrs.onChange;

    // Use on change from DateTimeField and then manually call newform's.
    var onChange: function(timestamp, event) {
      // orgOnChange(event); // This needs to be the react event!
    };

    delete finalAttrs.onChange; // Remove the newforms onChange for now.

    if (this.attrs.onlyDate) {
      this.formatType = 'DATE_INPUT_FORMATS';
      this.format = '%m/%d/%y';
      finalAttrs.inputFormat = 'MM/DD/YY';
    } else {
      this.formatType = 'DATETIME_INPUT_FORMATS';
      this.format = '%m/%d/%y %I:%M %p';
      finalAttrs.inputFormat = 'MM/DD/YY h:mm A';
    }

    return <DateTimeField defaultText='No date selected.' onChange={onChange} inputFormat={finalAttrs.inputFormat} dateTime={inputProps}/>;
  }
});

export default DateTimePickerInput;

Any thoughts on this, @chollier?

Ok I got it, it's a little bit weird to me that this has to be a react event but I can understand.
Would you mind unchecking the changes to the compiled files from your pull-request ? I only do that when bumping versions

It's very weird to me too. I believe because newforms was ported over and not built specifically with React in mind. It's one of a few things I found to be pretty odd with that library, actually. I ended up writing a form module here which we'll be using. Feel free not to cancel this merge request unless you want to expose the synthetic event, but I won't be needing it anymore.


Update SVG for Azure view

Old----vs----New:

The bad news is, it seems like if you have an extension installed that doesn't rely on Azure Resources (like VMs for instance) the icon will not update.  At least when I tried in debug mode.  I'm not entirely sure what gets priority in this case (as in, maybe if someone installs Resource Groups first and then VMs, they will see the new icon?)

I see what you mean. The new icon is showing if the VM ext. is not installed and it stays the same right after I install it. But it goes back to the old icon once I reload vscode.


Possible to keybind?

Would it be possible to add a custom keybind option to start / pause the timer. It would still be fully manual, but easier to use while in the inferno

@qwqwrqwqrw Yes it's definitely possible. I'll add this in the next update later tonight. 1.1.0 just got merged to the plugin hub earlier so it might be a couple days before 1.2.0 (this feature) gets merged.

@qwqwrqwqrw Yes it's definitely possible. I'll add this in the next update later tonight. 1.1.0 just got merged to the plugin hub earlier so it might be a couple days before 1.2.0 (this feature) gets merged.

https://github.com/InfernoStats/SetTimer/commit/a784672459d11a35578dabfe80d239c4f142c833 commit resolves this issue.

This request has now been merged to the plugin-hub.

Awesome work, thanks a lot for adding this. Very easy to use now

@qwqwrqwqrw I agree. It made it a lot easier to start/stop in the moment. Thank you for your awesome suggestion 👍


Fix DNS lookup in Android Curl

Attempts to download iModels on Android in iTwin 3.3.5 fail with an error stating that DNS lookup failed. I believe that this is specific to V2 checkpoints, but I am not sure of that. The same problem happened in iOS, and was fixed by an update to the Curl library.

This is fixed.


:arrow_up: Change the easy rules lib

IMPORTANT: Where possible all PRs must be linked to a Github issue
Fixes #[issue number]
Checklist

[ ] I have written Unit tests for any new feature(s) and edge cases for bug fixes
[ ] I have added any strings visible on UI components to the strings.xml file
[ ] I have updated the  CHANGELOG.md file for any notable changes to the codebase
[ ] I have run ./gradlew spotlessApply and ./gradlew spotlessCheck to check my code follows the project's style guide
[ ] I have built and run the fhircore app to verify my change fixes the issue and/or does not break the app

@ellykits Deleting this since we already reviewed it.


Prime Factor Calculator using Sieve of Eratosthenes

Fixes #141
Description

Made a Prime factor calculator app using Sieve of Eratosthenes to calculate prime factors in O(n log log n) time complexity assuming worst case scenario. User input would be taken and factors would be calculated using the following tech stack :- Javascript, HTML, Bootstrap(CSS)
Major concepts:-
Sieve of Eratosthenes algorithm
Dom manipulation
User input sanitisation
Features:-
-> can calculate upto 1,00,00,000 numbers instantly through pre-computation
-> factors are presented in three forms:- prime factors, factorization and factorization with exponents.
-> modified version of Sieve of Eratosthenes is used to make calculation much more faster.
Type of change

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

Screenshot

Checklist:

[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my own code
[x] I have commented my code, particularly in hard-to-understand areas
[x] I have included a README.md file
[x] My project follows this structure: Domain Folder/ Project Name Folder/ Project files and Readme.md files
[x] I have added demonstration in the form of GIF/video file
[x] I am a GSSoC'22 Participant

@jeevanalok anyways nice and clean work done just make the changes which are mentioned above.


Helm test continue on failure

Is there a way how to define that all tests provided in /template/tests are executed?
At the moment after first failure other tests wont be executed. So looking for some flag as continue on failure.
Use case: With tests i am validating all egress routes required by installed application and would like to get full status

To the best of my knowledge it's intentional that any exit status other than success of a container in the test pod causes the test to be considered failed.  If you want some tests to be run but success to be optional, you probably want to write it to emit a warning message so you can see it in the logs, but still exit with result code 0.

I am really ok with success/failed status of individual test (pod). What concerns me is the fact that in case of multiple tests they are executed in order and first failure will stop the execution so helm test command provide only limited view. Either all tests are working or first failure was found. IMHO feature to execute other tests after first failure was found would be helpful. Fixing a single test can be time consuming task like requesting an exception in enterprise firewall so iterating over them one by one is not efficient process.

Hi, @tomassatka! Thank you for your ideas to improve Helm. If you'd like, you can submit a Helm Improvement Proposal so as to work in the community to make your ideas a reality: https://github.com/helm/community/blob/master/hips/hip-0001.md - meanwhile, I will close this issue. Thanks!

use the --filter strings to run individual tests one at a time or in parallel

@freegnu

use the --filter strings to run individual tests one at a time or in parallel

Thanks for that suggestion. How in helm v3 do you make the tests run in parallel with --filter flag? The --parallel flag was removed and I cannot find enough examples online of helm test with --filter flag.


HACKATHON TECH SOLUTIONS IS THE BEST BITCOIN RECOVERY EXPERTS TO SAFELY RECOVER STOLEN CRYPTOCURRENCY

It's disheartening to live in a world where dishonesty thrives, preying on the vulnerable with scams that evolve with each generation. I recently found myself a victim of such deception, lured by promises of investment opportunities to rescue my struggling business. With mounting bills and a sinking restaurant venture, I turned to crypto trading for salvation, only to be swindled out of $149k within two months by cunning fraudsters. The blow was devastating, plunging me into despair until a friend suggested seeking help from hackers. Despite initial skepticism, I reached out to HACKATHON TECH SOLUTIONS, a team known for its expertise in asset retrieval. Within 48 hours, they worked their magic, restoring my lost funds and offering a lifeline when all seemed lost. Their swift and efficient intervention not only salvaged my finances but also renewed my faith in the possibility of recovery amidst adversity. This experience taught me a valuable lesson in discernment and resilience. While the prevalence of deceit may seem overwhelming, there are still avenues of recourse for those who refuse to succumb to despair. By remaining vigilant and seeking assistance from reputable sources, we can navigate the treacherous landscape of fraud and emerge stronger on the other side. In sharing my story, I hope to raise awareness about the dangers of financial scams and the importance of seeking help when faced with adversity. It's easy to feel isolated and powerless in the face of such deception, but allies are willing to lend a hand if we're willing to reach out. Whether it's through legal channels, financial institutions, or specialized recovery services like  HACKATHON TECH SOLUTIONS  , there are resources available to help victims reclaim what is rightfully theirs. As for me, I'm grateful for the second chance afforded by  HACKATHON TECH SOLUTIONS   and the support of friends who refused to let me succumb to despair. While the scars of deception may linger, they serve as a reminder of the resilience of the human spirit and the power of solidarity in overcoming adversity. Moving forward, I'm committed to rebuilding not just my financial stability but also my trust in others. While the road ahead may be challenging, I take solace in knowing that I'm not alone in this journey. Together, we can navigate the pitfalls of deceit and emerge stronger, wiser, and more resilient than ever before with  HACKATHON TECH SOLUTIONS  on our side..Reach out to HACKATHON TECH SOLUTIONS  via below contact details
Email<EMAIL_ADDRESS>Website:https://hackathontechsolutions.com
Whatsapp: +31 6 47999256
Telegram:
@hackathontechsolution OR +31 6 47999256

My time in college was filled with fun and crazy adventures. That's where I met my ex-girlfriend, who I dated for three years. She introduced me to cryptocurrency trading, and I quickly became adept at it. I initially invested $5,000 in Bitcoin, which was a smart move as the cryptocurrency was just starting to gain traction. With careful trading and reinvesting my returns, I amassed a fortune of $600,000.After our relationship ended due to her infidelity, I never imagined she would betray me further. But she did. One day, she locked me out of my email account, a crucial part of managing my cryptocurrency investments. Luckily, I hadn’t saved my wallet passwords in my email, but she left with my phone, which had access to several of my accounts. Panicked, I turned to my Instagram friends, many of whom were fellow crypto traders. They recommended the D A N I E L M E U L I W E B R E C O V E R Y Team to me, praising their efficiency and reliability. Desperate, I contacted them immediately, explaining my predicament. The  W h a t s A p p. +3 9 3 5 1 2 0 1 3 5 2 8 The team sprang into action without delay. Their professionalism was evident as they guided me through securing my accounts and recovering my email. Their advanced security measures ensured my information was safe throughout the ordeal. They not only recovered my email but also managed to secure my cryptocurrency wallet. In their investigation, they uncovered that my ex-girlfriend was indeed responsible for the breach. I reported the matter to the authorities, and with the evidence provided by the  D A N I E L M E U L I W E B R E C O V E R Y  Team, the law came down hard on her. To avoid severe penalties, she settled the matter for $200,000. While the betrayal stung deeply, knowing that justice was served provided some solace. This experience was a harsh lesson in trust and the importance of securing personal information. It highlighted the dark side of trusting the wrong people and the incredible value of reliable support. The  D A N I E L M E U L I W E B R E C O V E R Y Team’s prompt and effective action saved my assets and brought a measure of justice against my ex-girlfriend. Their expertise and dedication make them the best in the business, and I am profoundly grateful for their help. They not only helped me recover financially but also restored my faith in finding trustworthy allies in the often perilous world of cryptocurrency trading.


Deleted service continues to be referanced in balancer service's port rule and metadata fields.

Rancher Version: latest cattle build from lbrefactormetadata from https://github.com/alena1108/cattle.git
Steps to reproduce the problem:
Create a stack with service - s1 and 1 balancer service with service s1 as its target.
Delete service s1.
Instances of service s1 gets deleted from haproxy config as expected.
But the service continues to present in balancer service's port rule and metadata fields.
"metadata": {
"lb": {
"certs": [ ],
"default_cert": null,
"port_rules": [
{
"source_port": 8900,
"protocol": "http",
"path": null,
"hostname": null,
"service": "test739464/test105461",
"target_port": 80,
"priority": null,
"backend_name": null,
"selector": null,
},
],
"config": null,
"stickiness_policy": null,
},
},
"portRules": [
{
"protocol": "http",
"serviceId": 1477,
"sourcePort": 8900,
"targetPort": 80,
},
],

Tested with latest build from master
Steps to reproduce the problem:
Create a stack with service - s1 and 1 balancer service with service s1 as its target.
Delete service s1.
Instances of service s1 gets deleted from haproxy config as expected.
Service gets deleted from lb service's port rule field.


Updating and uninstalling not working

Hi,
I just tried to update all my anaconda packages with conda update --all and received an error for nbpresent:
Linking packages ...
[      COMPLETE      ]|#####################################################################################################| 100%
Unrecognized JSON config file version, assuming version 1
Unrecognized JSON config file version, assuming version 1
Disabling notebook extension nbpresent/js/nbpresent.min...
      - Validating: OK
Disabling: nbpresent
- Writing config: /home/cs/anaconda3/etc/jupyter
Traceback (most recent call last):
  File "/home/cs/anaconda3/bin/jupyter-serverextension", line 6, in <module>
    sys.exit(notebook.serverextensions.main())
  File "/home/cs/anaconda3/lib/python3.5/site-packages/jupyter_core/application.py", line 267, in launch_instance
    return super(JupyterApp, cls).launch_instance(argv=argv, **kwargs)
  File "/home/cs/anaconda3/lib/python3.5/site-packages/traitlets/config/application.py", line 596, in launch_instance
    app.start()
  File "/home/cs/anaconda3/lib/python3.5/site-packages/notebook/serverextensions.py", line 301, in start
    super(ServerExtensionApp, self).start()
  File "/home/cs/anaconda3/lib/python3.5/site-packages/jupyter_core/application.py", line 256, in start
    self.subapp.start()
  File "/home/cs/anaconda3/lib/python3.5/site-packages/notebook/serverextensions.py", line 218, in start
    self.toggle_server_extension_python(arg)
  File "/home/cs/anaconda3/lib/python3.5/site-packages/notebook/serverextensions.py", line 210, in toggle_server_extension_python
    self.toggle_server_extension(module)
  File "/home/cs/anaconda3/lib/python3.5/site-packages/notebook/serverextensions.py", line 193, in toggle_server_extension
    sys_prefix=self.sys_prefix, logger=self.log)
  File "/home/cs/anaconda3/lib/python3.5/site-packages/notebook/serverextensions.py", line 81, in toggle_serverextension_python
    cm.update("jupyter_notebook_config", cfg)
  File "/home/cs/anaconda3/lib/python3.5/site-packages/traitlets/config/manager.py", line 87, in update
    self.set(section_name, data)
  File "/home/cs/anaconda3/lib/python3.5/site-packages/traitlets/config/manager.py", line 74, in set
    f = io.open(filename, 'w', encoding='utf-8')
PermissionError: [Errno 13] Permission denied: '/home/cs/anaconda3/etc/jupyter/jupyter_notebook_config.json'

Uninstalling the package was also not working:
jupyter nbextension uninstall nbpresent
Unrecognized JSON config file version, assuming version 1
Unrecognized JSON config file version, assuming version 1
Removing: /usr/local/share/jupyter/nbextensions/nbpresent
Traceback (most recent call last):
  File "/home/cs/anaconda3/bin/jupyter-nbextension", line 6, in <module>
    sys.exit(notebook.nbextensions.main())
  File "/home/cs/anaconda3/lib/python3.5/site-packages/jupyter_core/application.py", line 267, in launch_instance
    return super(JupyterApp, cls).launch_instance(argv=argv, **kwargs)
  File "/home/cs/anaconda3/lib/python3.5/site-packages/traitlets/config/application.py", line 596, in launch_instance
    app.start()
  File "/home/cs/anaconda3/lib/python3.5/site-packages/notebook/nbextensions.py", line 961, in start
    super(NBExtensionApp, self).start()
  File "/home/cs/anaconda3/lib/python3.5/site-packages/jupyter_core/application.py", line 256, in start
    self.subapp.start()
  File "/home/cs/anaconda3/lib/python3.5/site-packages/notebook/nbextensions.py", line 804, in start
    self.uninstall_extensions()
  File "/home/cs/anaconda3/lib/python3.5/site-packages/notebook/nbextensions.py", line 797, in uninstall_extensions
    uninstall_nbextension(self.extra_args[0], **kwargs)
  File "/home/cs/anaconda3/lib/python3.5/site-packages/notebook/nbextensions.py", line 283, in uninstall_nbextension
    shutil.rmtree(full_dest)
  File "/home/cs/anaconda3/lib/python3.5/shutil.py", line 474, in rmtree
    _rmtree_safe_fd(fd, path, onerror)
  File "/home/cs/anaconda3/lib/python3.5/shutil.py", line 412, in _rmtree_safe_fd
    _rmtree_safe_fd(dirfd, fullname, onerror)
  File "/home/cs/anaconda3/lib/python3.5/shutil.py", line 432, in _rmtree_safe_fd
    onerror(os.unlink, fullname, sys.exc_info())
  File "/home/cs/anaconda3/lib/python3.5/shutil.py", line 430, in _rmtree_safe_fd
    os.unlink(name, dir_fd=topfd)
PermissionError: [Errno 13] Permission denied: 'nbpresent.min.css'

My user account is the owner of the corresponding packages and thus has read and write permissions. Can you help me out here?

It does not seem you have writing permission on home/cs/anaconda3/etc, am I right?
If you can't change that thing, I guess you will have to perform a "manual" installation and write the config files in the "user" space.
Pinging @bollwyvl, so he can give you his advice as well...

@methodds Yep, hooray permissions!
Perhaps some part of your install was run by a different user? This could potentially be problematic!
ls -lathr /home/cs/anaconda3

If you're seeing anything other than cs as the owner, then you probably just want to:
chown -R cs /home/cs/anaconda3

... unless this is a shared install between cs and other users...
Resorting to a "manual" install is a bit nasty, and would likely run into the same issues as the conda-managed approaches... and is fraught with more peril (though your jupyter should always still work). But anyhoo:
jupyter nbextension install nbpresent --user --py
jupyter nbextension enable nbpresent --user --py
jupyter serverextension enable nbpresent --user --py

Of note, though, is that doing this may will mess with your other extensions, as presently serverextensions from your conda env will be clobbered by your user dir config... but not your nbextensions, which can lead to some "interesting" effects.
Let us know how we can be of additional assistance!


feat: persist route query to local

Provide a way for the shell script running in the docker container to get the url query.

Thanks for the contribution! Could you expound on the use case?

Thank you for your reply.
The use case is: the URL of our web ide will carry some dynamic parameters, such as user, project, cluster, etc. These parameters need to be obtained in the debugger and terminal.

Interesting, thanks for the additional details. We already have a file that contains the last visited path in ~/.local/share/code-server/coder.json (just a bit further down in getRoot). Would it work for your use case to add the query variables to the lastVisited object in that file instead?

Of course, it will help a lot！
------------------ Original ------------------
From: Asher<EMAIL_ADDRESS>Date: Wed,Jul 29,2020 11:41 PM
To: cdr/code-server<EMAIL_ADDRESS>Cc: fxxjdedd<EMAIL_ADDRESS>Author<EMAIL_ADDRESS>Subject: Re: [cdr/code-server] feat: persist route query to local (#1920)
Interesting, thanks for the additional details. We already have a file that contains the last visited path in ~/.local/share/code-server/coder.json (just a bit further down in getRoot). Would it work for your use case to add the query variables to the lastVisited object in that file instead?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or unsubscribe.

Awesome, let's go that route then.

@code-asher
I made some changes and it works fine locally.

emmm, I have some different opinions:
Although await is clearer, but it will blocks all the code below, but promise.then will not.
On the other hand, if they are written together, the query will be updated using extends, so that when the query becomes empty, the data in the settings will not be updated correctly
------------------ Original ------------------
From: Asher<EMAIL_ADDRESS>Date: Fri,Jul 31,2020 0:16 AM
To: cdr/code-server<EMAIL_ADDRESS>Cc: fxxjdedd<EMAIL_ADDRESS>Author<EMAIL_ADDRESS>Subject: Re: [cdr/code-server] feat: persist route query to local (#1920)
@code-asher requested changes on this pull request.
In src/node/app/vscode.ts:
>      if (startPath) { -      settings.write({ -        lastVisited: startPath, -      }) +      promise = settings.write({ lastVisited: startPath })
Ah oops, this is a bug on my part because I forgot to await the promise. I think it might be a bit cleaner to use await.
We can also update both values at the same time since the default value of startPath is the old value that was in the settings.
In src/node/settings.ts:
> @@ -55,6 +58,7 @@ export interface CoderSettings extends UpdateSettings {      url: string      workspace: boolean    } +  query: Route["query"]
I didn't know you could do this. Very cool!
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or unsubscribe.

That's fair, let's leave out the await.
We can pass true when updating both to use the shallow update. That's actually preferable anyway because the lastVisited object should be replaced entirely.

In fact I'm thinking about removing extends entirely because I'm not sure we even need a recursive merge.

cool, let‘s have a try!
------------------ Original ------------------
From: Asher<EMAIL_ADDRESS>Date: Fri,Jul 31,2020 0:42 AM
To: cdr/code-server<EMAIL_ADDRESS>Cc: fxxjdedd<EMAIL_ADDRESS>Author<EMAIL_ADDRESS>Subject: Re: [cdr/code-server] feat: persist route query to local (#1920)
In fact I'm thinking about removing extends entirely because I'm not sure we even need a recursive merge.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or unsubscribe.


Search SDK: Introducing internal IDocumentsProxyOperations

AutoRest does not support the advanced features we need for a good data plane client, like C# generics. Up until now we've worked around this by hand-writing most of the methods of IDocumentsOperations. However, this must change over time if we're to easily port our SDK to other languages.
The approach we will take starting with this change is to wrap AutoRest-generated methods wherever possible. The generated methods will go in a new interface, IDocumentsProxyOperations, which we force to be internal via the Fix-GeneratedCode PowerShell script. Our public methods will be hand-written wrappers that still live in IDocumentsOperations.
In this change we just establish the basic pattern with the Count method, which previously had the wrong return type (long? instead of long) due to AutoRest's lack of support for nullable type semantics.
FYI @chaosrealm @seansaleh

Added a comment about variable naming, otherwise LGTM


feat: Fixing FP on plugins page

Plugin descriptions contains lots of data (like changelogs, error messages and so on) that triggers our response body rules.

@azurit LGTM, but do you have any example payloads that you can add to the tests file?

@EsadCetiner I have an example data but not sure if it's suitable for a test for rule 953100 as it contains PHP error message (which is supposed to be blocked). It was part of the chanelog:
Fixed: Call to a member function get_meta() on null error on WooCommerce order received page (thanks [Dekadinious](https://github.com/Dekadinious))
Also, i'm not sure about rule 951240 which triggers on CRS 3 but does NOT trigger on CRS 4. Example data:
warnings
\x0a
=1.9=
\x0a* [Added] Donation link because I’m poor
\x0a* [Removed] errors and deprecating warnings
\x0a
=1.8.1=
\x0a* [Updated] Renamed function from ‚my_profile_update‘ to ‚apg_profile_update‘
I would include it in the exclusion rule with a comment that it is not a case anymore on CRS 4 and can be removed after we drop support for CRS 3. What do you think?

@azurit I don't see a reason why you shouldn't, it's legitimete data that's being wrongfully blocked. I'd add a test for 951240 as well even if the false positive doesn't exist with CRSv4. @theseion and I have been thinking of rewriting false positive tests for rule exclusion plugins to check if no rules are being triggered against a set of payloads known to cause false positives. The idea came from reviewing a PR but I haven't explored the idea just yet.


Ensure HubConnection._connectionState "Represents all the transient state about a connection"

We should also ensure all references to HubConnection._connectionState are safe, and see if that means taking the connection lock in more cases.
https://github.com/aspnet/AspNetCore/blob/ee5d6728879a71eb4b2b16cd6786d28711815563/src/SignalR/clients/csharp/Client.Core/src/HubConnection.cs#L1232

We'll try to improve this gradually over time.


docs: Remove incorrect configuration advice for native routing

The enable-endpoint-routes option actually causes routing to fall
back to legacy mode, so this advice is incorrect.
Signed-off-by: Calum MacRae<EMAIL_ADDRESS>

I fixed up the commit message, merging.


[DUPLICATE] Configure Github Actions to run unit tests on every PR

As a developer
I need to know that any PR does not cause any regressions
So that I can gain confidence in any code being merged to master
Details and Assumptions

A unit test suite exists that can be run using green
A .github/workflows/ci.yml must be created

Acceptance Criteria
Given the Shopcarts codebase
When a PR is made to the master branch
Then GitHub actions run the unit test suite and report the results in the PR

This is completed by https://github.com/CSCI-GA-2820-FA23-003/shopcarts/issues/18


(#git627) Chocolatey use splatting

That seems to do the trick! Thanks, very elegant.
Are you OK for me to merge this, or does the draft status mean you've got something else up your sleeve?

That said, it did log
Installing 64-bit SyncTrayzor...
SyncTrayzor has been installed.
ERROR: Cannot bind argument to parameter 'Path' because it is null.
  synctrayzor can be automatically uninstalled.
Environment Vars (like PATH) have changed. Close/reopen your shell to
 see the changes (or in powershell/cmd.exe just type `refreshenv`).
The install of synctrayzor was NOT successful

The full log file says:
2021-03-13 19:06:07,012 19156 [DEBUG] - Running 'ChocolateyScriptRunner' for synctrayzor v<IP_ADDRESS>0 with packageScript 'C:\ProgramData\chocolatey\lib\synctrayzor\tools\chocolateyinstall.ps1', packageFolder:'C:\ProgramData\chocolatey\lib\synctrayzor', installArguments: '', packageParameters: '',
2021-03-13 19:06:07,021 19156 [DEBUG] - Running 'C:\ProgramData\chocolatey\lib\synctrayzor\tools\chocolateyinstall.ps1'
2021-03-13 19:06:07,101 19156 [DEBUG] - Running Install-ChocolateyInstallPackage -silentArgs '/VERYSILENT /SUPPRESSMSGBOXES /NORESTART /SP- /SkipDotNetInstall' -file 'C:\ProgramData\chocolatey\lib\synctrayzor\tools\SyncTrayzorSetup-x86.exe' -file64 'C:\ProgramData\chocolatey\lib\synctrayzor\tools\SyncTrayzorSetup-x64.exe' -fileType 'exe' -validExitCodes '0' -packageName 'SyncTrayzor'
2021-03-13 19:06:07,112 19156 [DEBUG] - Running Get-ProcessorBits -compare '32'
2021-03-13 19:06:07,145 19156 [INFO ] - Installing 64-bit SyncTrayzor...
2021-03-13 19:06:07,239 19156 [DEBUG] - Running Start-ChocolateyProcessAsAdmin -validExitCodes '0' -workingDirectory 'C:\ProgramData\chocolatey\lib\synctrayzor\tools' -statements '/VERYSILENT /SUPPRESSMSGBOXES /NORESTART /SP- /SkipDotNetInstall ' -exeToRun 'C:\ProgramData\chocolatey\lib\synctrayzor\tools\SyncTrayzorSetup-x64.exe'
2021-03-13 19:06:07,242 19156 [DEBUG] - Unable to use current location for Working Directory. Using Cache Location instead.
2021-03-13 19:06:07,269 19156 [DEBUG] - Test-ProcessAdminRights: returning True
2021-03-13 19:06:07,281 19156 [DEBUG] - Elevating permissions and running ["C:\ProgramData\chocolatey\lib\synctrayzor\tools\SyncTrayzorSetup-x64.exe" /VERYSILENT /SUPPRESSMSGBOXES /NORESTART /SP- /SkipDotNetInstall ]. This may take a while, depending on the statements.
2021-03-13 19:06:24,609 19156 [DEBUG] - Command ["C:\ProgramData\chocolatey\lib\synctrayzor\tools\SyncTrayzorSetup-x64.exe" /VERYSILENT /SUPPRESSMSGBOXES /NORESTART /SP- /SkipDotNetInstall ] exited with '0'.
2021-03-13 19:06:24,623 19156 [DEBUG] - Finishing 'Start-ChocolateyProcessAsAdmin'
2021-03-13 19:06:24,626 19156 [INFO ] - SyncTrayzor has been installed.
2021-03-13 19:06:24,645 19156 [ERROR] - ERROR: Cannot bind argument to parameter 'Path' because it is null.
2021-03-13 19:06:24,656 19156 [DEBUG] - Built-in PowerShell host called with ['[System.Threading.Thread]::CurrentThread.CurrentCulture = '';[System.Threading.Thread]::CurrentThread.CurrentUICulture = ''; & import-module -name 'C:\ProgramData\chocolatey\helpers\chocolateyInstaller.psm1'; & 'C:\ProgramData\chocolatey\helpers\chocolateyScriptRunner.ps1' -packageScript 'C:\ProgramData\chocolatey\lib\synctrayzor\tools\chocolateyinstall.ps1' -installArguments '' -packageParameters '''] exited with '-1'.
2021-03-13 19:06:24,660 19156 [DEBUG] - Calling command ['"C:\WINDOWS\System32\shutdown.exe" /a']
2021-03-13 19:06:24,716 19156 [DEBUG] - Command ['"C:\WINDOWS\System32\shutdown.exe" /a'] exited with '1116'
2021-03-13 19:06:24,886 19156 [INFO ] -   synctrayzor can be automatically uninstalled.
2021-03-13 19:06:24,896 19156 [WARN ] - Environment Vars (like PATH) have changed. Close/reopen your shell to
 see the changes (or in powershell/cmd.exe just type `refreshenv`).

And that is mainly why I had it draft, I wrote and committed before tested it.
I just force pushed this, it should be working now.

I'm also thinking of perhaps uninstalling the 32 bit version before installing the new 64 bit version?
So when 1.1.29 comes out, 1.1.28 32 bit will be uninstalled? Or is the older 32 bit version just going to be ignored? Or perhaps the inno installer would take care of that?
Just spitballing ideas at the moment.

As far as Inno Setup and Windows is concerned, the 64-bit and 32-bit applications are entirely independent. They have separate GUIDs, different names, and live in different places.
I'm not sure how that best ties into chocolatey... If that gets confused by the next upgrade and installs both side-by-side (or if it's already gotten confused since the last upgrade), that's a problem I think.

If that gets confused by the next upgrade and installs both side-by-side (or if it's already gotten confused since the last upgrade), that's a problem I think.

Next upgrade (assuming something like this is merged), it should install the 64 bit version, but the 32 bit 1.1.28 would still hang around I think.
I've added another commit, take a look, I think it should fix it.

I can't spot any issues with that (the messages could do with a tweak, but that's minor), but the whole approach makes me a bit nervous. Would it perhaps be better to stick with x86 if they previously had x86 installed? Realistically there's no major difference between the two (the x86 version will use slightly less memory), and if they were using 1.1.28 x86 just fine, I'm nervous about forcing them onto x64.

Well, on 64-bit systems the Chocolatey package has been in previous version installing the 64 version no matter what is currently installed. The only exception is if someone passed the --forcex86 switch to choco.
So, the only people this should affect:

People who mistakenly got the 32 bit version of 1.1.28
People who have 64 bit 1.1.24 (or whatever) from Chocolatey, and a non-chocolatey (presumably older) 32 bit version as well.

Fair, good points.
I'm still a bit nervous -- with this many users, every decision seems to have side-effects which affect at least a few vocal users -- but I can't think of anything better.

with this many users, every decision seems to have side-effects which affect at least a few vocal users

I'd say it has to do more with my lack of testing of #550, as both this and #598 were caused by stuff I forgot/missed there.

So for testing here is what I have done:

Upgrading from 1.1.28 works on windows 10 and server 2012 (chocolatey test env)
Fresh install works on windows 10 and server 2012
Upgrading from 1.1.24 works on server 2012
Fresh install with --forcex86 works on server 2012
Upgrading from 1.1.24 with --forcex86 on both works on server 2012

A couple of things I realised overnight:

Uninstalling SyncTrayzor attempts to remove all of its config. It's an attempt because it can only affect the current user's files, but that's probably the majority case.
Switching from x86 to x64 will also delete the user's auto-start preference.
We mess up the version and architecture of the Syncthin binary we use.
Uninstallation fails if SyncTrayzor is running

To expand point 3 a bit: SyncTrayzor lets Syncthing auto-upgrade, and it does this by putting a copy somewhere user-writable, in AppData. This means that the version of Syncthing being used by a user can be different to a version included with SyncTrayzor, and that each user on a machine can end up with a different version of Syncthing. Syncthing does not like being downgraded, so we need to be very careful to retain the user's version of Syncthing across upgrades. With this PR, either:

We try to delete the user's version of Syncthing on uninstall and succeed (see point 1 above). Now we risk downgrading it.
We fail to delete the user's version of Syncthing on uninstall, and now they're left with an x86 Syncthing binary, running under an x64 SyncTrayzor installation. This isn't a problem per se, but it's confusing.

To expand point 4: Inno Setup provides support for gracefully shutting down and restarting the application during installation, which we use during upgrades to make sure that SyncTrayzor isn't running. It doesn't provide the same during uninstallation, which means that it fails to uninstall everything if SyncTrayzor is running. I'm guessing your tests above didn't test this case.
All of that leads me to 1 conclusion: we should detect whether the user has the x86 version of SyncTrayzor installed, and if so upgrade them to the x86 version of SyncTrayzor. If the user wants to switch from x86 to x64, they'll have to uninstall and reinstall, but at least they're prepared for the oddities which might happen (like config being deleted).
I think this also makes sense for the case where a user has the non-chocolatey x86 version installed, and then does choco install SyncTrayzor: we'll upgrade them, rather than installing the two side-by-side.
This won't require an installer update, so we can push out a new chocolatey version soon (although I don't think we can get AppVeyor to create it, annoyingly).

All of that leads me to one conclusion: we should detect whether the user has the x86 version of SyncTrayzor installed, and if so upgrade them to the x86 version of SyncTrayzor.

What should happen if both a x64 and x86 version are installed?

I think we'd have to fall back on the normal Chocolatey logic of "x86 if the platform is x86 of they pass --forcex86, and x64 otherwise. We have no way of knowing which one was originally installed by Chocolatey.

I think we'd have to fall back on the normal Chocolatey logic of "x86 if the platform is x86 of they pass --forcex86, and x64 otherwise.

That sounds reasonable.
I updated the second commit, what do you think of this method for checking?

I think that's sensible. I'd probably have done something a bit simpler, but this way gives you the opportunity to do more logging, which isn't a bad thing. Thanks!
Is this ready to merge?

I think this is ready to merge.

Thanks! Merged as 181233c2ae33 (I had to rebase it onto develop, and merge it into develop)

Actually, I take that back: I undid the merge.
Is there any way to avoid Get-UninstallRegistryKey printing this out?

WARNING: No registry key found based on  'SyncTrayzor (x86)*'

It's a bit ugly and misleading.

You can assign the result to $null.
Like if (($null = Get-UninstallRegistryKey -SoftwareName 'SyncTrayzor (x86)*')) {

Hmm, that didn't seem to change whether it printed a warning

Interesting, it does not print that for me.

Do you know the x86 or x64 version of SyncTrayzor already installed (or neither)?

x64 is installed, but not x86

Same as me then. Weird. chocolatey version perhaps? Mine's 0.10.15

That is what I have as well.
Ah, it might be pulling the function from chocolatey-core.extension, which does not have that warning.

https://github.com/chocolatey-community/chocolatey-coreteampackages/blob/master/extensions/chocolatey-core.extension/extensions/Get-UninstallRegistryKey.ps1
vs
https://github.com/chocolatey/choco/blob/master/src/chocolatey.resources/helpers/functions/Get-UninstallRegistryKey.ps1
I pretty much universally have that extension installed, so that is why I didn't notice it.

Get-UninstallRegistry key could be replaced by
Test-Path "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{c9bab27b-d754-4b62-ad8c-3509e1cac15c}_is1"
and
Test-Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{c004dcef-b848-46a5-9c30-4dbf736396fa}_is1"
As in this case you are also in controll of where the registry uninstall information goes, so if it changes, you can change it here as well.

I ended up copying the implementation from chocolatey.resources, thanks for the tip!
Now there's the slightly odd issue that if the user has x86 and x64 installed side-by-side, the uninstall script complains that it's not going to uninstall anything, and then goes and uninstalls the x86 version anyway!
See the branch pr-628, since I don't have permission to push to your branch.

the uninstall script complains that it's not going to uninstall anything, and then goes and uninstalls the x86 version anyway!

That is not the uninstall script, that is the chocolatey automatic uninstaller:
https://docs.chocolatey.org/en-us/choco/commands/uninstall

Whatever it is, telling the user we're not touching anything and then uninstalling anyway is bad.
Are we better off getting rid of chocolateyuninstall.ps1 and relying in the auto uninstaller? I don't fully grasp how all the different parts work together, and finding introductory docs is quite hard

Are we better off getting rid of chocolateyuninstall.ps1 and relying in the auto uninstaller?

That might be for the best.
That way, it will only uninstall whatever it captured during the chocolateyInstall.ps1

Sounds good thanks. I'll try and get that in tomorrow.

Almost there... The problem now is that if you:

Have x64 installed
Install x86
Upgrade, so it upgrades x64
Uninstall, now it uninstalls x86, and further uninstalls fail because chocolatey no longer thinks you have it installed

Is there any way to ask Chocolatey which version it thinks is installed (i.e. which version the uninstaller is going to uninstall), which we can use as a tie-break if both x86 and x64 are installed?

(I've been through the docs and issues list with a fine-toothed comb and can't find anything, so we may just have to live with this, annoyingly. Chocolatey does have the information we need, in its .chocolatey\synctrayzor.x.y.z\.registry, but there doesn't seem to be any way of querying this.)

It is possible to skip the automatic uninstall by way of  a .skipAutoUninstall file included in the package, and only run the uninstall script.
I'm not sure that is in the docs.

Cool, I can't think of any way to improve the current situation, so I've merged and pushed the package. Let's see if it breaks anyone!
Thanks a lot for your help, as always!


Please merge revision #dc8166884805b672f7d665cfa218bf3c67c0bed4 into dev channel

@whesse @mit-mit @kasperl
Bill, please merge https://github.com/dart-lang/sdk/commit/dc8166884805b672f7d665cfa218bf3c67c0bed4
into dev channel for a dev 16.2 build. Thanks!

@vsmenon

This does not merge cleanly.  There are also no instructions in the README.md in pkg/dev_compiler/tool about how to regenerate the .js, .map, and .sum files.

Merged in 1.25.0-dev.16.3 .  -dev.16.2 was a failed build on windows due to a clang windows download error, fixed by a cherry-pick in -dev.16.3.


SwiftDate on Linux

I'm trying to compile SwiftDate on Linux using latest DEV snapshot of Swift, but I'm getting these issues:
/home/rbukovansky/Projects/SwiftDate/Sources/SwiftDate/DateInRegionFormatter.swift:252:93: error: contextual type 'CVarArg' cannot be used with array literal
                                let colloquial_date = try self.stringLocalized(identifier: "colloquial_now", arguments: [])
                                                                                ^~
/home/rbukovansky/Projects/SwiftDate/Sources/SwiftDate/DateInRegionFormatter.swift:261:92: error: contextual type 'CVarArg' cannot be used with array literal
                        let colloquial_date = try self.stringLocalized(identifier: "colloquial_now", arguments: [])
                                                                                ^~
/home/rbukovansky/Projects/SwiftDate/Sources/SwiftDate/DateInRegionFormatter.swift:284:28: error: use of unresolved identifier 'NSLocalizedString'
                let relative_localized = NSLocalizedString(id_relative,
                                         ^~~~~~~~~~~~~~~~~
/home/rbukovansky/Projects/SwiftDate/Sources/SwiftDate/DateInRegionFormatter.swift:315:20: error: use of unresolved identifier 'NSLocalizedString'
                        let localized = NSLocalizedString(identifier, tableName: "SwiftDate", bundle: bundle, value: "", comment: "")
                                        ^~~~~~~~~~~~~~~~~
/home/rbukovansky/Projects/SwiftDate/Sources/SwiftDate/DateInRegionFormatter.swift:333:23: error: use of unresolved identifier 'NSLocalizedString'
                var localized_str = NSLocalizedString(identifier, tableName: "SwiftDate", bundle: bundle, comment: "")
                                    ^~~~~~~~~~~~~~~~~
/home/rbukovansky/Projects/SwiftDate/Sources/SwiftDate/Extensions.swift:59:18: error: value of type 'TextCheckingResult' has no member 'rangeAt'
                        let msRange = match.rangeAt(1)
                                      ^~~~~ ~~~~~~~
Foundation.TextCheckingResult:9:14: note: did you mean 'range'?
    open var range: Foundation.NSRange { get }
             ^
Foundation.TextCheckingResult:10:15: note: did you mean 'range'?
    open func range(at idx: Int) -> Foundation.NSRange
              ^
/home/rbukovansky/Projects/SwiftDate/Sources/SwiftDate/Region.swift:98:21: error: type 'Locale' has no member 'autoupdatingCurrent'
                let loc = (auto ? Locale.autoupdatingCurrent : Locale.current)
                                  ^~~~~~ ~~~~~~~~~~~~~~~~~~~
/home/rbukovansky/Projects/SwiftDate/Sources/SwiftDate/LocaleName.swift:42:11: error: type 'Locale' has no member 'autoupdatingCurrent'
                        return Locale.autoupdatingCurrent
                               ^~~~~~ ~~~~~~~~~~~~~~~~~~~

One thing is for sure, on Linux there isn't NSLocalizedString() available as Swift for Linux doesn't know how to pack built code and resources together (yet!). Is there any solution that can replace NSLocalizedString()?
The rest, which I'm not sure about, is probably you should take a look. If not, I will take over and will create a PR where I try to resolve it. Thanks.

Dump here! Could be awesome to see this lib work on Linux

Looking at Swift foundation library I can see that calendar/locale traking was not implemented yet (see for example here).
BTW we can use current variant.
My only other concern is about localizable strings. As far I know there is not any support for bundles in linux (am I wrong?) so the only alternative I know is to use a classic folder with all variants and read from it based upon locale.
Any other suggestion?

@malcommac They are not (yet). That's one way how to do that, but I don't like it (GoLang is able to have binary with all resources on Linux), so I hope that Swift will be able to do that too.
I was thinking more about generating file with dictionaries with translations and some function that will replace NSLocalizedString.

Since 4.0.12 SwiftDate allows to load a custom localization .strings file in DateInRegionFormatter.
More on #380.
The next step will include conditional compiling for autoupdating Locale and Calendar and the replacement of NSLocalizableString call on Linux inside Localization.
I'll do it later the next week.

Any news on this. I read this on the main webpage and started implementing it, just to notice that it doesn't work
It works on iOS, macOS, watchOS, tvOS and virtually on any Swift compatible platform (yeah Linux too!).

Follow #568


Node-red flow example

Hi,
would it be possible for you to export your existing node-red flow? Or explain what I need to feed into your node. The existing explanation "msg.payload.ssid = Device SSID" and so on, does not work for me.
I use your Daikin cloud controller node with node red 6.0.4.
I'm able to GET the status of my three daikin devices with BRP069C4.
But I'm NOT able to SET something.
Main Use Case would be

On/Off
Heating/Cooling
Power Mode On/Off
Target Temp

I run Node red as addon of my Raspberrymatic called redmatic. Just in case this matters. I want to controll the AC from homematic
Thanks in advance!

Hi @andispammonyer this is how it look like for on off:
[{"id":"6df8ed305ff1d464","type":"inject","z":"261ed1a6cb4d6379","name":"","props":[{"p":"topic","vt":"str"},{"p":"payload"},{"p":"payload.ssid","v":"DaikinAP86971","vt":"str"},{"p":"payload.managementPoint","v":"climateControl","vt":"str"},{"p":"payload.dataPoint","v":"onOffMode","vt":"str"},{"p":"payload.value","v":"off","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"set","payload":"{}","payloadType":"json","x":170,"y":460,"wires":[["062808176aba3b76","bad8598fbd2a57cb"]]},{"id":"062808176aba3b76","type":"Daikin-Cloud-Controller","z":"261ed1a6cb4d6379","name":"","loglevel":"warn","tokensave":"0","timeout":"10000","retry":"3","x":470,"y":300,"wires":[["9ad9b4f3625ab0c0"]]},{"id":"bad8598fbd2a57cb","type":"debug","z":"261ed1a6cb4d6379","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":460,"y":240,"wires":[]},{"id":"9ad9b4f3625ab0c0","type":"debug","z":"261ed1a6cb4d6379","name":"","active":true,"tosidebar":true,"console":false,"tostatus":true,"complete":"true","targetType":"full","statusVal":"payload","statusType":"auto","x":710,"y":200,"wires":[]}]

It works!!! Perfect. Many thanks
The second line with payload {} was missing on my side


Use the same data only container as sidekick with service containers

Moved feature from request https://github.com/rancher/rancher/issues/2025#issuecomment-143423616 to a new issue.

A service with one data container an two app containers (apache, sshd) works, but they not share the same data container!
To get it work the data only container have to be the primary service and sshd / apache added as sidekick, but apache and sshd should be reachable by loadbalancer! As sidekicks that wouldn't work...
Is there a way to get it work with data only container as sidekick of sshd / apache? Another way could be convoy (share a convoy volume), but convoy volume plugin isn't added to RancherOS yet.

Would be great to have service containers with loadbalancer which use the same data only container / sidekick as storage.
LB -> apache container | sshd container -> shared data only container as sidekick.

If a (data only) container is used with --volumes-from as sidekick each container should share the same volumes instead of create independent data only containers for each.
Would be important for me.

Any plans to make shared data only containers possible via sidekicks in the near future?
Would need it for testung in a dev env.

+1 - needing to make the data container the primary definitely gets in the way of setting up the LBs to the actual services.

Any progress with that feature request?
There should be two ways to build my service.

shared data only container
As above that isn't possible with to load balanced containers inside the service (ssh and http/s).
share convoy volumes (but convoy with vfs backend to use local directory!)
Here is a RancherOS convoy plugin (system-docker container?) needed. The catalog convoy-nfs uses vfs backend but requires nfs server... But a RancherOS system-docker service would be great and I miss such a RancherOS feature in the past.

+1 Trying to make a simple web server, and I have the current configuration: Nginx container, php-fpm contianer, both with volumes from an "app" container which is simply the data for the app (html pages, etc). I have an external Load Balancer that is directed towards the Nginx container, which links to the php container which links to the mysql container. If I use sidekicks I need Nginx to be the main container, but then I can't link the php container to mysql.

+1 I have a data only container with 3 sidekicks running tomcat using configuration files located inside that data container. There is currently no way for me to use the builtin load balancer or create a nginx reverse proxy and point to those sidekicks using links

@jschilperoord could a named volume solve this? Ie, instead of using volumes-from, put the data in named volumes and always reference the volume by name in your tomcat container like:
tomcat:
  volumes:
  - config:/etc/tomcat/config

If I'm oversimplifying let me know.

@cjellick Thanks for your response 👍  Would using named volumes make the same volume available to all containers using it. In my case 3 tomcat processes using some configuration from a shared volume ?

@jschilperoord yes, all containers on the same host would use the same exact volume and have access to the same data.

@cjellick This works. However what volumes-from offered me is the assurance my tomcat containers where using the volumes of that container. Is it possible to change the config: part to something unique for the stack being launched ? I don't want another tomcat service using the same config somehow

@jschilperoord you mean something that is dynamically generated each time you deploy the stack? If that's what you mean, then no, not at this time. You'd have to change the value in the yaml file.

@cjellick
Is a additional file with variables possible? So we could use the same docker-compose file with different env vraiable files.

So I was a bit mistake. rancher-compose does support environment variable interpolation: http://docs.rancher.com/rancher/rancher-compose/environment-interpolation/
This may or may not be exactly what  you're looking for, but its at least an option.

@deniseschannon is there any reason this item has low priority? Are those use-cases covered by Convoy?
In my case, i am coming from 2 angles:
a) i want to horizontally scale the-app service using the lb service, but i need to share the data-storage. I cannot use sidekicks, since they are scaled with the numbers of apps and data would be split. If i use a named volume, i can only deploy this stack once on a host. Having a production and a preproduction stack is very common but would be blocked by this
b) I want to keep data persistent accross stack-upgrades, which right now, as far as i undestand, forces me into using named-volumes. This though forces me to only deploy a stack once on a server, which is a huge issue, since i rather have powerful servers with a lot of containers. Sure, there is the option using KVM + docker to split this up, but thats feels like a huge overhead / overcomplicating things
I would be glad to know why
a) this issue has a low prio - are there alternatives / workarrounds ?
b) do other people not run into this case because they use named-volumes + a host per stack?
c) is a "host per stack" what you guys design for ( sounds not reasonable )
Thanks!

With the release of Rancher 2.0, development on v1.6 is only limited to critical bug fixes and security patches.


Build Mumble iphone OS error

Hello,
I did follow guide from https://github.com/mumble-voip/mumble-iphoneos.
Build when I build, I met these errors, can you tell me what should I do, please
http://gyazo.com/fc8fc916d3823490e78b63d8f3fc5586
Thanks.

Same issues. On Xcode 6.4 SDK: iOS 8.4

Mumble for iOS includes (vendored) an old-ish version of PLCrashReporter.
That old version only builds for 32-bit ARM. Newer Xcodes will build for arm and arm64.
I plan to remove the PLCrashReporter code now that Apple has better crash reporting available built-in. But you can also do that in your own copy of the code before I get a chance!

I just started with iOS but I (sort of) get the idea. I'll do my best, thanks for the help and your work!


[Urgent] How to associate segmentations with object list?

It is not clear to me how to associate segmentations in output.object_mask_list with actual objects from my scenegraph JSON or with objects inside output.object_list.
a) Could you let me know how to find out which object a segmentation belongs to?
b) I noticed that when I use a scenegraph I have generated myself like the one attached (rename to .json - Github forced me to name it .txt) my output.object_list will be empty. Why is that?
video_00001.txt
Thank you in advance.

For A, each MCS_Object has a color property that matches the color used in the output's object_mask_list.

Thank you very much. Oh, I tried that, but the values I looked at were not in the MCS_Object colors - seems like the values I tried were the walls then - stupid me :)
Still leaves question b, though - why is my object list empty for my own scene files. Because with that I still cannot associate them.

Essentially, my file just has a generic header and then a few objects with 50 entries in shows for the individual key frames.
Like this:
{"ceilingMaterial": "AI2-THOR/Materials/Walls/DrywallOrange",
"floorMaterial": "AI2-THOR/Materials/Walls/RedDrywall",
"wallMaterial": "AI2-THOR/Materials/Walls/DrywallBeige",
"performerStart": {"position": {"z": -4}},
"goal": {"action_list": [["Pass"], ["Pass"], ["Pass"], ["Pass"], ["Pass"], ["Pass"], ["Pass"], ["Pass"], ["Pass"], ["Pass"], ["Pass"], ["Pass"], ["Pass"], ["Pass"], ["Pass"], ["Pass"], ["Pass"], ["Pass"], ["Pass"], ["Pass"], ["Pass"], ["Pass"], ["Pass"], ["Pass"], ["Pass"], ["Pass"], ["Pass"], ["Pass"], ["Pass"], ["Pass"], ["Pass"], ["Pass"], ["Pass"], ["Pass"], ["Pass"], ["Pass"], ["Pass"], ["Pass"], ["Pass"], ["Pass"], ["Pass"], ["Pass"], ["Pass"], ["Pass"], ["Pass"], ["Pass"], ["Pass"], ["Pass"], ["Pass"], ["Pass"]]},
"objects": [
{"id": "block1", "type": "cube", "mass": 1.54, "materialFile": "AI2-THOR/Materials/Wood/LightWoodCounters4", "shows": [...]}
...
]}

No apparent reason to me why the object_list should be empty with this.

I think I fixed (b) - it seems that when a materialFile is defined you also expect salientMaterials and(?) pickupable. If I define all three of them I see an object_list, but my objects now fly wildly through the scene. By setting kinematic as well, we get back to sane scenes. Thanks so much for your great help - now adding the association and then I can close this issue.

Hey Falk, sorry for the delay, I was investigating your issue B and got pulled into a meeting.  I'm glad you found a solution to it.  To add a little more background: an object only appears in the list if you set a specific config attribute on it like "physics": true, "moveable": true, or "pickupable": true.  As you already saw, that will enable physics and collision detection on the object, so it will fly around wildly if it interpenetrates another object unless you also set "kinematic": true on the object.  We'll try to make this configuration procedure a little easier and better documented in the future.  Sorry again for the wait and that you had to be our guinea pig.


502 Error on Login

Hello.
I've just set up a new envirement on an empty debian server. I did everything step by step. I've just changed the ports to 9000 (for gitlab) and 9001 (for gitlab-ci)
Now it's not possible to login to gitlab-ci. I changed the login server to myserver:9000 but as soon as i login i get a 502 Bad Gateway exception.
Gitlab is reachable and i can login there.
The unicorn ruby server addresses are 8080 for gitlab and 8081 for gitlab-ci. I've also tried to change the login to 8080 but no change.
Here's the gitlab-ci production.log:
Completed 200 OK in 42ms (Views: 38.5ms | ActiveRecord: 0.7ms)
Started POST "/user_sessions" for <IP_ADDRESS> at 2014-08-15 15:42:45 +0200
Processing by UserSessionsController#create as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"pu1b79eF1Nl3BV4y3KXCBwvKN/Dbk/LRfBzMzvg50PA="<EMAIL_ADDRESS>"password"=>"[FILTERED]", "url"=>"http://api.myserver.at:8080/"}, "commit"=>"Sign in"}
Started POST "/user_sessions" for <IP_ADDRESS> at 2014-08-15 15:43:31 +0200
Processing by UserSessionsController#create as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"pu1b79eF1Nl3BV4y3KXCBwvKN/Dbk/LRfBzMzvg50PA="<EMAIL_ADDRESS>"password"=>"[FILTERED]", "url"=>"http://api.myserver.at:8080/"}, "commit"=>"Sign in"}
Started GET "/user_sessions/new" for <IP_ADDRESS> at 2014-08-15 15:46:08 +0200
Processing by UserSessionsController#new as HTML
  Rendered user_sessions/_form.html.haml (11.1ms)
  Rendered user_sessions/new.html.haml within layouts/application (14.2ms)
  Rendered layouts/_head.html.haml (36.7ms)
  Rendered layouts/_nav.html.haml (6.2ms)
  Rendered layouts/_info.html.haml (2.3ms)
Completed 200 OK in 97ms (Views: 67.2ms | ActiveRecord: 9.5ms)
Started GET "/assets/application-69a0c2e97db1081a330c72c127214023.css" for <IP_ADDRESS> at 2014-08-15 15:46:08 +0200
Started GET "/assets/application-114e1f19f976f1fbef7be4d5b2ea4ac4.js" for <IP_ADDRESS> at 2014-08-15 15:46:08 +0200
Started POST "/user_sessions" for <IP_ADDRESS> at 2014-08-15 15:46:11 +0200
Processing by UserSessionsController#create as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"pu1b79eF1Nl3BV4y3KXCBwvKN/Dbk/LRfBzMzvg50PA=", "user_session"=>{"email"=>"root", "password"=>"[FILTERED]", "url"=>"http://api.myserver.at:8080/"}, "commit"=>"Sign in"}
Started POST "/user_sessions" for <IP_ADDRESS> at 2014-08-15 15:46:49 +0200
Processing by UserSessionsController#create as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"pu1b79eF1Nl3BV4y3KXCBwvKN/Dbk/LRfBzMzvg50PA=", "user_session"=>{"email"=>"root", "password"=>"[FILTERED]", "url"=>"http://api.myserver.at:8081/"}, "commit"=>"Sign in"}
Started POST "/user_sessions" for <IP_ADDRESS> at 2014-08-15 15:47:27 +0200
Processing by UserSessionsController#create as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"pu1b79eF1Nl3BV4y3KXCBwvKN/Dbk/LRfBzMzvg50PA=", "user_session"=>{"email"=>"root", "password"=>"[FILTERED]", "url"=>"http://api.myserver.at:9000/"}, "commit"=>"Sign in"}

I've already set it up on a different server and had no such issues. Any ideas?
Thanks

I had a similar issue. I was using EE and CI on the same machine over https and getting back a 502 with unicorn showing a timeout error. I went onto the machine and noticed that the domain entries were not resolving internally (the firewall is a whitelist and the server wasn't on it). I modded /etc/hosts to include:
<IP_ADDRESS> ci.domain.com
<IP_ADDRESS> git.domain.com
and off it went. I also had a random https bug, but the magically solved itself, so I have nothing to offer on that issue other than if you set a redirect url from the admin interface -- reinstall and don't do it again.

I had a similar issue. I was using EE and CI on the same machine over https and getting back a 502 with unicorn showing a timeout error. I went onto the machine and noticed that the domain entries were not resolving internally (the firewall is a whitelist and the server wasn't on it). I modded /etc/hosts to include:
<IP_ADDRESS> ci.domain.com
<IP_ADDRESS> git.domain.com
and off it went. I also had a random https bug, but the magically solved itself, so I have nothing to offer on that issue other than if you set a redirect url from the admin interface -- reinstall and don't do it again.


轮播图  auto-play hoverToPause设置false失效  trigger设置hover失效

[ ] I'm sure this does not appear in the issue list of the repository

Basic Info

Package Name And Version<EMAIL_ADDRESS>System: windows10
Browser: chrome98.0.4758.102
Reproduction Link: https://codesandbox.io/s/bold-fire-9m74pb?file=/src/App.vue

What is expected?
修复vue版本轮播图效果

animation设置card时无法点击图片进行切换


RFC: access to graphcache directly

Summary
Expose the cache so that operations like (read|write)Fragment and (read|write)Query can be accessed globally
Proposed Solution
Don't have one
Requirements
The fact that such methods are NOT available except in a resolver context, should be stated in the docs
because the examples provided are UTTERLY CONFUSING. (please excuse my frustration)
import {gql} ....
cache.readFragment(...)

What does that mean??? Can I use the cache? ...because it seems I can't, though the example seems to point me in a direction where it might be possible???...
After searching for about 2 hrs through the docs with no luck, I came across this question
https://github.com/FormidableLabs/urql/issues/829
From what I understand, there is no plan for this to be implemented (though in my opinion this is a KEY * 1000 feature)
I fail to understand from the explanations why this is so problematic.
The cache is something where urql writes/reads under-the-hood.
Why is it available only in a resolver context, and why would it be problematic to expose it ???
I really hate it when coming across something that I really like, but is missing a key feature which makes it impossible for me to use.
As for a use case (which is also very wide), imagine a modular app, where modules are loaded based on some weird on-demand logic.
The modules have data dependencies of their own, and may need resolvers of their own, which you can't write initially because unless you actually get to use that module, it's basically dead code
Even if modules can "inject" their own resolvers at runtime (which I also haven't found a way to do... yet), certain on-demand functionality may have to modify (i.e. partially) an existing dataset. How would one do that, without having to go through a query or a mutation resolver... especially if one cannot be added to the existing graphCache. Also a resolver context imposes certain limits, like the inability to pass custom arguments.
Apollo, Relay... probably others, have this feature.

Hey,
Sorry for the docs issue, feel free to shoot a PR :sweat_smile: also a proposed solution is more than welcome :eyes:
As for the issue at hand, libraries like Apollo/Relay won't expose their internals to you either.
As in your linked issue, we designed graphcache around the concept of it being a normalized entity cache representation of a server-side source of truth. Once you start contradicting that source of truth, it becomes increasingly difficult to have confidence in the types of guarantees demanded by modern day data applications, including those that demand progressive enhancement (e.g. offline support, incremental delivery via code-splitting, etc).
Code-splitting, well that can be done with an object I guess. You mutate freshly loaded modules' updaters on the object and well it's modular.
export let updates = { current: {} };
cacheExchange({ updates: updates.current })

When you import a module now you can deep-merge on that. To a point of "the inability to pass custom arguments." I wonder what these are needed for, what additional argument is used on the FE that the BE doesn't need? You can always add additional variables to your operation.

I wouldn't call this a key feature and that's something we've disputed in several issues 😄 Rather, it's a key feature that the cache isn' arbitrarily modifiable.
Either way though, I'm closing this. it's fine if you'd like to ask questions, even if you'd like to politely voice some frustration, so we can clarify some API ideas of ours.
But it's not ok to abuse an issue template and subject us to a rant without any clear question even — just ranty assertions.

I would like to apologize (again), if it seemed that I manifested uhm... something else other than my own frustration.
As for the fact that this shouldn't be/isn't a key feature, I strongly disagree. Furthermore... the issue is not that it's missing, just that it's "cloaked?"
I admit I didn't dig deep intro the pattern that urql uses, and I'm not pointing fingers or anything, but why does Apollo and Relay have methods for partially or entirely mutating existing data (that are not conditioned by a specific context). I mean... urql has them too with the only difference that you have to be in a resolver context. Technically inside an urql resolver where we can access the cache, we could write/modify any dataset (I could be wrong) by doing cache.writeFragment(SomeContextUnrelatedDocument). If the cache is NOT arbitrarily modifiable?, ...I'm confused
Question:
While in a resolver context, we set a reference of the cache (once) on a global variable, and start calling methods like writeFragment on it from different parts of an app. What potential havoc is at bay by doing that?

That's pretty clearly elaborated in the issue you link though? As for why does Relay and Apollo have this and Graphcache doesn't? This isn't Relay/Apollo's cache for urql, but we're starting from first principles. And we can't find any single case where defining updates locally or modifying the normalised cache directly made sense and led to clean patterns.
Contrary to that, we found that having a centralised config and reactive updates / resolvers keeps it predictable.

What potential havoc is at bay by doing that?

If we expand this, imho it becomes quite clear 😅 What potential havoc is caused by arbitrary updates on a globally mutable store, especially when the updates would be defined for interactions outside of GraphQL, which otherwise is our data's source of truth at all times?

Got it... Not a feature, not on the roadmap. I'll be moving on. Thank you for your patience.

👋 Hey, we are a little bit in a pickle, we wanted to use urql, but direct access to GraphQL cache is a blocker for us because we wanted to use it only for read-only access to get all objects by one __typename. Currently, we have normalized stores with our custom flux implementation before redux etc. and we want to migrate from it. We wanted to use https://formidable.com/open-source/urql/docs/api/graphcache/#inspectfields to incrementally migrate our normalized stores to GraphQL cache, but with our 300k+ lines codebase, it's really difficult to do it. We were thinking that we are going to use writeData from https://formidable.com/open-source/urql/docs/api/graphcache/#storage-option to dispatch to our stores, but this feels a little bit gimmicky 😅. Are there any other alternatives? 🤔 Maybe creating a custom exchange to work with our stores, but we would like to have one source of truth for data. This direct read-only access would help a lot during migration periods in a large codebase.

@huv1k Feel free to open a discussion thread with more details, but there are some potential solutions depending on your requirements. The problem here is though that I can't infer what data your stores hold or to what extent you're looking for a middle ground solution. Either way, middleground / compromise solutions aren't going to be pretty or easy in any case.
That said, read only access to the normalised cache would be facilitated by the cache-only request policy to data that's already in the cache. But it'd only apply to what's already in Graphcache.
The persisted storage API is unlikely to help you here, as it's only intended to store and rehydrate the state of the normalised cache asynchronously. The latter occurs only once at startup and this isn't to interface with a secondary, synchronous store.
Resolvers together with cache-onoy queries do allow you to access data without sending new operations to your API, but either way, eventually a query will have to be dispatched.
I'm not quite sure how that'd relate to your current state management code as we basically are facilitating a "closed box"-style GraphQL client, i.e. the normalised cache is opaque to the outside world to stop cache modifications from occuring that would put it into "impossible" states based on what you'd usually get from cached or real GraphQL results.


Update working-with-the-npm-registry.md

Some grammatical corrections have been done.

Why: For some small grammatical corrections.
Closes:

What's being changed (if available, include any code snippets, screenshots, or gifs):

Check off the following:

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

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

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

@SumaiyaTarannumNoor Thank you for opening this PR! ✨ Per the automated message above, in order to review and merge PRs most efficiently, we require that all PRs grant maintainer edit access before we review them.
For information on how to do this, see the documentation.
Once you haven completed the above, I'll update the branch and get this merged once tests are passing 🍏

@SumaiyaTarannumNoor Thank you for opening this PR! ✨ Per the automated message above, in order to review and merge PRs most efficiently, we require that all PRs grant maintainer edit access before we review them.
For information on how to do this, see the documentation.
Once you have completed the above, I'll update the branch and get this merged once tests are passing 🍏

@nguyenalex836 Thanks for the review. I have updated it to "Allow edits by maintainers." Would you merge it now?

@SumaiyaTarannumNoor Thank you! It looks like two of our automated checks failed when I tried to update the branch.
To resolve one of them, can you please remove the blank lines you added in your PR (lines 149 and 150)?
I am working with our team on the second failed check, and will return when I have more information 💛

@nguyenalex836 I have removed line no. 149 and 150.

@SumaiyaTarannumNoor Thank you! I've just added this PR to our merge queue, and this should be merged shortly ✨ We appreciate your willingness to contribute to GitHub Docs!
If you're looking for another issue to work on, take a look at our help wanted section to find open issues 💛

@nguyenalex836 I really appreciate it. Thank you. 😊


GLIBC_2.33 not found

Old solution no longer works as Stability-sdk requires a newer version of grpcio than 1.44.0.

Uninstalling and reinstalling this version seems to work at the moment but we'll need a better solution at some point.

Information here: https://stackoverflow.com/questions/71054519/glibc-2-33-not-found-in-raspberry-pi-python
sudo pip3 uninstall grpcio
sudo pip3 uninstall grpcio-status
sudo pip3 install grpcio==1.44.0 --no-binary=grpcio
sudo pip3 install grpcio-tools==1.44.0 --no-binary=grpcio-tools

Adding the ability to load credentials from a plaintext file... Not the greatest option but we should have the option until we can ensure this issue doesn't pop up again.


Add a draft for docker module documentation

This an early draft for the documentation of the docker module.
@hlissner could you please check if this is going in the right direction?
What I did was gather all the relevant docs from the included packages.

Done!

No complaints from me, nice work! Are you ready to merge this?

Sure! Where should I help next?
On Sat, May 11, 2019, 02:47 Henrik Lissner<EMAIL_ADDRESS>wrote:

No complaints from me, nice work! Are you ready to merge this?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/hlissner/doom-emacs/pull/1377#issuecomment-491482120,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAGHPD4FSNIN3ZEG7TESG73PUZMYTANCNFSM4HJP7GMA
.

Have a look at #1166. If you're familiar with any particular language or tool, it'd be a huge help if you can contribute documentation for its module.
There are also some modules that need their READMEs updated to the new format:

:editor lisp
:ui hl-todo
:ui workspaces
:ui doom-dashboard
:ui doom
:ui tabbar
:ui neotree
:ui deft
:lang rest
:lang agda
:lang coq
:lang agda
:lang php
:lang solidity
:lang idris
:lang rust
:lang ess
:lang sh
:lang csharp
:lang nim
:lang perl
:lang ocaml


An issue is found in recurrence.

An issue is found in recurrence.
Location tokens, {,... , , ... , }. It is used when tokenizer decodes, where the LLM comes out with some offset coordinates relative to a point(p+x), but the demo you showed is absolute coordinates(x1,y1,x2,y2). I think you did some post-processing to the output text, e.g.
,<p0+off0>, <p1+off1>   to   ,, ,,

Please share code and model pls!


Lazy initializing of playwright

Is your feature request related to a problem? Please describe.
We have test cases that do not use a Browser keyword, however due to reasons, some of the keywords used import a resource file with Browser library. Thus Browser library is created and playwright is initialized.
The issue is that these particular test cases without using Browser require proxies, thus test case pauses, tries to connect to the playwright port and finally prints an error message. The test case itself passes, since no browser automation is used, anyway.
Describe the solution you'd like
As discussed with @Snooz82 the initialization of playwright on startup is only required on when using jsextensions. So a later initialization as default and immediate initialization for jsextensions may work.
@Snooz82 said making playwright a property would do the trick (whatever that means, i am merely a parrot 🦜 here)

@allcontributors please @Noordsestern for ideas
@Snooz82 what was idea behind this request?

@allcontributors please add @Noordsestern for ideas