does not conform to protocol qrcodereaderviewcontrollerdelegate

Hi all,
I've integrated using the classes, because CocoaPods didn't work.
Now I'm having this error : does not conform to protocol qrcodereaderviewcontrollerdelegate
And here's my class beginning code :
class DeskBookingViewController: UIViewController, QRCodeReaderViewControllerDelegate, BookableDelegate {
What's wrong here ?
Thanks,

Hi,
The error means you didn't implemented the QRCodeReaderViewControllerDelegate methods. Have you added these methods to your class?
func reader(reader: QRCodeReaderViewController, didScanResult result: String) {
}

func readerDidCancel(reader: QRCodeReaderViewController) {
}

Hi @yannickl , thanks for your reply.
In fact I was using :
    func reader(reader: QRCodeReader, didScanResult result: String) {
        self.dismissViewControllerAnimated(true, completion: nil)
    }

    func readerDidCancel(reader: QRCodeReader) {
        self.dismissViewControllerAnimated(true, completion: nil)
    }

instead of :
    func reader(reader: QRCodeReaderViewController, didScanResult result: String) {
        self.dismissViewControllerAnimated(true, completion: nil)
    }

    func readerDidCancel(reader: QRCodeReaderViewController) {
        self.dismissViewControllerAnimated(true, completion: nil)
    }

now it's working fine :+1:


Which fixed https://github.com/emqx/nanomq/issues/1329

Fix the double free in qos msg for quic.

a better solution in #600


capture="camera" optional attribute

Consider adding the optional capture="camera" attribute to the file input item
See also:
For others to reference this is the behavior on Chrome on Android 9 as of today (Feb 2020):
  Must be selected from album
  <input type="file" accept="image/*">

  Must be captured from camera
  <input type="file" accept="image/*" capture="">

