Only backup sent sms, not received half of conversation

Newly installed on jelly-bean (4.1.1).  Backup seemed to run just fine and entries appeared in my Gmail account with SMS label.  However, can only see the sms I sent, not any I received.
Help?

Same symptoms, Galaxy Note3(SM-N9005). Android 4.4.2. Uninstalled and re-installed. Did not fix.

Tried this one on the note 2 ....seems to be working https://play.google.com/store/apps/details?id=tv.studer.smssync&hl=en_GB  just make sure when it asks you to back up that you do.DO NOT press skip.

From: chenj0726<EMAIL_ADDRESS>To: jberkel/sms-backup-plus<EMAIL_ADDRESS>Cc: armst14<EMAIL_ADDRESS>Sent: Sunday, January 25, 2015 8:48 AM
Subject: Re: [sms-backup-plus] Only backup sent sms, not received half of conversation (#440)
Same symptoms, Galaxy Note3(SM-N9005). Android 4.4.2. Uninstalled and re-installed. Did not fix.
—
Reply to this email directly or view it on GitHub.

I am having same problem on Note 4/Android 4.4.4 - Send all my sent SMS to GMail, but NONE of my received SMS.
https://gist.github.com/brj319/ccdc88393ed124ab1168/download#file-brj319-note-4-sync-log-31615

This is how I fixed it:
Open the app > Auto backup settings > Incoming schedule set to Never,
Regular schedule set to anything other than Never.
I think....
On Tue, Mar 17, 2015 at 12:03 AM, brj319<EMAIL_ADDRESS>wrote:

I am having same problem on Note 4/Android 4.4.4 - Send all my sent SMS to
GMail, but NONE of my received SMS.
https://gist.github.com/brj319/ccdc88393ed124ab1168/download#file-brj319-note-4-sync-log-31615
—
Reply to this email directly or view it on GitHub
https://github.com/jberkel/sms-backup-plus/issues/440#issuecomment-82089073
.


filter_data docs 'upper cutoff frequency' typo

Describe the bug
The docs of mne.filter.filter_data have a typo: both l_freq and h_freq are said to represent "the upper cutoff frequency" for IIR filters.
Steps to reproduce
import mne
import pprint
pprint.pprint(mne.filter.filter_data.__doc__)

I would submit a PR myself but I don't know how your documentation works.

Any time you see
https://github.com/mne-tools/mne-python/blob/master/mne/filter.py#L754
It just uses something from
https://github.com/mne-tools/mne-python/blob/master/mne/utils/docs.py#L241
Can you make a PR to fix docs.py?


Dates don't correspond to iteration dates

Describe the bug
It appears that the dates for each iteration in the Feature Timeline are offset by one day. The end date of the iteration is one day too early.
Browser
Choose a browser
[ ] IE11
[X] Chrome
[ ] FireFox
[ ] Safari
Version
[X] VSTS
[ ] TFS 2017 Update 2/3
[ ] TFS 2018
Screenshots
If applicable, add screenshots to help explain your problem.

Thanks @GreenDavidA  for your contribution.

Hi navneetg-msft,
Will this changed be released in an update in the near future?  We are seeing the same date offset issue as described by the original poster.
Thanks,
Glenn


Allow CollectSequencingArtifactMetrics to be skipped if user specifies an input file for the Orientation Bias filter.

In other words, if a user specifies the file to use, do not run the task.

Issue moved to broadinstitute/gatk #2970 via ZenHub


Sankey diagram hangs with more than 6 nodes

Im having issues using the sankey diagram with my data.
Basically I have 7 nodes connected with a not defined number of links between them.
I created an example of data.json that hangs using 12 links between each node:
{
"nodes":[
{"name":"first","text":"first"},
{"name":"second","text":"second"},
{"name":"third","text":"third"},
{"name":"fourth","text":"fourth"},
{"name":"fifth","text":"fifth"},
{"name":"sixth","text":"sixth"},
{"name":"last","text":"last"}],

"links":[
{"source":"first","target":"second","value":1},
{"source":"second","target":"third","value":1},
{"source":"third","target":"fourth","value":1},
{"source":"fourth","target":"fifth","value":1},
{"source":"fifth","target":"sixth","value":1},
{"source":"sixth","target":"last","value":1},

{"source":"first","target":"second","value":1},
{"source":"second","target":"third","value":1},
{"source":"third","target":"fourth","value":1},
{"source":"fourth","target":"fifth","value":1},
{"source":"fifth","target":"sixth","value":1},
{"source":"sixth","target":"last","value":1},

{"source":"first","target":"second","value":1},
{"source":"second","target":"third","value":1},
{"source":"third","target":"fourth","value":1},
{"source":"fourth","target":"fifth","value":1},
{"source":"fifth","target":"sixth","value":1},
{"source":"sixth","target":"last","value":1},

{"source":"first","target":"second","value":1},
{"source":"second","target":"third","value":1},
{"source":"third","target":"fourth","value":1},
{"source":"fourth","target":"fifth","value":1},
{"source":"fifth","target":"sixth","value":1},
{"source":"sixth","target":"last","value":1},

{"source":"first","target":"second","value":1},
{"source":"second","target":"third","value":1},
{"source":"third","target":"fourth","value":1},
{"source":"fourth","target":"fifth","value":1},
{"source":"fifth","target":"sixth","value":1},
{"source":"sixth","target":"last","value":1},

{"source":"first","target":"second","value":1},
{"source":"second","target":"third","value":1},
{"source":"third","target":"fourth","value":1},
{"source":"fourth","target":"fifth","value":1},
{"source":"fifth","target":"sixth","value":1},
{"source":"sixth","target":"last","value":1},

{"source":"first","target":"second","value":1},
{"source":"second","target":"third","value":1},
{"source":"third","target":"fourth","value":1},
{"source":"fourth","target":"fifth","value":1},
{"source":"fifth","target":"sixth","value":1},
{"source":"sixth","target":"last","value":1},

{"source":"first","target":"second","value":1},
{"source":"second","target":"third","value":1},
{"source":"third","target":"fourth","value":1},
{"source":"fourth","target":"fifth","value":1},
{"source":"fifth","target":"sixth","value":1},
{"source":"sixth","target":"last","value":1},

{"source":"first","target":"second","value":1},
{"source":"second","target":"third","value":1},
{"source":"third","target":"fourth","value":1},
{"source":"fourth","target":"fifth","value":1},
{"source":"fifth","target":"sixth","value":1},
{"source":"sixth","target":"last","value":1},

{"source":"first","target":"second","value":1},
{"source":"second","target":"third","value":1},
{"source":"third","target":"fourth","value":1},
{"source":"fourth","target":"fifth","value":1},
{"source":"fifth","target":"sixth","value":1},
{"source":"sixth","target":"last","value":1},

{"source":"first","target":"second","value":1},
{"source":"second","target":"third","value":1},
{"source":"third","target":"fourth","value":1},
{"source":"fourth","target":"fifth","value":1},
{"source":"fifth","target":"sixth","value":1},
{"source":"sixth","target":"last","value":1},

{"source":"first","target":"second","value":1},
{"source":"second","target":"third","value":1},
{"source":"third","target":"fourth","value":1},
{"source":"fourth","target":"fifth","value":1},
{"source":"fifth","target":"sixth","value":1},
{"source":"sixth","target":"last","value":1}]
}

There are some factors that make it work normally (no hangs):

If I remove 1 node, and leave only 6 nodes (5 nodes connected).
If I remove half of the link data, it does not hang even with 7 or 8 nodes. (leave only 6 links from those 12 link blocks)

There are also some facts that make it slows down gradually (short hangs):

If I remove 4 or 5 links blocks from those 12, it takes a while and works slowly, however it loads.

I've tracked the hangs and it occurs in sankey.js line 120, inside computeNodeBreadths() in node.sourceLinks.forEach.
As you see in my data example above, I dont have any circular connections.
Also, I did no changes in sankey.js and i get it from this repository: https://github.com/d3/d3-plugins/tree/master/sankey, and my index.js is exactly like in this example http://bl.ocks.org/d3noob/5028304 (i based my sankey propotype in this example)
Is there any reported bug or solution for this situation?
Best regards,
Marius

I can't reproduce this problem either.

I am also getting same issue. Here is the url
http://jsfiddle.net/n9h1cyaL/
It works fine at for 4 Nodes and 1350 links  but it breaks for 4 nodes and 1500 links.
Please set "var testLinksCount = 500 ;" to reproduce the issue .

I had a similar issue to @thiloplanz. It turned out I had generated a link with a source and target of the same value resulting in an infinite cycle, so just in case anyone else has this problem!


Prettify XML in Request Body

Hi, @helloanoop! There is already an active PR implementing this feature. #1913

Closed as it is duplicate of #1913


Remove usage of internal state in network tests

Our network tests are not supposed to use internal state of the nodes, they are intended to be black box testing.
However, we currently have 7 functions exposed in the API: https://github.com/bpfkorea/agora/blob/0cdc928b09eddec41f78a2c1a36459dac532a9c6/source/agora/test/Base.d#L427-L450
Out of those 7, two of them are just exposing functions which are normally private.
While not great, it is fine and justifiable.
The extra printLog function is also self-evident: If a test fails, we can call it to get some extra information.
The following 4 are much less obvious: metaAddPeer, createEnrollmentData, getPreimage and updateEnrolledHeight.
The later was added very recently, and the comment about it is in the test that uses it:
https://github.com/bpfkorea/agora/blob/0cdc928b09eddec41f78a2c1a36459dac532a9c6/source/agora/test/EnrollmentManager.d#L140-L142
Definition of done:

[ ] The documentation about TestAPI to include the dos and donts
[ ] Each function exposing internals documents why it needs to be there
[ ] Hopefully, some of the functions are removed from the public API. I can't think of a reason to have getPreimage and createEnrollmentData. I remember metaAddPeer had a justification in the PR, and updateEnrolledHeight is a temporary solution.

The getPreimage and updateEnrolledHeight will be deleted after merging #504 . A PR could be made by me about those functions after the merging. And new function getPreimage will be added by resolving the issue #567 .

I don't understand, why is #504 a blocker for getPreimage ?
updateEnrolledHeight I can see why.

As you know, in order to test and call the revealPreimage, the getPreimage is needed. After #504 is merged, start_block_height is set and EnrollmentManager can determine whether it reveal  a pre-image at each round and a Node object can get a pre-image from EnrollmentManager. The start_block_height can be calculated after the updateEnrolledHeight is called.


Support third party integrations with Fides consent script-Segment

Spun out from https://github.com/ethyca/fides/issues/1422


error on Juicer pre and juicer-tools

Dear colleague,
I get an error in the pipeline during Juicer pre and perhaps related to juicer tools. I use conda in an ubuntu 22.04
This is the input
(hic-scaffolding) jpons@tesla:~/Downloads/hic-scaffolding-nf$ nextflow run WarrenLab/hic-scaffolding-nf     --contigs /home/jpons/Downloads/tethys.hifiasm.purgedup.eukaryomly.fasta     --r1Reads /grass/jpp/testhysbaena_genome_PACBIOreads/Tscabra_allHiC_1.fastq.gz     --r2Reads /grass/jpp/testhysbaena_genome_PACBIOreads/Tscabra_allHiC_2.fastq.gz     --juicer-tools-jar /home/jpons/Downloads/juicer_tools.2.04.06.jar --profile conda
and this is the error
N E X T F L O W  ~  version 23.04.3
Launching https://github.com/WarrenLab/hic-scaffolding-nf [crazy_heyrovsky] DSL2 - revision: 182d56aaaf [main]
executor >  local (7)
[5a/614463] process > PRINT_VERSIONS     [100%] 1 of 1 ✔
[71/ffd6e6] process > SAMTOOLS_FAIDX (1) [100%] 1 of 1 ✔
[c9/91fb8f] process > CHROMAP_INDEX (1)  [100%] 1 of 1 ✔
[7d/f21320] process > CHROMAP_ALIGN (1)  [100%] 1 of 1 ✔
[47/4117c4] process > YAHS_SCAFFOLD (1)  [100%] 1 of 1 ✔
[22/aaeb5c] process > JUICER_PRE (1)     [  0%] 0 of 1
[9e/1d7d52] process > ASSEMBLY_STATS (1) [100%] 1 of 1 ✔
ERROR ~ Error executing process > 'JUICER_PRE (1)'
Caused by:
Process JUICER_PRE (1) terminated with an error exit status (56)
Command executed:
juicer pre -a -o out_JBAT         yahs.out.bin         yahs.out_scaffolds_final.agp         contigs.fa.fai
asm_size=$(awk '{s+=$2} END{print s}' contigs.fa.fai)
java -Xmx36G -jar /home/jpons/Downloads/juicer_tools.2.04.06.jar         pre out_JBAT.txt out_JBAT.hic <(echo "assembly ${asm_size}")
Command exit status:
56
Command output:
WARNING: sun.reflect.Reflection.getCallerClass is not supported. This will impact performance.
WARN [2023-09-28T15:50:49,046]  [Globals.java:138] [main]  Development mode is enabled
Using 1 CPU thread(s)
Not including fragment map
Start preprocess
Writing header
Writing body
..
Writing footer
nBytesV5: 7492146
masterIndexPosition: 430962352
Finished preprocess
Command error:
[I::main_pre] make juicer pre input from BIN file yahs.out.bin
[I::make_juicer_pre_file_from_bin] 52982560 read pairs processed
[I::main_pre] genome size:<PHONE_NUMBER>
[I::main_pre] scale factor: 1
[I::main_pre] chromosome sizes for juicer_tools pre -
PRE_C_SIZE: assembly<PHONE_NUMBER>
[I::main_pre] JUICER_PRE CMD: java -Xmx36G -jar ${juicer_tools} pre out_JBAT.txt out_JBAT.hic <(echo "assembly<PHONE_NUMBER>")
[I::main_pre] Version: 1.1
[I::main_pre] CMD: juicer pre -a -o out_JBAT yahs.out.bin yahs.out_scaffolds_final.agp contigs.fa.fai
[I::main_pre] Real time: 18.290 sec; CPU: 18.239 sec; Peak RSS: 0.003 GB
WARNING: sun.reflect.Reflection.getCallerClass is not supported. This will impact performance.
WARN [2023-09-28T15:50:49,046]  [Globals.java:138] [main]  Development mode is enabled
Using 1 CPU thread(s)
Not including fragment map
Start preprocess
Writing header
Writing body
..
Writing footer
nBytesV5: 7492146
masterIndexPosition: 430962352
Finished preprocess
0 0
java.lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0
at juicebox.tools.utils.norm.final2.FinalScale.scaleToTargetVector(FinalScale.java:150)
at juicebox.tools.utils.norm.ZeroScale.scale(ZeroScale.java:36)
at juicebox.tools.utils.norm.ZeroScale.mmbaScaleToVector(ZeroScale.java:executor >  local (7)
[5a/614463] process > PRINT_VERSIONS     [100%] 1 of 1 ✔
[71/ffd6e6] process > SAMTOOLS_FAIDX (1) [100%] 1 of 1 ✔
[c9/91fb8f] process > CHROMAP_INDEX (1)  [100%] 1 of 1 ✔
[7d/f21320] process > CHROMAP_ALIGN (1)  [100%] 1 of 1 ✔
[47/4117c4] process > YAHS_SCAFFOLD (1)  [100%] 1 of 1 ✔
[22/aaeb5c] process > JUICER_PRE (1)     [100%] 1 of 1, failed: 1 ✘
[9e/1d7d52] process > ASSEMBLY_STATS (1) [100%] 1 of 1 ✔
ERROR ~ Error executing process > 'JUICER_PRE (1)'
Caused by:
Process JUICER_PRE (1) terminated with an error exit status (56)
Command executed:
juicer pre -a -o out_JBAT         yahs.out.bin         yahs.out_scaffolds_final.agp         contigs.fa.fai
asm_size=$(awk '{s+=$2} END{print s}' contigs.fa.fai)
java -Xmx36G -jar /home/jpons/Downloads/juicer_tools.2.04.06.jar         pre out_JBAT.txt out_JBAT.hic <(echo "assembly ${asm_size}")
Command exit status:
56
Command output:
WARNING: sun.reflect.Reflection.getCallerClass is not supported. This will impact performance.
WARN [2023-09-28T15:50:49,046]  [Globals.java:138] [main]  Development mode is enabled
Using 1 CPU thread(s)
Not including fragment map
Start preprocess
Writing header
Writing body
..
Writing footer
nBytesV5: 7492146
masterIndexPosition: 430962352
Finished preprocess
Command error:
[I::main_pre] make juicer pre input from BIN file yahs.out.bin
[I::make_juicer_pre_file_from_bin] 52982560 read pairs processed
[I::main_pre] genome size:<PHONE_NUMBER>
[I::main_pre] scale factor: 1
[I::main_pre] chromosome sizes for juicer_tools pre -
PRE_C_SIZE: assembly<PHONE_NUMBER>
[I::main_pre] JUICER_PRE CMD: java -Xmx36G -jar ${juicer_tools} pre out_JBAT.txt out_JBAT.hic <(echo "assembly<PHONE_NUMBER>")
[I::main_pre] Version: 1.1
[I::main_pre] CMD: juicer pre -a -o out_JBAT yahs.out.bin yahs.out_scaffolds_final.agp contigs.fa.fai
[I::main_pre] Real time: 18.290 sec; CPU: 18.239 sec; Peak RSS: 0.003 GB
WARNING: sun.reflect.Reflection.getCallerClass is not supported. This will impact performance.
WARN [2023-09-28T15:50:49,046]  [Globals.java:138] [main]  Development mode is enabled
Using 1 CPU thread(s)
Not including fragment map
Start preprocess
Writing header
Writing body
..
Writing footer
nBytesV5: 7492146
masterIndexPosition: 430962352
Finished preprocess
0 0
java.lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0
at juicebox.tools.utils.norm.final2.FinalScale.scaleToTargetVector(FinalScale.java:150)
at juicebox.tools.utils.norm.ZeroScale.scale(ZeroScale.java:36)
at juicebox.tools.utils.norm.ZeroScale.mmbaScaleToVector(ZeroScale.java:86)
at juicebox.tools.utils.norm.NormalizationCalculations.computeMMBA(NormalizationCalculations.java:566)
at juicebox.tools.utils.norm.NormalizationCalculations.getNorm(NormalizationCalculations.java:343)
at juicebox.tools.utils.norm.GenomeWideNormalizationVectorUpdater.getWGVectors(GenomeWideNormalizationVectorUpdater.java:163)
at juicebox.tools.utils.norm.GenomeWideNormalizationVectorUpdater.updateHicFileForGWfromPreAddNormOnly(GenomeWideNormalizationVectorUpdater.java:127)
at juicebox.tools.utils.norm.NormalizationVectorUpdater.updateHicFile(NormalizationVectorUpdater.java:105)
at juicebox.tools.clt.old.PreProcessing.run(PreProcessing.java:153)
at juicebox.tools.HiCTools.main(HiCTools.java:94)
Work dir:
/home/jpons/Downloads/hic-scaffolding-nf/work/22/aaeb5c1f1b831c0337c163104de1e7
Tip: view the complete command output by changing to the process work dir and entering the command cat .command.out
-- Check '.nextflow.log' file for details
I get the same error in despite of using different java or juicer-tools versions.
Thanks in advance,
Joan Pons

Have you looked at the input files for this process by going into the workdir as nextflow suggests? The lines
0 0
java.lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0

make me suspect there is an empty input file to this step. The failed step is just for making a heatmap for viewing in juicebox, so the actual scaffolding parts should be done already. Take a look at the scaffolding output as there may be something wrong with it that is messing up later steps.


Update slf4j-nop to 1.7.31

Updates org.slf4j:slf4j-nop from 1.7.30 to 1.7.31.
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

Ignore future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "org.slf4j", artifactId = "slf4j-nop" } ]

