Visualize/Draw google's quickdraw data

I wanted to try and use Google Quick Draw's stroke data to draw and visualize the drawing like the do on their preview page but could not get to use their stroke data since I think DrawSVG and QD uses slightly different format.
QuickDraw - https://github.com/googlecreativelab/quickdraw-dataset
Preview - https://quickdraw.withgoogle.com/data
Quick Draw provides strokes data for their drawing like this
Example strokes for a drawing
[[[251,255,242,232,237,249],[0,153,153,166,170,160]],[[253,253,248,236,232],[154,164,172,174,167]],[[2,9,32,45,59,69,66],[2,32,88,102,107,103,94]],[[0,6,11,31,58,79,86,86,69],[3,19,73,111,128,128,122,106,91]]]
From their page:
The format of the drawing array is as following:

[
  [  // First stroke
    [x0, x1, x2, x3, ...],
    [y0, y1, y2, y3, ...],
    [t0, t1, t2, t3, ...]
  ],
  [  // Second stroke
    [x0, x1, x2, x3, ...],
    [y0, y1, y2, y3, ...],
    [t0, t1, t2, t3, ...]
  ],
  ... // Additional strokes
]
Where x and y are the pixel coordinates, and t is the time in milliseconds since the first point. x and y are real-valued while t is an integer. The raw drawings can have vastly different bounding boxes and number of points due to the different devices used for display and input.

Would appreciate if you could help or point me in right direction to make use of DrawSVG to for QD

You can use an SVG path (drawSvg.Path) for each stroke of the drawing.  You need to loop through the stroke data to create the SVG paths.
Here is a quick demo:
import drawSvg as draw

drawing_data = [
    [[251,255,242,232,237,249],
      [0,153,153,166,170,160]],
     [[253,253,248,236,232],
      [154,164,172,174,167]],
     [[2,9,32,45,59,69,66],
      [2,32,88,102,107,103,94]],
     [[0,6,11,31,58,79,86,86,69],
      [3,19,73,111,128,128,122,106,91]]
]

min_x = min(x for stroke_data in drawing_data
              for x in stroke_data[0])
max_x = max(x for stroke_data in drawing_data
              for x in stroke_data[0])
min_y = min(y for stroke_data in drawing_data
              for y in stroke_data[1])
max_y = max(y for stroke_data in drawing_data
              for y in stroke_data[1])
d = draw.Drawing(max_x-min_x+10, max_y-min_y+10,
                 origin=(min_x-5, min_y-5))

for stroke_data in drawing_data:
    x_arr = stroke_data[0]
    y_arr = stroke_data[1]
    # Create a path for each drawing stroke
    path = draw.Path(stroke_width=3, stroke='black', fill='none')
    path.M(x_arr[0], y_arr[0])  # Start of path
    for x, y in zip(x_arr[1:], y_arr[1:]):
        path.L(x, y)  # Draw a line to the next point
    d.append(path)

#d.saveSvg('drawing.svg')
d  # View in Jupyter

Woot, works awesome.
Just small problem, images are inverted (I think its reading or drawing from bottom to top or in reverse), please see attached results.
Also, is it possible to record/create a animation or gif of the drawing process ? Similar to the preview on google's page where they show a animated gif of the drawing (process)

drawSvg uses a coordinate system with the origin in the bottom left and y increasing upward.  Just negate the y-value to flip it.
Animate is a new feature in drawSvg and it can currently only make animations with a fixed frame rate.  To make animations with the animation context manager:
with draw.animate_jupyter(delay=1/5) as anim:
# Or
#with draw.animate_video('drawing.gif', duration=1/5) as anim:
#with draw.animate_video('drawing.mp4', fps=5) as anim:
    # Create the drawing
    d = draw.Drawing(...)
    # ...
    anim.draw_frame(d)

For something like this, you can render each frame as you loop through the points:
import copy
import drawSvg as draw

drawing_data = [
    [[251,255,242,232,237,249],
      [0,153,153,166,170,160]],
     [[253,253,248,236,232],
      [154,164,172,174,167]],
     [[2,9,32,45,59,69,66],
      [2,32,88,102,107,103,94]],
     [[0,6,11,31,58,79,86,86,69],
      [3,19,73,111,128,128,122,106,91]]
]

min_x = min(x for stroke_data in drawing_data
              for x in stroke_data[0])
max_x = max(x for stroke_data in drawing_data
              for x in stroke_data[0])
min_y = min(y for stroke_data in drawing_data
              for y in stroke_data[1])
max_y = max(y for stroke_data in drawing_data
              for y in stroke_data[1])
d = draw.Drawing(max_x-min_x+10, max_y-min_y+10,
                 origin=(min_x-5, -max_y-5))
# Draw a white background for the GIF
d.append(draw.Rectangle(min_x-5, -max_y-5,
                        max_x-min_x+10, max_y-min_y+10,
                        fill='white'))
d.setRenderSize(w=300)

with draw.animate_jupyter(delay=1/5) as anim:
#with draw.animate_video('drawing.gif', duration=1/5) as anim:
#with draw.animate_video('drawing.mp4', fps=5) as anim:
    for stroke_data in drawing_data:
        x_arr = stroke_data[0]
        y_arr = stroke_data[1]
        # Create a path for each drawing stroke
        path = draw.Path(stroke_width=3, stroke='black', fill='none')
        path.M(x_arr[0], -y_arr[0])  # Start of path
        d.append(path)
        for x, y in zip(x_arr[1:], y_arr[1:]):
            path.L(x, -y)  # Draw a line to the next point
            anim.draw_frame(copy.deepcopy(d))  # Render a copy of the frame

Thank you for replying back so fast.
Sorry to sound complete idiot, I followed your steps and I think the image is reversed now (actually proper) but it seems to be going out of bounds/getting cut of as I think its not originating from center/top left
Here is my code
import copy
import drawSvg as draw

drawing_data = [((95, 79, 68, 31, 17, 9, 1, 0, 4, 54, 103, 130, 168, 190, 204, 219, 228, 222, 210, 200, 194, 197, 203, 192, 189, 190, 209, 207, 197, 179, 107, 100), (62, 50, 49, 74, 91, 113, 163, 220, 226, 249, 255, 255, 244, 231, 215, 187, 152, 151, 160, 160, 156, 140, 137, 134, 115, 109, 88, 82, 71, 63, 62, 65)), ((100, 100, 104, 110, 115, 115, 108, 107), (58, 17, 1, 0, 12, 22, 44, 64))]

min_x = min(x for stroke_data in drawing_data
              for x in stroke_data[0])
max_x = max(x for stroke_data in drawing_data
              for x in stroke_data[0])
min_y = min(y for stroke_data in drawing_data
              for y in stroke_data[1])
max_y = max(y for stroke_data in drawing_data
              for y in stroke_data[1])
d = draw.Drawing(max_x-min_x+10, max_y-min_y+10,
                 origin=(min_x-5, -min_y-5))
<img width="811" alt="chrome_2019-05-28_10-43-07" src="https://user-images.githubusercontent.com/3790163/58452556-63da2000-8135-11e9-9509-1ce715287edb.png">

d.setRenderSize(w=300)

for stroke_data in drawing_data:

    x_arr = stroke_data[0]
    y_arr = stroke_data[1]

    # Create a path for each drawing stroke
    path = draw.Path(stroke_width=3, stroke='black', fill='none')
    path.M(x_arr[0], -y_arr[0])  # Start of path
    for x, y in zip(x_arr[1:], y_arr[1:]):
        path.L(x, -y)  # Draw a line to the next point
    d.append(path)

#d.setRenderSize(w=300)
#d.saveSvg('drawing.svg')
d  # View in Jupyter

Nevermind, found my mistake
Was still doing
d = draw.Drawing(max_x-min_x+10, max_y-min_y+10,                  origin=(min_x-5, -min_y-5))
instead of
d = draw.Drawing(max_x-min_x+10, max_y-min_y+10,
                 origin=(min_x-5, -max_y-5))

Even now I did not see and realize the mistake in code, but instead I opened a graph image on net and started to visualize the coordinates and origin and realized my mistake.
Phew, thank you for all the help. So glad that got everything working perfectly how I wanted it after 7 hours of hit and trying various libraries and methods
I might write a wrapper to create a CLI or API version of the whole method and submit a pull to both DrawSVG and google's dataset.

Great.  I'm glad it's working for you.


⚠ Bofrost.be has degraded performance