  Allowed user to choose either from album or camera
  <input type="file" accept="image/*;capture=camera">

Other options:

accept="video/*" for video
accept="audio/*" for audio


chore(gitlab): update prod_ref and integ_ref in main .gitlab-ci.yml

🎉 This issue has been resolved in version v1.0.0-beta.5 🎉


chore(docs): improving the ML model

Closing, as this was studied in https://github.com/jeertmans/DiffeRT/releases/tag/icmlcn2025.


Add 'store as global variable' to 'copy value' dropdown.

What problem does this feature solve?
There's currently a 'copy value' option for values in Vue Devtools, which I primarily use for copying into the devtools console to test out functions.
I think it would be useful to add a 'store as global variable' option to the dropdown, like how Chrome devtools already allows you to do. Chrome's values follow the pattern temp1, temp2, etc, so it could be something like that.
Chrome's devtools option:

Vue dropdown I'm talking about:

What does the proposed API look like?
There would be a 'save value' dropdown added to the existing dropdown which has 'copy value', and if possible, it would change tabs to 'console' in the devtools. See https://github.com/vuejs/vue-devtools/issues/442#issuecomment-360238256 for a screenshot.

lack of this feature is the only problem stop me from react+mobx to vue3. hope it will be add asap.


[Enhancement] Close notification drawer on outside click

Current behavior
when the notification drawer is open, currently the only way to close it is for the user to click on the "X" at the top right.
Expected behavior
Like all drawers in Focus applications, if the user clicks outside of the drawer, it should close itself.

As in the major OS:  OSX  and the other OS such as w10 the notification center is not closed on a click outside.
I want the opinion of @Bernardstanislas , @Tommass , @nadege-focus before doing it.

done in https://github.com/get-focus/focus-notifications/pull/56


Windows install fails on dex deployment

epinio (built from source) @ c7afb19

Windows 10 Home, Kubernetes via Rancher Desktop

Running epinio install in PowerShell

Installation fails with
panic: Deployment dex failed with error: Failed to extract embedded file:  - file does not exist

goroutine 52 [running]:
github.com/epinio/epinio/internal/cli/clients.(*InstallClient).Install.func1(0xc000254150, 0x24ca9b0, 0xc000034050, 0x24d5670, 0xc00044b400, 0x24d9df8, 0xc00020d0b0, 0xc00020d094)
        /abuild/projects/rancher/epinio/epinio/internal/cli/clients/install_client.go:168 +0x23f
created by github.com/epinio/epinio/internal/cli/clients.(*InstallClient).Install
        /abuild/projects/rancher/epinio/epinio/internal/cli/clients/install_client.go:165 +0x10e5

The build-windows target does not run embed_files. Running make embed_files before running make build-windows fixes this problem.
Keeping this bug open to get this dependency expressed in the Makefile.

This feels like going back a bit again on our desire of having the low-level targets independent of each other and using higher level targets which combine low-level operations as desired/needed.
At the moment all the build-(platform) targets are low-level, and there are two highlevel targets, build, and build-all.
Where build is embed_files + build-amd64, and build-all is embed_files + all build-() targets.
Or are you asking for a new highlevel target combining embed_files and build-windows, name to be determined ?

See #671 for a commit doing the latter.

Confirmed that the Dex problem is fixed in #671.


Revert "Don't account for unresampled data when computing how much input is needed."

This reverts commit d0127cdb668fe7908397ba4eaca2dc1e8600fc09.
From testing this caused the audio to get out of sync/delayed in Citra (testing based on citra-emu/citra#5577).
The 3ds' native sample rate is 32728 Hz, which is what Citra uses.
While the drift is small, it is very noticeable over anything but very short play sessions.
From some loose testing, in 10 minutes there's a couple seconds of added delay to e.g. a confirmation sound.
From testing, reverting this commit fixed the issue. I checked the original PR (#598), but I don't see an
explanation for this specific change.

Yep, this is wrong. I was papering over something else. I should have had gotten to the bottom of this.

I'm closing this, this patch is now also in #620, and there is an explanation there. Thanks very much for the PR, and sorry about the bug.


Change template variables to snake case where possible

Is this a BUG REPORT or FEATURE REQUEST?:
Request for refactor that may prevent bugs
What happened:
It seems using camel cased variables don't work properly in Hugo and as in the documentation for frontmatter in Hugo website it seems that they recommend snake cased.
What you expected to happen:
I think we should rename the variables from lower case/camel case to snake case.
How to reproduce it (as minimally and precisely as possible):
Anything else we need to know?:
Environment:

Syna Theme version:
Hugo version:
Others:

Just saw it within the netlify patch. Makes it much more readable compared to the forced lowercase camelCase.
@lauragift21 also agrees that snake_case is good.
Let's to that.
Question remains how far do we want to go? Only use it in hugo specifics aka variables or everything including html id, class, name etc?

I was looking for a convention we can apply globally but couldn't find any. IMHO Let's change every variable to snake case so we would have applied a single convention and not worry about different cases.
Also maybe it's not a bad idea to add eslint and prettier to our JS code, I'm planning on writing some JavaScript and it's better to have the rules beforehand but that's another matter.

Ok then snake_case all over it is. For the JS. A linter seems good. Let's track that within another issue.


[GAL-355] Add tokensByChain field to GraphQL GalleryUser type

This adds a new tokensByChain query to the GraphQL GalleryUser type, which can be used to query a user's tokens on a per-chain basis. While I had originally planned to accept an array of chain inputs (e.g. tokensByChain([Chains!]!), I think that starts to get ugly with pagination and cursors (not currently implemented, but likely will be at some point!).
Instead, the query accepts a single chain, but if we need to fetch tokens for multiple chains in the same GraphQL query, we can still do that:
...on GalleryUser {
  ethTokens: tokensByChain(chain: Ethereum) { ... }
  tezosTokens: tokensByChain(chain: Tezos) { ... }
}

I also added a validator for chain types.

+1 from the schema side of things!

Doh. Sorry I didn't request a review from you in the first place!


Newlines not respected following tags

Describe the bug
Newlines which follow tags appear to be discarded in Quartz
Obsidian:

Quartz:

To Reproduce
Steps to reproduce the behavior:

In Obsidian, make a tag in a note. Immediately follow that tag with a newline, then add some text on that new line
Observe that in Obsidian there are 2 lines of text
Host your vault using Quartz
Observe that in Quartz there is 1 line of text

Expected behavior
Quartz respects newlines regardless of tags.
Desktop (please complete the following information):

Device: PC
OS: Win11
Browser: Chrome

Quartz uses soft line breaks. You can enable hard line breaks with the HardLineBreaks transformer plugin in quartz/plugins/transformers/linebreaks.ts

With the plugin enabled:

Make sure that the plugin is before the ObsidianFlavoredMarkdown plugin

Thanks, that worked great!


Allow configuring location of conda executable via environment variable

After this PR, users can configure MLflow to use a specific conda installation by setting the MLFLOW_CONDA_PATH environment variable to the path to their conda installation (e.g. configure MLflow to use a conda executable at /some/dir/bin/conda by setting MLFLOW_CONDA_PATH=/some/dir/bin/conda).

Codecov Report

Merging #181 into master will increase coverage by 0.06%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##           master     #181      +/-   ##
==========================================
+ Coverage   50.25%   50.32%   +0.06%
==========================================
  Files          93       93
  Lines        4676     4682       +6
==========================================
+ Hits         2350     2356       +6
  Misses       2326     2326

Impacted Files
Coverage Δ

mlflow/projects/__init__.py
92.12% <100%> (+0.39%)
:arrow_up:

Continue to review full report at Codecov.

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

Instead of a home directory, would it be more natural to just provide the path to conda?

@mateiz yeah makes sense, the concept of a root conda installation directory / its structure isn't documented anywhere so probably best not to depend on it & pass the path to conda instead. Will update this PR & make corresponding changes in Databricks.

Thanks @mateiz! Merging :)


Documentation build error with missing Vulkan

When I run the build command a second time with documentation build enabled, I get an error regarding Vulkan not being available
> cmake ..\OpenXR-Tutorials\ -DXR_TUTORIAL_BUILD_DOCUMENTATION=ON"
...
-- Enabling OpenGL support
-- Could NOT find Vulkan (missing: Vulkan_LIBRARY Vulkan_INCLUDE_DIR) (found version "")
CMake Error at C:/Users/Nemes/dev/openxr-tutorials-workspace/build/Chapter1/openxr/src/CMakeLists.txt:88 (message):
  Vulkan headers not found

-- Configuring incomplete, errors occurred!

My workaround has been to pass the CMake variable BUILD_ALL_EXTENSIONS as TRUE. I amended the instructions to reference this in this branch https://github.com/pfontain/OpenXR-Tutorials/tree/sphinx-do-not-build-extensions .
If the Vulkan stuff is required for the documentation build, I think we should be explicit about it somewhere.
I haven't figured out why this only happens the second time around.

Hi @pfontain,
We don't expect end-users of the website to build the repository with "XR_TUTORIAL_BUILD_DOCUMENTATION=ON", as this is used to generate the HTML website. However, this build method is specified in our README.md, and therefore I have updated it with your changes from your fork.
Thank you for all your help.


💖 Merge config.viewports to config.mediaQueries

Description
Current
export default {
    viewports: {
        mobile: 600,
        tablet: 1024,
        desktop: 1440
    },
    mediaQueries: {
        watch: '(max-device-width:42mm) and (min-device-width:38mm)'
    }
}

Expected
export default {
    mediaQueries: {
        mobile: 600,
        tablet: 1024,
        desktop: 1440,
        watch: '(max-device-width:42mm) and (min-device-width:38mm)'
    }
}

🎉 Released in https://github.com/master-co/css/releases/tag/v2.0.0-beta.184


Get started seciton: Prevent h3 breaking.

Turns

Into

^ should we figure out how to center the npm install or make the font bigger?


add changes to readme

What type of PR is this?
documentation
What this PR does / Why we need it?
It updates documentation for kite.
Which Jira/Github issue(s) does this PR fix?
Resolves [#OSD-15612](https://issues.redhat.com/browse/OSD-15612)
Pre-checks (if applicable)

[ ] Ran unit tests locally against the changes
[x] Included documentation changes with PR

Codecov Report

Merging #133 (1d7f423) into main (e6b5077) will not change coverage.
The diff coverage is n/a.

Additional details and impacted files

@@           Coverage Diff           @@
##             main     #133   +/-   ##
=======================================
  Coverage   12.52%   12.52%
=======================================
  Files          27       27
  Lines        1621     1621
=======================================
  Hits          203      203
  Misses       1396     1396
  Partials       22       22

I see no mention of Tmux anywhere in the docs. Please include it and its usage in kite.

I see no mention of Tmux anywhere in the docs. Please include it and its usage in kite.

I have added about that under Terminal Multiplexer.


Add SQL2008 alter_roles statement and fix alter_sys_roles for SQL2012+

Hi,
There is currently no provision to add/drop roles for SQL2008.
Additionally the server role assignment for SQL2012 was incorrect.
Regards,
Peter

Hi. I am an automated pull request bot named Curry. There are commits in this pull request whose authors are not yet authorized to contribute to Chef Software, Inc. projects or are using a non-GitHub verified email address. To become authorized to contribute, you will need to sign the Contributor License Agreement (CLA) as an individual or on behalf of your company. You can read more on Chef's blog.
Non-GitHub Verified Committers
There are 1 commit author(s) whose commits are authored by a non-GitHub verified email address. Chef will have to manually verify that they are authorized to contribute.
Please sign the CLA here.

Hi,
I have signed the CLA but haven't heard anything back regarding this pull request. Can this be merged?
Peter

@someara Is there any reason why this pull request cannot be merged? This fixes broken functionality on MSSQL 2008.

:+1:

Hi. I am an automated pull request bot named Curry. There are commits in this pull request whose authors are not yet authorized to contribute to Chef Software, Inc. projects or are using a non-GitHub verified email address. To become authorized to contribute, you will need to sign the Contributor License Agreement (CLA) as an individual or on behalf of your company. You can read more on Chef's blog.
Non-GitHub Verified Committers
There are 1 commit author(s) whose commits are authored by a non-GitHub verified email address. Chef will have to manually verify that they are authorized to contribute.
Please sign the CLA here.

This should be fixed in #185 which was merged in.


Add NeoForge support

This should work. Obviously, we need to implement a frontend in the launcher as well.


XMLConfigBuilder class mapperElement method to determine optimization

Hello, in the XMLConfigBuilder class, the mapperElement method is optimized for mapper file location. In your code, you do not implement priority processing, so some of the judgments are redundant and increase the risk of error reporting.Your code is as follows:
 String resource = child.getStringAttribute("resource");           String url = child.getStringAttribute("url");           String mapperClass = child.getStringAttribute("class");           if (resource != null && url == null && mapperClass == null) {             ErrorContext.instance().resource(resource);             InputStream inputStream = Resources.getResourceAsStream(resource);             XMLMapperBuilder mapperParser = new XMLMapperBuilder(inputStream, configuration, resource, configuration.getSqlFragments());             mapperParser.parse();           } else if (resource == null && url != null && mapperClass == null) {             ErrorContext.instance().resource(url);             InputStream inputStream = Resources.getUrlAsStream(url);             XMLMapperBuilder mapperParser = new XMLMapperBuilder(inputStream, configuration, url, configuration.getSqlFragments());             mapperParser.parse();           } else if (resource == null && url == null && mapperClass != null) {             Class<?> mapperInterface = Resources.classForName(mapperClass);             configuration.addMapper(mapperInterface);           } else {             throw new BuilderException("A mapper element may only specify a url, resource or class, but not more than one.");           }
I have made some changes to it, you can have a look at the code as follows:
`
  String resource = child.getStringAttribute("resource");
  if (resource != null) {
    ErrorContext.instance().resource(resource);
    InputStream inputStream = Resources.getResourceAsStream(resource);
    XMLMapperBuilder mapperParser = new XMLMapperBuilder(inputStream, configuration, resource, configuration.getSqlFragments());
    mapperParser.parse();
    return;
  }
  String url = child.getStringAttribute("url");
  if (url != null){
    ErrorContext.instance().resource(url);
    InputStream inputStream = Resources.getUrlAsStream(url);
    XMLMapperBuilder mapperParser = new XMLMapperBuilder(inputStream, configuration, url, configuration.getSqlFragments());
    mapperParser.parse();
    return;
  }
  String mapperClass = child.getStringAttribute("class");
  if (mapperClass != null){
    Class<?> mapperInterface = Resources.classForName(mapperClass);
    configuration.addMapper(mapperInterface);
    return;
  }
  throw new BuilderException("A mapper element may only specify a url, resource or class, but not more than one.");

`

Yes, I did

Yes, I did

Hello @xieweilie ,
Please submit a PR.
Be sure to include a test case.

I don't think this is entirely correct. Because the new code doesn't throw the error at the right time

No response. Closing.


PDF error 500 while using custom css fonts

Exact BookStack Version (Found in settings): BookStack v0.28.3
PHP Version: 7.2
Hosting Method (Nginx/Apache/Docker): Apache

Bookstact throws 500 error while trying to export any page to PDF:
When loggin is enabled I get following error:
fopen(/var/www/BookStack-0.28.3/app/vendor/dompdf/dompdf/lib/fonts//nunito-italic_6e6e6d4f041dbe2cbb49180bbad139a4.ufm): failed to open stream: No such file or directory
This is related to custom css font in header. Once removed it fixed the issue.

Why open a duplicate issue? You already commented on #1800 which is the same issue.

This should now be addressed in the current latest release, as discussed within https://github.com/BookStackApp/BookStack/issues/2746. Will therefore close this off.


Is it possible to show/hide  part of the edit form?

For example:
editor.getEditor('root.location').hide();

i want to know the answer, too!

this would be incredibly handy

{ "hidden": true }


Create class UsersDatabase

CI failing due to QualityGate requiring code coverage >= 80%, ignoring it by now because class UserDatabase added many lines of code that are not worth testing as they only provide example data throught methods already covered by tests


7x/highlevel namespae methods

Simplifies namespaced methods.

Cherry picked the last two commits to 7.x


New term request: voltammetry evidence

Suggested relation:
is_a substance quantification evidence

Hi @Pimmelorus - thank you for your request!
Could you kindly provide:

PMID(s) or other source(s) for a textual definition
The name of the group/project this term is for

Sure!

Ref: Hitchhiker's Guide to Voltammetry: Acute and Chronic Electrodes for in Vivo Fast-Scan Cyclic Voltammetry (PMID:28127962)
This term is for the Synapse Gene Ontology group.

Thanks so much. I want to make sure I'm getting this right - the term is in reference to voltammetry used to measure neurotransmission, as in Fast-Scan Cyclic Voltammetry (FSCV)?
Is it always FSCV, or are there different types? The more specific the term, the better we can categorize it. Correct me if I'm wrong, but this seems like it could fall under 'electrophysiology assay evidence'.
More specifically, could it be a child of 'extracellular recording evidence'?
Def: A type of electrophysiology assay evidence resulting from the use of electrodes to measure in vivo electrical activity coming from adjacent neurons.

Well, I would be fine with the more general term voltammetry. I think we should be cautious not to mix technique and area of application too much. I guess some applications of voltammetry in general or FSCV more specifically lies in the measurement of physiological parameters. However, when applied to measure chemical reactions outside of a biological system the parent term 'electrophysiology assay evidence' does not apply. The same rationale goes for the suggested parent term 'extracellular recording evidence'.
My recommendation is as stated above:
Suggested relation:
is_a substance quantification evidence

Here's a suggested definition from @jbmunro for voltammetry evidence

A type of substance quantification evidence where an electrical gradient potential is applied to analyze an analyte of interest, resulting in a measurement amount of electrical current across the potential range applied.

If this sounds good, I'll go ahead and add it in!

Perfect!

Added voltammetry evidence as ECO:0007015 and voltammetry evidence used in manual assertion as ECO:0007016. I'll be pushing a release on Friday, and they'll be available in eco.owl then!


No Auto-Trade on Bitfinex?

Discord link is not working, hence I'm providing my problem here below.
I have set up the config for tradebot; changed the config files as asked, however, there is no trade even though there are enough balance at my bitfinex account (there is 0,1 BTC, almost no usd balance)
Can you please check and let me know what is wrong?

I have same problem
I did set candle size with 3 hours and warm up period with 24 hours.
After 3 days, trade bot did not any trade.

Mine is working fine, take a look at your tradebot logs within the gekko/logs section it should be able to tell you what is happening. It will most likely have an error like this one - 03:06:31 (ERROR):	Wanted to buy USD but the amount is too small (0.000057732210) at Bitfinex. Without further info it is hard to tell why your bot is not trading.

Hello,
Thank you for the feedback. It seems that it wants to buy first, although there are 0,09 BTC in the balance but no USD.
2017-11-25 00:29:36 (ERROR):	Wanted to buy BTC but the amount is too small (0.000014116509) at Bitfinex
2017-12-01 11:29:29 (ERROR):	Wanted to buy BTC but the amount is too small (0.000011634454) at Bitfinex
Would there be both BTC and USD balances at the same time for optimum performance?
@askmike would it be great if selling is the first option in such cases, to be able to buy in the next move?

@sarperhorata your strategy is responsible for signaling either LONG or SHORT. If the strategy signals a LONG and you don't have euro it will simply not buy this signal. This doesn't matter at all, because after the buy a sell will come (depending on the strategy) to which Gekko will sell.
Your logs indicate 2 errors where Gekko tried to buy but couldn't, is there a sell in between? There should be. Also let me know what strategy your using.

Hello @askmike
I'm using DEMA, with almost default settings. When I also deposited USD, it started working.
But it is not showing it's second and third transactions on the Gekko UI. (SELL, SELL, BUY)


Can we archive this?

This hasn't moved in quite a few years, so wondering if we can archive this?

/cc @inexorabletash

Probably fine for now. Once we have accurate memory measurement in place we can ask partners to re-evaluate if they need this as well.


Implement Diffie Helman Key Exchange protocol in Python

🚀 Feature
I would like to implement Diffie Helman Key Exchange protocol in Python
Have you read the Contributing Guidelines on Pull Requests?
Yes
Motivation
I have seen some scripts in the Cryptography section. RSA is already implemented but I think Diffie Helman protocol is also important for exchanging public keys. And I wish to implement the same.
Pitch
RSA was the heart and soul of encryption for the modern web and is still used in lots of places. But we still need Symmetric encryption for algorithms like 3-DES and AES. Hence we need a key exchanging protocol. Diffie Helman serves the same purpose here. And I intend to demonstrate the same in my Python script

/assign

I have created a pull request with the complete code. Kindly go through the same.


Define common web app use cases

We want to create unified example projects with common web app use cases.
Acceptance Criteria

A new section "Example project" exists in Storybook within "Contributing"
There are at least three common use cases defined
Follow up issues (should be good-first-issues) are defined

duplicated by #462


Error: channel closed, timeout

Please provide us with the following information:

OS?

Mac OSX El Capitan

Versions.

Please run ng --version. If there's nothing outputted, please run in a Terminal: node --version and paste the result here:

angular-cli: 1.0.0-beta.20-1
node: 7.0.0
os: darwin x64

Repro steps.

I'm serving my application using ng serve. Afer one reload caused by code changes this problem occurs.

The log given by the failure.
    at ChildProcess.target.send (internal/child_process.js:540:16)
    at runChecker (/Users/pawel/workspace/helloclass-frontend/node_modules/awesome-typescript-loader/src/instance.ts:387:22)
    at invokeFunc (/Users/pawel/workspace/helloclass-frontend/node_modules/lodash/lodash.js:10335:23)
    at trailingEdge (/Users/pawel/workspace/helloclass-frontend/node_modules/lodash/lodash.js:10382:18)
    at Timeout.timerExpired [as _onTimeout] (/Users/pawel/workspace/helloclass-frontend/node_modules/lodash/lodash.js:10370:18)
    at ontimeout (timers.js:365:14)
    at tryOnTimeout (timers.js:237:5)
    at Timer.listOnTimeout (timers.js:207:5)

Thanks! We'll be in touch soon.

Can you try with the latest version? We moved away from the loader that seems to have been causing you problems.

Closing as inactive.


draft trigger unnecessary event

Collection with versions will trigger an event when saving as draft and it should not.

This issue can be partially fixed, a warning will be shown when you're trying to use globals with drafts.
Related: https://github.com/payloadcms/payload/discussions/3988


[FEATURE REQUEST] Add Docker support for redisql so that things like GitHub Actions can be used for CI/CD; and IDE setup is seamless.

Describe the solution you'd like
Provide a docker compose solution so a maintainer or user can run this box in isolation of needing PostgreSQL/MySQL and Redis to test this.
Describe alternatives you've considered
A docker image could be appropriate for testing which combines Go, MySQL, PostgreSQL and/or Redis in one box, however it would require maintenance of upstream Docker images and there's no performance penalty using docker compose, a docker-compose template allows maintainers to just completely retrash/rebuild their development environment by services.

I think an image would be more optimal. I'll have some more feedback on the feature request soon.


Double save invocation

Summary
Ghost invokes the save method twice upon upload.
Problem
Unknown
Edit:
Multiple images saved to storage (see next post)
Impact
With content addressing, this could have no impact.
Edit:
Double storage cost (see next post)
Solution
Unknown
Edit:
Always return original (see next post)
Detail
To Reproduce
Add an image and observe logs
Expected behavior
save invoked once
Screenshots

Smartphone (please complete the following information):
Production instance

According to this forum post, Ghost is saving both an original and compressed version of the image.
Testing with larger files shows image.size (as seen in OP screenshot) always remains the same indicating no (or ineffective) compression is being applied.  Unfortunately, some small change is occurring resulting in unique CIDs (likely meta-data).  The implications is double the storage cost for each image.
It might be desirable to return a common CID to both save calls to avoid the storage penalty.  This would be a simple matter of removing _processed from image.path when reading the file (Note, the inverse, adding _processed, could result in a race condition).

According to the documentation for responsive images:

Dynamic image sizes are not compatible with externally hosted images. If you insert images from Unsplash or you store your image files on a third party storage adapter then the image url returned will be determined by the external source.

This rules out a potential influence on save behaviour

If we get passed in a request for a responsive image, we might have the storage adapter modify it with https://images.weserv.nl to pass in different sizes.


forget / prune of snapshots mixed with /path and  --files-from are not treated together

Output of restic version
restic 0.9.2 compiled with go1.10.3 on linux/amd64
How did you run restic exactly?
backup schema:

0: use zfs, zfs-auto-snapshot, make hourly, daily, weekly, monthly snapshots, and rotate them
1: make a zfs filesystem snapshot available under /volatile/root
2: backup path with restic
3: new hourly,daily,weekly,monthly snapshot is taken,
make a new zfs filesystem snapshot available under /volatile/root
4: calculate the difference file list for next filesystem snapshot (zfs diff)
this is essentialy free (low cpu, low io) and will use equal time/io
independent of size of filesystem, just depending on the change volume,
which should be similar every snapshot
5: feed file list into restic via --file-from
no file scanning needs to be done, only changed files will be considered,
so this could run hourly without major cpu/io usage, and will complete fast
6: goto 3
7: once every month do a full /volatile/root snapshot for safety
8: once every month forget snapshots based on retention settings (eg. keep last 3, or whatever)

What backend/server/service did you use to store the repository?
local
Expected behavior
--files-from snapshots of the same base path as the files inside the filelist are aged as a snapshot group
Actual behavior
snapshots of --files-from are treated as different groups
Steps to reproduce the behavior

make a backup repo, get snapshot clone, backup snapshot, destroy snapshot clonse

restic init --repo /volatile/backup-restic
zfs clone -o readonly=on rpool/ROOT/ubuntu@zfs-auto-snap_daily-2018-08-10-0625 rpool/volatile/root
restic --repo /volatile/backup-restic/ backup --one-file-system /volatile/root/
zfs destroy rpool/volatile/root

get snapshot clone, make restic figure out what has changed and backup snapshot, destroy snapshot clone

zfs clone -o readonly=on rpool/ROOT/ubuntu@zfs-auto-snap_daily-2018-08-11-0625 rpool/volatile/root
restic --repo /volatile/backup-restic/ backup --one-file-system /volatile/root/
zfs destroy rpool/volatile/root

get snapshot clone, get modified files list from zfs, backup --files-from

zfs clone -o readonly=on rpool/ROOT/ubuntu@zfs-auto-snap_daily-2018-08-12-0625 rpool/volatile/root
zfs diff -H rpool/ROOT/ubuntu@zfs-auto-snap_daily-2018-08-11-0625 rpool/ROOT/ubuntu@zfs-auto-snap_daily-2018-08-12-0625 | sed -r "s/^R\t[^\t]+\t(.+)/R\t\1/g" | cut -s -f 2 | sort -n | uniq | awk '{print "/volatile/root" $1}' > incremental.txt

restic --repo /volatile/backup-restic/ --one-file-system --files-from=/volatile/incremental.txt -v backup
--- output
Files:          27 new,     0 changed,     0 unmodified
Dirs:           13 new,     0 changed,     0 unmodified
Data Blobs:      0 new
Tree Blobs:      8 new
Added to the repo: 4.714 KiB
processed 27 files, 8.774 MiB in 0:03
snapshot ccd25006 saved

check if there would be additional files to add

restic --repo /volatile/backup-restic/ backup --one-file-system /volatile/root/
--- output
repository ef9151c3 opened successfully, password is correct
Files:           0 new,     0 changed, 27535 unmodified
Dirs:            0 new,     1 changed,     0 unmodified
Added to the repo: 349 B
processed 27535 files, 993.713 MiB in 0:07
snapshot f544907b saved

list available snapshots

root@box:~# restic -v --repo /volatile/backup-restic/ snapshots
enter password for repository:
repository ef9151c3 opened successfully, password is correct
ID        Date                 Host        Tags        Directory
----------------------------------------------------------------------
b065f902  2018-08-13 10:21:38  box                     /volatile/root
7044bc28  2018-08-13 10:22:43  box                     /volatile/root
555314db  2018-08-13 10:30:19  box                     /volatile/root
ccd25006  2018-08-13 10:59:53  box                 ┌── /volatile/root/var/backups
                                                   │   /volatile/root/var/backups/dpkg.diversions.0
                                                   │   /volatile/root/var/backups/dpkg.diversions.1.gz
                                                   │   /volatile/root/var/backups/dpkg.diversions.2.gz
                                                   │   /volatile/root/var/backups/dpkg.diversions.3.gz
                                                   │   /volatile/root/var/backups/dpkg.statoverride.0
                                                   │   /volatile/root/var/backups/dpkg.statoverride.1.gz
                                                   │   /volatile/root/var/backups/dpkg.statoverride.2.gz
                                                   │   /volatile/root/var/backups/dpkg.statoverride.3.gz
                                                   │   /volatile/root/var/backups/dpkg.status.0
                                                   │   /volatile/root/var/backups/dpkg.status.1.gz
                                                   │   /volatile/root/var/backups/dpkg.status.2.gz
                                                   │   /volatile/root/var/backups/dpkg.status.3.gz
                                                   │   /volatile/root/var/lib/apt/daily_lock
                                                   │   /volatile/root/var/lib/logrotate
                                                   │   /volatile/root/var/lib/logrotate/status
                                                   │   /volatile/root/var/lib/mlocate
                                                   │   /volatile/root/var/lib/mlocate/mlocate.db
                                                   │   /volatile/root/var/lib/private/systemd/timesync/clock
                                                   │   /volatile/root/var/lib/systemd/timers/stamp-apt-daily.timer
                                                   │   /volatile/root/var/lib/systemd/timers/stamp-apt-daily-upgrade.timer
                                                   └── /volatile/root/var/lib/systemd/timers/stamp-motd-news.timer
f544907b  2018-08-13 11:01:43  box                     /volatile/root
----------------------------------------------------------------------
5 snapshots

keep only the latest of 3 snapshots (without --path)

root@box:~# restic -v --repo /volatile/backup-restic/ forget -n -l 3
enter password for repository:
repository ef9151c3 opened successfully, password is correct
Applying Policy: keep the last 3 snapshots snapshots
snapshots for (host [box], paths [/volatile/root/var/backups, /volatile/root/var/backups/dpkg.diversions.0, /volatile/root/var/backups/dpkg.diversions.1.gz, /volatile/root/var/backups/dpkg.diversions.2.gz, /volatile/root/var/backups/dpkg.diversions.3.gz, /volatile/root/var/backups/dpkg.statoverride.0, /volatile/root/var/backups/dpkg.statoverride.1.gz, /volatile/root/var/backups/dpkg.statoverride.2.gz, /volatile/root/var/backups/dpkg.statoverride.3.gz, /volatile/root/var/backups/dpkg.status.0, /volatile/root/var/backups/dpkg.status.1.gz, /volatile/root/var/backups/dpkg.status.2.gz, /volatile/root/var/backups/dpkg.status.3.gz, /volatile/root/var/lib/apt/daily_lock, /volatile/root/var/lib/logrotate, /volatile/root/var/lib/logrotate/status, /volatile/root/var/lib/mlocate, /volatile/root/var/lib/mlocate/mlocate.db, /volatile/root/var/lib/private/systemd/timesync/clock, /volatile/root/var/lib/systemd/timers/stamp-apt-daily-upgrade.timer, /volatile/root/var/lib/systemd/timers/stamp-apt-daily.timer, /volatile/root/var/lib/systemd/timers/stamp-motd-news.timer]):

keep 1 snapshots:
ID        Date                 Host        Tags        Directory
----------------------------------------------------------------------
ccd25006  2018-08-13 10:59:53  box                 ┌── /volatile/root/var/backups
                                                   │   /volatile/root/var/backups/dpkg.diversions.0
                                                   │   /volatile/root/var/backups/dpkg.diversions.1.gz
                                                   │   /volatile/root/var/backups/dpkg.diversions.2.gz
                                                   │   /volatile/root/var/backups/dpkg.diversions.3.gz
                                                   │   /volatile/root/var/backups/dpkg.statoverride.0
                                                   │   /volatile/root/var/backups/dpkg.statoverride.1.gz
                                                   │   /volatile/root/var/backups/dpkg.statoverride.2.gz
                                                   │   /volatile/root/var/backups/dpkg.statoverride.3.gz
                                                   │   /volatile/root/var/backups/dpkg.status.0
                                                   │   /volatile/root/var/backups/dpkg.status.1.gz
                                                   │   /volatile/root/var/backups/dpkg.status.2.gz
                                                   │   /volatile/root/var/backups/dpkg.status.3.gz
                                                   │   /volatile/root/var/lib/apt/daily_lock
                                                   │   /volatile/root/var/lib/logrotate
                                                   │   /volatile/root/var/lib/logrotate/status
                                                   │   /volatile/root/var/lib/mlocate
                                                   │   /volatile/root/var/lib/mlocate/mlocate.db
                                                   │   /volatile/root/var/lib/private/systemd/timesync/clock
                                                   │   /volatile/root/var/lib/systemd/timers/stamp-apt-daily-upgrade.timer
                                                   │   /volatile/root/var/lib/systemd/timers/stamp-apt-daily.timer
                                                   └── /volatile/root/var/lib/systemd/timers/stamp-motd-news.timer
----------------------------------------------------------------------
1 snapshots

snapshots for (host [box], paths [/volatile/root]):

keep 3 snapshots:
ID        Date                 Host        Tags        Directory
----------------------------------------------------------------------
7044bc28  2018-08-13 10:22:43  box                     /volatile/root
555314db  2018-08-13 10:30:19  box                     /volatile/root
f544907b  2018-08-13 11:01:43  box                     /volatile/root
----------------------------------------------------------------------
3 snapshots

remove 1 snapshots:
ID        Date                 Host        Tags        Directory
----------------------------------------------------------------------
b065f902  2018-08-13 10:21:38  box                     /volatile/root
----------------------------------------------------------------------
1 snapshots

keep only the latest of 3 snapshots (with --path /volatile/root)

restic -v --repo /volatile/backup-restic/ forget -n -l 3 --path "/volatile/root"
enter password for repository:
repository ef9151c3 opened successfully, password is correct
Applying Policy: keep the last 3 snapshots snapshots
snapshots for (host [box], paths [/volatile/root]):

keep 3 snapshots:
ID        Date                 Host        Tags        Directory
----------------------------------------------------------------------
7044bc28  2018-08-13 10:22:43  box                     /volatile/root
555314db  2018-08-13 10:30:19  box                     /volatile/root
f544907b  2018-08-13 11:01:43  box                     /volatile/root
----------------------------------------------------------------------
3 snapshots

remove 1 snapshots:
ID        Date                 Host        Tags        Directory
----------------------------------------------------------------------
b065f902  2018-08-13 10:21:38  box                     /volatile/root
----------------------------------------------------------------------
1 snapshots

Restic does not group the snapshots together,
so i am unable to clean out old snapshots,
so im unable to use hourly backups and low cpu/io usage for backups,
which would be really nice.
Do you have any idea what may have caused this?
restic treats --files-from and a path different even if the --files-from are all inside the path
Do you have an idea how to solve the issue?
eg. add a parameter eg. "--as-directory" to restic,
so "restic --repo /volatile/backup-restic/ --one-file-system --files-from=/volatile/incremental.txt --as-directory=/volatile/root -v backup" would create a snapshot and grouping it as "/volatile/root"

after rereading the issue i think it's more of a feature request than an issue, although it would be a useful feature

It is a feature request, indeed, but at least for now I think it would complicate the code too much. Instead, you can achieve the desired behavior by using tags:

add a tag to all snapshots: restic backup --tag foo (you can even do that for existing tags, see https://restic.readthedocs.io/en/latest/040_backup.html#tags-for-backup

By the way: did you know that you can simplify the workflow? The problem here is that restic cannot find a previous ("parent") snapshot because the directory name changes every time. But you can supply the ID of the last snapshot manually via restic backup --parent <id>. So if you parse the output of restic snapshots --json, look for the latest snapshot, and pass that to restic backup, restic can make a snapshot of the complete directory while only re-reading changed files.

i already tried your suggestion using tags, which is working for me :-)
i will try the --parent  solution next,
because from a "i cant remember the backup setup, lets try forget/recover without any special grouping" perspective, this solution sounds more foolproof for later operations on the repository once established.

thank you @fd0 for your hinting and clarification on how to implement the workflow i want. :+1:

wuxxin@ Did you happen to try the --parent solution?

@ismell i think i tried it and it worked, but i did not implement it in production, because in the end i used ext4 for the server in question.


Fix lines duplication in dockfmt fmt command

This patch fixes https://github.com/jessfraz/dockfmt/issues/3 and adds backup file creation when overwriting the original Dockerfile.
The backup file creation process is shamelessly copied from what gofmt does when the -w flag is provided.

thanks! sorry for the delay!


Remove testuser from Keycloak playground realm

The realm import file included with the Keycloak playground included the credentials for the pre-provisioned testuser.
Here we remove the testuser and provide steps to register a new user to try out the playground project.
Microsoft Reviewers: Open in CodeFlow

/backport to release/8.1


vsd-cluster-failover assumes primary ElasticSearch cluster is active.

src/roles/vsd-cluster-failover/tasks/main.yml hard codes the active elasticsearch cluster as hostvars[groups['vstats'][0]]['hostname'],hostvars[groups['vstats'][1]]['hostname'],hostvars[groups['vstats'][2]]['hostname']
If vsd-cluster-failover runs while standby ES is active, stats could get lost by ES backup/restore.
Manual workaround:
Change the order of servers in vstats deployment file.
Partial Code Solution:
Get active elasticsearch hosts list from primary VSD config file. Use output in vsd-switch-replication-cluster-role command. Something like this:
- name: Get ElasticSearch node list from VSD stats.conf
  shell: grep ^statscollector.elasticsearch.host= /opt/vsd/stats_collector/conf/stats.conf | cut -c 35-
  register: activeEsNodes
  changed_when: false
  delegate_to: "{{ item }}"
  with_items: "{{ groups['primary_vsds'] }}"
  run_once: true

- name: Switch replication role of standby VSD cluster when using clustered VSTATs
  command: "/opt/vsd/bin/vsd-switch-replication-cluster-role --role active -e {{activeEsNodes.stdout}}"
  when:
    - groups['vstats'] is defined
  delegate_to: "{{ item }}"
  with_items: "{{ groups['standby_vsds'] }}"

This solution only work if primary cluster is reachable.

Resolved in v4.0


examples: include 'curl' retries

After=network-online.target should mean this isn't needed in most
cases, but per
https://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/, the
definition of "network-online" is a little shaky.
Regardless, being a little more resilient to network flakes and races is
a good thing. The count of 10 was arbitrarily chosen.
No particular testing done.

If you create your branch on origin, Jenkins will create all the different clusters for you.

Originally, the installer.service was written to restart on-failure and the script has -e. This profile is used for usually unattended installs so there isn't much else to do besides retry anyway. We might revisit that, there were some concerns before. cc @crawford


Omit labs without results

In lab results list, do not show labs without results.
OHSU Feedback:
"No data available" for labs with no values just adds visual clutter. Is it possible to just only show labs that have results available?

@drdavec I believe the patient app does this already, right? If so, is it worth hardcoding this filter into the provider app or just wait until the logic is captured in the common data services library?

Decision 7/25: add this filter to provider app for September.

updated https://meld.interop.community/CarePlanningQA/apps in Version 1.3 MCC Provider (azurecontainer)


DoNotDropExtendedProperties=True not working in sqlpackage.exe

SqlPackage or DacFx Version:
.NET Framework (Windows-only) or .NET Core:
Environment (local platform and source/target platforms):

Steps to Reproduce:
I have this properties when I save the publish profile in visual studio

but it drop the extended properties when I publish the profile locally from visual studio.

and when I tried to publish the same profile with azure pipeline got this error in my release pipeline

(DacFx/SqlPackage/SSMS/Azure Data Studio)

After playing around with turning check boxes on and off, and saving the publish profile. It seems it is possible to end up with both of these set:
<DoNotDropExtendedProperties>True</DoNotDropExtendedProperties>
<DropExtendedPropertiesNotInSource>True</DropExtendedPropertiesNotInSource>

To fix this using the UI, you can uncheck Drop objects in target but not in source at the top, then uncheck Drop extended properties not in source in the section below the scroll box, then re-check Drop objects in target but not in source at the top. Then hit save. This should remove the conflict.
Or to fix it manually, you could remove the DropExtendedPropertiesNotInSource element from your publish profile XML file.
This does seem like a bug...maybe. The UI should know there is a link between Do not drop extended properties and Drop extended properties not in source and should set them accordingly based on the UI.

After playing around with turning check boxes on and off, and saving the publish profile. It seems it is possible to end up with both of these set:
<DoNotDropExtendedProperties>True</DoNotDropExtendedProperties>
<DropExtendedPropertiesNotInSource>True</DropExtendedPropertiesNotInSource>

To fix this using the UI, you can uncheck Drop objects in target but not in source at the top, then uncheck Drop extended properties not in source in the section below the scroll box, then re-check Drop objects in target but not in source at the top. Then hit save. This should remove the conflict.
Or to fix it manually, you could remove the DropExtendedPropertiesNotInSource element from your publish profile XML file.
This does seem like a bug...maybe. The UI should know there is a link between Do not drop extended properties and Drop extended properties not in source and should set them accordingly based on the UI.

@chadbaldwin thanks
True
False
this setting work for me but definitely it's a bug in UI

Thanks for reporting this, @abhi421!  DacFx has many options, and it seems we've missed a restriction on this particular combination.  As the UI is over in SSDT, I'll bring attention to this issue to that team.


Gene name -Annotation for vcf export

This PR is to import variants with VCF file in clin.iobio. It fixes and adds missing fields while exporting variants in VCF format

quarantest build successful. Demo link at
http://a517409d.quarantest.iobio.io


Hotfix/development mode

Since 'ZF\DevelopmentMode', obviously must be included in config/application.config.php so that it can be run before a config/development.config.php has been deployed, this means that the application will always expect the module to exist. If you compose a project with --no-dev, if composer does not install the module, the application throws a fatal error from the module manager:
Fatal error: Uncaught exception 'Zend\ModuleManager\Exception\RuntimeException' with message 'Module (ZF\DevelopmentMode) could not be initialized.' in /vagrant/vendor/zendframework/zendframework/library/Zend/ModuleManager/ModuleManager.php on line 195

This PR also removes the composer.lock file, adds .vagrant to .gitignore and adds a helpful welcome message to the end of Vagrantfile.

:+1:

#89 could be edited to point to develop. It points to master currently. If that's merged, I'll still suggest this be added, as it also has some additional housekeeping which is useful.

@jeremiahsmall yes, you right regarding the zf-developmentmode. I'm not sure about removing composer.lock from git. The zf-apigility-skeleton is an application rather than a library and I think it the .lock should be included. @weierophinney what do you think?

Fwiw, we don't include it in the ZF2 Skeleton App. That actually makes me wonder: we do include composer.phar in that one. Should it be added here? I guess not, since it's a pain to keep it current that way.

@jeremiahsmall that's a good point. Personally, I think we should remove composer.phar from ZF2 Skeleton Application and add composer.lock, but this is questionable.

@jeremiahsmall I just spoke with @weierophinney and he agree with me, we should include composer.lock in Apigility and ZF2 skeleton app and remove composer.phar. Can you include composer.lock again in this PR? Thanks!

Would you like me to PR same thing on the main Skeleton App? (remove composer.phar and add composer.json)

Maybe a good compromise would be to leave composer.phar in ZendSkeletonApplication, and also add it here, along with the same instructions in the README. Then also add the compser.lock file to ZendSkeletonApplication. This would at least make them the same. Then further discussion could be had regarding if the phar should be shipped.

I'm keeping track of these changes here: http://tomhanderson.blogspot.com/2015/06/guidelines-for-composer-based-skeleton.html

@jeremiahsmall Thanks!


[feature request] Debug menu : add "goto next/prev breakpoints", and "remove all breakpoints" at once

Hi,
It could be useful to have such options into the Debug menu :

go to next/previous breakpoint
remove all breakpoints

add it to the list of editor improvements for 1.1 in the godot-devel google
group
On Tue, Apr 14, 2015 at 12:31 PM, UsernameIsAReservedWord <
<EMAIL_ADDRESS>wrote:

Hi,
It could be useful to have such options into the Debug menu :

go to next/previous breakpoint
remove all breakpoints

—
Reply to this email directly or view it on GitHub
https://github.com/okamstudio/godot/issues/1690.

for 1.2, sorry
On Tue, Apr 14, 2015 at 1:00 PM, Juan Linietsky<EMAIL_ADDRESS>wrote:

add it to the list of editor improvements for 1.1 in the godot-devel
google group
On Tue, Apr 14, 2015 at 12:31 PM, UsernameIsAReservedWord <
<EMAIL_ADDRESS>wrote:

Hi,
It could be useful to have such options into the Debug menu :

go to next/previous breakpoint
remove all breakpoints

—
Reply to this email directly or view it on GitHub
https://github.com/okamstudio/godot/issues/1690.

If you want me to add it to the shared spreadsheet, my limited internet connexion does not let me access it.


Change diagnostic error thrown for when string interpolations aren't closed by a parenthesis

This pull request changes the diagnostic error thrown when a string interpolation isn't closed by a parenthesis properly (ie: let x = "g \(")
Previously, it would blurt out unterminated string literal, with these changes it'll instead throw expected ')' at end of string interpolation

@hamishknight could you ask swift-ci to test this? once the test does succeed, ill add notes and fix-its, but i want to make sure this works first

@swift-ci please test

CI down?

@hamishknight

@swift-ci please test

@hamishknight okay this one should 100% work

@swift-ci please test

Great! Now time to add the notes and fix its once I get home

@swift-ci please test

@hamishknight ninja: build stopped: subcommand failed. -- Warning: {} Host toolchain could not locate a compiler to build swift-driver.
Uhh.. can’t really be caused by us? Can it? It didn’t even get an opportunity to build the driver, so I assume it wasn’t even able to build swift itself

Looks like a legit error:
/Users/ec2-user/jenkins/workspace/swift-PR-macos/branch-main/swift/lib/Parse/Lexer.cpp:1896:13: error: expected expression
            .fixItInsert(Lexer::getSourceLoc(CurPtr), ")");
            ^

Ohh, I see, I’ll fix just a sec

@hamishknight fixed, and I’ll take note of that, thanks!

@swift-ci please test

@hamishknight this time could you test and ask it for a toolchain? I'm really sorry for all the trouble, but I can't compile locally unfortunately

@swift-ci please test

@swift-ci please build toolchain

@hamishknight Okay this should finally be it.. also, when it builds the toolchain, does it put the toolchain online for download?

@swift-ci please test

@swift-ci please build toolchain

@CFSerena Yes, when you click on the finished CI job, there should be link to the built toolchain

@CFSerena Yes, when you click on the finished CI job, there should be link to the built toolchain

I see, I’ll do some local testing then when the toolchain is outputted, thank you!

@hamishknight Windows toolchain building succeeded but Linux toolchain building failed? Interesting

Not your fault, the Linux toolchain's been failing on Jenkins for months apparently.

Not your fault, the Linux toolchain's been failing on Jenkins for months apparently.

Ah, thank god

5 hours and still building the macOS toolchain, this is some insane stuff

@hamishknight okay this is awkward.. after some local testing, it turns it the fix-it is given for after the string ends.. not directly after the (.. sigh, ill try to fix this

@hamishknight at this point im dumbfounded and not sure how to fix it..any ideas?

@hamishknight could you run swift test? this time it will fail, but I want to see where it suggests the fix it with the logs

@swift-ci please smoke test macOS

@AnthonyLatsis try again

Actually, please change the declared type to a const char pointer instead of casting, my bad.

@AnthonyLatsis do smoke tests not show exactly what failed with the tests?

@AnthonyLatsis could you trigger swift test please? ^

Would you like me to trigger it now, or after you address the most recent comment?

Would like to address the recent comments first to come down to a conclusion

@AnthonyLatsis look all good?

May I also ask that you add a couple tests for unclosed interpolations? I don't see an existing dedicated test file, so feel free to create a new file under test/Parse.

is there anything I need to do other than just create the test file and add the expressions + the // expected-error comments?

Is there anything I need to do other than just create the test file and add the expressions + the // expected-error comments?

You need to add this command directive at the top of the file (see other files): // RUN: %target-typecheck-verify-swift

I see, making some rn

@AnthonyLatsis gonna do the opening_paren stuff now

Can you add these as well?

let s = "\(x"; print(x)
let s = "\(x; print(x)

@AnthonyLatsis could you ask it to build a toolchain aswell?

Looks great. Thanks for staying with me!
@swift-ci please build toolchain macOS

@AnthonyLatsis those test failures aren’t looking so good..

So for the first, should we change the check from “\n” or “\r” to EndPtr?

"\n" or "\r" or EndPtr. But note that CurPtr == EndPtr, unlike "\n" or "\r", does not imply an unterminated string literal inside the interpolation if IsMultilineString.

does not imply an unterminated string literal inside the interpolation if IsMultilineString.

Hm.. any idea on what to do here then

Just don't emit the unterminated string error if the enclosing string is multiline and CurPtr == EndPtr.

By EndPtr i mean BufferEnd.

And for the last point, should we just do diagnose for lex_unterminated_string if TmpPtr isn’t ) at all?

Could you elaborate? We're already diagnosing for lex_unterminated_string if CurPtr isn't \n, \r or ).

Could you elaborate? We're already diagnosing for lex_unterminated_string if CurPtr isn't \n, \r or ).

Only if it’s not multiline, that is

If you want stuff like let s = "\(x \\ comment to diagnose for unclosed string interpolation, you need to diagnose whenever *CurPtr isn't ), given the string is not multiline, if that's what you meant.

Err.. not sure what to do on the last point..

Let me rephrase.. If the string is not multiline and *CurPtr != ), diagnose for both lex_unterminated_string and string_interpolation_unclosed.