labels: test-library-update, semver-patch

Superseded by #91.


Fix update state check

@derrickstaten

@shortstuffsushi I'm not sure what the logic is but it doesn't seem to pick the right state in some cases.

isReferrable not set as part of initSession
on a background and re-foreground on first launch. It just keeps sending up is_referrable: 1.
once I kill the app and launch a second time, is_referrable is 0 as expected.

So far all other cases I tested seem normal.

:+1: really nasty diff haha. I trust you here. The behavior was as expected


fix: dockerfile dev file

We use Dockerfile.dev to build a tag dev. Our current Dockerfile.dev copied shield to /usr/local/bin/shield but the Dockerfile is copying shield to usr/bin/shield.
We expect the same path between Dockerfile and Dockerfile.dev. We need to update Dockerfile.dev so shield is copied to /usr/bin/shield.
Changes

Copy shield to usr/bin
Add glibc for compatibility purpose

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 50.968%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
2342

Relevant Lines:
4595

💛  - Coveralls

can you please add description ?

@krtkvrm the details is in the issue https://github.com/odpf/shield/issues/141
but anyway let me add it again here

@krtkvrm @AkarshSatija can we merge this?


feat(custom-rule-feat): Allow skip-comment to accept configurable comment tokens

[x] allow configuration
[x] add 'FIXME:' to defaults

docs

[x] document configuration options, add examples to rules

:tada: This PR is included in version 3.5.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Blur tool

The blur tool is special mode which would have people to hide sensitive information on their images.

Follow-up: #78


Possible bug in max_length for str | list[str]

Initial Checks

[X] I confirm that I'm using Pydantic V2 installed directly from the main branch, or equivalent

Description
Running the example code below, I get the following validation error:
Value should have at most 4 items after validation, not 4 [type=too_long, input_value='abcd', input_type=str]
    For further information visit https://errors.pydantic.dev/2.1.2/v/too_long

The problem goes away if I replace the annotation str | list[str] with str. The problem also goes away if I set max_length=5.
Example Code
from pydantic import BaseModel, Field

class Foo(BaseModel):
    field: str | list[str] = Field(max_length=4)

Foo(field="abcd")

Python, Pydantic & OS Version
pydantic version: 2.0.2
        pydantic-core version: 2.1.2 release build profile
                 install path: venv/lib/python3.11/site-packages/pydantic
               python version: 3.11.4 | packaged by conda-forge | (main, Jun 10 2023, 18:08:17) [GCC 12.2.0]
                     platform: Linux-5.10.0-23-cloud-amd64-x86_64-with-glibc2.31
     optional deps. installed: ['typing-extensions']

Selected Assignee: @lig

This is already fixed and doesn't reproduce in Pydantic v2.1.1 which is latest version to date.


fix: 修复弹窗全屏按钮异常关闭的问题(#1177)

General

✏ Mark the necessary items without changing the structure of the PR template.

[x] Pull request template structure not broken

Type

ℹ What types of changes does your code introduce?

👉 Put an x in the boxes that apply

[x] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] This change requires a documentation update

Checklist

ℹ Check all checkboxes - this will indicate that you have done everything in accordance with the rules in CONTRIBUTING.

👉 Put an x in the boxes that apply.

[x] My code follows the style guidelines of this project
[x] Is the code format correct
[x] Is the git submission information standard?
[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my own code
[ ] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[x] My changes generate no new warnings
[ ] I have added tests that prove my fix is effective or that my feature works
[ ] New and existing unit tests pass locally with my changes
[ ] Any dependent changes have been merged and published in downstream modules

此PR有错误，会导致Modal在点击遮罩和按下Esc时无法关闭


Investigate possibly broken Docker SIGTERM delivery

@rsokolowski and I found the following behavior last week when we were working with someone who was trying to run some stuff on Kubernetes. Note that this appears to be a Docker problem, not a Kubernetes problem, but I'm filing it here for now so we can verify that it's reproducible before filing a bug against Docker.
Start two containers on the same machine, each a shell script that traps SIGTERM and prints something like “I received SIGTERM” and quits. Then do “docker stop” and observe that one container exits via the SIGTERM handler path and the other just gets SIGKILL.

Are they both the same container image?  There's a known difference between
containers that use docker's CMD vs ENTRYPOINT statement.
On Tue, Mar 17, 2015 at 9:48 PM, David Oppenheimer<EMAIL_ADDRESS>
wrote:

@rsokolowski https://github.com/rsokolowski and I found the following
behavior last week when we were working with someone who was trying to run
some stuff on Kubernetes. Note that this appears to be a Docker problem,
not a Kubernetes problem, but I'm filing it here for now so we can verify
that it's reproducible before filing a bug against Docker.
Start two containers on the same machine, each a shell script that traps
SIGTERM and prints something like “I received SIGTERM” and quits. Then do
“docker stop” and observe that one container exits via the SIGTERM handler
path and the other just gets SIGKILL.
—
Reply to this email directly or view it on GitHub
https://github.com/GoogleCloudPlatform/kubernetes/issues/5585.

Yes, same container image.
I can't remember if the Dockerfile was using CMD or ENTRYPOINT. If Rafal doesn't remember, I can ask the person we were working with.
And to clarify my description of the problem -- "the other just gets SIGKILL" should say "and the other just gets SIGKILL after the grace period has expired"

if it is the same container it should behave the same :)
On Tue, Mar 17, 2015 at 9:59 PM, David Oppenheimer<EMAIL_ADDRESS>
wrote:

Yes, same container image.
I can't remember if the Dockerfile was using CMD or ENTRYPOINT. If Rafal
doesn't remember, I can ask the person we were working with.
And to clarify my description of the problem -- "the other just gets
SIGKILL" should say "and the other just gets SIGKILL after the grace period
has expired"
—
Reply to this email directly or view it on GitHub
https://github.com/GoogleCloudPlatform/kubernetes/issues/5585#issuecomment-82740067
.

What version of docker and what OS were you using?
I can't reproduce this problem at all. I ran the following command in two terminals.
docker run -i ubuntu /bin/bash -c "trap 'echo term ; exit' SIGTERM ; echo waiting ;  read"
Then I docker stop both of them, and both processes printed "term" and exit.

Thanks for looking into it, Yu-Ju. I emailed the person who had the problem to tell him we couldn't reproduce it, and here's what he said:
I looked a bit more into it earlier this week and figured out what the problem was. Nothing wrong with docker or kubernetes.
Since the script was doing a sleep 15, SIGTERM was not handled by bash until the sleep subprocess had terminated. Seems like bash is not forwarding signals to subprocesses, and only handles the signals when they exit.
Since the grace period is 10 seconds, we were seeing the nondeterministic behaviour where 2/3 of the time it just got killed. (15-5)/15.
The solution was to run the sleep in the background, keep track of the pid and wait for it with bash builtin wait. This will cause bash to actually handle signals while waiting. So we could then terminate sleep and do the unregistration. It works flawlessly now :)


Warning "InsecurePlatformWarning" is treated as an error

Livestreamer is outputting a warning when starting it on a standard macos installation.
Marcos-iMac:~ marco$ livestreamer http://www.twitch.tv/streamurl medium
[cli][info] Found matching plugin twitch for URL http://www.twitch.tv/streamurl
/Library/Python/2.7/site-packages/requests-2.7.0-py2.7.egg/requests/packages/urllib3/util/ssl_.py:90: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.
  InsecurePlatformWarning
[cli][info] Available streams: audio, high, low, medium, mobile (worst), source (best)
[cli][info] Opening stream: medium (hls)
[cli][info] Starting player: /Applications/VLC.app/Contents/MacOS/VLC

If I understand this correctly, an update to a newer python version would fix this (Apple is installing python 2.7.6 on macos 10.10.4). The stream is working just fine though, its just a warning.
Unfortunately livestreamer-twitch-gui is displaying a "Couldn't start the stream" error message with exactly this message. The stream was started fine though.
Maybe you should ignore warnings?
When I click "close" in the error message, the stream window is getting closed, even though it was running fine ... really :- )
BTW: The text in the error message box can't be selected with mouse

Yep, I know (#115, #112, #96, #69 and https://github.com/bastimeyer/livestreamer-twitch-gui/issues/69#issuecomment-97127886 :weary:)
I've already started working on a reimplementation of the stream launch procedure, so warnings like these can be handled in a better way and can be separated from the error messages. I'm also rewriting the modal dialog system for this, so it's quite a bit of work...

The text in the error message box can't be selected with mouse

Noted, thanks!

hehe, maybe you should leave the issue open then and really fix it :smile:


第九章0.2执行出现Segmentation fault (core dumped)错误

在程序执行到string dataset_dir = myslam::Config::get ( "dataset_dir" );时出现Segmentation fault (core dumped)错误
Program received signal SIGSEGV, Segmentation fault.
0x00007ffff6bfc94a in cv::FileNode::ptr() [clone .localalias.329] ()
from /usr/local/lib/libopencv_core.so.4.1
(gdb) where
#0  0x00007ffff6bfc94a in cv::FileNode::ptr() [clone .localalias.329] ()
from /usr/local/lib/libopencv_core.so.4.1
#1  0x00007ffff6bfca39 in cv::FileNode::type() const ()
from /usr/local/lib/libopencv_core.so.4.1
#2  0x00007ffff6bfca99 in cv::FileNode::isMap() const ()
from /usr/local/lib/libopencv_core.so.4.1
#3  0x00007ffff6c01db1 in cv::FileNode::operator[](std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&) const ()
from /usr/local/lib/libopencv_core.so.4.1
#4  0x00007ffff6c01f61 in cv::FileStorage::operator[](std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&) const ()
from /usr/local/lib/libopencv_core.so.4.1
#5  0x0000555555554fa9 in main ()
怀疑和config.h里的模板get函数有关系，却不知道怎么解。请大神指教。

在程序执行到string dataset_dir = myslam::Config::get ( "dataset_dir" );时出现Segmentation fault (core dumped)错误
Program received signal SIGSEGV, Segmentation fault.
0x00007ffff6bfc94a in cv::FileNode::ptr() [clone .localalias.329] ()
from /usr/local/lib/libopencv_core.so.4.1
(gdb) where
#0 0x00007ffff6bfc94a in cv::FileNode::ptr() [clone .localalias.329] ()
from /usr/local/lib/libopencv_core.so.4.1
#1 0x00007ffff6bfca39 in cv::FileNode::type() const ()
from /usr/local/lib/libopencv_core.so.4.1
#2 0x00007ffff6bfca99 in cv::FileNode::isMap() const ()
from /usr/local/lib/libopencv_core.so.4.1
#3 0x00007ffff6c01db1 in cv::FileNode::operator[](std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&) const ()
from /usr/local/lib/libopencv_core.so.4.1
#4 0x00007ffff6c01f61 in cv::FileStorage::operator[](std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&) const ()
from /usr/local/lib/libopencv_core.so.4.1
#5 0x0000555555554fa9 in main ()
怀疑和config.h里的模板get函数有关系，却不知道怎么解。请大神指教。

I meet the problem like yours. it seems like yaml file read failed. but I can‘t figure out why. Have you solved the problem? I runn in windows environment.

I also met the error from myslam::Config::get().
I'm using Visual Studio 2015 and OpenCV 4.3.
I changed the code of the function Config::setParameterFile(const std::string& filename) in config.cpp.
// config_->file_ = cv::FileStorage( filename.c_str(), cv::FileStorage::READ );
config_->file_.open(filename.c_str(), cv::FileStorage::READ);

After I changed this, Config::get() worked properly in my environment so can you try this?

Thank you so much @mitsurukato24 , it works


Updated french translation

Changed the «used» translation from «Usé» to «Porté» because it is more relevant in the context.
Changes / Comments
Roll20 Requests
Comments are very helpful for reviewing the code changes. Please answer the relevant questions below in your comment.

[ ] Does the pull request title have the sheet name(s)? Include each sheet name.
[ ] Is this a bug fix?
[ ] Does this add functional enhancements (new features or extending existing features) ?
[ ] Does this add or change functional aesthetics (such as layout or color scheme) ?
[ ] If changing or removing attributes, what steps have you taken, if any, to preserve player data ?
[ ] If this is a new sheet, did you follow Building Character Sheets standards ?

If you do not know English. Please leave a comment in your native language.

@elbj I'm happy to merge this but I think Roll20 wanted it via another way:

Please email Cassie at<EMAIL_ADDRESS>and she will get you an invite to our Crowdin within 48 hours. Be sure to include the languages you would like to translate, Please use that for future translation updates! Thanks for all you do!

Have you reached out to them?


CentOS not working

Hello,
I've been using this for a long time on Debian based servers, however today I tried it on a centos based server (actually cloudlinux) and it didn't work, I get connection reset on the browser. Curl doesn't output anything also...
Any ideias and/or how to track the issue?
Thank you!

I get this under the log file:
	Traceback (most recent call last):
	  File "/usr/lib64/python2.6/site-packages/twisted/python/log.py", line 69, in callWithContext
	    return context.call({ILogContext: newCtx}, func, *args, **kw)
	  File "/usr/lib64/python2.6/site-packages/twisted/python/context.py", line 59, in callWithContext
	    return self.currentContext().callWithContext(ctx, func, *args, **kw)
	  File "/usr/lib64/python2.6/site-packages/twisted/python/context.py", line 37, in callWithContext
	    return func(*args,**kw)
	  File "/usr/lib64/python2.6/site-packages/twisted/internet/selectreactor.py", line 146, in _doReadOrWrite
	    why = getattr(selectable, method)()
	--- <exception caught here> ---
	  File "/usr/lib64/python2.6/site-packages/twisted/internet/tcp.py", line 932, in doRead
	    protocol = self.factory.buildProtocol(self._buildAddr(addr))
	  File "/usr/lib/python2.6/site-packages/twisted/plugins/multisocks_plugin.py", line 42, in buildProtocol
	    return MultiSOCKSv4(self.interface, self.whitelist)
	  File "/usr/lib/python2.6/site-packages/twisted/plugins/multisocks_plugin.py", line 8, in __init__
	    SOCKSv4.__init__(self, None, reactor)
	exceptions.TypeError: __init__() takes at most 2 arguments (3 given)```

This issue was caused due to the old version of Python included on CentOS / CloudLinux servers. If anyone is have problems with those, the best option is to install a different version of Python side-by-side with the system older version (so you won't break yum or anything) and then run multi-scoks on a virtual env.
You can follow this introductions in order to get it working...
Install a compatible Python
sudo yum groupinstall -y development
sudo yum install -y zlib-dev openssl-devel sqlite-devel bzip2-devel
wget https://www.python.org/ftp/python/2.7.6/Python-2.7.6.tgz
tar xzf Python-2.7.6.tgz
cd Python-2.7.6
./configure --prefix=/usr/local
sudo make
sudo make alt install

This will install a secondary Python at /usr/local. Your system Python will sill be the older version. You can invoke the old version using python or the newer one using python2.7 directly into your console.
You can check if everything is fine by issuing:
user@server [~]# python -V
Python 2.6.6
user@server [~]# python2.7 -V
Python 2.7.6
user@server [~]#

As you can see, the two versions are installed and working without conflicting with each other!
Install PIP
wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py --no-index --find-links=/local/copies # Maybe ignore this line... keep going if error.
python get-pip.py --user
pip install virtualenv

Setup virtual env
A virtualenv works like a sandbox where you can run a specific version of Python with its own plugins. Its basically a folder. So, create a folder for your project like ~/projectFolder and cd to it.
mkdir ~/projectFolder
cd ~/projectFolder
virtualenv -p /usr/local/bin/python2.7 ~/projectFolder

Activate the virtualenv
source ~/projectFolder/bin/activate

Now your console should have the project name at the begging.
Install Twistd and multi-socks
pip install Twisted
wget https://github.com/aivarsk/multi-socks/archive/master.zip
unzip master.zip
cp multi-socks-master/* . -R
python setup.py install

Now you can run multi-socks: `twistd multi-socks -a x.x.x.x:yy -w ip.txt.
Once you're finished, you should exit the virtual env by issuing:
deactivate

Please Note: Every time you need to launch multi-socks, you really need to activate the virtual env by issuing:
cd /projectFolder
source ~/projectFolder/bin/activate

Only this way you'll be sure to be running the right version of Python.
Warning: Never ever consider replacing the system version of Python on CentOS or CloudLinux with the new version, this will break yum and a bunch of other system tools. Follow the steps I provided on how to install a different version and have them both.


[MetaSchedule] Introduce MergedDatabase

Following up https://github.com/apache/tvm/pull/12520 and https://github.com/apache/tvm/pull/12626, this PR introduces MergedDatabase,
which allow users to compose multiple databases so that the high-level
IR could select the best tuning records among them.
The MergedDatabase also comes with an extra field preferred to allow
users to override tuning records from other databases. A classic usecase
of the preferred parameter is through handcrafted schedule functions:
def schedule_fn(sch: tir.Schedule) -> bool:
  if "nn_conv2d" in sch.mod.attrs["task_name"]:
    handcrafted_scheduling(sch)
    return True
  return False

with ms.database.MergedDatabase(
  preferred=ms.database.ScheduleFn(schedule_fn),
  # ^^^^ override scheduling decisions
  databases=[database],
  fallback=libtorch_database,
  # ^^^^ fallback to libtorch
):
  lib = relay.build(...)

cc @Hzfengsy @junrushao1994

Depends on #12626.

This is ready for review! CC: @sunggg @zxybazh @vinx13

Might need some deliberation on the API design

Significantly amended the APIs and docs according to feedbacks from @sunggg @MasterJH5574 @spectrometerHBH @Kathryn-cat @tqchen. Please re-review :-)