In 75de49c, Bofrost.be (https://www.bofrost.be) experienced degraded performance:

HTTP code: 200
Response time: 1111 ms

Resolved: Bofrost.be performance has improved in 39d6b20 after 53 minutes.


Cleaning: remove unused files

What changes does this PR introduce?
remove all files in tools/example_scripts/ (updated testing scripts all in  MITgcm_contrib/test_scripts)
and remove un-tested experiments:  cpl_atm2d+ocn , tidal_basin_2d  & tutorial_offline
Does this PR introduce a breaking change?
no change
Suggested addition to tag-index
same as above

@jahn are you OK to look at this - thx?

LGTM


[BUG]: DetailsList allows for sort via Column headers via dataverse but not using sharepoint

Describe the bug
With a datasource of Dataverse, clicking the header sorts the data based on that selection. However using a sharepoint datasource the sort functionality doesnt not work
To Reproduce
Steps to reproduce the behavior:

Add the DetailsList Component with sharepoint list as Datasource
Add ColSortable: true, to column in the column items property
Select column header

Expected behavior
Match functionality when using dataverse backend
Desktop (please complete the following information):
Browser windows 10, chrome

Hi @daniel-alifano,
Thanks for reaching out and helping with creator kit.
Detail list does support sorting irrespective of the data source. For Data source other than Dataverse, e.g. SharePoint, Manual Sorting needs to be performed.
Kindly refer below documentation on how to perform manual sorting.
https://github.com/microsoft/powercat-code-components/tree/main/DetailsList#manual-sorting
Adding steps below for quick reference.
Example - Steps to perform manual sort for SharePoint list.

In the OnChange property of details list, identifying "Sort" event and updating context of the column to be sorted along with sorting direction(Ascending or descending).

If(Self.EventName="Sort",
UpdateContext({
                ctxSortCol:Self.SortEventColumn,
                ctxSortAsc:If(Self.SortEventDirection='PowerCAT.FluentDetailsList.SortEventDirection'.Ascending,true,false)
 })
);

CurrentSortColumn property need to be set to variable holding column name
ctxSortCol

Sorting direction to be defined, by setting CurrentSortDirection property.

If(ctxSortAsc,
    'PowerCAT.FluentDetailsList.CurrentSortDirection'.Ascending,
    'PowerCAT.FluentDetailsList.CurrentSortDirection'.Descending)

Applying the sort on input Items property

SortByColumns('Your SharePoint List',ctxSortCol,If(ctxSortAsc,SortOrder.Ascending,SortOrder.Descending))

This worked perfectly. Thanks for you help


Add frameworks instructions

I realize that this change is potentially undesirable as written, since it is essentially documenting a third-party product. Additionally, there are other environments where this change may also be needed but are not described. I'm open to having the language improved.
Without this information I was stuck since I don't use the command line to produce output. Having at least a hint of some sort in the documentation or readme would have been very helpful.


[useViewportSize] window is not defined in a Remix application

🐛 Bug Report
In this file: https://github.com/adobe/react-spectrum/blob/main/packages/%40react-aria/utils/src/useViewportSize.ts there is a check to make sure the window is defined before using browser API's, however Remix supports Deno which supports window on the server and therefore this check is not sufficient and the Remix docs suggest using typeof document === "undefined".
🤔 Expected Behavior
Should not break in SSR
😯 Current Behavior
Breaks in SSR
💁 Possible Solution
Use typeof document === "undefined" instead of typeof window !== 'undefined'.
🔦 Context
Trying to render the ModalOverlay, Modal and Dialog components in the context of a Remix application
💻 Code Sample
type DrawerProps = {
  children: React.ReactNode;
};

export default function Drawer({ children }: DrawerProps) {
  return (
    <ModalOverlay
      isOpen
      isDismissable
      className="data-[entering]:animate-background-fade-out data-[exiting]:animate-background-fade-in fixed inset-0 backdrop-brightness-50">
      <Modal className="data-[entering]:animate-slide-in data-[exiting]:animate-slide-out fixed top-0 bottom-0 right-0 w-2/5 bg-white p-8">
        <Dialog>
          {({ close }) => (
            <div className="text-black">
              {children}
              <Button onPress={close}>Close</Button>
            </div>
          )}
        </Dialog>
      </Modal>
    </ModalOverlay>
  );
}

🌍 Your Environment

Software
Version(s)

react-aria-components
1.0.0-alpha.4

Browser
Chrome

Operating System
MacOS

Thanks for the issue. I'm actually surprised this hasn't come up before, we use that check in a few places, including in our SSR Provider. I assume you can use ClientOnly in order to work around this for now? Much like this example has done https://github.com/DanielSmith/remix-tailwind-aria ?
Would you be willing to put together a PR?

Hi, yes we are using ClientOnly for now and it works great. I'll create a PR no problem

Closed by https://github.com/adobe/react-spectrum/pull/4688


SN DSA Release

In commands/release-file.py and commands/create-annotated-filenames.py:

Assay and sequencer codes value set to XX for DSA fasta files and chain files
For Supplementary Files, use title instead of code for software part of annotated filename

The tests are failing. I think it's related to your latest change


⚠ Bofrost.be has degraded performance

In 9cb627f, Bofrost.be (https://www.bofrost.be) experienced degraded performance:

HTTP code: 200
Response time: 2073 ms

Resolved: Bofrost.be performance has improved in 8a744bb.


Broken with Helm 3.7.0 Release

Hi,
first of all, thank you for providing this Action.
Describe the bug
With Helm Release 3.7.0 the helm chart command was removed or partially replaced by other commands:

Notable Changes
A few major changes were made to the experimental OCI feature:

helm chart export has been removed
helm chart list has been removed
helm chart pull has been replaced with helm pull
helm chart push has been replaced with helm push
helm chart remove has been removed
helm chart save has been replaced with helm package

Since GitHub is already shipping Helm 3.7.0 with their latest Ubuntu 20.04 virtual-environment, running the helm-oci-chart-releaser fails with the following error:
Error: unknown command "chart" for "helm"
Run 'helm --help' for usage.
Error: Process completed with exit code 1.

To Reproduce
Steps to reproduce the behavior:

Define GitHub workflow using  GitHub virtual-environment ubuntu-20.04
Define<EMAIL_ADDRESS>as a wotkflow step

Or checkout one of our repository's workflow (just default stuff):

Action Log
Workflow definition

Expected behavior
The action should complete (upload the chart) as intended.
Screenshots

@sbckr Thanks for your detailed report!
Seems like helm stabilized oci apis and if @v0.3.0 version will work as expected i will release @v1

@sergeyshaykhullin Thank you for your quick response! 🏎
I'll adapt our pipeline to use release v0.3.0 and provide further feedback once available.

@sbckr Action is migrated to helm 3.7.0, tested with ghcr. But some cd tools may not already adopted new helm oci format.
I will not release @v1 as helm oci support is still experimental

@sergeyshaykhullin #5 fixed the issue for us. Thanks again!

Hey @sergeyshaykhullin did you experience any issue with 0.4.0 so far?
https://github.com/appany/helm-oci-chart-releaser/issues/7


Fix fallback to classic resolution

The release-1.8 version of #7065.
(cherry picked from commit e03a45a824f67f31a7d74c4489156f44417d42f3)

:+1:


[FLINK-23848][connector/pulsar] Fix the consumer not found error in test. [1.14]

Unchanged backport of #17119.

4e732ad4509d719a2f0c5a81cd75ed002df25c2e


Allow spawners if monsters are off

How to enable spawners monsters spawn if monsters are off?

I've been trying to figure out this myself for the past couple of hours. Nothing I've tried works. I did manage to get eggs working but spawners won't. I was going to use this on my public skyblock server to add a regular survival world players can go to with seperate inventories.  I don't want natural spawning on the skyblock world. The spawn for skyblock has a shop that sells spawners. Any suggestions would be greatly appreciated.

What makes you think this is Multiverse blocking the spawning of mobs from spawners?

Because when I change the settings in the world.yml to false it starts
working again. I don't have any other plugins that control mobs spawning
except for bskyblock so it might be a compatibility issue with that. I also
googled it and several people have had the same issue. The eggs work fine
if I put the Monster_Egg in the exception list.
Its fine I removed the plugin and everything is working fine now.
On Mon, Apr 8, 2019 at 11:29 PM Alex-DataSIM<EMAIL_ADDRESS>wrote:

What makes you think this is Multiverse blocking the spawning of mobs from
spawners?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/Multiverse/Multiverse-Core/issues/1972#issuecomment-481097510,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AvIrMeR6g883Xgca3SVDplQ7QA9PsWmbks5vfBcSgaJpZM4bN7aq
.

Duplicate of https://github.com/Multiverse/Multiverse-Core/issues/790


Auto-upgrade to <IP_ADDRESS>

Base PullRequest
default branch (https://github.com/http4k/http4k-connect/tree/master)
Command results

Details:

add path
/home/runner/work/_actions/technote-space/create-pr-action/v2/node_modules/npm-check-updates/bin

./upgrade_http4k.sh <IP_ADDRESS>

Changed files

Changed file:

gradle.properties

:octocat: Repo | :memo: Issues | :department_store: Marketplace

Codecov Report

Merging #54 (10c3399) into master (53905b8) will not change coverage.
The diff coverage is n/a.

@@            Coverage Diff            @@
##             master      #54   +/-   ##
=========================================
  Coverage     58.84%   58.84%
  Complexity      626      626
=========================================
  Files           342      342
  Lines          3351     3351
  Branches        262      262
=========================================
  Hits           1972     1972
  Misses         1209     1209
  Partials        170      170

Continue to review full report at Codecov.

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


Unclosed script and style tags cause data loss

Markdown 3.3 does not properly generate HTML for `<script>`
markdown:
Current output:
Python 3.8.6 (default, Sep 30 2020, 04:00:38)

In [1]: import markdown

In [2]: markdown.__version__
Out[2]: '3.3'

In [3]: markdown.markdown('test: `test`')
Out[3]: '
test: test
'

In [4]: markdown.markdown('test: `<script>`')
Out[4]: '
test: `` tag.
... '''
>>> markdown.markdown(src)
'
Some text <script> more text.
\n
A separate paragraph with a closing </script> tag.
'

It appears that the underlying parser is withholding what is perceives to be content of the script tag until it finds the closing tag. As long as it never finds one, it never passes the content on. Another block-level tag doesn't even alter that behavior.
>>> markdown.markdown('foo `<script>` bar `<div>`')
'
foo ``) we don't want the default escaping behavior. That should be easy enough to address in our parser subclass. When we detect if a starttag actually starts a new HTML block (at start of line) we can 'turn off' cdata_mode if the tag does not start a new HTML block or is not a child of an HTML block.
I expect that 'fix' will have the effect of avoiding issue 1, except when the document contains an actual HTML block with a missing endtag. We don't guarantee good output from invalid HTML, but we generally try to avoid data loss. So, in the end, issue 1 needs to be fixed as well.

I opened an issue upstream at https://bugs.python.org/issue41989 related to the dataloss.


Merge the nodeinfo and datainfo data structures and create a single structure.

As nodes have a defined single parent, it is not longer necessary to have the two distinct data structures.  In fact much of the information is repeated so it simplifies everything to merge the two information structures.

updated to use entityinfo only - completed with 6f5125afc3e95a1a13d036e68b65773062ae09aa


Add --force-sync to cork update

Our jenkins jobs will re-use an existing set of git repoitories on the
node, and depending on what job ran previously, 'repo sync' may need
the --force-sync flag to get the repoitories into the correct state.
Fixes errors like these:
error: Cannot fetch coreos/coreos-overlay GitError: --force-sync not enabled; cannot overwrite a local work tree.

If I do a build with a manifest that includes some of my dev repos, then do a build with say the upstream manifest that uses a different repo at the same project path, and, the two jobs are scheduled on the same host, then this error will be hit.

@dm0- Please comment or merge.


ISqlServers has no firewall option to allow access to Azure services

The fluent api seems to have no option to allow Azure services to access the server. Sample code:
ISqlServer sqlServer = await azure.SqlServers
    .Define(this.sqlServerName)
    .WithRegion(Region.EuropeWest)
    .WithExistingResourceGroup(this.resourceGroupName)
    .WithAdministratorLogin(AdministratorLogin)
    .WithAdministratorPassword(administratorPassword)
    .WithNewFirewallRule(this.firewallRuleIpAddress)
    .WithFirewallAllowAccessToAzureServices(true) // <-- missing something like this
    .CreateAsync(token);

Any news about this ?

@jaredmoo I did a quick check and this particular setting is not captured in the version 2014-04-01 version of the Swagger specs (see firewallRules.json). Any ideas where I might find it?

See documentation at https://docs.microsoft.com/en-us/rest/api/sql/FirewallRules/CreateOrUpdate#firewallrules_createorupdate_request_body :)

I see now, you have to pass in the "magic" ip address "<IP_ADDRESS>" to get the Azure Portal setting ;-)
@DimitriBerman, can you please try adding another Firewall Rule in your ISqlServer create sequence with the IP set to "<IP_ADDRESS>" and see if that resolves your issue?

This issue was moved to Azure/azure-libraries-for-java#12


[JOSS Review] - NetoPedro

Hi,
I am reviewing the checklist https://github.com/openjournals/joss-reviews/issues/7022#issuecomment-2245007276.
Overall the paper looks good and the improvements are outstanding with regards to the computational cost. I have single question (or two but in the same direction). What is the impact of KD here? How different would be the results if HoverFast was trained just with the original labels?
Thanks.

Hello,
Thank you for your comment. Since the model has a radically reduced parameter count, it would likely not be possible to obtain Hover-Net level results accross tissue types, stains and scanners because of site specific variability in all of those variables. In this case, KD allows the HoverFast model to perform at about Hover-Net level accuracy for a user's particular stain/scanner type combination while doing so in a fraction of the time and computational cost.
It essentially learns to reproduce Hover-Net output via KD for the part of the dataset that is relevant to the user's specific site, rather than trying to generalize across all possible tissue types, stains, and scanners. Training with the original labels alone, without the distillation process, would likely result in a model that is less accurate for site-specific tasks, as it wouldn't benefit from the distilled knowledge of a more complex model like Hover-Net. The KD process is key to transferring the generalization ability of the larger model while maintaining computational efficiency and a reduced parameter count.
This is why we didn’t train on the entire dataset; the model’s reduced capacity is optimized for site-specific applications and would struggle to generalize across a broader range of samples.
Thanks again for your insightful question, and I hope this clarifies the role of KD in our approach.

I got it now. It is task/dataset/tissue specific. Makes sense. Good choice


This plugin requires an update to conform with the Web Speech API

SpeechSynthesisVoiceList is not part of the Web Speech API: getVoices should return an array of voices:

See https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesis/getVoices
See also https://github.com/macdonst/SpeechSynthesisPlugin/issues/7

var voices = [];
function loadVoices () {
    voices = window.speechSynthesis.getVoices() || [];
    if (voices._list) {
        voices = voices._list;
    }
}

getVoices are loaded asynchronously

The first time it is called, window.speechSynthesis.getVoices() returns a number and voices_list is undefined;
The second time it is called window.speechSynthesis.getVoices() returns a SpeechSynthesisVoiceList.
Tested on Andorid Nexus 2012 tablet with Android 5 and Amazon Tablet with FireOS 5.6
I think this is because Phonegap now uses Chrome Web View and Chrome loads voices asynchronously.
Therefore you need:
function onDeviceReady () {
    if ('speechSynthesis' in window && $.isFunction (window.speechSynthesis.getVoices)) {
        loadVoices();
        if ('onvoiceschanged' in window.speechSynthesis) {
            // Chrome loads voices asynchronously
            window.speechSynthesis.onvoiceschanged = loadVoices;
        } else {
            // We need to attempt to load twice especially for https://github.com/macdonst/SpeechSynthesisPlugin
            setTimeout(loadVoices, 3000);
        }
    }
}

SpeechSynthesisUtterance should be updated to take voice and not voiceURI and lang

if ('voice' in utterance) {
    // Standard Web Speech API
    utterance.voice = voice; // This sets the language
    // Setting an unavailable language in Microsoft Edge breaks the speech,
    // but hopefully we got a SpeechSynthesisVoice
    // utterance.lang = language;
} else {
    // For https://github.com/macdonst/SpeechSynthesisPlugin
    utterance.voiceURI = voice.voiceURI;
    utterance.lang = voice.lang;
}

See https://github.com/macdonst/SpeechSynthesisPlugin/issues/6

It would also be nice to publish this plugin on npm especially to avoid it being listed each time you check npm outdated.

@jlchereau it is published on npm at https://www.npmjs.com/package/phonegap-plugin-speech-synthesis

Good point, the spec has been updated.
I will see if I can get it to wait until the voice list is populated
Good point, the spec has been updated.
Good point, the spec has been updated.

So thanks for the heads up. I can make some changes to the JS to better align with the spec and publish to NPM.

Fixed #6

Thx @macdonst. You might also want to check SpeechSynthesisVoice.default as it is always false both on Nexus 2012 with Android 5 and Amazon Tablet with FireOS 5.6, whereas there should be default voices for each language.


there is no any contributors page (Issue #163)

Pull Request Checklist
Thank you for contributing to our project! Please ensure the following before submitting your pull request:
Description of Changes

I add the page of contributors
Type of Change

[✔ ] Bug fix
[ ] New feature
[✔ ] Documentation update
[ ] Refactoring
[ ] Other (please describe):

Related Issue

Closes: #163
Testing

Checklist

[✔ ] I have tested my changes and ensured they work as expected.
[✔ ] I have added necessary documentation (if applicable).
[✔ ] I have reviewed my code for style and linting issues.
[✔ ] I have ensured that any dependent changes are merged before this PR.

Additional Notes

please approve on hacktofest

Hey @BhavikaPachauri I have added the respective labels to the PR. Please check


Combat Achievement Notifications

Option to have combat achievements notified in Discord

Note: I was mistaking this for another plugin with BossHuso's comment on the removed "better discord loot logger" project, hence why many of these aren't "rare drops". These are also some features which were unique and only available on unapproved clients.


Cannot connect to queue with priority

I'm using your consumer in production environment with success.
Today I created a new queue with feature x-max-priority: 100, but when I try to start a new consumer I receive the following error:
2018/05/31 20:44:37 failed to register a consumer: Exception (504) Reason: "channel/connection is not open"

This is my consumer configuration:
[rabbitmq]
host=rabbit-0
username=project
password="password"
vhost=/project
port=5672
compression=Off
onfailure=6

[prefetch]
count=1
global=Off

[logs]
error=/var/www/project/shared/cli_logs/rabbitmq_error.log
info=/var/www/project/shared/cli_logs/rabbitmq_info.log

Can you help me? Thanks

Hi @salvatorecordiano,
My first guess would be, that your config is missing the priority option in the [queuesettings] section. Can you please try setting that option to 100 — since that is the value you created the Quade with according to your post?

@corvus-ch thanks!
I added the following section to my consumer configuration 8 days ago and it is the same you suggested. It works.
[queuesettings]
priority = 100

When i opened this issue i was confusing the difference between queue/message priorities and consumer priorities.


provision:deployer creates deployer user but can't use sudo

Deployer version: dev
Deployment OS: 20.04 lts

Adding this line to provision.php:237 fixes this:
run('echo "deployer ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers');

This is un secure.

Well it doesn't work otherwise, what's your solution?

What part doesn’t work?

[<IP_ADDRESS>] run [ -d ~/test ] || mkdir ~/test
[<IP_ADDRESS>] sudo: a terminal is required to read the password; either use the -S op
tion to read from standard input or configure an askpass helper

Makes sense since deployer user doesn't have passwordless sudo.

This is strange. Please check permissions on home dir of deployer user.

Permissions are fine. I delved deeper and discovered that if:
if ($host->has('become')) {
It's run as sudo, so it asks deployer for password because provision:website changes user to "deployer". The deployer user is created, but since config has become=root, it's still run as sudo whenever user is changed to deployer. BUT it's impossible to do any provisioning without become=root.
So it's not strange, it just doesn't work.

To provision run dep like this:
dep provision -o remote_user=root


remove eslint 2/flow logic

[ ] fix all broken flow tests

How do you want to fix the tests? By adding eslint-plugin-flow?

Yeah and we would recommend doing that somehow (would be nice if we could warn on error to do that)

Ok I'm going to try to use flow-plugin.

Seems that eslints node API does not support plugins  😥
https://github.com/eslint/eslint/issues/6841

Yeah although that's a different issue. The parser can't include any plugins - I just meant for our tests?

That is what I'm trying only for the tests of course, I finally got it working by using eslint.CLIEngine which feels a little bit wrong because we are not in an cli but ¯_(ツ)_/¯
But with the plugin enabled nothing changed and there are still the same errors. I think I commit what I have, although it does not change anything, but maybe you see whats wrong.

I think the plugin is relying on the fact that we visit also type annotations, which we now don't do anymore. https://github.com/zertosh/eslint-plugin-flow-vars/blob/master/use-flow-type.js#L12

Oh interesting! @zertosh

I found the problem, it was the removal of the monkeypatch for the "other" estraverse. This made the failure count go from 60 to 10.
But not sure if we really need to patch both estraverses :D

yeah wasn't sure if we needed to do it anymore - https://github.com/eslint/eslint/issues/6364, https://github.com/eslint/eslint/pull/5543

Seems that the changes to estraverse (which allow fallback to be a function) were only made to support unknown node types. So in case of nodes that are known by estraverse you need to overwrite the internal VisitorKeys, as the fallback will only be used when there is no entry in the VisitorKeys. You can overwrite the keys in the estraverse API but only if you are the one calling traverse().
In our case I don't see any other way currently besides monkeypatching. The only other solution would be if eslint would allow the parser to supply custom VisitorKeys.
But maybe I'm also missing something. /cc @nzakas

I remember I added it but it was removed in https://github.com/babel/babel-eslint/pull/273 @mysticatea

I think the plugin is relying on the fact that we visit also type annotations

Oh interesting! @zertosh is that right?

Yup.

Also we'll want to use https://github.com/gajus/eslint-plugin-flowtype later since ^ will be deprecated

Also, yup. I'm going to up put the notice now. It made sense to merge eslint-plugin-flow-vars into eslint-plugin-flowtype.

I just linked this branch of babel-eslint to eslint-plugin-flowtype and 31 tests then fail there. This is due to the fact that eslint-plugin-flowtype assumes that some things are declared or visited. So the plugin needs to be enhanced to cover all this cases, but it seems pretty easy to add.

Ok maybe we just need the logic in for now and just drop the extra monkey patching above + node < 4 and work doing the other stuff in another pr


SlimeVR server cannot find when I turn off and on the IMU device

I'm testing the SlimeVR server with several IMU devices, however when I turned off the IMU, and later turn on, the server cannot find the device. Interesting thing is, when I use the command prompt and type "arp -a" for whole devices on the same internet, it doesn't show up the device I turned off.
Is this the problem caused by the firmware, or do I need something else in the configuration?
Please help me to fix this problem

I think i don't understand everything here. Can you confirm the sequence:

Start SlimeVR Server
Power on the Tracker
SlimeVR Server sees the Tracker
Power off the tracker
SlimeVR Server shows the Tracker as disconnected
Power on the tracker
SlimeVR Server does not show the tracker

I would recommend also to look at the Serial Monitor of this tracker. There you will see, if the Tracker has problems connecting to the Server or the Wifi. (On the Old Gui its the WiFi Window)
To be able to see everything you may have to press the Reset Button on the D1 Mini after you did open the Serial Monitor.
I also can recommend the #technical-support in the discord or the support-forum in there. https://discord.gg/SlimeVR

Thanks, @unlogisch04
Please bear with me with my current situation, it's weird for now, but I thought it's important to share my problem with others.
Currently I'm using 6 IMU devices.

IMUs are all on, Router is on. I turn on the server and it displays the IMUs are connected. I turn off the IMU, status is disconnected, and then I turn on a few seconds later,  still disconnected.  When I try "arp -a"   , the device I turned off is never shown in the IP address table. Seems like it changed ip address itself or it has been removed  from the router IP table. It's kind of random, but sometimes its IP address changes to 169.254.. which only happens when the device cannot find the router. IP router might have a problem

So I reset the router, and I wait for few minutes, and try every 6 IMU devices trying to connect, between 1 to 5 times after I try to reconnect, it barely connect to the device.

Seems like the router has a serious problem.

I guess this issue is related to  #203

Not at all


Loosen version requirement for maturin

Description
This loosen the version requirement for maturin when building the python package.
Related Issue(s)

closes #1004

Documentation
Using an exact version can be excessively restrictive, for example preventing the use of the latest (but still compatible) version of maturin. Especially when packaging for rolling-releases distributions (like Archlinux), being able to build with the latest version would be beneficial.

Makefile updated to properly parse the maturin version.
(Note that the entire build step could also be done as simply as python -m build, and it will use virtualenv by default. Was there a reason for the more complex Makefile solution?)

(Note that the entire build step could also be done as simply as python -m build, and it will use virtualenv and maturin as expected. Was there a reason for the more complex Makefile solution?)

That's an interesting point. I'll want to try that out and see how it works in the development workflow, but potentially could be a useful way to go.

It looks like one test timeouted, not sure if it's related to this PR.


barcode issue

@cusanovich , What is the structure of the barcode? and the format of fastq file?
And sc_atac_10bpbarcode_split.py script failed to process the ATAC-seq fastq files.
Here are the errors, barcode not found in the name of fastq file.
$  python sc_atac_fastq2bam.py -R1 SRR5837698.sra_1.fastq.gz -R2 SRR5837698.sra_2.fastq.gz -O results -P demo -G ~/data/genome/dm6/bowtie_index/dm6
... sc_atac_10bpbarcode_split.py", line 89, in <module>
    barcodes = line.strip().split()[1].split(":")[3]
IndexError: list index out of range

Here are the first pair read of SRR5837698:
$ zcat SRR5837698.sra_1.fastq.gz | head -n 4
@SRR5837698.sra.1 ATTCAGAACCGCTAAGAGNAAGATTATTAGATTCCG:1 length=51
GGCTTNTATTATGACCGCAATGAAGTCCGATCGCAGATAATCCGCAAAGGA
+SRR5837698.sra.1 ATTCAGAACCGCTAAGAGNAAGATTATTAGATTCCG:1 length=51
AAAAA#EEEEEEEAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
(py27) wangming@yulab: ~/work/yu_2019/projects/public_data/2018_scATACseq_nature

$ zcat SRR5837698.sra_2.fastq.gz | head -n 4
@SRR5837698.sra.1 ATTCAGAACCGCTAAGAGNAAGATTATTAGATTCCG:1 length=51
GGATACGATTTCTTTCTAAAAAGATGACCCATTTTGATTTAAGTAATTTTG
+SRR5837698.sra.1 ATTCAGAACCGCTAAGAGNAAGATTATTAGATTCCG:1 length=51
AAAAAEEEEEEEEEEEEEEEEEEEEEAEEEEEEEEEEEEEEEEEEEEEEEA

In the case of:
<EMAIL_ADDRESS>ATTCAGAACCGCTAAGAGNAAGATTATTAGATTCCG:1 length=51"
The barcode is simply
ATTCAGAACCGCTAAGAGNAAGATTATTAGATTCCG
So to get the fastq file into a format that works, you just need to apply a bit of editing. Your end goal is to have in the final BAM file the read name being identical to the cell barcode.


add the initial 416 packages

We have already discussed the format but I'll still post it.
{
"package_count": {
    "winget": total_number_of_winget_packages,
    "scoop": total_number_of_scoop_packages,
    "total": total_number_of_packages_altogether(including all package managers),
    "done": currently_done_number_of_packages
  },
"winget":
      "package1.id":{
              "icon":"icon image linkl(mostly transparent background png icons)",
              "images": [
                       "image link 1",
                       "image link 2",
                       ]
          },
      "package2.id":{
              "icon":"icon image linkl(mostly transparent background png icons)",
              "images": [
                       "image link 1",
                       "image link 2",
                       ]
          }
"scoop":
      "package1.id":{
              "icon":"icon image linkl(mostly transparent background png icons)",
              "images": [
                       "image link 1",
                       "image link 2",
                       ]
          }
}

If a package does not have icons then it has an empty string as value.
If a package does not have images then it has an empty list/array as value.

Something like this:
"package.id": {
      "icon": "",
      "images": []
    },

Thanks!


Create proper abstraction for callback at thread termination in PAL

At the moment, PAL explicitly uses FLS to register callback at the thread shutdown. We need to abstract that so that we don't have to emulate FlsAlloc / FlsGetValue / FlsSetValue on Unix.

Implemented by #832


Update or replace django-soapbox

We use the package django-soapbox in edx/edx-analytics-dashboard. It hasn't yet added support for Django3.2. Please follow the guidance in https://openedx.atlassian.net/wiki/spaces/AC/pages/3036972032/Handling+Outdated+Dependencies to resolve the problem this poses for the Open edX Django 3.2 upgrade.

Hello @natabene, could you assign me to this issue please! Thank you so much

@NeOneSoft Sure, thank you so much for picking this up! Please post updated about your progress here.

Hi @natabene, I' already created a PR for the package however the last commit on this repo was on Dec 12, 2020 . I sent an email to the mantainer in order to ask for help to review it.

Hi @natabene I suggest to keep using django-soapbox since tests were ran successfully for Django 3.2 even tough this is not mentioned in the repo and I could not contact with the maintainer yet.

@Jawayria Please let me know what you think.

@NeOneSoft It make sense to me and edx-analytics already deployed with django32 and this package is working fine.
We can close this ticket @natabene

Thank you @natabene , @awais786 , @Jawayria  for your support = )!!


Feature: Share repository

Changes

Added a 'share' action to the actionsheet on the repository screenshot. This uses the native share window, so you have all your available options shown. See the screenshots. (My simulator only has twitter)
I added the actual repository link to the message, so its visible to the user that it also shares the url. If the url key is used in the share method it doesn't show the url. I thought that it might be strange for the user.
Removed unicode star. Since we don't have the octicons in the actionsheet yet, i removed the star since it doesn't look good otherwise.

Screenshots

This is a really good idea!

@andrewda Yea right!? I actually wanted to share a repository i found but there was no way to easily copy the link or share it. So i thought, lets add that! 😄


Roll engine 90bd6f814817..fe20f6877132 (1 commits)

https://github.com/flutter/engine/compare/90bd6f814817...fe20f6877132
git log 90bd6f814817..fe20f6877132 --first-parent --oneline
2020-03-04<EMAIL_ADDRESS>Roll src/third_party/skia a54af923929b..20ed48e8e963 (1 commits) (flutter/engine#16918)
If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-engine-flutter-autoroll
Please CC<EMAIL_ADDRESS>on the revert to ensure that a human
is aware of the problem.
To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug
Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+/master/autoroll/README.md

Commit queue failed; closing this roll.


compactor: use too much disk

Thanos, Prometheus and Golang version used:
quay.io/thanos/thanos:v0.8.1
Object Storage Provider:
S3
What happened:
compactor use up all disk (250G) while the biggest block size is 27G and repeatedly restart.

What you expected to happen:
According to #1007, final block =~ base block * 7 =~ 27 * 7 = 189G < 250G
it should be compacted without error, but got disk full.
How to reproduce it (as minimally and precisely as possible):
Full logs to relevant components:
Logs

level=info ts=2019-11-20T08:46:17.301507455Z caller=compact.go:1069 msg="start of GC"
level=info ts=2019-11-20T08:46:17.308941982Z caller=compact.go:1075 msg="start of compaction"

level=debug ts=2019-11-20T09:29:27.374673792Z caller=compact.go:875 compactionGroup="0@{monitor=\"worker-101\",replica=\"a\"}" msg="downloaded and verified blocks" blocks="[/cache/compact/0@{monitor=\"worker-101\",replica=\"a\"}/01DRN9T5ZPM5NT425P0JZTB8T1 /cache/compact/0@{monitor=\"worker-101\",replica=\"a\"}/01DRTBAWEFZYN8Q6JCFZJ3W6AZ /cache/compact/0@{monitor=\"worker-101\",replica=\"a\"}/01DRZG7XW1V36HM2QJ4NKHP2X7 /cache/compact/0@{monitor=\"worker-101\",replica=\"a\"}/01DS4N123W7KYMXEHJDQ8S064M /cache/compact/0@{monitor=\"worker-101\",replica=\"a\"}/01DS9SQW9GH45D3C0K4HEXQ5J3 /cache/compact/0@{monitor=\"worker-101\",replica=\"a\"}/01DSEYV4ZFNZ0NN5FZ8419Y0GM /cache/compact/0@{monitor=\"worker-101\",replica=\"a\"}/01DSM3EVYTQEKTV7HNCCK8FZJ1]" duration=43m10.040431776s
level=warn ts=2019-11-20T09:41:52.941250072Z caller=prober.go:154 msg="changing probe status" status=unhealthy reason="error executing compaction: compaction failed: compaction failed for group 0@{monitor=\"worker-101\",replica=\"a\"}: compact blocks [/cache/compact/0@{monitor=\"worker-101\",replica=\"a\"}/01DRN9T5ZPM5NT425P0JZTB8T1 /cache/compact/0@{monitor=\"worker-101\",replica=\"a\"}/01DRTBAWEFZYN8Q6JCFZJ3W6AZ /cache/compact/0@{monitor=\"worker-101\",replica=\"a\"}/01DRZG7XW1V36HM2QJ4NKHP2X7 /cache/compact/0@{monitor=\"worker-101\",replica=\"a\"}/01DS4N123W7KYMXEHJDQ8S064M /cache/compact/0@{monitor=\"worker-101\",replica=\"a\"}/01DS9SQW9GH45D3C0K4HEXQ5J3 /cache/compact/0@{monitor=\"worker-101\",replica=\"a\"}/01DSEYV4ZFNZ0NN5FZ8419Y0GM /cache/compact/0@{monitor=\"worker-101\",replica=\"a\"}/01DSM3EVYTQEKTV7HNCCK8FZJ1]: 2 errors: write compaction: write chunks: no space left on device; sync /cache/compact/0@{monitor=\"worker-101\",replica=\"a\"}/01DT42AGVNXNG3FWAEZHY8E5F0.tmp/chunks/000180: file already closed"
level=error ts=2019-11-20T09:41:52.945570325Z caller=main.go:215 msg="running command failed" err="error executing compaction: compaction failed: compaction failed for group 0@{monitor=\"worker-101\",replica=\"a\"}: compact blocks [/cache/compact/0@{monitor=\"worker-101\",replica=\"a\"}/01DRN9T5ZPM5NT425P0JZTB8T1 /cache/compact/0@{monitor=\"worker-101\",replica=\"a\"}/01DRTBAWEFZYN8Q6JCFZJ3W6AZ /cache/compact/0@{monitor=\"worker-101\",replica=\"a\"}/01DRZG7XW1V36HM2QJ4NKHP2X7 /cache/compact/0@{monitor=\"worker-101\",replica=\"a\"}/01DS4N123W7KYMXEHJDQ8S064M /cache/compact/0@{monitor=\"worker-101\",replica=\"a\"}/01DS9SQW9GH45D3C0K4HEXQ5J3 /cache/compact/0@{monitor=\"worker-101\",replica=\"a\"}/01DSEYV4ZFNZ0NN5FZ8419Y0GM /cache/compact/0@{monitor=\"worker-101\",replica=\"a\"}/01DSM3EVYTQEKTV7HNCCK8FZJ1]: 2 errors: write compaction: write chunks: no space left on device; sync /cache/compact/0@{monitor=\"worker-101\",replica=\"a\"}/01DT42AGVNXNG3FWAEZHY8E5F0.tmp/chunks/000180: file already closed"

Anything else we need to know:
running command:
thanos compact
      --compact.concurrency=1
      --data-dir=/cache
      --log.level=debug
      --objstore.config-file=/config/bucket.yml
      --retention.resolution-1h=15d
      --retention.resolution-5m=30d
      --retention.resolution-raw=90d
      --wait

base blocks sizes:
8.81468214187771G 21 objects   s3://my_bucket/01DRN9T5ZPM5NT425P0JZTB8T1/
24.49346103426069G 51 objects  s3://my_bucket/01DRTBAWEFZYN8Q6JCFZJ3W6AZ/
24.632513377815485G 52 objects s3://my_bucket/01DRZG7XW1V36HM2QJ4NKHP2X7/
24.634988240897655G 52 objects s3://my_bucket/01DS4N123W7KYMXEHJDQ8S064M/
24.644460477866232G 52 objects s3://my_bucket/01DS9SQW9GH45D3C0K4HEXQ5J3/
24.639022399671376G 52 objects s3://my_bucket/01DSEYV4ZFNZ0NN5FZ8419Y0GM/
24.570704349316657G 51 objects s3://my_bucket/01DSM3EVYTQEKTV7HNCCK8FZJ1/

Hi, what are the lengths of those blocks in terms of time range? I wouldn't be surprised if thanos compact is trying to carve out a "bigger" block out of those.

@Wing924 I think we're experiencing the same issue.
Did you ever manage to figure out what was happening?

We are also experiencing same issue - anyone able to solve this ?

What exactly it too much? (: What is expected here? (:

@bwplotka
Few questions:

Is thanos compactor creates bigger blocks [compacted] using the smaller blocks [un-compacted] ? If so, when the bigger block has been created why it is not deleting the smaller blocks ?
At this moment we see smaller blocks [un-compacted] remain under local disk space of thanos compactor.
Once the bigger block [compacted] has been moved to object storage, is thanos compactor suppose to delete it from local disk space ?
Is there any benchmark to pick the right size for thanos-compactor local disk based on samples ingested or un-compacted block size ?

Above questions are based on my understanding from reading about thanos compactor from information available on old issues reported for thanos compactor disk space usage.
Also, if my understanding is not correct around thanos compactor operation then could you please your understanding on how this thing works?

Hello, we also experience a problem where the compactor downloads more data form S3 than available on the node storage. Is it possible to:

Configure the number of blocks brought from S3?
Configure the maximum possible size of a single S3 block?
(running thanos 0.8.1)

Are there still plans to reduce the amount of disk space used?

Is thanos compactor creates bigger blocks [compacted] using the smaller blocks [un-compacted] ? If so, when the bigger block has been created why it is not deleting the smaller blocks ?
At this moment we see smaller blocks [un-compacted] remain under local disk space of thanos compactor.

Both the source blocks (inputs) and the compacted block (output) are deleted once the compacted block has been successfully uploaded to the bucket. You should see blocks on the local disk only for on-going compactions.

Once the bigger block [compacted] has been moved to object storage, is thanos compactor suppose to delete it from local disk space ?
At this moment bigger block remains under local disk space.

Yes.

Is there any benchmark to pick the right size for thanos-compactor local disk based on samples ingested or un-compacted block size ?

I know I'm going to give you an indirect answer, but we're using the Thanos BucketCompactor in the Cortex blocks storage too, and this is what we do suggest for production setups. Keep in mind that the highest block range period in Thanos is 2 weeks.

Since we are facing thanos-compactor getting restarted and loosing its data stored in local disk space and also it might be cancelling ongoing compaction and downsample operations. what could be implications of this ? Is thanos-compactor expected to re do all the work which has been cancelled by sudden restarts ?

The compactor will restart from scratch the work it was doing at the time it has been abruptly terminated.


Expose memory_file path in stats settings

This change proposes the ability to read back the wam restart memory file path in a stats settings command, in similar spirit as some other options like ssl_chain_cert. We have found this useful when querying metrics targeting only clusters with warm restart enabled (since stats settings output is scraped into the metrics system).
With a memory file:
$ echo "stats settings" | nc -q0 localhost 11211 | grep memory_file
STAT memory_file /tmp/restart-test

Without:
$ echo "stats settings" | nc -q0 localhost 11211 | grep memory_file
STAT memory_file (null)

Thanks! This was on the restart TODO list I think.

released in 1.6.9!


Create Hello_patty22.java

What does the program do ?

In what programming language it is written?

This pull request do not contains files in specific folders. Please fix it and reopen for help see https://help.github.com/articles/moving-a-file-to-a-new-location/


Move all documentation to docs/

The project root is getting a bit busy. Lets move anything related to documentation (excluding README.md) to docs/. All scripts/tools that consume the various documentation sources have been updated to reflect the new path.

Thanks - fixed the links in README.md for BOOTENVS.md and BUILD.md.  I think that's all of them, but I'll check again with fresh eyes before I smash the merge button.

I think I caught it all. Merging!


M1.2 Marker in Editor

Signature Marker - We will create a plugin for editor.js to mark the place where the signatures shall be placed. Once the document is signed, the selected signatures will be shown in the document. https://editorjs.io/ is a free block editor for javascript that is composable by plugins. We used such editor in the current MVP. It save the document in a clean json format.

it's possible to render and image in  and save as png
https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toBlob

the plugin has been done, it must configured on the main app.


Add T::Class-aware overload for grep methods

Motivation

h/t Mark N on Slack for pointing out that this method exists.
If we ever get around to #7027, we could even expand this signature to
T::Module.
Test plan

See included automated tests.

We have a policy of testing changes to Sorbet against Stripe's codebase before
merging them. I've kicked off a test run for the current PR.  When the build
finishes, I'll share with you whether or how it failed. Thanks!
Stripe employees can see the build results here:
→ https://go/builds/bui_Q9fD4vvo2A878i
→ https://go/builds/bui_Q9fDcj0vN09d66
→ https://go/builds/bui_Q9fDJ4ItPk32uC


Issues with multiple filters

Our client with user access to munkireport found few issues with filtering:

clicking on Installed Memory -> 4GB+ does not include machines with 4GB
/munkireport/index.php?/show/listing/hardware/#5GB%20memory%207GB
Is this by design? (5GB memory 7GB)

Hardware Report -> External Display Count gives me listing with ALL displays (even Apple built-in LCDs)
munkireport/index.php?/show/listing/displays

Hardware Report ->  Hardware Age -> some year gives me listing with all clients. This should be described in issue #364
munkireport/index.php?/show/listing/warranty

Munki Report -> Munki Protocol -> something gives me listing with all clients
munkireport/index.php?/show/listing/munki

I fixed the first 2 issues in the wip branch. The third issue is a duplicate. Please file a separate issue for the last one.

Thank you.
Done. Issue for last one is #462


Cannot post to clair

I have the cliar:v2.0.8 server running on the same instances as clair-scanner:v12, and cannot seem to scan any container:
[barry@ops-nomad-client-2 <IP_ADDRESS>]$ ./cs --ip='<IP_ADDRESS>' --clair='http://<IP_ADDRESS>:6060' imiell/bad-dockerfile:latest
2019/07/10 19:12:48 [INFO] ▶ Start clair-scanner
2019/07/10 19:13:16 [INFO] ▶ Server listening on port 9279
2019/07/10 19:13:16 [INFO] ▶ Analyzing 216168069a5195a9424b3a73a62bda39e4d5f8dcae2f7149a336c2e29beeb06b
2019/07/10 19:13:16 [CRIT] ▶ Could not analyze layer: POST to Clair failed Post http://<IP_ADDRESS>:6060/v1/layers: EOF

I've seen other issues that are similar to this, but none have EOF.
I don't see any logs entries in the clair server, so I'm guessing this never gets there. Are there any debug flags for clair-scanner?


[Bug]: After latest update database folder gives error.

Contact Details
No response
What happened?
After updating the addon the following message comes up (see image below) as a pop-up whenever I want to add a column, delete a column or create a new database. I am not the first to have this issue, but I am the first to have messaged here. Until this is resolved, the plugin is unusable.

What platform were you using?
Desktop
Version of the plugin
Most recent upgrade.
Relevant log output
No response
Are you using the latest version of the plugin in your Obsidian vault?

[X] I have verified that I am on the latest version

Are you check if there is a similar issue?

[X] I have verified that there are not similar issues

this kind of notice should just appear once per table after any update which includes new config params.
The new configuration will be added automatically with a default value. If it happens every time, maybe there is a save problem or a corrupt data. Could you share your db file to test it?
thanks in advance

This is an issue whenever I try to make any change on any db file; regardless of on mobile, tablet, laptop or desktop. Also, no matter what changes I make they aren't being saved. I can send you the db file but it would be just one column because I can't modify/change it at all. I have also uninstalled and reinstalled the plugin and checked save issues on my laptop and desktop but I haven't found anything there. Below you will find a database that I have been trying to start, due to sensitive information I cannot share other databases, but other than the name of the file (which I didn't bother to do here), I cannot change anything inside the db file. Even in the settings for db folder when I try to change the date format to DD-MM-YYYY, below you will find that that change was not implemented when I created this db that I have attached.
Untitled database.md

Once the databases are added to obsidian looks like they are updated without problem
https://user-images.githubusercontent.com/11924043/217629314-f832bad3-dc20-4daf-97ae-b4af7efe4ceb.mov
are there some logs with any errors? Looks like, in your case, something happens after parse the database file with the unmarshaller


Should Lambda triggers created via the CLI be assigned to a CloudWatch logs group?

Describe the bug
Generate two Lambda trigger functions via the CLI and neither is available in CloudWatch log viewer as other functions are. Shouldn't it create whatever links it needs so I can log what its doing?
Amplify CLI Version
4.30
To Reproduce

Expected behavior
Other functions I've added have logging available so I would expect this to do the same. Only reason I can think it might not is that it might generate a lot of logs maybe compare to some of the other types of trigger?
Desktop (please complete the following information):

OS: Windows
Node Version: v12.18.4

Additional context
Add any other context about the problem here.

Did some more digging around on this. Seems if I run a test on the Lambda (with the default test event generated via the Lambda UI) then my function will appear listed in the log group and I can click it, I assume that as it hadn't run there was nothing to log? Now I've run it and its got something to log it can show it. However when I click on it I still get the same error about the log group not existing?

Could be that its a Amplify Console issue rather than Amplify CLI but worth you folks having an look at it to be sure as I'm just guessing :)

It's exactly what you have found out, if the functions are not invoked yet, there is no log for them, so you won't be able to find any record in the CloudWatch.

Well that is good to know. Thanks for the confirmation :)


implement compression

Right now all the metadata and file contents for puzzlefs are uncompressed. We should compress them.
The design format of puzzlefs constrains the use of compression a bit though: we need to be able to read data from an arbitrary offset (the compression community calls this a "seekable compression format").
People like zstd as a compression format, and it has out-of-tree implementations of this with rust bindings:
https://github.com/facebook/zstd/blob/dev/contrib/seekable_format/zstd_seekable_compression_format.md
https://crates.io/crates/zstd-seekable
which may be interesting.

We have some basic support for this now with d52efd2b805885e35e089ae4b33177dff13b0b93; let's see how it goes.

from squashfs

For fast random access, compressed files are split up in fixed size blocks that are compressed separately. The block size can be set between 4k and 1M (default for squashfs-tools and squashfs-tools-ng is 128K).

from zstd_seekable

This is done by splitting up the input data into frames, each of which are compressed independently, and so can be decompressed independently. Decompression then takes advantage of a provided 'seek table', which allows the decompressor to immediately jump to the desired data.

Depending on the chunking parameters we choose, the seekable compression may not be worth it. For example, let's say we pick 16KB for the average chunk and 64KB for the maximum chunk. Then the maximum chunk size is less than the squashfs default block size of 128KB. Also, zstd seekable compression includes extra metadata for storing information about the offsets, resulting in a size increase for the compressed chunks. Plus we'll be stuck with zstd.

Could you post your deduplication performance results, or maybe just a concise summary?
IIUC, tuning the parameters made it so that indeed compression may not be needed.

I still think we need compression, I'm only arguing against seekable compression.

Sounds good.

An interesting point from squashfs is that they're not compressing blocks if this would result in a larger size, in this case they're storing the block uncompressed, perhaps we should also implement this.

Related: https://github.com/containers/image/pull/1084

We can have optional support for compression and we need a new field in BlobRef to indicate whether the blob is compressed or not. The blob still needs to be content-addressed, so the sha256sum of the compressed blob needs to be computed.

We should also process the files in parallel during puzzlefs build in order to speed up the compression.

Setup:
Build and mount the filesystem:
target/release/puzzlefs build ../test-puzzlefs/real_rootfs/barehost/rootfs /tmp/oci-barehost test
target/release/puzzlefs mount -f /tmp/oci-barehost test /tmp/puzzle

Reading an entire filesystem:
Compression disabled
$ time fd -tf -x cat > /dev/null
fd -tf -x cat > /dev/null  9.64s user 2.54s system 280% cpu 4.338 total

Compression enabled
$ time fd -tf -x cat > /dev/null
fd -tf -x cat > /dev/null  8.59s user 2.13s system 57% cpu 18.549 total


Remove -c flag when syncing from local

When the -c flag is present, chronos-sync.rb doesn't update Chronos from the local YAML file.
$ ruby ../chronos-sync.rb -u http://<IP_ADDRESS>:4400/ -p $PWD -c
# nothing happened
$ ruby ../chronos-sync.rb -u http://<IP_ADDRESS>:4400/ -p $PWD
These jobs will be updated:
About to update test

Old job:
---
...

New job:
---
name: test
command: date >> /tmp/job.log
shell: true
epsilon: PT30M
executor: ''
executorFlags: ''
retries: 2
owner<EMAIL_ADDRESS>async: false
cpus: 0.1
disk: 256.0
mem: 128.0
softError: false
uris: []
environmentVariables: []
arguments: []
highPriority: false
runAsUser: root
schedule: R//PT5M
scheduleTimeZone: ''

Sending PUT for `test` to /scheduler/iso8601
Finished checking/updating jobs

Thanks @aaronbbrown!


Synapse destination

Description
This PR adds initial support for the Synapse destination. It only implements the insert_values file format. I'll add the staging_file_format parquet (using COPY INTO to load from Azure Blob Storage into Synapse) in an upcoming separate PR. That next PR will also contain user docs. It implements the insert_values file format and the staging_file_format parquet (using COPY INTO to load from Azure Blob Storage into Synapse).

Related Issues

Implements #832

Additional Context

I aimed to reuse the code for the mssql destination as much as possible.
Since Synapse cannot handle multi row inserts, I introduced a new insert_values_writer_type called select_union that is based on SELECT and UNION_ALL. Relevant SO here.
All tables are created as HEAP tables. This is the most robust choice as it always works (as opposed to CLUSTERED COLUMNSTORE INDEX tables, which do not support varchar(max), nvarchar(max), and varbinary(max) data types). See Synapse docs about indexes for context.
The user can configure which table index type is used: heap or clustered_columnstore_index. The default is heap, because that's the most robust choice that always works with all data types. The default can be overridden by setting destination.synapse.default_table_index_type in a config TOML or by exporting the DESTINATION__SYNAPSE__DEFAULT_TABLE_INDEX_TYPE env var. All data tables will be created with the table index type specified as the default, unless another table index type is specified at the resource level. The table_index_type argument can be provided to the @dlt.resource decorator to configure indexes at a more granular level. The x-table-index-type argument can be provided to the synapse_adapter to configure indexes at a more granular level. Dlt system tables (the ones prefixed with _dlt) always have heap as index type, regardless of any configuration, because the recommendation is that "For small lookup tables, less than 60 million rows, consider using HEAP or clustered index for faster query performance.". The setup for handling table index type is inspired by the way table_format is handled.
I included support for primary_key and unique column hints, which are implemented with PRIMARY KEY NONCLUSTERED NOT ENFORCED and UNIQUE NOT ENFORCED, respectively. Because these constraints are a little tricky (they are not enforced and can lead to innacurate results if the user does not ensure all column values are unique), they are not applied by default. The user would need to set create_indexes to True explicitly to apply them.
Since long types (text, ntext, image) are not supported on Synapse, the LongAsMax keyword is set to yes so long types get converted to MAX types as described here. LongAsMax got introduced in ODBC Driver 18 for SQL Server. Hence, as opposed to for the mssql destination, ODBC Driver 17 for SQL Server is not supported for Synapse.
The logic for byte literals in escape_mssql_literal has been adapted to make it work for Synapse. The old logic only worked for mssql, the new logic works for both mssql and synapse.
OUTDATED, NO LONGER APPLIES AFTER CODE CHANGES: Synapse seems to struggle with concurrency in specific scenario's (completely hangs and need to execute KILL commands to release the stuck process). Because of this, I had to set the LOAD__WORKERS env var to 1 for the test tests/load/pipeline/test_replace_disposition.py::test_replace_table_clearing[staging-optimized-synapse-no-staging]. This is now handled automatically. When auto_disable_concurrency is set to true (the default value), the number of load workers automatically gets set to 1 at runtime in cases that are known to have issues with concurrency (for now, that's the case when there are tables with write_disposition == replace and replace_strategy == staging-optimized. A warning message is shown to the user in such cases, to make them aware of this intervention and to inform them of their configuration options.
dbt with Synapse has multiple complications. Since I could not make it pass all the tests in tests/load/pipeline/test_dbt_helper.py, I set supports_dbt to False in the DestinationTestConfiguration for Synapse.

Points regarding the support for staging_file_format parquet:

The implementation mostly follows redshift's implementation for staged file loading.
The COPY INTO command is used to load the Parquet files into Synapse tables.
COPY INTO does not support JSON, that's why only Parquet has been implemented.
Authorizing access from the Synapse workspace to the Azure Storage Account can be done in two ways:

based on AzureCredentialsWithoutDefaults, using azure_storage_sas_token. The same credentials are used for both the write into the Storage Account, and the read from the Storage Account into Synapse. This is the default option.
using the Synapse workspace managed identity. This requires that the managed identity has been assigned the Storage Blob Data Reader role (or a role with higher permissions) on the Blob container (or at the Storage Account level). The user can opt in for managed identity authentication by setting staging_use_msi to True.

Parquet TIME columns are not supported. Synapse reads those columns as bigint, and raises an incompatibility error as such. This might actually be caused by a bug in the pyarrow Parquet writer, but I'm not sure about that.
The Parquet staging files are not deleted after the load into the Synapse table has been completed. I have looked into this though—file deletion can relatively easily be implemented as a step after the COPY INTO (potentially optional similar to how snowflake uses keep_staged_files), but this would leave empty folders dangling behind. I think also deleting the folders would require orchestration at a higher level, which is less straightforward to implement.

Other changes in this PR:

Added a proper way to skip dbt-specific tests for destinations that don't support dbt.

@sh-rp and @rudolfix I addressed all the points you raised and requested a re-review from both of you.


⚠ AsianCinema has degraded performance

In ceca217, AsianCinema ($ACM) experienced degraded performance:

HTTP code: 200
Response time: 3963 ms

Resolved: AsianCinema performance has improved in b6bb6c4 after 6 minutes.


Are you sure? - "As the source database is updated, the database snapshot is updated."

Is following sentence (from first paragraph on this page) really correct?: "As the source database is updated, the database snapshot is updated.". I expected: "As the source database is updated, the database snapshot is NOT updated.".

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

ID: f2bcf755-2d2d-23bd-d4dc-0e0f2971f3df
Version Independent ID: e74d5adf-7a03-6f64-29e5-dd0bc606f4c0
Content: Database Snapshots (SQL Server) - SQL Server
Content Source: docs/relational-databases/databases/database-snapshots-sql-server.md
Product: sql
Technology: configuration
GitHub Login: @stevestein
Microsoft Alias: sstein

@WilliamAntonRohm you know the drill !

@dakrdakr you are correct - as far as I've experienced the snapshots are "static" and are NOT updated... I think the copy must be wrong.

@dakrdakr -- David, thank you for your feedback.  I updated the documentation and it should be live by tomorrow.
I am closing this issue now.  You are welcome to @ mention me for any followup.
We hope to hear from you again.


[package management service] check service status before run commands

Motivation
pulsar-admin runs packages management services commands, but if the broker is not enabled the service, it will throw NPE.
The root cause is https://github.com/apache/pulsar/blob/master/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/PackagesBase.java#L45-L47, the PackagesManagement might be null if the service is not enabled.
Modifications
Check isEnablePackagesManagement before each internal request.
Verifying this change

[ ] Make sure that the change passes the CI checks.

(Please pick either of the following options)
This change is a trivial rework / code cleanup without any test coverage.
(or)
This change is already covered by existing tests, such as (please describe tests).
(or)
This change added tests and can be verified as follows:
(example:)

Added integration tests for end-to-end deployment with large payloads (10MB)
Extended integration test for recovery after broker failure

Does this pull request potentially affect one of the following parts:
If yes was chosen, please highlight the changes

Dependencies (does it add or upgrade a dependency): (yes / no)
The public API: (yes / no)
The schema: (yes / no / don't know)
The default values of configurations: (yes / no)
The wire protocol: (yes / no)
The rest endpoints: (yes / no)
The admin cli options: (yes / no)
Anything that affects deployment: (yes / no / don't know)

Documentation
Check the box below and label this PR (if you have committer privilege).
Need to update docs?

[ ] doc-required
(If you need help on updating docs, create a doc issue)

[x] no-need-doc
(Please explain why)

[ ] doc
(If this PR contains doc changes)

@nlu90 please help to review when you have time, thanks.

@nlu90 good idea, IIRC the functions API will return UnsupportedOperationException if no functions worker enabled, this reminds me that it might be helpful to improve the code quality with this PR.
I have changed this PR and removed some duplicating code, PTAL, thanks.

Depends by https://github.com/apache/pulsar/pull/16365


fix(strict-comparison): Support comparing generic types with constraint

PR checklist

[x] Addresses an existing issue: fixes #4838
[x] New feature, bugfix, or enhancement

[x] Includes tests

[ ] Documentation update

Overview of change:
Fix strict-comparison false positive by supporting Gnenric types that have a constraint
Is there anything you'd like reviewers to focus on?

A Better way of finding constraint declaration(without passing around sourceFile)
Better type support(avoiding using as)
Test cases that involve generics with constraints, which this implementation does not support

💀 It's time! 💀
TSLint is being deprecated and no longer accepting pull requests other than security fixes. See #4534. ☠
If you'd like to see this feature implemented, you have two choices:

Recommended: Use typescript-eslint to lint your TypeScript code with ESLint ✅
Not Recommended: Fork TSLint and add this feature in the forked version 🤷♂

👋 It was a pleasure open sourcing with you!


[FLAPI-2040] Refactor lazy client evaluation

We'd see type errors like this:
duffelhq/duffel-api-python/tests/test_offers.py:10:31 - error: Cannot access member "get" for type "None"
    Member "get" is unknown (reportGeneralTypeIssues)

This PR replaces the incorrectly (or rather, unused) @property with our custom @lazy_property decorator.
This decorator effectively does the same thing as we were doing in each function client for the different clients.
The type errors are solved as we're no longer setting those properties to None at first, which was done to avoid some other type warnings, I believe!
Here's an example:
>>> client = Duffel(access_token = "xxxx")
>>> client.__dict__
{'_kwargs': {'access_token': 'xxxx'}}
>>> client.offers.list("offer_request_id")
<duffel_api.http_client.Pagination object at 0x110a2a340>
>>> client.__dict__
{'_kwargs': {'access_token': 'xxxx'}, '_lazy_offers': <duffel_api.api.booking.offers.OfferClient object at 0x11087de50>}
>>> client.offers.list("offer_request_id")
<duffel_api.http_client.Pagination object at 0x110bb4e20>
>>> client.__dict__
{'_kwargs': {'access_token': 'xxxx'}, '_lazy_offers': <duffel_api.api.booking.offers.OfferClient object at 0x11087de50>}

You can see that the Duffel class doesn't yet have the lazy attribute (_lazy_offers) at first (proven through __dict__). Subsequent calls add, and re-use, it.

A little further check:
>>> from duffel_api import Duffel
>>> client = Duffel(access_token = "xxxx")
>>> client.__dict__
{'_kwargs': {'access_token': 'xxxx'}}
>>> client.offers.list("offer_request_id")
init-ing
<duffel_api.http_client.Pagination object at 0x10a32f8e0>
>>> client.__dict__
{'_kwargs': {'access_token': 'xxxx'}, '_lazy_offers': <duffel_api.api.booking.offers.OfferClient object at 0x10932c7f0>}
>>> client.offers.list("offer_request_id")
<duffel_api.http_client.Pagination object at 0x10a371eb0>
>>> client.__dict__
{'_kwargs': {'access_token': 'xxxx'}, '_lazy_offers': <duffel_api.api.booking.offers.OfferClient object at 0x10932c7f0>}
>>> client.offers.list("offer_request_id")
<duffel_api.http_client.Pagination object at 0x10a32f8e0>
>>> client.__dict__
{'_kwargs': {'access_token': 'xxxx'}, '_lazy_offers': <duffel_api.api.booking.offers.OfferClient object at 0x10932c7f0>}
>>>

diff --git a/duffel_api/api/booking/offers.py b/duffel_api/api/booking/offers.py
index 8b32c19..208cba1 100644
--- a/duffel_api/api/booking/offers.py
+++ b/duffel_api/api/booking/offers.py
@@ -6,6 +6,7 @@ class OfferClient(HttpClient):
     """Client to interact with Offers"""

     def __init__(self, **kwargs):
+        print("init-ing")
         self._url = "/air/offers"
         super().__init__(**kwargs)

I think it's interrogate which is unhappy now.


Tech Newbie

Could someone give beginner-friendly instructions for how to make the Discord chat bridge work? I'm familiar with Discord, how to make a bot, etc. But I don't know what files from GitHub to download, what to run, what to upload to my 3rd-party server's file manager. Thanks!

Hiya! Thanks for stopping by, it's cool to see people interested in using mc-server-wrapper. However:

what to upload to my 3rd-party server's file manager

Depending on what server hosting solution you're using you may not be able to use my program. Typically these services manage Minecraft servers for you in a way that doesn't allow for programs like mine to be run on top of the Minecraft server. In these cases you'd want to use something like https://essentialsx.net/wiki/Discord-Tutorial.html to get a Discord bridge working with your server (assuming your server host allows running modded server software such as Spigot).
If you link the hosting service your using I'd be happy to take a peek and see what their policies are :)

I'm using PebbleHost, Vanilla 1.19 server.

Gotcha. Yeah, you won't be able to run mc-server-wrapper there. First, download a copy of your server files so if something gets messed up you can put things back the way they were. Then, the best way for you to get started with a Discord chat bridge would be to go here in your management dashboard:

Click on "JAR & Preinstall Menu", and then click on "Spigot" on the left:

Choose Spigot 1.19:

and save that. (It should be able to import your existing vanilla world without issue.)
Then you can install the EssentialsX plugin for Spigot (basic installation instructions here. One of its modules is EssentialsX Discord; make sure you install that one and then you can view the setup instructions for it here. That'll get you a great Discord chat bridge for your server 😄. There's also a bunch of other stuff EssentialsX can do if you want to play around with it; my friends and I play mostly vanilla settings, but we like having homes that we can set and teleport back to + the ability to request to teleport to each other. It makes exploring easier ✨. Or you can leave that all off.
If you have any questions let me know!

Thank you for the help!


DeleteExpiredTaskAfter?

Hey ho all ...
first of all, i'm new in c# and my english is very poor :(
So now my question ..
I'm creating a Task with the following Code
td.RegistrationInfo.Description = " Some Text which describes my task";
td.Principal.LogonType = TaskLogonType.InteractiveToken;

TimeTrigger tt = new TimeTrigger();
DateTime d1 = DateTime.Now;
DateTime d2 = d1.AddHours(2);
TimeSpan interval = d2 - d1;

tt.StartBoundary = d1;
tt.EndBoundary = d2.AddDays(1);
td.Triggers.Add(tt);
td.Settings.DisAllowStartIfOnBatteries = false;
td.Settings.DeleteExpiredTasksAfter = interval;

td.Actions.Add(new ExecAction("Notepad",null));

ts.RootFolder.RegisterTaskDefinition(@"Definition Example", td, TaskCreation.Create, HttpContext.Current.User.Identity.Name, null);

Now my Task will be created but there is a issue with the Expiration Time / NextRunTIme
The Task will be created like the following example:
Name = "Example"
Status = "Ready"
Triggers = At 10:36 on 04.06.2013 - Trigger expires at 05.06.2013 12:36:00
Next RunTime = "05.06.2013 14:36:00"
How can i set the Next Runtime correct?
In my Scenario i think the next Runtime should be set to 04.06.2013 10.36.00 and not to the next day 2 hours after the expiration ...
Any Hint? Tips? Tricks?
Kind regards,
Kai
Originally posted: 2013-06-04T02:39:44

With a TimeTrigger, the EndBoundary really doesn't mean anything as the StartBoundary defines when the task will execute. For a TimeTrigger, NextRunTime will return DateTime.MinDate if the StartBoundary has already passed. To delete the task immediately after all triggers have executed, set the value to TimeSpan.FromSeconds(1). StartBoundary is set to DateTime.Now by default.
I would rewrite your code to the following:
td.RegistrationInfo.Description = "Some Text which describes my task";
td.Principal.LogonType = TaskLogonType.InteractiveToken;
td.Triggers.Add(new TimeTrigger());
td.Settings.DisAllowStartIfOnBatteries = false;
td.Settings.DeleteExpiredTasksAfter = TimeSpan.FromSeconds(1);

td.Actions.Add(new ExecAction("Notepad", null));

ts.RootFolder.RegisterTaskDefinition(@"Definition Example", td, TaskCreation.Create, HttpContext.Current.User.Identity.Name, null);

Originally posted: 2013-06-15T15:29:52

Thank you dahall for your code.
But this is not usefull for my scenario :(
I have to set a starttime
So just a example:
Programm start creating a task
The task will be generated to run in 30 minutes
after 1 day the task have to be removed automaticaly

If i use your code example it realy works, but just for tasks that will be run direkt after creation
Originally posted: 2013-06-21T07:56:18

The StartTime property defines when a TimeTrigger will run. For your example of starting the task in 30 minutes use:
td.Triggers.Add(new TimeTrigger(DateTime.Now + TimeSpan.FromMinutes(30)));

Originally posted: 2013-06-21T10:26:07

dahall wrote:

The StartTime property defines when a TimeTrigger will run. For your example of starting the task in 30 minutes use:
td.Triggers.Add(new TimeTrigger(DateTime.Now + TimeSpan.FromMinutes(30)));

Thank you dahal.
I've modified my code but still the same issue :(
I think the best way is to show the whole source ...
TaskDefinition td = ts.NewTask();
td.RegistrationInformation = "Reboot initiated by: " + ddlAgentFQDN.Items[i].Text;
td.Principal.LogonType = TaskLogonType.InteractiveToken;
td.RegistrationInfo.Author = HttpContext.Current.User.Identity.Name;

td.Settings.DisallowStartIfOnBattery = false;
td.Settings.DeleteExpiredTaskAfter = TimeSpan.FromSeconds(1);

if (ts.HighestSupportedVersion >= new Version(1,2))
{
td.Settings.RestartInterval = new TimeSpan(0,0,0);
td.Settings.RestartCount = 0;
}
td.Settings.WakeToRun = true;

TimeTrigger tt = new TimeTrigger(DateTime.Now + TimeSpan.FromMinutes(3));
DateTime executionEnd = DateTime.Now.AddMonths(1);
tt.EndBoundary = executionEnd;
String Notification = tbMMReason.Text + " Reboot initiated by User: "+HttpContext.Current.User.Identity.Name;
td.Triggers.Add(tt);
td.Actions.Add(new ExecAction("shutdown", " -r -f -t 240 -m \\\\" + ddlAgenFQDN.Items[i].Text + " -d P:0:0 -c \"" +Notification + "\"",null));
ts.RootFOlder.RegisterTaskDefinition(@"MMWebGen_" + ddlAgentFQDN.Items[i].Text,td,TaskCreation.CreateOrUpdate,"<username>","<password>",TaskLogonType.Password,null);

So the Task will be created but it will have the following trigger / values:
Name = MMWebgenRebot_System
Status= Ready
Triggers:At 2:22PM on 6/27/2013 - Trigger Expires at 7/27/2013 2:20:13PM
Next Runtime: 7/27/2013 2:20:14PM
Originally posted: 2013-06-27T06:38:42

Hello dahal,
I'm so stupid .... OMG :(
It's working right now.
The "NextRunTime" will show the time when the Task will be removed.
Whatever ... thank you for your support.
Kind regards ....
Kai
Originally posted: 2013-06-27T07:31:13


Sogorea te onboard

-Implemented a generic 'single-campaign mode'.
-Numerous bug and formatting fixes.

@DietBepis1 The PR looks good to me! I'll test it out once locally and let you know if there's any bug I notice.
One thing though, do you think the file should be named sogorea-te.less? Since we are merging it to main, can we try to name it to something more generic, like current-campaign.less?

Yep, totally agree. That file was an artifact from the Sogorea Te' event and was deleted in my most recent commit. There is a method for globally changing styles now, which is documented here.

@DietBepis1 It looks great to me! I think we're ready to merge it, and should do so without delay so that we can move on to resolving conflicts of and merging #428 by Sam (@sammychinedu2ky). There are, however, two points I'd like to mention:

The error that prevents the letter from updating even after a representative is selected seems to still be happening. I'm not sure if it is because I'm missing the correct Lob test API key or if the error has been in the application since back. Let's discuss that on a personal 1:1 some time.

    [

        ![select rep letter not updating](https://user-images.githubusercontent.com/30315706/209785484-6ed4d0a1-15ac-4411-a55d-e4dddcfc7d78.gif)

    ](https://user-images.githubusercontent.com/30315706/209785484-6ed4d0a1-15ac-4411-a55d-e4dddcfc7d78.gif)

      [

      ](https://user-images.githubusercontent.com/30315706/209785484-6ed4d0a1-15ac-4411-a55d-e4dddcfc7d78.gif)

Although you have clearly updated the social media URLs in the code, the links in the bottom of the page seem not to work right now, but we can defer that to another issue.

Seems to be an old issue. I think creating  different issue for this would be okay

@paramsiddharth I am having that issue with letter load as well, specifically with the Sogorea Te' campaign. It has to do with how our db is set up. If you hardcode a different campaign id into Vuex's store, you should be able to load another letter. If you look in the browser console, I believe it's the getLetter endpoint that doesn't recognize that campaign id. But definitely double check me in case I have made some other mistake.
Expanding the data structures of Amplify is at the top of my list for the new year.
I will have to look at the social media links since those were working for me before I pushed my latest commit.

@DietBepis1 Do you suggest we merge this PR and defer the issues to another? Sam's PR has been hanging around for too long so I was wondering if it is a good idea to merge both PRs and resolve the conflicts and build up from there.

@DietBepis1 Do you suggest we merge this PR and defer the issues to another? Sam's PR has been hanging around for too long so I was wondering if it is a good idea to merge both PRs and resolve the conflicts and build up from there.

I just generated the 2 new issues we needed:

#445
#446

@DietBepis1 Merging this PR. :)


Add [pep8] section too setup.cfg and/or fix pep8 errors

Currently flake8 shows the following errors on master branch:
 682 E501
 144 E302
 124 E303
  74 E201
  71 E231
  62 E741
  62 E202
  60 E225
  51 E203
  47 F401
  38 E251
  30 E265
  26 E261
  24 E301
  22 F821
  21 E402
  20 E266
  18 E306
  18 E128
  17 E305
  16 F841
  15 F405
  13 E211
  11 W391
   9 E731
   9 E701
   8 E127
   7 E228
   4 F811
   4 E401
   3 W292
   3 E722
   3 E262
   3 E117
   2 E721
   2 E713
   2 E711
   2 E129
   2 E122
   2 E111
   1 E712
   1 E271
   1 E221
   1 E124

As I have integrated flak8 linter into my editor these lines all show up as errors. There are 3 options to fix this up:

add a [pep8] section to the setup.cfg as described here

simply adding max-line-length = 120 for example cuts the number of errors in half

fix the errors

Probably don't want to ignore everything. Any directives you want to comply with in future can be fixed up. For example F401 (unused import) or F811 (redefinition of unused variable) can often detect bugs.

add # noqa: E*** comments to the code

If we want to not introduce any new errors of this type but don't want to bother fixing up the code right at this time.

I'm happy to tackle the above, but will only do so if it is desired by the maintainers. Once done however should also added a lint step to travis so we don't introduce new pep8 bugs in future.

add a [pep8] section to the setup.cfg

That sounds good. I'll accept such a PR.

fix the errors

Can you give an example (filename + line number) where there is an actual problem with the source code? (i.e. not a misunderstanding by the analyzer)

add # noqa: E*** comments to the code

I am strongly against that.

added a lint step to travis

Let's revisit that afterwards.

Well that depends on your definition of "actual problem"
pep8 is the standard python style guide, so all the problems identified are in conflict with that standard. However not everyone agrees with the standard, and there is no reason for me to ask other people to confirm.
You can look at the list of Error Codes to make up your own mind, but I don't see any reason to strictly enforce most of them if you don't feel like it. Some however are good to keep because they may help find bugs (E101: mixed tabs and spaces is a good example)
https://github.com/lark-parser/lark/blob/master/lark/lexer.py#L306
This is a potential bug that falke8 identified (bare except will catch things like keyboardinterrupt and sigterm. except Exception is almost always what you want)
or perhaps a better example is here
https://github.com/lark-parser/lark/blob/master/examples/standalone/json_parser.py#L1804
os.path is used, but has never been imported. Likely the example json_parser doesn't actually work and will error at this point.
I have an opinionated setup.cfg that only keeps ~20 of the checks and cuts the number of reported errors to 226. Perhaps that is still too many and you'd prefer to cut down the error list further.
Here is an example of the output
./lark/tree.py:36:9: E741 ambiguous variable name 'l'
./lark/load_grammar.py:526:161: E501 line too long (165 > 160 characters)
./lark/lark.py:199:36: E711 comparison to None should be 'if cond is None:'
./lark/utils.py:141:1: E402 module level import not at top of file
./lark/utils.py:168:1: F811 redefinition of unused 'sys' from line 1
./lark/lexer.py:306:13: E722 do not use bare 'except'
./lark/reconstruct.py:94:50: E712 comparison to False should be 'if cond is False:' or 'if not cond:'
./lark/parsers/earley_forest.py:73:33: E701 multiple statements on one line (colon)
./lark/parsers/earley_forest.py:82:47: E721 do not compare types, use 'isinstance()'
./lark/parsers/earley_forest.py:157:5: E704 multiple statements on one line (def)
./lark/parsers/lalr_analysis.py:40:9: F841 local variable 'rules' is assigned to but never used
./lark/parsers/lalr_analysis.py:205:24: E713 test for membership should be 'not in'
./tests/test_trees.py:118:13: E731 do not assign a lambda expression, use a def
./examples/qscintilla_json.py:28:20: F405 'QColor' may be undefined, or defined from star imports: PyQt5.Qt
./examples/standalone/json_parser.py:154:19: F821 undefined name '_serialize'
./examples/standalone/json_parser.py:1836:3: E111 indentation is not a multiple of four

Thanks, these were good examples. They are now fixed and pushed.
I went through some of the output your wrote here (though some of the lines are different by now). Most of these are not interesting or helpful. Some of the "violations" in the code are necessary, and some are due to an intentional choice of style by either me or one of the other contributors.
I wouldn't mind 1000 warnings that find real potential bugs, but I'm not interested in "this should be two lines instead of one" or "You have to do is False" (which is actually wrong).

I am not sure it it is related, but I used codacy to catch few problems in my project: https://app.codacy.com/manual/evandrocoan/DebugTools/issues/index

I had setup it with Continuous Integration: https://github.com/evandrocoan/debugtools/blob/ac121c1e09f85f0f7fae6bc40f4c028026cd6676/appveyor.yml#L97
And put a badge on the README.md

Yes, pep8 is mostly about standard python coding style. It is absolutely not required for functional code, though I think it helps in maintainability and readability I see no reason to require you to enforce. I can configure my local checkers to skip the stylistic ones. I'd like to work on  #237 actually

I still see the value in adding a linter, just without all the style warnings. But isn't pylint better at that?
Anyway, if you've lost interest in continuing, that's fine.
#237 should practically work, I think. It just needs rebasing and some testing. And if you can add Earley support, that would be super.

Ah so another strategy would be to use a select = directive, so you can choose only to lint for what you are interested in. Using ignore = to cut out the style errors had 60+ entries and I was not a fan. Can start with a small subset of checks using select and add more if you feel. I can PR this if you like but recommend also to have integration into the CI tool you are using

Closing, but a PR is still welcome.


Logout supported?

Is Single Logout supported/functional with this integration?

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

ID: 4ffa73bf-e4cb-d6bc-3a9f-ec190ab1f5fd
Version Independent ID: 8b025543-22d3-2dda-e9dd-f1f75f082ba4
Content: Tutorial: Azure Active Directory integration with Tableau Server
Content Source: articles/active-directory/active-directory-saas-tableauserver-tutorial.md
Service: active-directory
GitHub Login: @jeevansd
Microsoft Alias: jeedes

@martinbherbener We will now proceed to close this thread. If there are further questions regarding this matter, please open a new issue and we will gladly continue the discussion.


Strange ~1min delay on pending resources behind proxy

I've been encountering an interesting 60 second delay on loading resources secured behind Authelia. I'm fairly certain that this isn't an issue with Authelia itself (I encountered a very similar issue using Vouch but I could never narrow it down)...

Notice how it's only certain resources — that's what makes this even more bizarre.
I know it likely isn't an issue with the backend service itself, because once I reconfigure Nginx to disable Authelia securing that backend, everything works. Switching to something like http_basic_auth or just unsecuring the endpoint makes everything work at normal speed once again.
I'm not doing any rewriting of headers or much else outside of the config I've shown below (besides configuring TLS which I think doesn't impact this issue at all).
This happens no matter which browser I use.
Here's my Authelia endpoint config:
server {
    listen [::]:443 http2;
    server_name authelia.$MYDOMAIN.com;
    include tls.conf;
    send_timeout 100m;

    set $upstream http://$AUTHELIA_ENDPOINT:9091;

    # Serves the portal application.
    location / {
       proxy_pass        $upstream/index.html;
    }

    location /static {
        proxy_pass        $upstream;
    }

    # Serve the backend API for the portal.
    location /api {
        proxy_set_header  X-Real-IP $remote_addr;

        # Required by Authelia because "trust proxy" option is used.
        # See https://expressjs.com/en/guide/behind-proxies.html
        proxy_set_header  X-Forwarded-Proto $scheme;

        # Required by Authelia to build correct links for identity validation.
        proxy_set_header  X-Forwarded-Host $http_host;

        # Needed for network ACLs to work. It appends the IP of the client to the list of IPs
        # and allows Authelia to use it to match the network-based ACLs.

        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_intercept_errors on;
        proxy_pass        $upstream;
    }
}

and the configuration for the endpoint I'm trying to secure:
server {
    listen [::]:443 http2;
    server_name $SERVICE.MYDOMAIN.com;
    include tls.conf;
    send_timeout 100m;

    #Websockets
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";

    location / {
    set $upstream http://$SERVICE_BACKEND:$SERVICE_PORT;
        proxy_pass $upstream;

    auth_request /auth_verify;

    set $target_url $scheme://$http_host$request_uri;
        error_page 401 =302 https://authelia.$MYDOMAIN.com/#/?rd=$target_url;

        proxy_set_header Proxy-Authorization $http_authorization;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

   # Virtual endpoint forwarding requests to Authelia server.
        location /auth_verify {
            internal;
            proxy_set_header            X-Real-IP $remote_addr;

            # Provide either X-Original-URL and X-Forwarded-Proto or
            # X-Forwarded-Proto, X-Forwarded-Host and X-Forwarded-Uri or both.
            # Those headers will be used by Authelia to deduce the target url of the user.
            #
            # X-Forwarded-Proto is mandatory since Authelia uses the "trust proxy" option.
            # See https://expressjs.com/en/guide/behind-proxies.html
            proxy_set_header            X-Original-URL $scheme://$http_host$request_uri;

            proxy_set_header            X-Forwarded-Proto $scheme;
            proxy_set_header            X-Forwarded-Host $http_host;
            proxy_set_header            X-Forwarded-Uri $request_uri;

            proxy_set_header            X-Forwarded-For $proxy_add_x_forwarded_for;

            # Authelia can receive Proxy-Authorization to authenticate however most of the clients
            # support Authorization instead. Therefore we rewrite Authorization into Proxy-Authorization.
            proxy_set_header            Proxy-Authorization $http_authorization;

            proxy_pass                  https://authelia.$MY_DOMAIN.com/api/verify;
        }

}

Of course, substituting in the variable values with real values.
This issue looks strangely similar to this one, and is always roughly consistent around 1 minute (which leads me to believe something is timing out somewhere).
I've played with Content-Length headers,  adding Host headers with no luck. This happens on many of my backends.

I think I've figured it out.
Apparently, proxying the auth_request out to the Internet and hitting my domain externally wasn't making Nginx happy — changing the line from proxy_pass                  https://authelia.$MY_DOMAIN.com/api/verify; to proxy_pass                  https://authelia:9091/api/verify; so that it is internally routed within the Docker network I have configured makes it work normally.

Hello @JCBird1012 , great you found that out :).


General question about the wink-mqtt implementation

Hi there @danielolson13,
I'm wondering if this Wink/HA MQTT bridge suffers from the same issue the SmartThings/HA MQTT bridge does; and that is, it still has to route commands back to Wink/ST's servers (e.g. "cloud"). Anyway, do you have any insight into that specifically?
EDIT: reason I'm asking, I'd love to find a hub that supports zigbee and zwave (plus), that DOESN'T require "cloud" routing to execute commands and more importantly, works with MQTT just fine in Home Assistant.
Thanks tons for putting this project together and for taking the time to read and (hopefully) answer my question. :)

This project does not need messages to traverse to the cloud and back to turn on/off a device. The steps to root a Wink hub are moderately difficult. You may find an off the shelf solution like a VeraPlus hub, http://getvera.com. If I didn't already own a Wink Hub I would go the Vera route. Good luck.