@AnthonyLatsis like this then? also I wonder if the performance when compiling here will be worse..

I wonder if the speed when compiling here will be worse..

An if statement along a recovery path is not to be concerned about.
Just so we're on the same page, which point are we addressing? If the last one, this is what I meant:
if (*CurPtr == ')') {
  ...
} else if (!IsMultilineString) {
  // Diagnose for 'lex_unterminated_string' and 'string_interpolation_unclosed'
} else if (*CurPtr == '\r' || *CurPtr == '\n') {
  ...
}

Your version won't work because *CurPtr can't be ) inside a *CurPtr == '\r' || *CurPtr == '\n' condition.

Ah I see.. sorry lol, I’ll edit it and the tests tomorrow bc I’ve got to sleep now, sorry for all the trouble with this pr

@AnthonyLatsis so we shouldn't diagnose anything in the case that *CurPtr == '\r' || *CurPtr == '\n'?

We still should as we do now. The difference is that only multiline strings will reach that case.

So:
If it’s not multiline: diagnose with lex_unterminated_string and unclosed string interpolation
if it’s /r or /n: just diagnose with lex_unterminated_string, correct?

@AnthonyLatsis is the above commit correct then..?

Notes removal was on accident sorry, @AnthonyLatsis with the above commit, is all thats left just to edit tests?