Thank you all for super valuable suggestions!


Functionalities -> Features

Perhaps instead of stating the Functionalities vs other apps (very vague)
You could create a check list of the features currently available and what you'd expect from an other app. 😄

[x] Item 1
[x] Item 2

hi mxcop,
I took it into consideration and didn't know what to have staying there instead of functionality, but I changed 'other apps' to chess.com since that is the most used chess application in the world.
It is a checking table with some fun emotes ;) to make it even more CLEAR instead of checker boxes :)

I'm pretty sure that chess.com has aun pesant tho xD

I have never seen it and I have never got the chance to do that move with my pawns :")
so I don't know but I will look into it :D

I updated everything and now the issue has been resolved! I will now close the issue


Reconsider the title

The current title is:
"Neural Network Model Applications to Reactor Fuel Depletion for Fuel Cycle Modeling"
It's descriptive... but I think it's a little too long and slightly convoluted (model appears twice?). Before submission, let's discuss the best conceivable title (cc: @gwenchee @andrewryh @jbae11).
Some brainstorming below, ordered from very specific to very vague.

"Reactor Fuel Depletion with Neural Networks in Fuel Cycle Simulation"
"Predicting Spent Nuclear Fuel Composition with a Dense Neural Network"
"Applying a Dense Neural Network to Transmutation in a Nuclear Fuel Cycle Simulator"
"Applying a Dense Neural Network to Nuclear Fuel Cycle Simulation"
"Dense Neural Network Approximation of Spent Fuel Composition"
"Deep Learning Approach to Nuclear Fuel Transmutation in Cyclus"
"Deeply Learned Nuclear Fuel Transmutation for Fuel Cycle Simulation"
"Deeply Learned Nuclear Fuel Transmutation"
"Nuclear Fuel Transmutation with Deep Learning in Cyclus"
"Deep Learning in Cyclus"

Here are some words/phrases to substitute for one another, etc.

Deep Learning, Dense Neural Network, Neural Network
Predicting, Approximating, Learning
Approach, Application, Method
Nuclear Fuel Cycle Simulator, Cyclus
Nuclear Fuel Depletion Model, Reactor Model, Transmutation, Spent Fuel Composition, Nuclear Fuel Isotopics

The best titles, IMO, are:

specific
unique
concise
descriptive
exciting

I like:

I like: "Deep Learning Approach to Nuclear Fuel Transmutation in Cyclus"

Thank you for the suggestion, I agree.
I think two things must be in the title:

Fuel Cycle Simulation
Deep Learning

Which will make my champion to be:
''Deep Learning Approach to Nuclear Fuel Transmutation in a Fuel Cycle Simulator''.
I guess we could say
Cyclus, an agent-based Fuel Cycle Simulator, but it's up to the other authors. What yall think?

Thank you for the suggestion, I agree.
I think two things must be in the title:

Fuel Cycle Simulation
Deep Learning

Which will make my champion to be:
''Deep Learning Approach to Nuclear Fuel Transmutation in a Fuel Cycle Simulator''.
I guess we could say
Cyclus, an agent-based Fuel Cycle Simulator, but it's up to the other authors. What yall think?

It is too long.

Yes, I agree the second (cyclus+ ) is far too long.
''Deep Learning Approach to Nuclear Fuel Transmutation in a Fuel Cycle
Simulator'' sounds good to me.
thanks!
On Tue, Jun 25, 2019 at 9:45 AM Andrei Rykhlevskii<EMAIL_ADDRESS>wrote:

Thank you for the suggestion, I agree.
I think two things must be in the title:

Fuel Cycle Simulation
Deep Learning

Which will make my champion to be:
''Deep Learning Approach to Nuclear Fuel Transmutation in a Fuel Cycle
Simulator''.
I guess we could say
Cyclus, an agent-based Fuel Cycle Simulator, but it's up to the other
authors. What yall think?
It is too long.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/jbae11/depletion_rom/issues/31?email_source=notifications&email_token=AADAFK5M5XXJBW6NES7UPVDP4IVSJA5CNFSM4H2CCF72YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODYQPWBI#issuecomment-505477893,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AADAFK4EUCND5DZ7WN2WCZDP4IVSJANCNFSM4H2CCF7Q
.

--
http://katyhuff.github.com

d54606171379dc880721f0678da6c6ccade66fdd


pod-gateway's injected container fails on gateway-init with documented config

Details
Helm chart name and version:
pod-gateway 5.0.1 and 2.0.0
Container name and tag:
default with each helm release
What steps did you take and what happened:

create a new, blank k3s node using

k3s server --disable traefik --disable hostpath --disable servicelb

install cert-manager

$ kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.6.0/cert-manager.yaml

follow the instructions on https://docs.k8s-at-home.com/guides/pod-gateway/ up to and including spawning the terminal

Relevant Helm values:
helm install pod-gateway k8s-at-home/pod-gateway --set routed_namespaces={vpn}

What did you expect to happen:
the terminal yaml would come up and I would get output similar to what is described in https://docs.k8s-at-home.com/guides/pod-gateway/
Anything else you would like to add:

actual output from k logs -n vpn terminal-56487b4d9d-pvfpc gateway-init
+ cat /default_config/settings.sh
#!/bin/sh
# hostname of the gateway - it must accept vxlan and DHCP traffic
# clients get it as env variable
GATEWAY_NAME="${gateway}"
# K8S DNS IP address
# clients get it as env variable
K8S_DNS_IPS="${K8S_DNS_ips}"
# Blank  sepated IPs not sent to the POD gateway but to the default K8S
# This is needed, for example, in case your CNI does
# not add a non-default rule for the K8S addresses (Flannel does)
NOT_ROUTED_TO_GATEWAY_CIDRS=""

# Vxlan ID to use
VXLAN_ID="42"
# VXLAN need an /24 IP range not conflicting with K8S and local IP ranges
VXLAN_IP_NETWORK="172.16.0"
# Keep a range of IPs for static assignment in nat.conf
VXLAN_GATEWAY_FIRST_DYNAMIC_IP=20

# If using a VPN, interface name created by it
VPN_INTERFACE=tun0
# Prevent non VPN traffic to leave the gateway
VPN_BLOCK_OTHER_TRAFFIC=true
# If VPN_BLOCK_OTHER_TRAFFIC is true, allow VPN traffic over this port
VPN_TRAFFIC_PORT=443
# Traffic to these IPs will be send through the K8S gateway
VPN_LOCAL_CIDRS="<IP_ADDRESS>/8 <IP_ADDRESS>/16"

# DNS queries to these domains will be resolved by K8S DNS instead of
# the default (typcally the VPN client changes it)
+ . /default_config/settings.sh
+ GATEWAY_NAME=pod-gateway.default.svc.cluster.local
+ K8S_DNS_IPS=<IP_ADDRESS>
+ NOT_ROUTED_TO_GATEWAY_CIDRS=
+ VXLAN_ID=42
+ VXLAN_IP_NETWORK=172.16.0
+ VXLAN_GATEWAY_FIRST_DYNAMIC_IP=20
+ VPN_INTERFACE=tun0
+ VPN_BLOCK_OTHER_TRAFFIC=true
+ VPN_TRAFFIC_PORT=443
+ VPN_LOCAL_CIDRS='<IP_ADDRESS>/8 <IP_ADDRESS>/16'
+ DNS_LOCAL_CIDRS=local
+ cat /config/settings.sh
DNS_LOCAL_CIDRS="local"#!/bin/sh
# Generated by pod-gateway
DNS_LOCAL_CIDRS="local"
NOT_ROUTED_TO_GATEWAY_CIDRS=""
VPN_BLOCK_OTHER_TRAFFIC="false"
VPN_INTERFACE="tun0"
VPN_LOCAL_CIDRS="<IP_ADDRESS>/8 <IP_ADDRESS>/16"
VPN_TRAFFIC_PORT="443"
VXLAN_GATEWAY_FIRST_DYNAMIC_IP="20"
VXLAN_ID="42"
VXLAN_IP_NETWORK="172.16.0"
+ . /config/settings.sh
+ DNS_LOCAL_CIDRS=local
+ NOT_ROUTED_TO_GATEWAY_CIDRS=
+ VPN_BLOCK_OTHER_TRAFFIC=false
+ VPN_INTERFACE=tun0
+ VPN_LOCAL_CIDRS='<IP_ADDRESS>/8 <IP_ADDRESS>/16'
+ VPN_TRAFFIC_PORT=443
+ VXLAN_GATEWAY_FIRST_DYNAMIC_IP=20
+ VXLAN_ID=42
+ VXLAN_IP_NETWORK=172.16.0
+ grep -q vxlan0
+ ip addr
+ /sbin/ip route
+ awk '/default/ { print $3 }'
+ K8S_GW_IP=
+ echo 'Deleting existing default GWs'
+ ip route del 0/0
RTNETLINK answers: No such process
+ /bin/true
Deleting existing default GWs
+ ping -c 1 -W 1000 <IP_ADDRESS>
ping: sendto: Network unreachable
PING <IP_ADDRESS> (<IP_ADDRESS>): 56 data bytes
+ ip addr
+ ip route
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet <IP_ADDRESS>/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
3: eth0@if36: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 8950 qdisc noqueue state UP group default
    link/ether 02:b5:3d:5c:db:c9 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet <IP_ADDRESS>/24 brd <IP_ADDRESS> scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::b5:3dff:fe5c:dbc9/64 scope link
       valid_lft forever preferred_lft forever
<IP_ADDRESS>/24 dev eth0 proto kernel scope link src <IP_ADDRESS>
<IP_ADDRESS>/16 via <IP_ADDRESS> dev eth0
+ echo <IP_ADDRESS>
+ cut -d ' ' -f 1
+ K8S_DNS_IP=<IP_ADDRESS>
+ dig +short pod-gateway.default.svc.cluster.local @<IP_ADDRESS>

I've also tried setting VXLAN_IP_NETWORK="<IP_ADDRESS>/24" but this has no effect except to change the environment variable
I noticed the pod-gateway svc has no cluster IP - not sure if this is important but it stood out to me k get svc
NAME                  TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
kubernetes            ClusterIP   <IP_ADDRESS>       <none>        443/TCP    35m
pod-gateway           ClusterIP   None            <none>        4789/UDP   21m
pod-gateway-webhook   ClusterIP   <IP_ADDRESS>   <none>        8080/TCP   21m

same issue here...

Thanks for reporting - I will take a look over the weekend to it.
If you are available in Discord I might need to ping with some questions in your setup.

Thanks for reporting - I will take a look over the weekend to it.
If you are available in Discord I might need to ping with some questions in your setup.

yeah...lucacalcaterra#7683