is all thats left just to edit tests

Yes, unless you are also willing to address the first point from earlier:

the unclosed interpolations in the EOF tests are not diagnosed because the *CurPtr == '\r' || *CurPtr == '\n' does not consider EOF, that is, *CurPtr == BufferEnd.

is all thats left just to edit tests

Yes, unless you are also willing to address the first point from earlier:

the unclosed interpolations in the EOF tests are not diagnosed because the *CurPtr == '\r' || *CurPtr == '\n' does not consider EOF, that is, *CurPtr == BufferEnd.

Can we just add || *CurPtr != BufferEnd in the else if then?

Can we just add || *CurPtr != BufferEnd in the else if then?

==, yeah, I reckon that would work.

@AnthonyLatsis could you ask it to run tests so I see what failures are produced with the changes made now?

Could you refactor your test file according to https://github.com/apple/swift/pull/58882#issuecomment-1127827602 before I run the bot?

     } else if (!isMultilineString) {
-       diagnose(CurPtr, diag::lex_unterminated_string);
+       diagnose(TokStart, diag::lex_unterminated_string);
        diagnose(CurPtr, diag::string_interpolation_unclosed);
        diagnose(--TmpPtr, diag::opening_paren);

-       wasErroneous = true;
-       continue;
+       return formToken(tok::unknown, TokStart);
      } else if (*CurPtr == '\r' || *CurPtr == '\n' || CurPtr == BufferEnd) {
        // The only case we reach here is unterminated single line string in the
        // interpolation. For better recovery, go on after emitting an error.
        diagnose(CurPtr, diag::lex_unterminated_string);
        diagnose(CurPtr, diag::string_interpolation_unclosed);
        diagnose(--TmpPtr, diag::opening_paren);

        wasErroneous = true;
        continue;
      } else {
        // As a fallback, just emit an unterminated string error.
-       diagnose(CurPtr, diag::lex_unterminated_string);
+       diagnose(TokStart, diag::lex_unterminated_string);
-       wasErroneous = true;

        return formToken(tok::unknown, TokStart);
      }
    }

@AnthonyLatsis with that (hopefully) out of the way, I'll edit tests and then commit in a second..

One last thing. For a multiline string, *CurPtr == '\r' || *CurPtr == '\n' indicates an unterminated string literal inside the interpolation, whereas the CurPtr == BufferEnd we added does not. This means the lex_unterminated_string error emitted inside this branch should be put behind an if (CurPtr != BufferEnd) (you might recall me noting this a while back). I have addressed this below and simplified the flow a bit to avoid duplication. It probably looks nothing like the current version, so feel free to ask questions.
  if (*CurPtr == ')') {
    // Successfully scanned the body of the expression literal.
    ++CurPtr;
    continue;
  } else {
    if ((*CurPtr == '\r' || *CurPtr == '\n') && IsMultilineString) {
      diagnose(CurPtr, diag::string_interpolation_unclosed);
      diagnose(--TmpPtr, diag::opening_paren);

      // The only case we reach here is unterminated single line string in
      // the interpolation. For better recovery, go on after emitting
      // an error.
      diagnose(CurPtr, diag::lex_unterminated_string);
      wasErroneous = true;
      continue;
    } else if (!IsMultilineString || CurPtr == BufferEnd) {
      diagnose(CurPtr, diag::string_interpolation_unclosed);
      diagnose(--TmpPtr, diag::opening_paren);
    }

    // As a fallback, just emit an unterminated string error.
    diagnose(TokStart, diag::lex_unterminated_string);
    return formToken(tok::unknown, TokStart);
  }