Same problem. 3x Raspberry Pi 4B nodes running Talos OS in my case.
+ cat /default_config/settings.sh
#!/bin/sh
# hostname of the gateway - it must accept vxlan and DHCP traffic
# clients get it as env variable
GATEWAY_NAME="${gateway}"
# K8S DNS IP address
# clients get it as env variable
K8S_DNS_IPS="${K8S_DNS_ips}"
# Blank  sepated IPs not sent to the POD gateway but to the default K8S
# This is needed, for example, in case your CNI does
# not add a non-default rule for the K8S addresses (Flannel does)
NOT_ROUTED_TO_GATEWAY_CIDRS=""

# Vxlan ID to use
VXLAN_ID="42"
# VXLAN need an /24 IP range not conflicting with K8S and local IP ranges
VXLAN_IP_NETWORK="172.16.0"
# Keep a range of IPs for static assignment in nat.conf
VXLAN_GATEWAY_FIRST_DYNAMIC_IP=20

# If using a VPN, interface name created by it
VPN_INTERFACE=tun0
# Prevent non VPN traffic to leave the gateway
VPN_BLOCK_OTHER_TRAFFIC=true
# If VPN_BLOCK_OTHER_TRAFFIC is true, allow VPN traffic over this port
VPN_TRAFFIC_PORT=443
# Traffic to these IPs will be send through the K8S gateway
VPN_LOCAL_CIDRS="<IP_ADDRESS>/8 <IP_ADDRESS>/16"

# DNS queries to these domains will be resolved by K8S DNS instead of
# the default (typcally the VPN client changes it)
+ . /default_config/settings.sh
+ GATEWAY_NAME=vpn-pia-netherlands-pod-gateway.vpn.svc.cluster.local
+ K8S_DNS_IPS=<IP_ADDRESS>
+ NOT_ROUTED_TO_GATEWAY_CIDRS=
+ VXLAN_ID=42
+ VXLAN_IP_NETWORK=172.16.0
+ VXLAN_GATEWAY_FIRST_DYNAMIC_IP=20
+ VPN_INTERFACE=tun0
+ VPN_BLOCK_OTHER_TRAFFIC=true
+ VPN_TRAFFIC_PORT=443
+ VPN_LOCAL_CIDRS='<IP_ADDRESS>/8 <IP_ADDRESS>/16'
+ DNS_LOCAL_CIDRS=local
+ cat /config/settings.sh
DNS_LOCAL_CIDRS="local"#!/bin/sh
# Generated by vpn-pia-netherlands-pod-gateway
DNS_LOCAL_CIDRS="local"
NOT_ROUTED_TO_GATEWAY_CIDRS=""
VPN_BLOCK_OTHER_TRAFFIC="false"
VPN_INTERFACE="tun0"
VPN_LOCAL_CIDRS="<IP_ADDRESS>/16 <IP_ADDRESS>/8"
VPN_TRAFFIC_PORT="443"
VXLAN_GATEWAY_FIRST_DYNAMIC_IP="20"
VXLAN_ID="42"
VXLAN_IP_NETWORK="172.16.0"
+ . /config/settings.sh
+ DNS_LOCAL_CIDRS=local
+ NOT_ROUTED_TO_GATEWAY_CIDRS=
+ VPN_BLOCK_OTHER_TRAFFIC=false
+ VPN_INTERFACE=tun0
+ VPN_LOCAL_CIDRS='<IP_ADDRESS>/16 <IP_ADDRESS>/8'
+ VPN_TRAFFIC_PORT=443
+ VXLAN_GATEWAY_FIRST_DYNAMIC_IP=20
+ VXLAN_ID=42
+ VXLAN_IP_NETWORK=172.16.0
+ ip addr
+ grep -q vxlan0
+ /sbin/ip route
+ awk '/default/ { print $3 }'
+ K8S_GW_IP=
+ echo 'Deleting existing default GWs'
Deleting existing default GWs
+ ip route del 0/0
RTNETLINK answers: No such process
+ /bin/true
+ ping -c 1 -W 1000 <IP_ADDRESS>
PING <IP_ADDRESS> (<IP_ADDRESS>): 56 data bytes
ping: sendto: Network unreachable
+ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet <IP_ADDRESS>/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: tunl0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1000
    link/ipip <IP_ADDRESS> brd <IP_ADDRESS>
3: sit0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1000
    link/sit <IP_ADDRESS> brd <IP_ADDRESS>
4: ip6tnl0@NONE: <NOARP> mtu 1452 qdisc noop state DOWN group default qlen 1000
    link/tunnel6 :: brd :: permaddr a26:b62e:ed69::
6: eth0@if21: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UP group default
    link/ether 06:ae:14:bd:d2:db brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet <IP_ADDRESS>/24 brd <IP_ADDRESS> scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::4ae:14ff:febd:d2db/64 scope link
       valid_lft forever preferred_lft forever
+ ip route
<IP_ADDRESS>/16 via <IP_ADDRESS> dev eth0
<IP_ADDRESS>/24 dev eth0 proto kernel scope link src <IP_ADDRESS>
+ echo <IP_ADDRESS>
+ cut -d ' ' -f 1
+ K8S_DNS_IP=<IP_ADDRESS>
+ dig +short vpn-pia-netherlands-pod-gateway.vpn.svc.cluster.local @<IP_ADDRESS>
+ GATEWAY_IP=';; connection timed out; no servers could be reached'

➜  gateway kubectl get pods,services -o wide -n kube-system

NAME                                              READY   STATUS    RESTARTS       AGE     IP              NODE                  NOMINATED NODE   READINESS GATES
pod/coredns-846d8c56b8-74z2h                      1/1     Running   2 (39h ago)    4d11h   <IP_ADDRESS>     talos-192-168-7-128   <none>           <none>
pod/coredns-846d8c56b8-lw6f6                      1/1     Running   2 (39h ago)    4d11h   <IP_ADDRESS>     talos-192-168-7-128   <none>           <none>
pod/kube-apiserver-talos-192-168-7-128            1/1     Running   1 (39h ago)    2d21h   <IP_ADDRESS>   talos-192-168-7-128   <none>           <none>
pod/kube-controller-manager-talos-192-168-7-128   1/1     Running   5 (81m ago)    2d21h   <IP_ADDRESS>   talos-192-168-7-128   <none>           <none>
pod/kube-flannel-4kctf                            1/1     Running   2 (39h ago)    4d11h   <IP_ADDRESS>   talos-192-168-7-136   <none>           <none>
pod/kube-flannel-drwsr                            1/1     Running   2 (39h ago)    4d11h   <IP_ADDRESS>   talos-192-168-7-128   <none>           <none>
pod/kube-flannel-wgssr                            1/1     Running   80 (39h ago)   4d11h   <IP_ADDRESS>   talos-192-168-7-129   <none>           <none>
pod/kube-proxy-6r5x8                              1/1     Running   65 (39h ago)   4d11h   <IP_ADDRESS>   talos-192-168-7-129   <none>           <none>
pod/kube-proxy-fsjmc                              1/1     Running   2 (39h ago)    4d11h   <IP_ADDRESS>   talos-192-168-7-128   <none>           <none>
pod/kube-proxy-v7wzq                              1/1     Running   2 (39h ago)    4d11h   <IP_ADDRESS>   talos-192-168-7-136   <none>           <none>
pod/kube-scheduler-talos-192-168-7-128            1/1     Running   5 (81m ago)    2d21h   <IP_ADDRESS>   talos-192-168-7-128   <none>           <none>

NAME               TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)         AGE     SELECTOR
service/kube-dns   ClusterIP   <IP_ADDRESS>   <none>        53/UDP,53/TCP   4d11h   k8s-app=kube-dns
➜  gateway kubectl get pods,services -o wide -n vpn

NAME                                                          READY   STATUS    RESTARTS      AGE   IP            NODE                  NOMINATED NODE   READINESS GATES
pod/vpn-pia-netherlands-pod-gateway-54578bd6d5-6d9h4          2/2     Running   0             92m   <IP_ADDRESS>   talos-192-168-7-129   <none>           <none>
pod/vpn-pia-netherlands-pod-gateway-webhook-6bb54866c-5xrtl   1/1     Running   2 (92m ago)   92m   <IP_ADDRESS>   talos-192-168-7-136   <none>           <none>

NAME                                              TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE   SELECTOR
service/vpn-pia-netherlands-pod-gateway           ClusterIP   None             <none>        4789/UDP   92m   app.kubernetes.io/instance=vpn-pia-netherlands,app.kubernetes.io/name=pod-gateway
service/vpn-pia-netherlands-pod-gateway-webhook   ClusterIP   <IP_ADDRESS>   <none>        8080/TCP   92m   app.kubernetes.io/instance=vpn-pia-netherlands,app.kubernetes.io/name=pod-gateway-webhook
➜  gateway kubectl get pods,services -o wide -n qbittorrent

NAME                              READY   STATUS                  RESTARTS       AGE   IP            NODE                  NOMINATED NODE   READINESS GATES
pod/qbittorrent-bcdf49b47-lhr9l   0/2     Init:CrashLoopBackOff   17 (43s ago)   67m   <IP_ADDRESS>   talos-192-168-7-136   <none>           <none>

NAME                  TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)    AGE   SELECTOR
service/qbittorrent   ClusterIP   <IP_ADDRESS>   <none>        8080/TCP   77m   app.kubernetes.io/instance=qbittorrent,app.kubernetes.io/name=qbittorrent

At a glance, appears that the problem is that the container is in the subnet <IP_ADDRESS>/24, the K8S_DNS is in <IP_ADDRESS>/24, and that's inaccessible as the container dropped the default routes (ip route del 0/0).
Seeing similar in OP's post, seems like they have a pod in <IP_ADDRESS>/24 that's trying to reach their DNS over on <IP_ADDRESS>/24
Happy to chat through it also ylt#0001

Thanks @ylt to report how you got it working - yeah, as more options for cluster networks become available we would extend the intructions.
@cyclingwithelephants @lucacalcaterra - does setting NOT_ROUTED_TO_GATEWAY_CIDRS help in your case as well?

@ylt so whats your specific configuration? mine is:
---
apiVersion: helm.toolkit.fluxcd.io/v2beta1
kind: HelmRelease
metadata:
  name: vpn-gateway
  namespace: default
spec:
  interval: 5m
  chart:
    spec:
      # renovate: registryUrl=https://k8s-at-home.com/charts/
      chart: pod-gateway
      version: 5.1.0
      sourceRef:
        kind: HelmRepository
        name: k8s-at-home-charts
        namespace: flux-system
      interval: 5m

  # See https://github.com/k8s-at-home/charts/blob/master/charts/pod-gateway/values.yaml
  values:
    settings:
      # Route internal K8s and local home traffic in to the defaullt K8S gateway
      NOT_ROUTED_TO_GATEWAY_CIDRS: "<IP_ADDRESS>/12 <IP_ADDRESS>/24"
      VPN_LOCAL_CIDRS: "<IP_ADDRESS>/12 <IP_ADDRESS>/24"
      # Use a different VXLAN network segment that does not conflict with the above
      VXLAN_IP_NETWORK: "192.168.242"
    routed_namespaces:
      - vpn

im using calico with my home net having the <IP_ADDRESS>/24 cidr and the exact same output as yours:
kl -f terminal-56487b4d9d-pjghr -c gateway-init
+ cat /default_config/settings.sh
#!/bin/sh
# hostname of the gateway - it must accept vxlan and DHCP traffic
# clients get it as env variable
GATEWAY_NAME="${gateway}"
# K8S DNS IP address
# clients get it as env variable
K8S_DNS_IPS="${K8S_DNS_ips}"
# Blank  sepated IPs not sent to the POD gateway but to the default K8S
# This is needed, for example, in case your CNI does
# not add a non-default rule for the K8S addresses (Flannel does)
NOT_ROUTED_TO_GATEWAY_CIDRS=""

# Vxlan ID to use
VXLAN_ID="42"
# VXLAN need an /24 IP range not conflicting with K8S and local IP ranges
VXLAN_IP_NETWORK="172.16.0"
# Keep a range of IPs for static assignment in nat.conf
VXLAN_GATEWAY_FIRST_DYNAMIC_IP=20

# If using a VPN, interface name created by it
VPN_INTERFACE=tun0
# Prevent non VPN traffic to leave the gateway
VPN_BLOCK_OTHER_TRAFFIC=true
# If VPN_BLOCK_OTHER_TRAFFIC is true, allow VPN traffic over this port
VPN_TRAFFIC_PORT=443
# Traffic to these IPs will be send through the K8S gateway
VPN_LOCAL_CIDRS="<IP_ADDRESS>/8 <IP_ADDRESS>/16"