One last thing. For a multiline string, *CurPtr == '\r' || *CurPtr == '\n' indicates an unterminated string literal inside the interpolation, whereas the CurPtr == BufferEnd we added does not. This means the lex_unterminated_string error emitted inside this branch should be put behind an if (CurPtr != BufferEnd) (you might recall me noting this a while back). I have addressed this below and simplified the flow a bit to avoid duplication. Notice that the last three branches were collapsed into a single else branch. It probably looks nothing like the current version, so feel free to ask questions.
  if (*CurPtr == ')') {
    // Successfully scanned the body of the expression literal.
    ++CurPtr;
    continue;
  } else {
    if ((*CurPtr == '\r' || *CurPtr == '\n') && IsMultilineString) {
      diagnose(CurPtr, diag::string_interpolation_unclosed);
      diagnose(--TmpPtr, diag::opening_paren);

      // The only case we reach here is unterminated single line string in
      // the interpolation. For better recovery, go on after emitting
      // an error.
      diagnose(CurPtr, diag::lex_unterminated_string);
      wasErroneous = true;
      continue;
    } else if (!IsMultilineString || CurPtr == BufferEnd) {
      diagnose(CurPtr, diag::string_interpolation_unclosed);
      diagnose(--TmpPtr, diag::opening_paren);
    }

    // As a fallback, just emit an unterminated string error.
    diagnose(TokStart, diag::lex_unterminated_string);
    return formToken(tok::unknown, TokStart);
  }

Thanks! Yesterday I was actually about to ask if it was possible to collapse it down to be simpler

@AnthonyLatsis swift test?

@swift-ci please smoke test macOS

@swift-ci please smoke test macOS

@AnthonyLatsis try again

@swift-ci please smoke test macOS

@AnthonyLatsis (seems it hasn't started.. again)

Must be a bug in the mobile app
@swift-ci please smoke test macOS

@AnthonyLatsis seems like it succeeded in running the tests 😄  as one last request, could you ask it to build a toolchain? I'd like to do some last expirementing locally

@swift-ci please build toolchain macOS

@AnthonyLatsis seems it still points to outside the string..

What if CurPtr - 1 is not a delimiter, or a closing delimiter of a nested string like "\("hello"?

What if CurPtr - 1 is not a delimiter, or a closing delimiter of a nested string like "\("hello"?

Fair point, any other ideas on what to do?

What exactly is the goal?

Get it to point accurately to where the end parenthesis for the string interpolation should be placed, which, now that I think about it, why not point to TmpPtr + 1 instead of CurPtr for dish::unclosed_string_interpolation?

Hm, let’s try pointing to —TmpPtr then. Give me a second

@AnthonyLatsis swift test, please

If we've settled on the error also pointing to the opening paren, then let us merge the note into the error. I'm thinking cannot find ')' to match this opening '(' in string interpolation or similar.

Sure!

@AnthonyLatsis ^

@AnthonyLatsis fixed the issues

@swift-ci please build toolchain macOS

@AnthonyLatsis
Command Output (stderr):
--
SIL verification failed: struct operand type does not match field type
  $Builtin.Int64
  $Builtin.Int32
Verifying instruction:
     %33 = integer_literal $Builtin.Int64, 714    // user: %34
->   %34 = struct $UInt (%33 : $Builtin.Int64)    // user: %102
     %102 = apply %101(%89, %25, %32, %34, %100) : $@convention(thin) (StaticString, StaticString, StaticString, UInt, UInt32) -> Never

This literally can't be related to us, can it?

@swift-ci please build toolchain macOS

@AnthonyLatsis this is so confusing.. I don’t think the SIL Error has anything to do with us though, could you just ask it to test only?

The failure is unrelated. I'll trigger a smoke test as soon as I get to my laptop, but it may fail too if that test failure somehow slipped through PR testing. Meanwhile, let's see if it triggers from the app
@swift-ci please smoke test macOS

@swift-ci please smoke test macOS

@AnthonyLatsis could you ask it to build the toolchain again now?

I will run validation tests first just in case, but that failure is most likely non-deterministic
@swift-ci please test macOS

@eeckstein Could you take a look at this unrelated test failure?
https://ci.swift.org/job/swift-PR-toolchain-macos/164/console

@swift-ci please build toolchain macOS

Already fixed via https://github.com/apple/swift/pull/59048 .

Ah, now it makes sense — I was looking at the hoist_destroy_addr.sil in the test directory. Thank you!

@AnthonyLatsis works locally! Ready for merge now?

We need a representative to review these changes first.

@swift-ci please smoke test

@AnthonyLatsis tests passed; time for merge?


Work On Rv1106

Can It work on RV1106？？？It has tested？

Can It work on RV1106？？？It has tested？

I did not test on RV1106 EVB. But I checked the code. The yolov8 adaption part is release by official. So the inference part should be work, as detect 2d is not a though task. Btw, What I confirmed is that the obb is not working well on rk3588.

Can It work on RV1106？？？It has tested？

RV1106 has 0.5Tops AI capacity. We have tried running yolov3 on s32v234 NXP, four years ago 13fps by not using the fpn part, which has only 0.08Tops. So I think 0.5Tops is enough to run a 2d detect network. if you have a RV1106 EVB tried to execute the example first in the rknn model zoo.


Can't move window over to second screen.

Title explains it, whenever i try to move my window over to the second screen, it reaches a border (moving my cursor works fine).
I compiled berrywm from source and im using KISS linux.

Sorry for this issue, forgot to run configure, lol.

That did not fix it, sorry

Same issue here

Addberryc edge_lock   "false" to your config. https://github.com/JLErvin/berry/issues/203

Sorry for never closing this, I'll close it as I don't have a second screen anymore, and I dont use X.org in general.


Ligand Expo molecules

This will eventually be a collection of molecules from Ligand Expo.  I've written a draft of the script to identify molecules and variants we want to process.  The current implementation of processLigand() is just a placeholder, showing a minimal implementation with RDKit.  It takes a SMILES string and returns a new set of SMILES strings for variants.  @jchodera will replace it with a better implementation.
I wrapped the calculation in a TheadPoolExecutor on the assumption you would want to parallelize it.  You can change it to a ProcessPoolExecutor if needed.

We need to figure out how this is going to work.  Based on the discussion in #67 it seems like we're leaning toward something like this:

Select every Ligand Expo molecule up to some fairly small maximum size.
Identify all low energy tautomer/protonation states for each one (or perhaps just protonation states?)
Somehow generate conformations for them.

@jchodera what do you suggest for generating the conformations?  You seemed to have specific ideas about how to do it.  As long as we only include very small molecules, we can reasonably include up to a few hundred thousand total conformations if necessary.

@jchodera any ideas about this?

Apologies for the delay---the OpenMM/OpenFF renewal proposals ate up a bunch of time.
Ideally, the pipeline would use the following steps:

Apply filtering rules (e.g. elements, min/max number of heavy atoms)
Sort by popularity so that the most-used chemical components should appear first in the list
Expand protonation/tautomeric states with Epik, keeping protonation states more than a min solution population e.g. exp(-6) to get states up to a ~6 kT penalty)

In terms of how we specifically generate conformations, we've talked about one or both of two approaches:
A. After expanding protonation/tautomeric states, generate MD at some temperature (300K? 400?) with a surrogate potential, such as GFN2-xTB, in vacuum
B. Before expanding protonation/tautomeric states, we enumerate <10 conformers with the OpenFF Molecule.generate_conformers (which can either use RDKit or OpenEye toolkits), vary protonation/tautomer states of each conformation, and then subject these directly to max ~3 steps of optimization in an OptimizationDataset
Questions

For (1), what filtering rules should we apply?  Should we really use total number of atoms in [3,100] as the filter criteria, or filter on heavy atoms or molecular weight? Should we expand to more main group elements, which our level of theory seems to handle well, or would we need pseudopotentials to make these efficient?
For (3), I think we established that 6 kT was fine.
I think you prefer starting with (A), but it would be great to include a (B) dataset as well, even if just for the OpenFF level of theory
In terms of naming of each molecule, is there a preference? Can we use something like {PDB ID}_{conformer index}_{protonation/tautomer state index} (or some permutation)? Or should we be using IUPAC names? Or even SMILES?
Do we want to consider a separate dataset that includes transition metal elements?

I should be able to tackle this early this week.
Tagging @wiederm for additional comment.

There are two distinct datasets we've talked about creating based on Ligand Expo.  They're for different purposes.
One possible dataset would be to look at the effect of protonation.  It would include pairs of molecules that differ only in the presence of a single hydrogen.  They would be in identical conformations, so the only difference would be the extra hydrogen.  This would be limited to very small molecules, maybe 10 atoms or so.  Applying it to large molecules would be wasted computation.  If a pair of 100 atom molecules are identical except for a single hydrogen and are in identical conformations, most atoms see nearly identical environments and have nearly identical forces.
The other possible dataset would be to increase our sampling of chemical space.  It would include all molecules up to a fairly large size limit, maybe 100 atoms, possibly augmented with tautomers and protonation variants.  That would be a lot of molecules, some of them quite large, so we would need to limit it to a very small number of conformations for each molecule, possibly only a single conformation.
An alternative we've discussed for sampling more chemical space is to use Enamine molecules.  We would do one or the other of those two datasets, not both.  They would both have the same goal, and they would both be very expensive.
Also note that the dataset from #72 already includes conformations for all Ligand Expo molecules with up to 36 atoms.


Problems to sort on MongoDB

I use MongoDB https://github.com/jenssegers/laravel-mongodb
The problem is that sorting doesn't work, it sort "almost good", empty fields first, but then it mixes the result. K before C, etc.
If I do the search on Mongo, I get correct results. the problem is with datatables.
Any idea about why?

@elfeffe I haven't used MongoDB so I'm not really sure about this. But maybe try debugging by inspecting the generated queries in ajax response. Just set APP_DEBUG=true to include the debug queries on ajax response.

Closing old issues. Please open a new one if needed. Thanks!


Provide evidence in cli output

Is your feature request related to a problem? Please describe.
We're using Wappalyzer in Docker to automatically detect technologies on our clients' websites. Wappalyzer is very reliable and accurate in this regard, well done! Our pentesters often complain that it is unclear how a certain technology was detected/determined. Until now, we always manually reference the technologies json to figure out what happened.  For a large number of technologies, it can be quite time-consuming to validate each.
Describe the solution you'd like
Wappalyzer adds evidence fields that describe how this technology was detected.

[ ] Which pattern matched?
[ ] What string was matched?
[ ] Where was the string found? Headers, Script, HTML, etc.
[ ] Was the technology found through implicits? If so which?

Describe alternatives you've considered
A simpler option would be to reference the json template used to for this technology only, but that would leave much information out.

We could perhaps emit an event when a detection occurs, the internal representation looks like this:
[
  {
    "technology": {
      "name": "Amazon S3",
      "categories": [
        19
      ],
      "slug": "amazon-s3",
      "url": [],
      "xhr": [],
      "headers": {
        "server": [
          {
            "value": "^AmazonS3$",
            "regex": {},
            "confidence": 100,
            "version": ""
          }
        ]
      },

      ...

      "implies": [
        {
          "name": "Amazon Web Services",
          "confidence": 100
        }
      ],
      "excludes": [],
      "requires": [],
      "requiresCategory": [],
      "icon": "aws-s3.svg",
      "website": "http://aws.amazon.com/s3/",
      "pricing": [],
      "cpe": null
    },
    "pattern": {
      "value": "^AmazonS3$",
      "regex": {},
      "confidence": 100,
      "version": ""
    },
    "version": ""
  }
]

In this case the pattern ^AmazonS3$ matched a response header.
You'd need to create a of cli.js to listen for the events and add the results to the output and use that as the Docker entrypoint.

Cool, that output well suits our needs! I understand that you only want to emit an event in the official version and that I would need to maintain a separate entrypoint to include the details from that event in the output? Would you be willing to include both in the official version, possibly under a feature flag?

Fine. :) I added an option for extended output in c5909d314ed8032c366524df560f2b00c3025765. Pass -e or --extended and you'll get an additional field called patterns in the response.

Hi @AliasIO, thanks a ton for your work so far! Through some testing on v6.9.13, I still found it difficult to understand how a technology was found. For example, the output does not show which text matched the pattern regex. Furthermore, when using --recursive, it was not clear on which specific page the technology was found. Finally, the implies field was only added in the pattern for the technology that caused the imply. I've "reversed" this to a implied_by field.
Let me know what you think of the PR and if you think we need to output things differently.

I included the matched value in 5f629ad25a24694e6b1ab7bb60b8b5b565846d09.
I prefer to keep the outputs separate and not make big changes to include this.
You can use this JavaScript snippet to mix the extended output into results (outside of Docker), or port it to whatever language you're using:
const { technologies, patterns } = results

technologies.forEach((technology) => {
  technology.evidence = {
    patterns: patterns[technology.name],
    impliedBy: Object.keys(patterns).reduce((names, name) => {
      patterns[name].some(({ implies }) =>
        implies.includes(technology.name)
      ) && names.push(name)

      return names
    }, []),
  }
})

The combined results looks something like this:
"technologies": [
  {
    "slug": "amazon-web-services",
    "name": "Amazon Web Services",
    "confidence": 100,
    "version": null,
    "icon": "aws.svg",
    "website": "https://aws.amazon.com/",
    "cpe": null,
    "categories": [
      {
        "id": 62,
        "slug": "paas",
        "name": "PaaS"
      }
    ],
    "evidence": {
      "impliedBy": [
        "AWS Certificate Manager",
        "Amazon Cloudfront",
        "Amazon S3"
      ]
    }
  },
  {
    "slug": "amazon-cloudfront",
    "name": "Amazon Cloudfront",
    "confidence": 100,
    "version": null,
    "icon": "Amazon-Cloudfront.svg",
    "website": "http://aws.amazon.com/cloudfront/",
    "cpe": null,
    "categories": [
      {
        "id": 31,
        "slug": "cdn",
        "name": "CDN"
      }
    ],
    "evidence": {
      "patterns": [
        {
          "type": "headers",
          "regex": "\\(CloudFront\\)$",
          "value": "1.1 236197b1350688f238411607ca197958.cloudfront.net (CloudFront)",
          "confidence": 100,
          "version": "",
          "implies": [
            "Amazon Web Services"
          ],
          "excludes": []
        },
        {
          "type": "headers",
          "regex": "(?:)",
          "value": "-62yXukgj-XT8FxRses04BNF-N0zXesjbBEpP3cGE_OqoVkeLbaF-A==",
          "confidence": 100,
          "version": "",
          "implies": [
            "Amazon Web Services"
          ],
          "excludes": []
        }
      ],
      "impliedBy": []
    }
  }
]

Note that the matched value can be very long (e.g. the entire HTML source code). When this happens I'm setting value to null to avoid huge outputs.
Keeping track of the URL in matches would require more changes but hopefully this helps.

Fair enough. Thanks again. Regarding the very long output, in the PR, I used regex.exec() to get the part that actual matched. I think that's far more useful than writing null or complete html.
See https://github.com/AliasIO/wappalyzer/compare/master...EndPositive:regex-value

I'm including both in 50cb0ba2889eb8c2360fb5c1574e19987d660b78. The match is often empty as we use an empty regex to match any value, e.g. when testing if a header exists. The value may be useful in those cases.


ARROW-10604: [GLib][Ruby] Add support for 256-bit decimal

@emkornfield I noticed that Decimal256 doesn't provide the following APIs that are provided for Decimal128. Is it intended?

explicit operator int64_t()
operator+()
operator-()