# DNS queries to these domains will be resolved by K8S DNS instead of
# the default (typcally the VPN client changes it)
+ . /default_config/settings.sh
+ GATEWAY_NAME=vpn-gateway-pod-gateway.default.svc.cluster.local
+ K8S_DNS_IPS=<IP_ADDRESS>
+ NOT_ROUTED_TO_GATEWAY_CIDRS=
+ VXLAN_ID=42
+ VXLAN_IP_NETWORK=172.16.0
+ VXLAN_GATEWAY_FIRST_DYNAMIC_IP=20
+ VPN_INTERFACE=tun0
+ VPN_BLOCK_OTHER_TRAFFIC=true
+ VPN_TRAFFIC_PORT=443
+ VPN_LOCAL_CIDRS='<IP_ADDRESS>/8 <IP_ADDRESS>/16'
+ DNS_LOCAL_CIDRS=local
+ cat /config/settings.sh
DNS_LOCAL_CIDRS="local"#!/bin/sh
# Generated by vpn-gateway-pod-gateway
DNS_LOCAL_CIDRS="local"
NOT_ROUTED_TO_GATEWAY_CIDRS="<IP_ADDRESS>/12 <IP_ADDRESS>/24"
VPN_BLOCK_OTHER_TRAFFIC="false"
VPN_INTERFACE="tun0"
VPN_LOCAL_CIDRS="<IP_ADDRESS>/12 <IP_ADDRESS>/24"
VPN_TRAFFIC_PORT="443"
VXLAN_GATEWAY_FIRST_DYNAMIC_IP="20"
VXLAN_ID="42"
VXLAN_IP_NETWORK="192.168.242"
+ . /config/settings.sh
+ DNS_LOCAL_CIDRS=local
+ NOT_ROUTED_TO_GATEWAY_CIDRS='<IP_ADDRESS>/12 <IP_ADDRESS>/24'
+ VPN_BLOCK_OTHER_TRAFFIC=false
+ VPN_INTERFACE=tun0
+ VPN_LOCAL_CIDRS='<IP_ADDRESS>/12 <IP_ADDRESS>/24'
+ VPN_TRAFFIC_PORT=443
+ VXLAN_GATEWAY_FIRST_DYNAMIC_IP=20
+ VXLAN_ID=42
+ VXLAN_IP_NETWORK=192.168.242
+ ip addr
+ grep -q vxlan0
+ /sbin/ip route
+ awk '/default/ { print $3 }'
+ K8S_GW_IP=<IP_ADDRESS>
+ ip route add <IP_ADDRESS>/12 via <IP_ADDRESS>
RTNETLINK answers: Invalid argument
+ /bin/true
+ ip route add <IP_ADDRESS>/24 via <IP_ADDRESS>
+ echo 'Deleting existing default GWs'
Deleting existing default GWs
+ ip route del 0/0
+ ping -c 1 -W 1000 <IP_ADDRESS>
ping: sendto: Network unreachable
PING <IP_ADDRESS> (<IP_ADDRESS>): 56 data bytes
+ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet <IP_ADDRESS>/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
3: eth0@if19: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UP group default
    link/ether a6:44:70:87:b0:5f brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet <IP_ADDRESS>/32 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::a444:70ff:fe87:b05f/64 scope link
       valid_lft forever preferred_lft forever
+ ip route
<IP_ADDRESS> dev eth0 scope link
<IP_ADDRESS>/24 via <IP_ADDRESS> dev eth0
+ echo <IP_ADDRESS>
+ cut -d ' ' -f 1
+ K8S_DNS_IP=<IP_ADDRESS>
+ dig +short vpn-gateway-pod-gateway.default.svc.cluster.local @<IP_ADDRESS>
+ GATEWAY_IP=';; connection timed out; no servers could be reached'

@InsOpDe
Looks like yours is still missing routes. Firstly, your container is only routing <IP_ADDRESS>/24 to k8s gateway, and is missing the <IP_ADDRESS>/12 that you defined (due to an error).
Try running:
kubectl cluster-info dump | grep -m 1 service-cluster-ip-range

and
kubectl cluster-info dump | grep -m 1 cluster-cidr

for me, those come back with:
➜  kubectl cluster-info dump | grep -m 1 service-cluster-ip-range
                            "--service-cluster-ip-range=<IP_ADDRESS>/12",
➜  kubectl cluster-info dump | grep -m 1 cluster-cidr
                                    "--cluster-cidr=<IP_ADDRESS>/16",

I suspect in your case it's likely <IP_ADDRESS>/12 for the service ip range.
Add those to your VPN_LOCAL_CIDRS

I'm using Terraform to provision mine, so is a little different:
resource "helm_release" "pod_gateway" {
  namespace  = var.namespace
  repository = "https://k8s-at-home.com/charts/"
  name       = local.service_name
  chart      = "pod-gateway"
  wait       = false
  values     = [
    yamlencode({
      addons = {
        vpn = {
          enabled = true
          type    = "openvpn"
          configFileSecret = local.secret_name
          openvpn = {
            auth = "${var.pia_username};${var.pia_password}"
          }
        }
      }
      settings = {
        # tun0 for openvpn, wg0 for wireguard
        VPN_INTERFACE = "tun0"
        # Prevent non VPN traffic to leave the gateway
        VPN_BLOCK_OTHER_TRAFFIC = true
        # If VPN_BLOCK_OTHER_TRAFFIC is true, allow VPN traffic over this port
        #    VPN_TRAFFIC_PORT = 443
        # Traffic to these IPs will be send through the K8S gateway
        # change if your K8S cluster or home network uses a different CIDR
        NOT_ROUTED_TO_GATEWAY_CIDRS = "<IP_ADDRESS>/16 <IP_ADDRESS>/12"
        VPN_LOCAL_CIDRS = "<IP_ADDRESS>/16 <IP_ADDRESS>/8"
      }

      routed_namespaces = [] # using Kubed annotation instead
    })
  ]

  depends_on = [
    kubernetes_secret.vpn_config
  ]
}

resource "null_resource" "annotation" {
  triggers = {
#    revision = helm_release.pod_gateway.metadata.0.revision
#    values = helm_release.pod_gateway.metadata.0.values
    date = timestamp()
  }

  provisioner "local-exec" {
    command = <<-EOT
kubectl annotate \
  --overwrite \
  -n ${var.namespace} \
  configmap/${local.service_name}-pod-gateway \
  kubed.appscode.com/sync=${local.annotation_name}=true
    EOT
  }

  depends_on = [
    helm_release.pod_gateway
  ]
}

Thanks for that elaborated answer! It got me great insight in how things work. The documentation could need some updates and insights, too.

Using the default flannel install from k3s, I had the same issue. Setting NOT_ROUTED_TO_GATEWAY_CIDRS: "<IP_ADDRESS>/16 <IP_ADDRESS>/16" fixed the problem for me as well.


Propagate original description to foreign variables

PR#88 was closed and the code has been changed in order to work independently from the autodoc-feature (PR#67).

[x] Tests added
[x] Passes black . && flake8
[x] Fully documented, including whats-new.rst for all changes

I use variables_dict() from utils.py.
Since attrs is already imported in variables.py, the following line would return the same result:
description = attr.fields_dict(other_process_cls)[var_name].metadata["description"])

From my understanding, foreign variables always belong to xsimlab variables. Therefore, we technically could use attr.fields_dict() instead. What do you think, @benbovy ?
My first inclination was, to iterate over variables_dict(other_process_cls).items() but luckily, the construct makes it accessibly as is 👍
There's already a test included in test_variable.py. Should we update this one to account for these changes or is it better to test at another place (e.g. as part of autodoc)?

Thanks @rlange2 !


Expected options to have type 'array' (received hash table)

I thought the convert function solves it, what else can I do to fix it?

Here's how the table looks like:

And here's the ox_target event handler:

addLocalEntity and AddTargetEntity are notably different things and call different functions.

addLocalEntity and AddTargetEntity are notably different things and call different functions.

How calm I missed that.. that's embarrassing, anyway what did fix it is referring to qb-target, not the ox_target..


Precedence issue

Currently:
from cities
select temp_c = (temp - 32) * 3

compiles to:
SELECT
  temp - 32 * 3 AS temp_c
FROM
  cities

...which has the wrong precedence — we should have (temp - 32) * 3

This comment has been here from before I started contributing:
https://github.com/prql/prql/blob/be13c12f91bcf3cd147f9bd30098293da3ea5191/prql-compiler/src/sql/translator.rs#L488
and answer is yes, but not in all cases :D

As ever, s-strings are a way of mitigating this until it's fixed:
from n
derive x = s"(y or z) and (a or b)"

is correctly parsed as:
SELECT
  n.*,
  (
    y
    or z
  )
  and (
    a
    or b
  ) AS x
FROM
  n

I have run into a variant of this bug:
from x
derive [
  n = a + b,
  r = a/n,
]

translates as
SELECT
  x.*,
  a + b AS n,
  a / a + b AS r
FROM
  x

Thanks @mmm444 and sorry for the trouble .
For the next day or two™, you can get around it with an s-string:
from x
derive [
  n = s"(a + b)",
  r = a/n,
]

SELECT
  x.*,
  (a + b) AS n,
  a / (a + b) AS r
FROM
  x

We'll aim to fix this soon though.