@kou I'm still working on adding some of these. If these are ones that ruby requires I'll work on those next. (operator+ should be done in https://github.com/apache/arrow/pull/8897 and operator- will be trivial to add as well.

@emkornfield Thanks for sharing the current status! They're not required so far. I'll add support for them to Ruby when you're done.

@kou I released bigdecimal 2.0.3 and 3.0.0. Both versions support BigDecimal#precision.

Thanks.
I've changed to use bigdecimal 2.0.3 or later.

+1


Working with unwind

Hi Lee,
Let me first join the chorus of folks thanking you for this stellar project.  Thank you!
My project hit a snag trying to wire up reducers that play nice with the new unwind( ) code in kit/lib/redux.  Although I can imagine you have a lot on your plate, it would be really helpful to have examples and docs for reducers in the unwind array.

Thanks @kajohnsonjd!
I have added a new issue to track documenting unwind and reducers at https://github.com/reactql/docs/issues/2
In the meantime, here's how to use them -

Make sure your reducers follow the pattern of exporting an object in the same 'shape' as shown in this example reducer - i.e. {name: { state, reducer }}. The name will become the reducer's key, state is an object containing the reducer's initial state, and reducer is your reduction function.

Import the reducers you need here

Insert the import into the reducers array here

That should be all you need to do. You don't need to touch unwind - that's just the internal logic for mapping the reducer's shape to the internal Redux implementation.
Note: In future versions, I'm considering how this can be made easier - perhaps by having an API with a .register() function, so that reducers can be added on-the-fly instead of having to mess with kit code. But for now, this is how it's done.


Update showcase.json for Verity #2

Thank you for your contribution to the IC Developer Portal. This repo contains the content for https://internetcomputer.org and the ICP Developer Documentation, https://internetcomputer.org/docs/.
If you are submitting a Pull Request for adding or changing content on the ICP Developer Documentation, please make sure that your contribution meets the following requirements:

[x] Follows the developer docs style guide.
[x] Follows the best practices and guidelines.
[x] New documentation pages include document tags.
[x] New documentation pages include SEO keywords.
[x] New documents are in the .mdx file format to support the previous two components.
[x] New documents are registered in /sidebars.js, otherwise, it will not appear in the
side navigation bar.
[x] Make sure that the .github/CODEOWNERS file is
filled with new documents that you added. This way we can ensure that future Pull Requests are reviewed by the right people.

Hello @rsoury, thank you for this! We are working on a revamp of the page and we will review this tomorrow and make any necessary changes

Hello @rsoury Verity is not featured on the page so the screenshots will not show. Could you consider removing the file commits and the screenshot value?

@jennifertrin - Done.

Great, thank you. This will go in once this fix goes in: https://github.com/dfinity/portal/pull/3919


Thoroughly evaluate documentation for current state of the technology

As a whole, the NuGet docs are burdened by various legacy aspects that need to be cleaned up. The general emphasis needs to be as follows:

.NET Standard is today the defacto targeting choice; need to de-emphasize .NET Framework and other targets in favor of .NET Standard.
PackageReference is the defacto reference format, with packages.config still in use; project.json needs to be archived away.
The experience on Linux/Mac needs to be incorporated in, as .NET Core becomes more popular as a NuGet consumer. That is, the docs reflect their Windows-only legacy, and thus needs to be more generalized across the board.
Package creation scenarios needs streamlining for the most common cases (drawing from data analysis of what packages on nuget.org really use). That is, not all options than can be included in a package are equal. Primarily tutorials/walkthroughs should focus on the core scenarios, with the added features split into separate section. There is some of this structure today with things like symbol packages, which themselves need to be de-emphasized further as support is weak.
In general, because you must use nuget.exe 4.1 or higher to even publish to nuget.org, all information for past versions of nuget.exe need to be archived so that we don't have so many version-specific details throughout the docs.

Noting https://docs.microsoft.com/en-us/nuget/create-packages/supporting-multiple-target-frameworks#comments-container -- make sure the multi-targeting topic comes from a .NET Standard standpoint first.

Status:
#1 mostly done.
#2 needs attention in creation section.
#3 done in consume section; creation needs attention still.
#4 being tracked by other issues separately
#5 done
#6 tracked separately
#7 tracked separately
#8 done
#9 not started
#10 not started

9 is done. The remainder are tracked separately, so closing.


OrientDB Server Accepts Connection Does Not Respond to Connect request

Running latest, attempt to run either console or any unit test OrientDB server never responds to connection request, causing client to hang indefinitely waiting for a response:
Connection.cs Line 248
Document = ExecuteOperation(operation);
Inbound socket connection is created, but the server never responds.

Nevermind, master doesn't support protocol 28, which causes the connection to hang.

@billbshs ,
Pushed protocol28 branch to the master.
Now driver support tokenBased session


v1.5.0-alpha hides parseCommandLine

To give users of my LS API client/server the same commandline interface they are used to from tsc, I have been using parseCommandLine, but quite recently, and sadly affecting v1.5.0-alpha, this has been marked @internal and is no longer available.
Could you please re-expose this? Ironically, as far as I can tell, the culprit seems to have been a patch that was meant to expose more functions:
commit 18d8fedbf52a02af0700f653f499a2e79fb479d3
Author: Mohamed Hegazy<EMAIL_ADDRESS>Date:   Tue Mar 31 10:52:21 2015 -0700

    Expose readConfigFile and parseConfigFile

My users are getting impatient with me depending on the github version of TS, and now I can't offer them use the new npm alpha:-(

I can work around (e.g. by using ["parseCommandLine"] for now.
Btw, what is the story wrt @internal and *_internal.d.ts? I'm already referencing typescript_internal.d.ts - should the function appear there?

You should not take a dependency on typescript_internal.d.ts; we have added the @internal change and we will remove typescript_internal.d.ts file.

@clausreinke what are you using this call for? can it be replaced by using tsconfig.json?

As mentioned above, the idea is to keep the experience similar to that for tsc: users can, for most smaller projects, give commandline options or, for longer-term projects, provide a tsconfig.json, or override the latter with the former.
In terms of editor experience, it is nice that one can restart the server with different options, without having to create or modify a tsconfig.json; though, once I support reloading tsconfig.json in a running server, there'll be a conflict because commandline options are supposed to take precedence.

You should not take a dependency on  typescript_internal.d.ts ; we have added the @internal change and we will remove typescript_internal.d.ts file.

:-(((( There is quite a lot of useful functionality I reuse via typescript_internal.d.ts - here is a quick re-build failure of my project with the reference removed:
node node_modules/typescript/bin/tsc.js tss.ts -target ES5 -m commonjs --noEmitOnError -outDir bin 2>&1 | tee build.log
harness.ts(31,20): error TS2339: Property 'createTextChangeRange' does not exist on type 'typeof "typescript"'.

harness.ts(31,45): error TS2339: Property 'createTextSpan' does not exist on type 'typeof "typescript"'.

harness.ts(47,18): error TS2339: Property 'createTextChangeRange' does not exist on type 'typeof "typescript"'.

harness.ts(47,44): error TS2339: Property 'createTextSpanFromBounds' does not exist on type 'typeof "typescript"'.

harness.ts(58,23): error TS2339: Property 'unchangedTextChangeRange' does not exist on type 'typeof "typescript"'.

harness.ts(65,19): error TS2339: Property 'collapseTextChangeRangesAcrossMultipleVersions' does not exist on type 'typeof "typescript"'.

tss.ts(81,12): error TS2339: Property 'sys' does not exist on type 'typeof "typescript"'.

tss.ts(82,32): error TS2339: Property 'sys' does not exist on type 'typeof "typescript"'.

tss.ts(174,14): error TS2339: Property 'isRootedDiskPath' does not exist on type 'typeof "typescript"'.

tss.ts(177,31): error TS2339: Property 'combinePaths' does not exist on type 'typeof "typescript"'.

tss.ts(181,27): error TS2339: Property 'sys' does not exist on type 'typeof "typescript"'.

tss.ts(253,38): error TS2339: Property 'sys' does not exist on type 'typeof "typescript"'.

tss.ts(255,45): error TS2339: Property 'getDefaultLibFileName' does not exist on type 'typeof "typescript"'.

tss.ts(385,76): error TS2339: Property 'textSpanEnd' does not exist on type 'typeof "typescript"'.

tss.ts(413,75): error TS2339: Property 'textSpanEnd' does not exist on type 'typeof "typescript"'.

tss.ts(601,16): error TS2339: Property 'sys' does not exist on type 'typeof "typescript"'.

tss.ts(658,23): error TS2339: Property 'normalizePath' does not exist on type 'typeof "typescript"'.

tss.ts(658,40): error TS2339: Property 'sys' does not exist on type 'typeof "typescript"'.

tss.ts(662,13): error TS2339: Property 'sys' does not exist on type 'typeof "typescript"'.

tss.ts(664,26): error TS2339: Property 'getDirectoryPath' does not exist on type 'typeof "typescript"'.

tss.ts(680,45): error TS2339: Property 'sys' does not exist on type 'typeof "typescript"'.

tss.ts(693,19): error TS2339: Property 'normalizePath' does not exist on type 'typeof "typescript"'.

tss.ts(693,36): error TS2339: Property 'combinePaths' does not exist on type 'typeof "typescript"'.

tss.ts(712,59): error TS2339: Property 'getDirectoryPath' does not exist on type 'typeof "typescript"'.

tss.ts(720,18): error TS2339: Property 'extend' does not exist on type 'typeof "typescript"'.

tss.ts(724,16): error TS2339: Property 'extend' does not exist on type 'typeof "typescript"'.

test ! -s build.log

I seem to recall that helper functions to compensate API changes often appear in internal, and letting TS figure out the platform sys setup is also useful.

thanks @clausreinke for the list. i think my PR is not sufficient. We will go through the list and expose APIs that are not strictly internal implementation details. should have an update by the end of the week.

Fwiw I depend on internal as well

ts.sys should be exposed with #2692. we have talked about things like extend, clone, and hasProperty, and we feel these are not related to the language perse and should not be on the API.
We are open to exposing utlities like createTextSpanFromBounds and getDefaultLibFileName, but i will do these in a different change.
@basarat can you let us know what internal APIs you depend on?

can you let us know what internal APIs you depend on?

Sorry, I double checked. I guess I am not anymore :heart:

Thanks. Though I've got this "down the rabbit hole"-feeling again, like so often in these last few years (computeLineStarts, computePositionOfLineAndCharacter, ...). I really wish someone would take your new toy away!-) Or at least use some form of @deprecated before switching to @internal.
Perhaps if you forced yourself to document all API changes (including suggestions about how to use the modified API to implement old API uses) in one place, things might be less tiresome (such as frequent renamings, moves, +1/-1, property vs getter and back, etc. - refactoring is fun, but has to slow down when external APIs are involved)? Otherwise, I miss such changes until the branch is merged and the LKG is updated, by which time it becomes hard to reconstruct your intentions behind the changes.

I am sorry for the trouble. We have been keeping track of API breaking changes in https://github.com/Microsoft/TypeScript/wiki/API-Breaking-Changes ; if there are ones that were missed  please let us know and we will document them if they were intentional and revert the change if they were not.
As for the _internal.d.ts issues, that was never meant to be part of the public API, hence the "_internal" suffix. We did not document this in any of the samples (see https://github.com/Microsoft/TypeScript/wiki/Using-the-Compiler-API). We are sorry for any confusion, and for 1.5 we have removed it to make sure we there are not any confusion about what is public in the future.
This is our second release with the API, and we do not intend to make any big changes at the point, but there were a lot of clean up we had to do as we got feedback on the API from 1.4. We appreciate your patience as you transition from 1.4 to 1.5 and we will make sure the next transition is much smother.
I have exposed some of the APIs you mentioned above in #2730. please let me know if i missed any and will look into exposing them.

https://github.com/Microsoft/TypeScript/wiki/API-Breaking-Changes :sugar: :heart:

I understand:-) I've been supporting typescript-tools since Nov 2012 (basis for Vim/Emacs/Sublime plugins almost as long), so I've been working with "internal" APIs most of the time, and have been exposed to much of the back-and-forth... I'll close this issue once I've converted my code.
The final thing I'm looking at is lineMaps (in ScriptInfos and position-to-line/col conversions), which you are trying to hide now. Guess I'll have to use SourceFiles in favour of ScriptInfos, which needs some restructuring.
There is an Atom-feed for wiki updates https://github.com/Microsoft/TypeScript/wiki.atom , but it isn't all that good (missing page titles).

Thanks again.

oops, should I have waited for the branch merge?

@mhegazy

I have exposed some of the APIs you mentioned above in #2730. please let me know if i missed any and will look into exposing them.

Just updated typhen and currently I'm not able to use the official API because the following are missing (I think they are useful for each project converting TS interfaces to more 'extensive' schemas, e.g. JSON schema as in my case) ::

ts.IntrinsicType
ts.ResolvedType

why do you need ResolvedType? this is meant to be an internal implantation detail, and can not be relied on as a public supported API.

I don't see a resolution on the thread specifically about the OP parseCommandLine which Angular also uses in some places. We need to customize the compiler and would like to expose a tsc-identical command line API. Can it be non-@internal ?

ping @mhegazy can we send a PR to export parseCommandLine?

For context, we have a command that wraps tsc and wants to replicate its behavior of command-line flags and tsconfig.json parsing.  See code at https://github.com/angular/tsickle/blob/f411ab125356c7e74c1213834942a93aa4538dfd/src/main.ts#L74

Ping!