I'm not sure of the best way to solve this — we can put parentheses around left and right here: https://github.com/prql/prql/blob/dbbd8ddc9c2a6acb767c6481d88eeb69a431ef55/prql-compiler/src/sql/translator.rs#L493-L512
but it'll generate a lot of parentheses.
While I can imagine writing the code to handle this properly (e.g. "is the current operator higher precedence than any of the operators within `right", assuming operators are left-associative") — there's probably some well-understood technique to this. If anyone is familiar, please comment!
Otherwise I'll ask someone who is more experienced than me to ensure we're not reinventing stuff.

This is the "put parentheses around everything" approach;
diff --git a/prql-compiler/src/sql/snapshots/prql_compiler__sql__translator__test__prql_to_sql_2.snap b/prql-compiler/src/sql/snapshots/prql_compiler__sql__translator__test__prql_to_sql_2.snap
index e3f29634..1ba7e992 100644
--- a/prql-compiler/src/sql/snapshots/prql_compiler__sql__translator__test__prql_to_sql_2.snap
+++ b/prql-compiler/src/sql/snapshots/prql_compiler__sql__translator__test__prql_to_sql_2.snap
@@ -9,14 +9,14 @@ SELECT
   SUM(salary),
   AVG(salary + payroll_tax),
   SUM(salary + payroll_tax),
-  AVG(salary + payroll_tax + benefits_cost),
-  SUM(salary + payroll_tax + benefits_cost) AS sum_gross_cost,
+  AVG((salary + payroll_tax) + benefits_cost),
+  SUM((salary + payroll_tax) + benefits_cost) AS sum_gross_cost,
   COUNT(*) AS ct
 FROM
   employees
 WHERE
-  country = 'USA'
-  AND salary + payroll_tax + benefits_cost > 0
+  (country = 'USA')
+  AND (((salary + payroll_tax) + benefits_cost) > 0)
 GROUP BY
   title,
   country
diff --git a/prql-compiler/src/sql/translator.rs b/prql-compiler/src/sql/translator.rs
index 038f8578..87819cff 100644
--- a/prql-compiler/src/sql/translator.rs
+++ b/prql-compiler/src/sql/translator.rs
@@ -490,8 +490,20 @@ fn try_from(item: Item) -> Result<Self> {
                 if let Some(is_null) = try_into_is_null(&op, &left, &right)? {
                     is_null
                 } else {
+                    let left = match left.item {
+                        Item::Binary { .. } => {
+                            Box::new(Expr::Nested(Box::new(left.item.try_into()?)))
+                        }
+                        _ => Box::new(left.item.try_into()?),
+                    };
+                    let right = match right.item {
+                        Item::Binary { .. } => {
+                            Box::new(Expr::Nested(Box::new(right.item.try_into()?)))
+                        }
+                        _ => Box::new(right.item.try_into()?),
+                    };
                     Expr::BinaryOp {
-                        left: Box::new(left.item.try_into()?),
+                        left,
                         op: match op {
                             BinOp::Mul => BinaryOperator::Multiply,
                             BinOp::Div => BinaryOperator::Divide,
@@ -508,7 +520,7 @@ fn try_from(item: Item) -> Result<Self> {
                             BinOp::Or => BinaryOperator::Or,
                             BinOp::Coalesce => unreachable!(),
                         },
-                        right: Box::new(right.item.try_into()?),
+                        right,
                     }
                 }
             }
@@ -1139,6 +1151,22 @@ fn test_prql_to_sql_1() -> Result<()> {
           employees
         "###
         );
+
+        let query = parse(
+            r#"
+from cities
+select temp_c = (temp - 32) * 3
+    "#,
+        )?;
+        let sql = resolve_and_translate(query)?;
+        assert_display_snapshot!(sql,
+            @r###"
+        SELECT
+          (temp - 32) * 3 AS temp_c
+        FROM
+          cities
+        "###
+        );
         Ok(())
     }

@@ -1866,8 +1894,8 @@ fn test_filter() {
         FROM
           employees
         WHERE
-          age > 25
-          AND age < 40
+          (age > 25)
+          AND (age < 40)
         "###);

         assert_display_snapshot!((resolve_and_translate(parse(r###"
@@ -1881,8 +1909,8 @@ fn test_filter() {
         FROM
           employees
         WHERE
-          age > 25
-          AND age < 40
+          (age > 25)
+          AND (age < 40)
         "###);
     }

@@ -1923,8 +1951,8 @@ fn test_nulls() -> Result<()> {
         FROM
           employees
         WHERE
-          first_name IS NULL
-          AND last_name IS NULL
+          (first_name IS NULL)
+          AND (last_name IS NULL)
         "###);

         // IS NOT NULL
@@ -1938,8 +1966,8 @@ fn test_nulls() -> Result<()> {
         FROM
           employees
         WHERE
-          first_name IS NOT NULL
-          AND last_name IS NOT NULL
+          (first_name IS NOT NULL)
+          AND (last_name IS NOT NULL)
         "###);

         Ok(())

If there were a quick way of not having it quite so ugly as SUM((salary + payroll_tax) + benefits_cost) AS sum_gross_cost, then it would be good to merge something that solved the problem even if not completely / elegantly.

@aljazerzen WDYT about being us adding a type to the AST that represented a parenthesized expression? Then we wouldn't need to estimate how to handle precedence when we did the translation to SQL, because the parentheses would carry over.

This would work, but not for all cases:
func add a b -> a + b

from table
derive [d = c * add a b]

Instead I would propose a precedence check during translation:
fn translate_ast_node(node) -> (sql, binding_strength) {

  match(node.item) {
    Item::Binary { left, op, right } => {
       let (left_sql, left_strength) = translate_ast_node(left);
       if left_strength < op.strength {
         left_sql = "(" + left_sql + ")"
       }

       let (right_sql, right_strength) = translate_ast_node(right);
       if right_strength < op.strength {
         right_sql = "(" + right_sql + ")"
       }

       return (left_sql + op + right_sql, op.strength)
    }
    ...
  }
}

where op.strength is binding strength of the operator in SQL. All other expressions (lists, pipelines, function calls, literals) can have some high value for strength, since they cannot interfere with binary expressions (i.e. 5 + [1, 2, 3] is not [6, 2, 3]).
In effect this would check if context of the expression requires it to be parenthesized.

Great. I was working on the quotes issue yesterday. I'll ensure I spend a decent amount of time on both that and this one on Saturday; I expect we can resolve them.
I'm also trying to make the compiler a bit more modular, so it's easier for others to engage — the current throughput of changes is not great. We were basically completely reliant on @aljazerzen spending almost all his time on the compiler! Which is very admirable, but not scalable. And when he takes a break (which is always completely fine to do tbc; that's the nature of open-source), we find ourselves moving very slowly.

Not sure if this should be a separate issue, but I'd also expect repeated filter statements to implicitly throw parentheses around subsequent arguments. Like so:
from table
filter a == True
filter b == 1 or c == 3

Currently produces:
SELECT
  table.*
FROM
  table
WHERE
  a = "True"
  AND b = 1
  OR c = 3

But I hope it would produce:
SELECT
  table.*
FROM
  table
WHERE
  a = "True"
  AND (b = 1
  OR c = 3)

@aljazerzen — if you're around — what are you envisaging left_strength represents here?
let (left_sql, left_strength) = translate_ast_node(left);

If we have (3 + 2) * 5 and we're translating the * op, is left_strength the +? What about if we have (3 + 2 - 1) * 5?

Since this is a recursive function, this would mostly be op.strength, which

Yes I think get the concept — it's great.
To confirm on the cases above though, when we're looking at the *:

(3 + 2) * 5 would have left_strength as +
(3 + 2 - 1) * 5 would have left_strength as - I think? Because this is represented in the AST as ((3 + 2) - 1) — is that right?

I think the immediate issue is closed by #839.
Does anyone have other cases we should test against? This currently only works for a few operators which I think should be sufficient for most cases — what are the ones we're currently missing?

Sorry this took a while to fix — that's much worse than our cadence needs to be at our current stage — in exchange for the langugage having occasional bugs, we should be fixing them fast.
It was partly a confluence of me traveling / working quite hard, others taking a well-earned break, the number of the people who work on the guts of the compiler being small, and the compiler being a bit difficult to approach for newcomers.
The first two of those won't change, but I'm working on structuring the compiler — actually not that much needs to change — and hopefully that will make it more approachable, and help with the final two items.
Thanks for the understanding from those who waited, and know that I'm invested in making subsequent bugs easier to squash.

Nice! This seems to be solved even for the "hard" cases, where PRQL does not have () but SQL should:
func add a b -> a + b

from numbers
derive [sum_1 = a + b, sum_2 = add a b]
select [result = c * sum_1 * sum_2]

SELECT
  c * (a + b) + (a + b) AS result
FROM
  numbers

This algorithm I proposed is more general and would currently handle some weird edge cases, but after I've tried to construct an example where current approach would fail, I realized that these edge cases are not possible and that current approach covers all cases.
In short, I was worried that binding strength of an expression cannot be determined by the top-level operator alone, but we must traverse AST and find the lowest binding strength in the whole tree. Fortunately this is not the case, because if any of non-top-level operators would have lower binding strength than the top-level operator, they would be parenthesized and have their strength increased.
In summary, I agree that this issue is closed.
PS: I did a refactor and added () for unary operators and IS NULL expressions

@aljazerzen one thought I had was whether this covers operators like ** which are right-associative. I didn't mention it because we don't have that yet, but if we did, we may have to consider that.
I think we could just branch on this in the code, and look at the right side rather than the left (maybe I need to be more explicit here).
But regardless yes I agree the approach is very elegant, thank you for proposing it!

Associativity comes into play only when there are many operators with same precedence. I think current approach can be extended to take this into account.
I didn't know that SQL had ** operator... Wouldn't it be translated into POW function anyway?

I didn't know that SQL had ** operator... Wouldn't it be translated into POW function anyway?

Yes but presumably we would need to do that in the correct order; i.e. 2 ** 3 ** 4 would be pow(2, pow(3, 4)), which wouldn't happen atm IIUC?
Definitely agree this is tractable; easy to do when we get there!

Ah true it would not have correct order.
But this is a problem for our parser - parsed AST would be wrong. In this issue, the AST was correct, but when translating to SQL it was "corrupted" because operators overruled each other.


Changing BPM Tone.Transport not changing the bpm of the dynamically added player

I have changed the bpm value of transport. I have a function to add and synced player's dynamically. like below
   new Tone.Player({             url: item.url,             onload: (song) => {                 this.addTrack({                      id: id,                     song: song                 })             }         }).toMaster().sync().start(position/10);
above the position is also has dynamic value. The initial Tone settings are below.
      Tone.Transport.bpm.value = 120;         Tone.Transport.timeSignature = [1, 8];         Tone.Transport.loop = true;
Then I am adding it to my state like below:
addTrack(track) {   _this.setState({                 tracksList: [                     ..._this.state.tracksList,                     track                 ]             })   }
Now the problem is when I am changing the Tone.Transport.bpm.value dynamically the player's or the synced tracks is not playing by the bpm value.

that's not an unreasonable expectation, but the Player does not do tempo matching through adjusting the playbackRate as part of sync. That would require both having the playbackRate be an AudioParam (currently it's just a number) and probably also the ability to change the playbackRate without changing the pitch, which is possible in Tone.GrainPlayer, but not Player.

@tambien Thanks for your reply bro. Sorry, I didn't get any doc about Tone.GrainPlayer. Is there anything I could get help on that?

Thanks for your reply bro. Seems the Tone.GrainPlayer not loading from URL like the Tone.Player does.
new Tone.GrainPlayer({             url: this.state.item.url,             onload: (song) => {                 console.log('song:', song.buffer.duration);                 _this.setState({                     currenttrack: song,                     isLoadingTrack: false                 });             }         }).toMaster().sync().start(0);

Hey @tareq0065 ,
I encountered the same problem with React, Do you solve this ?
Although I replace the Players to the GrainPlaye. The problem still
My code is here
https://codesandbox.io/s/transport-sync-forked-vzto2


Duplicate Field Selected error message

I receive this error when I save a child record.
Apex trigger dlrs_Financial_Coaching_SessionTrigger caused an unexpected exception, contact your administrator: dlrs_Financial_Coaching_SessionTrigger: execution of AfterUpdate caused by: System.QueryException: duplicate field selected: Confidence_Obtain_Your_Credit_Report__c: (dlrs)
My use case is that I am rolling up from a Session record (child) to a Master record (parent). The field that I am aggregating, Confidence_Obtain_Your_Credit_Report__c, is used in 2 rollup summaries. One  rolls up using the First aggregate function, with aggregate result field being field A on the parent.  The other rolls up the same field, but uses the Last aggregate function, with aggregate result field being field B on the parent.
The error occurs when I have both rollups in Realtime calculation mode. If one rollup is in Realtime and the other is in Scheduled mode, then the error message does not appear.

Ok this sounds like a bug, can you include a screenshot of both your rollups please?

Screenshots attached. I'm hoping I can get around the issue by having one rollup work in Realtime, and the other Scheduled.

Ok this is a bug, i'll mark it as such. Sorry about this.

I have now fixed this in the GitHub master branch, and will be releasing in a new managed package for install shortly.

Fixed in v1.21 release.


Traverse when there is no layer list

Fixes #2438. Again :D In addition to unit test pyftsubset --output-file=/tmp/reem.ttf --gids=0,128,210,211,218,225,227,232,234,235,237,238,241,244,246,250,251,254,261,264,270,271,277,280,282,284,286,289,295,297,299,307,308,316,317,318,320,327,331,343,345,347,348,349,350,351,357,365,370,371,374,376,378,392,393,398,399 ReemKufiInk-Regular.otf now doesn't kerplode.

@rsheeter merged. I am going to the fix indentation issue

Interesting; we should probably file a bug for that in nanoemoji as well. Still good we don't crash here.

@rsheeter I'm already working on a PR (found another bug while working on it 😅)


Upload releases to the release region instead of deployer region

Currently we set the region credential to nil which defaults to the
region of the caller - in this case whatever region the deployer
is running in - usually us-east-1 for us.
However for fenrir deployments we need the release binary to be in the
same region as the deployment or cloudflare will fail the deployment
Testing
Tested by deploying to infra-sandbox1-dev-euw1
type=routine
risk=low
impact=sev5

not needed in the end, fix was on mono/repo end


self suport for goto definition?

For simple code bellow,
it is possible jump from Boo in  fn f(&self, _: Boo) {} to struct Boo;,
also it possible to jump from Self in  fn new() -> Self to struct Foo;,
but for some reason it is impossible to jump from self in  fn f(&self, _: Boo) {}
to struct Foo;
I use 6009af9b7c1270e612b3a21118283b9bc6925aac
struct Foo;

struct Boo;

impl Foo {
    fn new() -> Self {
        Foo
    }

    fn f(&self, _: Boo) {}
}

I don't think go to definition should go to the type of self, similar to how in
fn f(foo: Foo) {}

go to definition for foo doesn't go to the type Foo.
Go to type definition on the other hand should do that, and I would guess that with #1203 merged this should actually work now?

It does not currently go to the typedef of self.

@flodiebold Bumping this -- go to type does not work for me on &mut self and similar params.

Go to type definition seems to work now. Even if it's older, closing in favour of #4912, which has more technical details.


Add readme description for as_root and as_child

Ah, I missed it in your previous PR. Thank you! 🌷


Trouble with authenticating to S3

Hi first of all I am so grateful for the fact this plugin exists as open source. I am trying to install it..
Describe the bug
I set the AWS_PROFILE and check aws s3 ls works as expected. However I see this output

@aws-sdk/credential-provider-node - defaultProvider::fromEnv WARNING:
    Multiple credential sources detected:
    Both AWS_PROFILE and the pair AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY static credentials are set.
    This SDK will proceed with the AWS_PROFILE value.

    However, a future version may change this behavior to prefer the ENV static credentials.
    Please ensure that your environment only sets either the AWS_PROFILE or the
    AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY pair.
------------------------------------------------------------------------------
Warning: Failed to check if cache file exists in S3
File:<PHONE_NUMBER>0912078476.tar.gz
Error: Could not load credentials from any providers
------------------------------------------------------------------------------
CredentialsProviderError: Could not load credentials from any providers
    at /opt/atlassian/pipelines/agent/build/node_modules/@pellegrims/nx-remotecache-s3/node_modules/@aws-sdk/credential-provider-node/dist-cjs/index.js:136:13
    at /opt/atlassian/pipelines/agent/build/node_modules/@smithy/property-provider/dist-cjs/index.js:97:33
    at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
    at async coalesceProvider (/opt/atlassian/pipelines/agent/build/node_modules/@smithy/property-provider/dist-cjs/index.js:124:18)
    at async /opt/atlassian/pipelines/agent/build/node_modules/@smithy/property-provider/dist-cjs/index.js:142:18 {
  tryNextLink: false
}

To Reproduce
  "tasksRunnerOptions": {
    "default": {
      "runner": "@pellegrims/nx-remotecache-s3",
      "options": {
        "cacheableOperations": [
          "prebuild-docker",
          "lint",
          "integration",
          "build",
          "build-docker",
          "tsc",
          "test",
          "e2e"
        ],
        "verbose": true,
        "bucket": "nx-remote-cache",
        "prefix": "${BITBUCKET_BRANCH}/",
        "region": "eu-west-2",
        "profile": "default",
        "forcePathStyle": true
      }
    }
  }

Additional context
I am new to the concept of Remote Caching when it comes to Nx.

Thank you for reporting this bug.
Can you give some more information, like the version of nx and of this package that you are using?


alsaaudio.ALSAAudioError: Device or resource busy

Recording...
Traceback (most recent call last):
  File "main.py", line 410, in <module>
    start()
  File "main.py", line 365, in start
    inp = alsaaudio.PCM(alsaaudio.PCM_CAPTURE, alsaaudio.PCM_NORMAL, device)
alsaaudio.ALSAAudioError: Device or resource busy

I know why this is happening, I am using my mic with another script.
Is there a way to use it with both?

If you have multiple sound cards, you can set the input device in main.py to another.
Another possibility would be to use PulseAudio, but I'm not sure it's tested.

This project is now deprecated in favor of the new AlexaPi (https://github.com/alexa-pi/AlexaPi) which has all the features of this project and much more, such as:

support for a wide range of devices and platforms (Raspberry Pi, CHIP, Orange Pi, desktops, Magic Mirror and others)
voice activation (great PocketSphinx support and snowboy support soon to be released)
much more robust installation and configuration
better security
Arch Linux support
awesome documentation
and much, much more! You get it - it's just awesome.

Please switch over to the new project and if your issue persists there, file an issue in the new repo's issue tracker. Thank you.


unable to Update All step templates when RunOnServer=true

Hi,
I incorrectly directed this bug report at Octopus:
Summary: When clicking Update All to update all the projects that use a step template, the updates fail if the projects use the step as Run on Octopus Server without specifying any target roles.
In general it looks like the Update All button doesn't support the Run on Octopus Server that was introduced around Octopus 3.3 (I'm seeing this behaviour in Octopus 3.3.4, Bluefin 1.51.12).
Full details:
http://help.octopusdeploy.com/discussions/problems/45948-unable-to-update-all-step-templates-when-runonservertrue
Thank for the hard work maintaining this extension!

We will take a look at this. Should be simple to reproduce. In the mean time can you check the JavaScript logs when clicking that button? They will be in the background page for the Bluefin plugin:

Manage extensions in Chrome
Click the background page link for Bluefin. You may have to enable developer mode at the top right of the Chrome extensions page to see this.
Click on the Console tab in the new window.
Attempt the update all again for your step template.

You should see a lot of logs show up there. There might be an error one referring to an HTTP 'PUT' operation. The reason I say that is you say you have no target roles. I've accidentally made a step in the past w/o specifying target roles and the update operation not working correctly until I specify at least one role. If you can check that I'll see what I can do about it.

Oh, well I just read your post on the Octopus support site. Nevermind, you've given me exactly what I need. Awesome bug report Martin!

@MartinDigon . The problem has been found and working code has been submitted as PR. Should have the fix out for you by sometime Monday (USA).

Update has been published to Chrome. Should show as available in about an hour. You can also get the release directly from Github.
https://github.com/bluefin-octopusdeploy/chrome-extension/releases/tag/1.51.15


feat: allow several tactics on types that are slightly less obviously Types

Many tactics attempt to get the universe of the sort of the terms involved by matching on the level being a succ of something.
Unfortunately this fails on some nontrivial examples like mvpolynomial which can have type Sort (max (u+1) (v+1))
Instead we decrement the level manually after matching it.
See https://leanprover.zulipchat.com/#narrow/stream/287929-mathlib4/topic/.60ring.60.20tactic.20cannot.20prove.20equality.20about.20.60MvPolynomial.60/near/352549549
This PR modifies ring, ring_nf, nontriviality, polyrith, linarith, and some norm_num handlers to appropriately handle this.
Test cases showing examples that failed before (inspired by the case of mvpolynomial, but in principle there could be other interesting types that have multiple universe parameters in this way, some of which may even have a linear order who knows).
In doing so we factor out inferTypeQ' into its own file Mathlib.Tactic.Qq for mathlib-relevant extensions of Qq

I actually would expect some sort of level normalization to be the correct way to handle these things (i.e. we should normalize all levels before adding decls to the environment)
But even this
#eval Lean.Level.normalize (.max (.succ (.param `n)) (.succ (.param `m)))

doesn't move the offset out of the max.

bors d+

bors r+


typo: inseerted -> inserted

@nschonni : Thanks for your contribution! The author, @, has been notified to review your proposed change.


[backport] fix IndexError error message

Backport of https://github.com/cupy/cupy/pull/681

LGTM!


Added a blogger profile page

issue #73
https://github.com/user-attachments/assets/8908c43f-ee7b-4997-8578-de09701efc5a
Created a Fully functional profile page
You can create and update your profile details
You can create draft for blog
You can see your blog posted
Maintainable code easily we can integrate backed to it
A user friendly and easy to customize profile page
if you want some improvement or changes just comment below PR i will do it 😊🚀

Is draft blog show in home page and add section to add image also

No draft blog will be shown in his profile....
Okay I add for image


Invalid prop: type check failed for prop "key".

The basic example in the documentation doesn't work for me: https://github.com/monterail/vue-multiselect#install--basic-usage
[Vue warn]: Invalid prop: type check failed for prop "key". Expected String, got Boolean.
(found in component <multiselect>)
[Vue warn]: Invalid prop: type check failed for prop "label". Expected String, got Boolean.
(found in component <multiselect>)
vue-multiselect.min.js?6cfa:1Uncaught TypeError: this.$options.filters.filterBy is not a function

Not sure what else is needed. I'm assuming it's specific to me as there are no other issues about it, but I can't see anything wrong…

Completely forgot I'm using Vue 2 on this project. Sorry, I see you're already working on it!

You can already use the beta version. npm install vue-multiselect@next.

Beta version is working great, thank you!

Happy to hear that! :)

Great component!Really pleasure to work with

Thank you @yusupprog :)
I just feel bad about prolonging the release of stable 2.0 version.

I am sorry but I have this question too, and the answer makes no sense to me.

@HankBrown Use npm install vue-multiselect@next to install the version that supports Vue 2.0+


Fix french spelling mistakes

Hello,
This fixes a spelling mistake I introduced in #320 :flushed:
Also, this adds two inclusive versions for "employees" and "users" that I missed. (Otherwise, in pure academic french, since the masculine form takes precedence over the feminine form, the text would sound like it is addressed to a male audience)

Thanks for the fix @fakenine!


Temporary blocking from Amazon server due too many requests while scanning?

In the last days I often get a message from the Amazon Web server which says that there are technical issues:
"Tut uns Leid!
Während wir Ihre Eingabe ausführen wollten, ist ein technischer Fehler aufgetreten. Wir arbeiten bereits daran und werden sobald wie möglich wieder für Sie da sein. Bitte schauen Sie später wieder vorbei."
This never happened before, but after I switched to this version of AVE. Does anyone else get these error messages? I have the feeling that the message always appears when the scanner starts up. Of course, I could be imagining it, hence my question.
I set the scanning speed values both to 9999 instead of 6000, but that didn't help.
It only affects https://www.amazon.de/vine/ - not the regular store https://www.amazon.de - this runs flawless.

switching to a new external IP (by reconnect) or using another netork and then switching back solved this for me most of the time

Yes, I've had this error message several times, too. As aemsx commented, changing one's IP helps.
The message comes from the CDN, not from Amazon.
I think that I got the error when I browsed the vine items too fast while the background scan was still running. So maybe, just clicking more slowly might help.

Hello @deburau,
this your last update I always get kicked out.
Is it possible that your scanner runs as fast as possible? the scanning speed has no influence.

What do you mean by "I always get kicked out"?
Here are the settings which are working perfectly for me:

See the reply from aemsx. Getting a new IP address normally helps. Or wait for some hours.

After weeks I'm having the issue again, without doing anything special. Another alternative to changing one's IP address is to use a VPN.

The only thing that was important for me is that my vine account gets not permanently banned. Hence my first question. So if the most of you having the same issue, it’s not a problem at all. If the web server blocks the requests because it is overloaded, I have fewer problems with that. But it would be really stupid if the account was lost because of a script error.
In my opinion thus is not a bug or similar, the issue should be closed asap.
Thx!


RTMPE: YouTube

Hi, how do I download this video?
https://www.youtube.com/watch?v=lTurfn7vvCk
I have downloaded rtmpdump-2.4-2013-12-22. What syntax do I need?

YouTube RTMPE downloads are not supported yet. For more information, see #343.

Is rtmpe not rtmp?


Node.js API (Removed headings on pre-formatted text and restructuring)

Removed headings from pre-formatted syntax
Attempted to restructure some content in order to enhance readability.
as discussed on standard/standard-www#28

Fixes standard/standard-www#28

Hey @LinusU waiting on some feedback on this, want to resolve this so that i could work on another PR here
please resolve lest it becomes stale

Sorry for the delay on this!
I know that I initially said that it was a bit weird that they were headings, but after examining it again I actually think it's quite nice. I think it's quite common to write api documentation in markdown that way, it makes it more structured around the different functions instead of reading as a big block of text.
This also seems to be how Node.js itself does it: https://github.com/nodejs/node/blob/master/doc/api/os.md
Would love it if @feross or @Flet could give some input, also open to more discussion from anyone ☺

I appreciate the effort but this doesn't add anything.


Swift 2.0 Fixes

I updated the included sample project and removed any errors in it.
Also, to work around a error message from the swift compiler i set the swift optimization level to -Onone for both the iOS and OS X targets. I can now build the project using carthage.
This fixes issue #78

Fixed https://github.com/kishikawakatsumi/KeychainAccess/pull/80 Thank you very much for your contribute!