Patch class files for Java 19 code to no longer have the "preview" flag (this enables Java 19 memory segments by default)

After many complaints that you need to use --enable-preview to use the new MMapDirectory with Java 19 (especially Elasticsearch peope where afraid that passing this flag enables other "unwanted features" in the JDK), this PR makes the class file exposed by javac "real java 19 production class files", by removing the preview flag from the class file.
Actually this is exactly according to spec:

the class files are only marked with the flag to prevent them from being used in Java versions that do not suport that exact API level. This is no issue, because in Lucene's provider code we only load the new class files when we have exactly the version Runtime.version().feature()==19 (later also 20). The implementation classes are also not public, so they can't be instantiated without our prechecks.
there is nothing inside the JDK that needs to be enabled to make foreign APIs available, they are ready and useable: The preview features are always available (e.g. with reflection, see the official documenattion of preview features). The runtime flag is only introduced in JDK to allow classloader to accept the "marked" class files and reject those with invalid preview state/version. Our class files are standard Java 19 class files, so classloader treats them as "normal".

With this PR we use MMapDirectory by default on exactly Java 19. On Java 20 it prints at moment a warning (like before). I will soon provide another MR-JAR variant for Java 20 (there were some significant API changes, so we need a separate SourceSet and compiler).
If nobody objects, I will merge this around Xmas. I will add a CHANGES.txt entry mentioning this.

As cleanup I also moved all MR-JAR special cases into a separate gradle file to have javac.gradle clean and only contain the defaults.

Maybe have a look, @mcimadamore

theoretically i am fine with the change, the less SIGSEGV the better. the hoops we jump through though :)

I assume that older JDK support will be eagerly cleaned up? Say only provide support for JDK N and JDK N+1. So the currently shipping JDK and the one in development. Thus limiting the maintenance cost.

That's exactly my plan. I will soon add JDK 20 (the code here already prepares that by some code refactoring to enable features only on specific jdk feature versions.
I will keep 19 and 20. When LTS 21 comes out hopefully with final release, I will remove 19.
At some point we will change main branch on 21 and could therefore remove ByteBuffer support.

I'm not particularly a fan of patching the class files, but it's quite straightforward and is built upon well specified behaviour. Taken together, this change (if you squint) is no worse than depending upon the unsupported Unsafe API (and as Robert says, the less SIGSEGV the better) . 👍

Yes. That's exactly my thoughts. Performance wise there's no risk as we have benchmark and patching the class files here is quite simple and risk less. I would not preprocess class files with ASM or similar.
Btw, the idea here with the "doLast" was inspired by ASM 's Gradle build. This works well with caching, as the output of JavaCompile task is still well defined, we just apply the change inside the task.

After some discussions on twitter (https://twitter.com/jpountz/status/1607308789417492480), vendors of JDK runtimes are allowed to exclude preview features and still pass TCK tests. With current code this is a problem, but to fix it, we can do a check if the MemorySegment class is available before loading our implementations. Currently the code produces a LinkageError on problems, so this would be good to have.
A followup PR is coming soon.

Here is the followup PR: #12043

But I think we should not add those sanity checks, because JEP 12 states:

Universally available. The Umbrella JSR for the Java SE $N Platform enumerates the preview features of the platform. The desire for feedback and the expectation of quality means that these features are not "optional"; they must all be supported in full by every implementation of Java SE $N. In particular, all preview features must be disabled by default in a Java SE implementation, and an implementation must offer a mechanism to enable all preview features. An implementation must not allow preview features to be enabled on an individual basis, since all preview features have equal status in the Java SE Platform.

Comments?

This all looks like a false alarm. Every JDK vendor is required to have the "preview features" available. There is no discussion. So the sainity checks are not needed. I will close the linked PR unmerged. We can use it at a later stage if somebody from IBM/OpenJ9 complains, but I see no reason to take action.
In short: all fine.

IMHO it would still be useful to have some kind of flag to disable this. Because of this patch it is effectively no longer possible to run without memory segment in JDK 19 (or later, for future releases). This means that it will be quite tricky to diagnose performance differences caused by the byte buffer <-> memory segment change vs. JDK N <-> JDK N + 1. I also thought that the whole point of only enabling the memory segment index with --enable-preview was to give a choice to downstream clients whether to enable or not, and to test this in the real world (so as to provide feedback). Forcing downstream clients to use (indirectly) a preview API is a pragmatic solution, for sure, but also one that loses some of the benefits of the previous approach.
IMHO, if there was discomfort in using --enable-preview before because of enabling of unwanted features (btw, this concern is not baseless (**)), this patch seems to just kick the can down the road: now the discomfort will be directed at whether using JDK 19 as a whole or not.
(**) - Java 19 has other preview features as well, namely Loom. In Java 19 there were some startup regression when enabling Loom. To mitigate these regression, Loom support is only enabled if the --enable-preview flag is detected. (AFAIK, this is no longer the case in 20, as the underlying issues have been resolved). So, enabling preview features in JDK 19 can result in some performance differences, even if none of the Java 19 experimental features is used.

Thanks Maurizio,
there could be the option to pass a system property to disable (this was discussed on the Elasticsearch issue already). I can do that as a separate PR.
Actually, I do not want to add some public setting to the API (like the current unmap hack enabler), but a system property may help.

I also thought that the whole point of only enabling the memory segment index with --enable-preview was to give a choice to downstream clients whether to enable or not, and to test this in the real world (so as to provide feedback).

Yes and no, basically the flag in the class files was mainly added to prevent loading classes with preview API features in a JVM that has a different major version (JEP 12: "A JVM implementation for Java SE $N must not define a class file that depends on the preview features of a different Java SE release, even if the JVM implementation would otherwise understand the class file's version. Specifically, ClassLoader.defineClass must fail for the bytes of the class file. This prevents such class files from running years into the future, long after the preview features that were enjoyed by the developer have been removed or finalized in a different form. In essence, Java SE $N+1 does not claim backwards compatibility with the preview features of Java SE $N.").
I understand this as "there is a new preview API that may change, so class files may not work anymore, but it is stable".
I think another important part is: "A preview API may add public members to classes and interfaces in java.* and javax.; add public classes and interfaces to java. and javax.; add and export packages in the java. and javax.* namespaces; and add modules in the java.* namespace. A preview API may modify the narrative specifications (though not the signatures) of pre-existing methods, fields, classes, interfaces, packages, and modules. A preview API typically resides in the java.base module, but may reside additionally or exclusively in other java.* modules, including those introduced just for the preview API."
Lucene is here the downstream consumer ("consumer of this new API"); the downstream user of Lucene never get in contact with Panama APIs so, Elasticsearch, Solr, or Lucene users can't give any feedback on the APIs. Lucene already provides feedback about the API. Lucene 9.4 was our "test balloon", now we think now that it works and performence is fine. We ca still add a sysprop to disable, for sure.
Project Loom is different as it has big changes in the underlying JVM, not only the API. Panama added its stuff already in Java 16 (memory scopes) and mixed it into the inner implementation on ByteBuffers and other performance critical classes.

Java 19 has other preview features as well, namely Loom. In Java 19 there were some startup regression when enabling Loom. To mitigate these regression, Loom support is only enabled if the --enable-preview flag is detected

I think this is special, but also according to spec JEP 12: Because Loom has two types of preview features: One inside the JVM and the other one co-developed inside the class library. For the Panama this is not the case, the code to access memory segments is always available because it also shares code with many other features like ByteBuffers (that also use the memory scopes). So ByteBuffers wont work if you would disable the scoped memory access.

I think this is special, but also according to spec JEP 12: Because Loom has two types of preview features: One inside the JVM and the other one co-developed inside the class library. For the Panama this is not the case, the code to access memory segments is always available because it also shares code with many other features like ByteBuffers (that also use the memory scopes). So ByteBuffers wont work if you would disable the scoped memory access.

I think the difference between Loom and Panama is just accidental, rather than deliberate. Both are preview features - but since Loom goes deep into the JVM, choices were made to tie Loom closer to the preview command-line - that is, parts of support for continuations/virtual threads will be disabled if enable-preview is not there. Moreover, Loom does a lot more checks than Panama - for instance, when you use a virtual thread, Loom checks that --enable-preview is there - e.g. it doesn't trust the classfile version to be the source of truth (see the PreviewFeatures class in the JDK). If we added a similar check for the Panama API, the trick described in this PR would no longer work.
(It is of course debatable as to whether all preview API should behave like this - as I stated, the discrepancies so far are more accidental than anything else, due to preview APIs being something rather "new").
As for the FFM API, I'm not planning to make things stricter (unless it is decided as a more global policy for preview APIs) - I don't think it will make sense given the point where the API is. But I wouldn't be surprised if checks like the ones in Loom would become the norm for any new preview API (of course that doesn't affect this PR directly).

I prepared a followup PR #12062: You can pass -Dorg.apache.lucene.store.MMapDirectory.enableMemorySegments=false to disable Panama's MemorySegments in case of problems.

Nice side effect: This would also allow to disable in case OpenJ9 breaks or disables their Panama impl (see above).

As for the FFM API, I'm not planning to make things stricter (unless it is decided as a more global policy for preview APIs) - I don't think it will make sense given the point where the API is. But I wouldn't be surprised if checks like the ones in Loom would become the norm for any new preview API (of course that doesn't affect this PR directly).

Java 20 is also done and it still works there. And I hope in Java 21 we will have a LTS release with Panama enabled by default. According to the spec, there should be "two preview cycles". We would really be happy to use Panama without any hacks in 21, as we are planning to raise the "main" Lucene branch to Java 21 when it comes out, if Panama would not be inside, it would be....... very bad! Looking forward to 21!

According to the spec, there should be "two preview cycles".

I believe this is mentioned as a guidance, rather than a strict rule. Note that for other features we had more preview rounds (see JEP 433). So, FFM API will be finalized when it's ready :-) a more complete description of the state at the time of writing was published here:
https://mail.openjdk.org/pipermail/panama-dev/2022-December/018182.html

According to the spec, there should be "two preview cycles".

I believe this is mentioned as a guidance, rather than a strict rule. Note that for other features we had more preview rounds (see JEP 433). So, FFM API will be finalized when it's ready :-) a more complete description of the state at the time of writing was published here:
https://mail.openjdk.org/pipermail/panama-dev/2022-December/018182.html

Let me still hope! To me the API looks complete and removing/replacing VaList could also be done without another preview round. You collected feedback and revised the API.
I will keep an eye on the mailing lists, but maybe ping me when some decissions need to be taken!


Create parent class for food properties that share similar behaviour

Food properties such as email, phone should share a parent abstract parent class, which will make it easier as a blueprint for adding new properties in the future.
This is an attempt to add 4-5 more existing food properties easier, by refactoring of the code.

Somewhat redundant now. Can still be used to clean up code. Priority - very low.


add sdf mesh export and texturing

Added export for sdf based methods (Currently just NeuS). Tested on a trained Replica scene, this is what the current output looks like.
https://user-images.githubusercontent.com/25287427/225754201-a33f93d2-a1ea-4031-8edb-dbb254e939df.mov
the command I used to export was
ns-export sdf-marching-cubes --load-config outputs/unnamed/neus/2023-03-13_170828/config.yml --output-dir test-mesh/

Let me know if class names make sense (It uses marching cubes but this would be different for density/color-based models like nerfacto v.s. sdf models like neus). Once this is merged in I'm planning on porting over the neus-facto model as its much faster to train thanks to the proposal mlp.
I also haven't had a chance to test with other scenes since it takes a few hours to train the model and I've just been focusing on the one specific replica scene ( would be good to check with DTU)

Hey @pablovela5620, cool work. Can you share the commands that you used to process data and train the model as well? I'm looking through the code now. I see that you use the ns-train neus command. Does this user depth and normal supervision? It looks like include_mono_prior is False, so we could probably just use the NerfstudioDataParser directly and then we can use neus with any dataset that we've processed with our ns-process-data command?
Also I see you set max_num_iterations to 100000 (100K). How long does it take for your scene to converge? Just curious how long I should wait until I expect to see something reasonable in the viewer.
Thanks! Excited to help get sdf method integrated.

Sure,
First to download the relevant data I used
ns-download-data sdfstudio --dataset-name sdfstudio-demo-data

the command I used to train the above scene was
ns-train neus --pipeline.model.sdf-field.inside-outside True --pipeline.model.mono-normal-loss-mult 0.05  --pipeline.model.mono-depth-loss-mult 0.1--data data/sdfstduio-demo-data/replica-room0 --include-mono-prior True

monocular priors (from the omnidata repo) are very helpful when reconstructing indoor scenes but they aren't required (I did use for the above seen. Currently I haven't included a way to generate the mono priors in nerfstudio and they are just included in the sdfdataset download. I plan on bringing this functionality over after I had neus and neus-facto working (with mesh extraction). You could also try an example without the monocular priors with the following command
ns-train neus --pipeline.model.sdf-field.inside-outside False --data data/sdfstduio-demo-data/dtu-scan65

here is what this looks like after 100k iterations (the untextured output from the sdf and then the textured output)
https://user-images.githubusercontent.com/25287427/226199138-05d0389a-46a8-4b0e-9209-c03efcab25ab.mp4
as for the number of iterations, for the dtu example you should have a semi reasonable convergence after ~20k iterations, at 100k iterations using NeuS it takes ~4 hours (an an A6000) so around an hour for the 20k. NeuS-facto uses the proposal network sampler and makes things much faster (20k iterations ~15min), my plan will be to bring that in next.
Lastly for using ns-process-data I'll add that in after NeuS-facto as currently its still much to slow using the original NeuS method. That way like you said we can take advantage of the Nerfstudio parser and all the capture methods like colmap/polycam/etc...
Hope that clears everything up!

Here's an example of a room I scanned using just a video taken from my IPhone, (This doesn't include the texturing portion, only the marching cubes). I trained this using NeuS-Facto for 50k iterations ~(1 hour?) of training which I have a PR for #1654. I'll do some more digging into how to get it working like this for objects v.s. rooms
https://user-images.githubusercontent.com/25287427/228642260-f28f8458-a47f-47ed-ac78-3609373795a4.mov

Here's an example of a room I scanned using just a video taken from my IPhone, (This doesn't include the texturing portion, only the marching cubes). I trained this using NeuS-Facto for 50k iterations ~(1 hour?) of training which I have a PR for #1654. I'll do some more digging into how to get it working like this for objects v.s. rooms

This looks really good. Does it use monocular priors?

Here's an example of a room I scanned using just a video taken from my IPhone, (This doesn't include the texturing portion, only the marching cubes). I trained this using NeuS-Facto for 50k iterations ~(1 hour?) of training which I have a PR for #1654. I'll do some more digging into how to get it working like this for objects v.s. rooms

This looks really good. Does it use monocular priors? In the PR #1654, what command did you run for this? And you don't use any ground truth depth, correct?
Also happy to help more now getting this integrated. What's your preference, get this PR merged and then the neus-facto one back-to-back?

I do use monocular priors (no ground truth depth, all priors are generated via the omnidata repo as in the sdfstudio). I think this PR then neus-facto back-to-back makes sense. I'll work on resolving this week


x/benchmarks: monitor toolchain binary size

Follow-up to #68109, it would be nice if we tracked the size of the toolchain binaries (or the entire archive).
We already track binary size of a bunch of tests on https://perf.golang.org/dashboard via bent, but none of the toolchain binaries themselves (compile, addr2line, etc).
cc @mknyszek @dr2chase

Similar Issues

x/benchmarks: monitor binary size #57770

(Emoji vote if this was helpful or unhelpful; more detailed feedback welcome in this discussion.)


Fix image uploads

This should fix image uploads in Static CMS, per this bug ticket. This also fixes any image src paths that were done with the incorrect config.
It looked like StaticCMS was configured to upload images to src/images, but should have been /src/images with the slash at the front.

Test this out in the preview environment with StaticCMS and was able to successfully upload an image and view it in the topic list.

The hero image is not yet working on a topic page, and perhaps elsewhere, so will continue looking at, but likely requires a similar fix as the icon images.

Was a quick fix on the hero images. Old and new working, and I'll remove my bogus topic ahead of merging.
Newly uploaded topic image:

Old topic image:


Some notes on responsive images

Hi there,
I used your responsive image codes to add similar functionality in WonderMod theme in this PR.
I did make a few changes, though, namely:
— I added an AutoOrient filter to prevent Hugo from loosing the EXIF rotation information upon rendering the images (https://gohugo.io/functions/images/autoorient/)
— ported back the figcaption section from the original figure Hugo shortcode, such that your image partial can be used to generate img in figure shortcode as well, although my understanding is you don't offer that.
I thought you'd find that noteworthy.

I'll leave this issue open until I find the time to incorporate this into the theme.
Thanks for the feedback!


Will gnet support long connection?

What is your question about gnet?
i want to hold a var for a connection for such as auth and some client related info? is it possible?

Not so sure what you meant about long connection, gnet doesn't close any connection unless there is an error or the user calls Conn.Close().

i mean in each React, we can get some var such as ConnInfo holds authed, DB choosed, cursor...
this var is connection related infos

i see there is a set/get Context in gnet, can I use the context to keep a pointer to struct to hold some info about this connection

yes


Working with Deephaven tables > Deephaven queries > Built-in functions

https://deephaven.io/core/docs/reference/query-language/query-library/auto-imported-functions/
https://github.com/deephaven/deephaven.io/issues/3500

https://deephaven.io/core/docs/reference/query-language/query-library/auto-imported-functions/
From Chip:
I expect us to have some source code checked in somewhere so that we can very easily update this function list every time there is a release.
The intro paragraphs could be improved. First paragraph is not a good hook to let a reader know they are in the right place. The second paragraph is trying to define query lang imports in terms of other imports, which I think results in something that is harder to follow. As such, it loses the difference between a class import and a static function import and a constant import. Third paragraph could be reworked for clarity and to get across (1) it is recommended that built-in java methods are used where available, (2) java tends to be faster than python, and (3) staying pure java avoids language boundary crossings -- all together likely resulting in better performance.
The table is missing the docstring summary that (I think) my code autogenerated. Having this would make the table more usable and searchable.
Do we want for all class import signatures? Should the column be removed? Should it say class? Should it say N/A? -- same for some DataTypes and other class imports as well
It would be good if the initial paragraphs mentioned that users can import their own query language functions, and then point them to the relevant docs.


Is this tool still working with 2FA verify ?

I wonder, is this tool still working if i enable 2FA email (new finction) inside game.

Haven't tested yet

I hope you have plan to update it in future.Thank you !


Dev deviceprovisioningservices microsoft.devices 2021 02 01 preview

MSFT employees can try out our new experience at OpenAPI Hub  - one location for using our validation tools and finding your workflow.

Changelog
Please ensure to add changelog with this PR by answering the following questions.

What's the purpose of the update?

[ ] new service onboarding
[x] new API version
[ ] update existing version for new feature
[ ] update existing version to fix swagger quality issue in s360
[ ] Other, please clarify

When you are targeting to deploy new service/feature to public regions? Please provide date, or month to public if date is not available yet.
Target date to deploy new feature: 03/22/2021
When you expect to publish swagger? Please provide date, or month to public if date is not available yet.
If it's an update to existing version,  please select SDKs of specific language and CLIs that require refresh after swagger is published.

[ ] SDK of .NET (need service team to ensure code readiness)
[ ] SDK of Python
[ ] SDK of Java
[ ] SDK of Js
[ ] SDK of Go
[ ] PowerShell
[ ] CLI
[ ] Terraform
[ ] No, no need to refresh for updates in this PR

Contribution checklist:

[x] I commit to follow the Breaking Change Policy of “no breaking changes
[x] I have reviewed the documentation for the workflow.
[x] Validation tools were run on swagger spec(s) and errors have all been fixed in this PR. How to fix?

If any further question about AME onboarding or validation tools, please view the FAQ.
ARM API Review Checklist

[x] Ensure to check this box if one of the following scenarios meet updates in the PR, so that label “WaitForARMFeedback” will be added automatically to involve ARM API Review. Failure to comply may result in delays for manifest application. Note this does not apply to data plane APIs, all “removals” and “adding a new property” no more require ARM API review.

Adding new API(s)
Adding a new API version
Adding a new service

[x] Please ensure you've reviewed following guidelines including ARM resource provider contract and REST guidelines. Estimated time (4 hours). This is required before you can request review from ARM API Review board.

[ ] If you are blocked on ARM review and want to get the PR merged with urgency, please get the ARM oncall for reviews (RP Manifest Approvers team under Azure Resource Manager service) from IcM and reach out to them.

Breaking Change Review Checklist
If there are following updates in the PR, ensure to request an approval from API Review Board as defined in the Breaking Change Policy.

[ ] Removing API(s) in stable version
[ ] Removing properties in stable version
[ ] Removing API version(s) in stable version
[ ] Updating API in stable version with Breaking Change Validation errors
[ ] Updating API(s) in preview over 1 year

Action: to initiate an evaluation of the breaking change, create a new intake using the template for breaking changes. Addition details on the process and office hours are on the Breaking change Wiki.
Please follow the link to find more details on PR review process.

@sudo1997lsl , regard to the secret_property error in model validation, this is by design. Please suppress this error in readme.md in case of post scenario like below.
Suppression
directive:
  - suppress: SECRET_PROPERTY
    from: xxx.json
    where:
      - $.definitions.xxx

@sudo1997lsl , regard to the secret_property error in model validation, this is by design. Please suppress this error in readme.md in case of post scenario like below.
Suppression
directive:
  - suppress: SECRET_PROPERTY
    from: xxx.json
    where:
      - $.definitions.xxx

@sudo1997lsl , regard to the secret_property error in model validation, this is by design. Please suppress this error in readme.md in case of post scenario like below.
Suppression
directive:
  - suppress: SECRET_PROPERTY
    from: xxx.json
    where:
      - $.definitions.xxx

@sudo1997lsl , regard to the secret_property error in model validation, this is by design. Please suppress this error in readme.md in case of post scenario like below.
Suppression
directive:
  - suppress: SECRET_PROPERTY
    from: xxx.json
    where:
      - $.definitions.xxx

@akning-ms , model validation failures are false alarms and I created a task to improve the tool to ignore secret check in case of post operations. Please force merge this PR for now, thanks.

@akning-ms , model validation failures are false alarms and I created a task to improve the tool to ignore secret check in case of post operations. Please force merge this PR for now, thanks.

seems model validation still not able to suppress. @raych1
Hi @sudo1997lsl , ping me if you are ok to merge. saw you added label DoNotMerge

seems model validation still not able to suppress. @raych1
Hi @sudo1997lsl , ping me if you are ok to merge. saw you added label DoNotMerge

seems model validation still not able to suppress. @raych1
Hi @sudo1997lsl , ping me if you are ok to merge. saw you added label DoNotMerge

yes, as I said the suppression doesn't support square in property name. https://github.com/Azure/azure-rest-api-specs/pull/12378#discussion_r559297052.

seems model validation still not able to suppress. @raych1
Hi @sudo1997lsl , ping me if you are ok to merge. saw you added label DoNotMerge

yes, as I said the suppression doesn't support square in property name. https://github.com/Azure/azure-rest-api-specs/pull/12378#discussion_r559297052.

Hi @sudo1997lsl , Can I know what is the status for this PR? I saw it is label  DoNotMerge for a long time.

Hi @akning-ms , We are still working on developing the feature to support the changes in this swagger PR. I thought we are not supposed to merge until our service deploy the changes. Is that correct?

yes. thanks for confirm, and can you put your deploy ETA in 2nd item of change log in first comment

We no longer need the 2021-02-01-preview IoT DPS RP API due to DPS team's design change. I am going to abandon and close this PR.
@akning-ms, let me know if there are any concerns. Thanks

Close this pull request as it is not needed due to design change


Mass Obsoletion: focus on branch 'hematologic disorder' (MONDO:0005570)

branch: 'hematologic disorder' (MONDO:0005570)
Terms to obsolete:

obsoletion candidate ID
obsoletion candidate label

http://purl.obolibrary.org/obo/MONDO_0015822
acquired neutropenia

http://purl.obolibrary.org/obo/MONDO_0015818
aggressive primary cutaneous B-cell lymphoma

http://purl.obolibrary.org/obo/MONDO_0015817
aggressive primary cutaneous T-cell lymphoma

http://purl.obolibrary.org/obo/MONDO_0017144
alpha-thalassemia and related diseases

http://purl.obolibrary.org/obo/MONDO_0016513
alpha-thalassemia-related diseases

http://purl.obolibrary.org/obo/MONDO_0016599
autosomal dominant secondary polycythemia

http://purl.obolibrary.org/obo/MONDO_0015679
autosomal thrombocytopenia with normal platelets

http://purl.obolibrary.org/obo/MONDO_0019138
bleeding diathesis due to a collagen receptor defect

http://purl.obolibrary.org/obo/MONDO_0017397
constitutional dyserythropoietic anemia

http://purl.obolibrary.org/obo/MONDO_0020118
dense granule disease

http://purl.obolibrary.org/obo/MONDO_0018340
hereditary isolated aplastic anemia

http://purl.obolibrary.org/obo/MONDO_0017057
hereditary thrombocytopenia with normal platelets

http://purl.obolibrary.org/obo/MONDO_0015975
hyper-IgM syndrome with susceptibility to opportunistic infections

http://purl.obolibrary.org/obo/MONDO_0015976
hyper-IgM syndrome without susceptibility to opportunistic infections

http://purl.obolibrary.org/obo/MONDO_0018796
isolated constitutional thrombocytopenia

http://purl.obolibrary.org/obo/MONDO_0016361
isolated hereditary giant platelet disorder

http://purl.obolibrary.org/obo/MONDO_0017036
Langerhans cell histiocytosis in childhood and adulthood

http://purl.obolibrary.org/obo/MONDO_0034872
large granular lymphocyte leukemia

http://purl.obolibrary.org/obo/MONDO_0020084
lymphoproliferative disease associated with primary immune disease

http://purl.obolibrary.org/obo/MONDO_0020081
macrophage or histiocytic tumor

http://purl.obolibrary.org/obo/MONDO_0017146
sickle cell disease and related diseases

http://purl.obolibrary.org/obo/MONDO_0016667
sickle cell disease associated with an other hemoglobin anomaly

http://purl.obolibrary.org/obo/MONDO_0019044
tumor of hematopoietic and lymphoid tissues

Review spreadsheet here: https://docs.google.com/spreadsheets/d/1ZEAaoGV1QH83eBy5sw7GFdN7rPRxYiRLtvbTduszq1M/edit#gid=985944731

@katiermullen I have reviewed your spreadsheet and made some comments. This can be pushed to PR whenever you have reviewed (and if you don't have any questions).
Great job.

Expert review feedback: https://docs.google.com/spreadsheets/d/1yzM0cfLasL5mVMsEJY5lchngphRQuGqU/edit#gid=244248016
TO DO:

[ ] add new parents ("ROBOT Reviewer-Curator Agree - Stay" Tab)
[ ] add new comments ("ROBOT Reviewer-Curator Agree - Leave" Tab) !!!!1 term comment will need to be added manually
[ ] add new parents ("ROBOT Reviewer-Stay Curator-Leave" Tab)
[ ] review "Reviewer-Leave Curator-Stay" Tab [TO DO WILL BE UPDATED ACCORDINGLY]

Note: Once the to-do list is done, all terms will have been reviewed and this issue can be closed

There are some comments from the community that should be reviewed, but this is future work. This issue can be closed for now.


Faster closure computation

Take into account the new addition of faster backbone computation to improve closure computation, mainly information about semi-triangular distortion.

You only need to compute the shortest path distance for directly connected node pairs

This was implemented in PR #17


add a base color to style to resolve encoding issues with colorjs

So, if the border property is missing, all hell breaks loose. Got it.


Fix losreader

This update ensures that the statevector code for generating unit look vectors is working properly.
Description

Update losreader.py: clean up, verify outputs, add documentation
Update the C-code of Geo2rdr: remove print statements, clean up, add documentation
Update utilFcns.py: add functions, unit tests
When using an orbit file, the code automatically passes the user input time through the code to trim the orbit file
Adds a flag for catching bad matches between the input time, orbit file, and lat/lon points requested

Motivation and Context

Wasn't sure before that the state_to_los code was working. We have checked and verified that it is
Fixes #122
Fixes #79

How Has This Been Tested?

all unit tests pass locally
added unit tests to cover new functionality

Type of change

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

Checklist:

[x] I have added an explanation of what your changes do and why you'd like us to include them.
[x] I have written new tests for your core changes, as applicable.
[x] I have successfully ran tests with your changes locally.
[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.

Closing this as it is replaced by #314


Fix blank Latex drawings

Summary
The drawings being generated by the latex testing were blank after #2512. I think this is because the row spacing was removed when the R was removed in that PR. I have fixed this by reintroducing the R and then increasing the column spacing so that the labels don't overlap. I have updated the reference image to reflect this.

Interesting, I'm not seeing blank images.
But this actually creates better outputs for me:

vs the current master:

So I'm fine with this.


Feature/selection strat roulette

Summary
This PR introduces the rouletteWheelSelection function, which selects two parents from a population based on their fitness scores using the roulette wheel selection algorithm.

I'm not entirely sure if all these exceptions are needed.


Preloading not working as documented

Preload is not working at all for me unless I specifically activate it via db.Set("gorm:auto_preload", true) or explicitly call Preload. If I add the struct tag gorm:"PRELOAD:true", it doesn't work either.
The docs state that preloading is active by default.
What version of Go are you using (go version)?
go version go1.12.7 linux/amd64
Which database and its version are you using?
postgres 11.4
Please provide a complete runnable program to reproduce your issue. IMPORTANT
package main

import (
	"fmt"

	"github.com/jinzhu/gorm"
	_ "github.com/jinzhu/gorm/dialects/mssql"
	_ "github.com/jinzhu/gorm/dialects/mysql"
	_ "github.com/jinzhu/gorm/dialects/postgres"
	_ "github.com/jinzhu/gorm/dialects/sqlite"
)

type Email struct {
	gorm.Model
	Address string `gorm:"unique_index:true"`
}

type User struct {
	gorm.Model
	Name    string
	EmailID uint
	Email   Email
}

var db *gorm.DB

func init() {
	var err error
	// db, err = gorm.Open("sqlite3", "test.db")
	db, err = gorm.Open("postgres", "user=gorm password=gorm DB.name=gorm port=9920 sslmode=disable")
	// db, err = gorm.Open("mysql", "gorm:gorm@tcp(localhost:9910)/gorm?charset=utf8&parseTime=True")
	// db, err = gorm.Open("mssql", "sqlserver://gorm:LoremIpsum86@localhost:9930?database=gorm")
	if err != nil {
		panic(err)
	}
	db.LogMode(true)
}

func main() {
	db.AutoMigrate(Email{})
	db.AutoMigrate(User{})

	e1 := &Email{Address<EMAIL_ADDRESS>	db.Create(e1)

	u1 := &User{}
	u1.Name = "name1"
	u1.Email = *e1
	db.Create(u1)

	q := &User{}
	db.First(q)
	fmt.Println(q.Email.ID)
	db.Preload("Email").First(q)
	fmt.Println(q.Email.ID)
}

(/home/leo/Documents/code/vgo/tmp/main.go:66)
[2019-07-25 11:18:07]  pq: syntax error at or near "true"

(/home/leo/Documents/code/vgo/tmp/main.go:66)
[2019-07-25 11:18:07]  [0.29ms]  CREATE UNIQUE INDEX true ON "emails"("address")
[0 rows affected or returned ]

(/home/leo/Documents/code/vgo/tmp/main.go:66)
[2019-07-25 11:18:07]  pq: syntax error at or near "true"

(/home/leo/Documents/code/vgo/tmp/main.go:70)
[2019-07-25 11:18:07]  [0.45ms]  INSERT  INTO "emails" ("created_at","updated_at","deleted_at","address") VALUES ('2019-07-25 11:18:07','2019-07-25<EMAIL_ADDRESS>RETURNING "emails"."id"
[1 rows affected or returned ]

(/home/leo/Documents/code/vgo/tmp/main.go:75)
[2019-07-25 11:18:07]  [2.75ms]  UPDATE "emails" SET "created_at" = '2019-07-25 11:18:07', "updated_at" = '2019-07-25 11:18:07', "deleted_at" = NULL, "address" =<EMAIL_ADDRESS>WHERE "emails"."deleted_at" IS NULL AND "emails"."id" = 3
[1 rows affected or returned ]

(/home/leo/Documents/code/vgo/tmp/main.go:75)
[2019-07-25 11:18:07]  [2.63ms]  INSERT  INTO "users" ("created_at","updated_at","deleted_at","name","email_id") VALUES ('2019-07-25 11:18:07','2019-07-25 11:18:07',NULL,'name1',3) RETURNING "users"."id"
[1 rows affected or returned ]

(/home/leo/Documents/code/vgo/tmp/main.go:78)
[2019-07-25 11:18:07]  [2.11ms]  SELECT * FROM "users"  WHERE "users"."deleted_at" IS NULL ORDER BY "users"."id" ASC LIMIT 1
[1 rows affected or returned ]
0

(/home/leo/Documents/code/vgo/tmp/main.go:80)
[2019-07-25 11:18:07]  [1.92ms]  SELECT * FROM "users"  WHERE "users"."deleted_at" IS NULL AND "users"."id" = 1 ORDER BY "users"."id" ASC LIMIT 1
[1 rows affected or returned ]

(/home/leo/Documents/code/vgo/tmp/main.go:80)
[2019-07-25 11:18:07]  [1.94ms]  SELECT * FROM "emails"  WHERE "emails"."deleted_at" IS NULL AND (("id" IN (1))) ORDER BY "emails"."id" ASC
[1 rows affected or returned ]
1

I think that is written in the document.
http://gorm.io/docs/preload.html
Where is preloading is active by default written?

Hm, I don't know. This issue was part of a bigger issue we had with associations, but since then we moved to sqlx. It's been three months now, so I don't remember the details and to be honest, as we don't use gorm anymore, I'm not to keen on spending too much time finding out what exactly our issue was.
I'll close the issue...


Added nomacs v3.16.1709

[x] Have you signed the Contributor License Agreement?
[x] Have you checked that there aren't other open pull requests for the same manifest update/change?

[x] Does your manifest conform to the 1.0 schema?

Note: <path> is the name of the directory containing the manifest you're submitting.

Microsoft Reviewers: Open in CodeFlow

Resolves #13817.


Default to Drupal 9

Issue Type

Feature Idea

Summary
Drupal 9 is here: https://www.drupal.org/about/9
Let's default to it. Related upstream issue: https://github.com/geerlingguy/ansible-role-drupal/issues/79

Can the default be adjusted to using the Drupal recommended project at the same time? Instead of the current default in config.yml?

@phizev - Oh wow, I didn't realize the default config.yml still had https://github.com/geerlingguy/drupal-vm/blob/master/default.config.yml#L80 in it! I fixed that in the upstream Drupal role but forget to ever switch it in Drupal VM itself!
Yes, that should be corrected too.

Hi Jeff,
upgrade_status module throws a warning with current mariadb version. Would be perfect if you could update that role with the next release as well.

"Minimum version is 10.3.7"

Cheers,
Axel

@axroth - What OS box are you using? The latest one should work with Drupal 9, I believe (based on Ubuntu 18.04).

according to the dockerfile (using drupalvm with docker and not vagrant), this is:

geerlingguy/docker-debian9-ansible:latest

@axroth yeah it looks like I'll need to do that too. I'm going to test it out and see if it works.

This seems to all be fixed now. I'm going to do a little more testing before releasing a new version again.


Python: C++ programing language suport

We just see C#, Python and Java programing language. Will you have C++ support?

Currently no plans to have a C++ version of the Kernel but if there is interest from the community, let us know! What sort of scenarios / use cases do you have in mind where a C++ Kernel would be important?

We built copilot plugin for service level in Windows 11. Service level without UX prefer C++ than C#.

@JustinKJChen you can host SK as a service and pass the requests to that end point with your plugin running in the service also.


[Transcription] Bad state: Stream has already been listened to

When using the Transcription feature, I encountered an error
[OpenAI] accessing endpoint: /audio
[OpenAI] starting request to https://api.openai.com/v1/audio/transcriptions
[OpenAI] request to https://api.openai.com/v1/audio/transcriptions finished with status code 200
flutter: Bad state: Stream has already been listened to.
flutter: #0      _StreamController._subscribe (dart:async/stream_controller.dart:686:7)
#1      _ControllerStream._createSubscription (dart:async/stream_controller.dart:836:19)
#2      _StreamImpl.listen (dart:async/stream_impl.dart:471:9)
#3      new _ForwardingStreamSubscription (dart:async/stream_pipe.dart:114:10)
#4      _ForwardingStream._createSubscription (dart:async/stream_pipe.dart:86:16)
#5      _ForwardingStream.listen (dart:async/stream_pipe.dart:81:12)
#6      _HttpIncoming.listen (dart:_http/http_impl.dart:442:49)
#7      _HttpClientResponse.listen (dart:_http/http_impl.dart:713:19)
#8      new _ForwardingStreamSubscription (dart:async/stream_pipe.dart:114:10)
#9      _ForwardingStream._createSubscription (dart:async/stream_pipe.dart:86:16)
#10     _ForwardingStream.listen (dart:async/stream_pipe.dart:81:12)
#11     StreamView.listen (dart:async/stream.dart:2214:20)
#12     new _SinkTransformerStreamSubscription (dart:async/stream_transformers.dart:49:16)
#13     _BoundSinkStream.<…>
[OpenAI] starting decoding response body
[OpenAI] {
  "text": "hello"
}

Here is my code
  Future<void> runTranscription(String filePath) async {
    try {
      OpenAIAudioModel transcription = await OpenAI.instance.audio.createTranscription(
        file: File(filePath),
        model: "whisper-1",
        responseFormat: OpenAIAudioResponseFormat.json,
      );
      if (transcription.text.isNotEmpty == true) {
        sendTextMessage(text: transcription.text);
      }
    } catch (error, stackTrace) {
      print(error.toString());
      print(stackTrace);
    }
  }

I see that the streaming error doesn't relate to the createTranscription, since all the audio methods are not Stream, the streaming functionality exists only in the chat, completions and fine-tune methods.
seeing the error while the audio request is happening makes me suspect that you are trying to combine a streaming method with the createTranscription method in the same workaround.
would be happy to help, if you can provide me with more context

Yes, I first record audio using flutter_sound, then I convert the recording to text through createTranscription, and finally, I use the text for chat.
This is part of my code:
  Future<void> startRecorder() async {
    // flutter sound only support iOS/Android/Web
    if (Platform.isIOS || Platform.isAndroid || kIsWeb) {
      var id = nanoid();
      await _recorder.startRecorder(codec: Codec.aacMP4, toFile: "$id.mp4");
    }
  }

  Future<void> stopRecorder() async {
    // flutter_sound only support iOS/Android/Web
    if (Platform.isIOS || Platform.isAndroid || kIsWeb) {
      String? filePath = await _recorder.stopRecorder();
      if (filePath?.isNotEmpty == true) {
        runTranscription(filePath!);
      }
    }
  }

  Future<void> runTranscription(String filePath) async {
    try {
      OpenAIAudioModel transcription = await OpenAI.instance.audio.createTranscription(
        file: File(filePath),
        model: "whisper-1",
        responseFormat: OpenAIAudioResponseFormat.json,
      );
      // The code cannot run up to this point, it goes to catch block.
      print("Received Transcription Result");
      if (transcription.text.isNotEmpty == true) {
        sendChatMessage(text: transcription.text);
      }
    } catch (error, stackTrace) {
      EasyLoading.showToast(error.toString());
      print(error.toString());
      print(stackTrace);
    }
  }

  Future<void> sendChatMessage({String? text}) async {
    chatStream = OpenAI.instance.chat.createStream(
      model: model,
      messages: chatGPTModels!,
      n: 1,
      maxTokens: 4096,
    );

    chatStream!.listen((streamChatModel) {
    }, onDone: () {
      if (isTTSOpen == true) {
        runSpeech(gptContentModel.text ?? "");
      }
    }, onError: (error) {
      EasyLoading.showToast(error.toString());
      print(error.toString());
    }, cancelOnError: true);
  }

When I set OpenAI.showResponsesLogs = true, it throws an error; when set to false, the error disappears.
I think this bug is caused by the following reason:
In OpenAINetworkingClient.fileUpload function, we called request.send()
final http.StreamedResponse response = await request.send().timeout(OpenAIConfig.requestsTimeOut);
and we got a StreamedResponse.

This response has a stream, and it's a single-subscription stream.

In OpenAILogger.logResponseBody function, we called response.stream.bytesToString()
final asString = await response.stream.bytesToString();

In bytesToString function, calledencoding.decodeStream(this);

Here is decodeStream function

In fold function, stream.listen function is called

Back to first screenshot, below OpenAILogger.logResponseBody, we called final String responseBody = await response.stream.bytesToString();, it will call stream.listen again.
But this stream is a single-subscription stream, so an error throw.
Hope this help.

In the file upload method also at LN 578 the OpenAILogger.logResponseBody subscribes to the response stream and then again at LN 584 it subscribes to the same single-subscription stream which then throw the error.

same issue

Wow, the very nice catch here @pilgrim1385, thank you.
I will fix this.

I made the logResponseBody to be called for either raw String responses, or the http Reponse, I will make sure to put this in mind when using this method.


Add serialization for entire LogicalPlans to datafusion-proto

Is your feature request related to a problem or challenge? Please describe what you are trying to do.
In order to serialize subquery expressions (https://github.com/apache/arrow-datafusion/issues/4337) we would need to serialize entire LogicalPlans which datafusion-proto does not do .
Describe the solution you'd like
I would like to have the ability to serialize / deserialize LogicalPlans in the datafusion. I believe we can take a friendly look / downright copy this code from ballista:
https://github.com/apache/arrow-ballista/blob/acbdf608807697e72122a249c4bf7505274906d0/ballista/core/proto/datafusion.proto
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
https://github.com/apache/arrow-datafusion/issues/4337
cc @andygrove @thinkharderdev @avantgardnerio
I am marking this as "good first isseu" because I think it would mostly be an exercise in porting code and tests from one repo to another.

Let me take a stab at this. @alamb anything changed since this task was created?

THanks @l0kr  -- sorry for the old ticket. I think this task is actually is mostly done https://github.com/apache/arrow-datafusion/tree/main/datafusion/proto/src/logical_plan
It would be very valuable if you were able to go through and fill out the various "Not implemented" in the plan conversion.
Closing


Screen freeze

Screen freezes when cross button is clicked multiple times in autocomplete

@talhaali there is not enough detail here, this issue is not actionable. Please check https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#submit before submitting issues.

It's not a problem of angular itself, I guess.

The issue is reproducible on my project and https://material.angularjs.org/ as well .. you can check it there

@talhaali but what exactly should be found there? please, describe the problem in details

@havenchyk sorry if I am ambiguous here. Please follow below steps:

Go to below link
https://material.angularjs.org/latest/#/demo/material.components.autocomplete
Select your favorite state from drop down
Click multiple time on the cross button which appear after selecting the state.

Here you will observe that the screen will freeze and you will have to refresh the window.

@talhaali I can't reproduce this on my Linux box (tried with Chrome and FFox). Maybe you've got an extension installed in your browser that messes up things?
In any case this is something that should be investigated on the material components side. Please try to re-test using an incognito mode in your browser and if you still face problems open an issue in https://github.com/angular/material (remember to provide all the details as requested: https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#submit )


T5x loss+perf baselines

print test metrics
update baseline scripts to support T5x
add t5x test baselines

@maanug-nv Could you please update the description with an example of the mechanism in effect?

@yhtang Which description? PR description, or in one of the scripts, or in the README?
Also do you just want example call of create_baselines.sh, or something more? If you can provide more detail, it will be helpful.

@yhtang bumping for @maanug-nv 's Q

Added .github/workflows/baselines/test_t5x_mgmn_metrics.py, and the pytest command.
https://github.com/NVIDIA/JAX-Toolbox/actions/runs/6386266144

I've tuned the relative tolerances a few times, all test cases are passing in this run: https://github.com/NVIDIA/JAX-Toolbox/actions/runs/6475410065
Pls review the T5x loss relative tolerances

The rtol LGTM. Looks like #292 may have introduced conflicts that you have to resolve in summarize_metrics.py, but assuming the CI passes, I think we're good to merge.

resolved, if everything passes FFTM

Manual run of t5x MGMN since t5x build is failing due to a known issue: https://github.com/NVIDIA/JAX-Toolbox/actions/runs/6492103243


Fetch all cookies / wildcard names

As far as I understood your awesome blog post and the provided examples, it is required to know the name of the cookie to fetch beforehand. I'm currently working with a service which is giving out cookies that look like servicename_userid, but I don't know the user ID of the users that are going to be fished. Enumerating all values is also impossible since it is at least 6 digits.
Is it somehow possible to tell evilginx2 to capture simply all cookies or provide a regex for the cookie names, e.g.
auth_tokens:
  - domain: 'service.net'
    keys: ['ASP.NET_SessionID', 'service_SessionId', 'service_[0-9]{6}']

for regex or
auth_tokens:
  - domain: 'service.net'
    keys: [*]

to capture all cookies?

Hey!
Thanks for reporting this issue. This indeed needs to be implemented. I think the way to solve it would be to make cookie key names regex'able like you suggested.
Can you give me the example key names of the service you are working with? I assume the SessionID is [0-9]{6}, so would the following be compatible then?:
ASP.NET_[0-9]{6}
service_[0-9]{6}

Hi,
thanks for your response. No, SessionID indeed ist part of the name of the first two cookies, but the third in this example is something like service_001337. The service I'm currently working with at a customer's site and I'm building a PoC for uses (additionally to the ASP.NET_SessionID and the service_SessionID) three of these cookies: servicename_xxxxxx_daily, servicename_xxxxxx_weekly, and servicename_xxxxxx_monthly where xxxxxx is my user ID.

I've addressed that specific issue over the weekend. Please read the Evilginx 2.1 write-up and try the new regular expression features. Let me know if that helped!
https://breakdev.org/evilginx-2-1-the-first-post-release-update/

I finally found time for testing, works like a charm. Thanks!


Finalised Release v1.2

Finalised entire the codebase and ready to deployment after adding unit testing of oauth

closes #22


input: add an input for foo

There is already an example on the /sink page for this. We want to try to keep the "main" examples pretty basic 👍


[BEAM-25] Add StateSpec as a curried way to build a StateTag

Be sure to do all of the following to help us incorporate your contribution
quickly and easily:

[x] Make sure the PR title is formatted like:
[BEAM-<Jira issue #>] Description of pull request
[ ] Make sure tests pass via mvn clean verify. (Even better, enable
Travis-CI on your fork and ensure the whole test matrix passes).
[x] Replace <Jira issue #> in the title with the actual Jira issue
number, if there is one.
[x] If this contribution is large, please file an Apache
Individual Contributor License Agreement.

This is an alternative to #1044, based on lessons learned there. Instead of moving the disjoint union destruction to StateSpec and rebuilding StateTag = StateSpec + ID I have instead written StateSpec = StateTag - ID :-)
I tend to think that StateSpec "should" be an independent thing, but that would mean the ability to bind it to a state cell without providing an ID. Given current design considerations, I don't think that fits as well. So instead, this PR just embraces the fact that a StateSpec has no real independent meaning, but is just a curried form of StateTag for use in the proposed state API.
I'm curious if you have a preference.
R: @bjchambers AND @tgroh AND @aljoscha

After some consideration of the alternatives, I don't think this is the right long-term move. Since I've already done most of the work in the harder alternative, I'll work on that.


fix(TextArea): update autoHeight on text wrap

Fixes #1843

Codecov Report

Merging #1898 into master will not change coverage.
The diff coverage is 100%.

@@           Coverage Diff           @@
##           master    #1898   +/-   ##
=======================================
  Coverage   99.75%   99.75%
=======================================
  Files         145      145
  Lines        2477     2477
=======================================
  Hits         2471     2471
  Misses          6        6

Impacted Files
Coverage Δ

src/addons/TextArea/TextArea.js
100% <100%> (ø)
: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 c96363c...0295fff. Read the comment docs.

Released in<EMAIL_ADDRESS>


Why some area is black?

这是来自QQ邮箱的假期自动回复邮件。 您好，邮件我已收到，我将在看到后第一时间给您回复。

This repository/library is deprecated and no longer maintained. Please use Cornerstone3D and refer to the migration guides.


Editor content gets wrapped with "

I'm submitting a ...  (check one with "x")
[x] Bug report => search github for a similar issue or PR before submitting
[ ] Feature request
[ ] Other, please describe

Tell about your platform

Trumbowyg version : v2.9.4
Vue.js version : 2.5.13
Browser name and version : Doesn't matter which browser, any
This package version : 3.2.0

Current behavior
When sending the content I see that for some reason the content of the editor gets wrapped in ". So if I simply enter test it ends up as "test" when the request is send. Next time I reload the page it ends up with the " inside the editor.

I've even tried to use a computed property and to strip the " but it always ends up with the ".
	methods: {
		// Helper method to workaround
		// https://github.com/ankurk91/vue-trumbowyg/issues/13
		trim: (s, c) => {
			if (c === "]") c = "\\]";
			if (c === "\\") c = "\\\\";
			return s.replace(new RegExp(
				"^[" + c + "]+|[" + c + "]+$", "g"
			), "");
		}
	},

	computed: {
		// Workaround for
		// https://github.com/ankurk91/vue-trumbowyg/issues/13
		editorContent: {
			get: () => {
				return this.trim(this.content.body, '"');
			},
			set: (value) => {
				this.content.body = this.trim(value, '"');
			}
		}
	},

Expected behavior
That only test is going out without the ".
Minimal reproduction of the problem with instructions
<template>
	<div class="cell medium-12">
		<label>
			Intro Text
		</label>

		<trumbowyg v-validate="'required'" v-model="content.body" :config="editorConfig" name="body"></trumbowyg>
		<validation-error field-name="body"></validation-error>

		<save-content :content="content"></save-content>
	</div>
</template>

<script>
import ValidateEventMixing from './ValidateEventMixin';
import ValidationError from './ValidationError.vue';
import SaveContent from './SaveContent.vue';
import Trumbowyg from 'vue-trumbowyg';

import 'trumbowyg/dist/ui/trumbowyg.css';

export default {
	name: 'PsaNewslettersIntroText',

	components: {
		SaveContent,
		ValidationError,
		Trumbowyg
	},

	mixins: [
		ValidateEventMixing
	],

	props: {
		content: {
			body: ''
		},
	},

	data() {
		return {
			editorConfig: {
				svgPath: '/psa/newsletters/js/icons.svg',
				btns: [
					['undo', 'redo'], // Only supported in Blink browsers
					['strong', 'em'],
					['link'],
					['removeformat'],
					['fullscreen']
				]
			}
		}
	}
}
</script>

<style scoped>
	textarea {
		min-height: 200px;
	}
</style>

Forget it, same issue with a regular input field. :(


Calculate coverage

File 	Coverage [68.95%] 	x
Server.kt 	68.95% 	x
Total Project Coverage 	78.26% 	x

This was an example to show how changed files are showed


[Feature request] independent setting support for external disk cache

Basic Information

Macbook pro 2018 15'

macOS 13.0 beta 7

Monitor: Studio Display

Since I bought this brand new 5k monitor, I prefer to load high-resolution videos in cache. It's insane. Absolutly wondful app of its kind.
I have limited storage of my mac. I would only give 5GB for internal video cache. However the 4k resources are huge. I have a thunderbolt external storage wth tons of space for more videos. The problem is:

Setting the cache path to the external folder with 100GB limitation:
When I unplug the hard drive device, the setting changed to default interal path. but the 100GB limitation also works.

Setting small storage limitation (like 5GB):
When I plug the external hard drive device, the most videos will be removed since the limitation setting.

I would prefer an independt setting for two cache paths:

when i set external path and plug external device, they work.

when i set external path and unplug external device, the internal settings and cached videos work.

hey @amenglar
Sorry I didn't answer previously, this is not something I had considered (transient cache), I'll try to see what I can do.


Error saving federation in keycloak dockerized

The server is running and the same configuration of singular-db-provider into other instalation (not dockerized) works well.
2022-11-28 14:52:09,103 ERROR [com.zaxxer.hikari.pool.HikariPool] (executor-thread-38) SINGULAR-USER-PROVIDER-singular-db-user-provider28-11-2022 14:51:32 - Exception during pool initialization.: java.sql.SQLException: Login timed out
Thanks

Sorry, resolved!
SQLSERVER Firewall problem


Only 200 out of 2500 car instances available in the download link.

The data your team put on google drive is great. But I noticed that the number of folders are less than what you claimed in the paper.
Are you going to provide those in the following weeks?

Hi, We will release the rest of the data after our paper is accepted.

Hi, when do you plan to release the full data? Thanks.


minetestWithPackages,minetestPackages: init (minetest bundled with mods and games, package set generated from ContentDB)

Description of changes
Based on #189724 cc @hllizi
Closes #189724
Fixes #82680
This iteration addresses my comments on the previous PR and adds a minetestPackages.contentDB package set generated from https://content.minetest.net
Here's a screenshot obtained by building nixosTests.minetest-with-packages, which runs the package minetestWithPackages (mtps: [ mtps.contentDB.Wuzzy.mineclone2 ])

Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[x] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[x] Tested basic functionality of all binary files (usually in ./result/bin/)
22.11 Release Notes (or backporting 22.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[x] Fits CONTRIBUTING.md.

@GrahamcOfBorg build nixosTests.minetest-with-packages

The generated file is 1MB! Honestly think this would be better in an external repo.

The generated file is 1MB! Honestly think this would be better in an external repo.

Well, it's not like this is the first or the biggest generated file in nixpkgs:
$ du -h pkgs/development/haskell-modules/hackage-packages.nix
12M     pkgs/development/haskell-modules/hackage-packages.nix
$ find . -type f -name '*.lock' -exec du -ch {} + | grep total$
11M     total

And it compresses well. Then, after this first commit, it's just going to be small diffs.
Still, I could take some steps to further minimize file size:

Sort the packages before writing them out. This hopefully makes compression of multiple update commits even easier, other than improving diffs.
Do not commit the cache file, keep it somewhere else. But...

Other package sets do have their caches committed. For example we have .yamls for haskellPackages.
It's nice to be able to regenerate the .nix file just from data present in nixpkgs (that's why I added the -offline option)

Do not have a separate cache file at all, rederive everything from the .nix file.

Can be done with some eval shenanigans:nix eval --impure --json --expr 'import pkgs/games/minetest/packages/contentdb/default.nix { lib = (import ./. {}).lib; fetchurl = x: x; buildMinetestPackage = x: x; }'

...but that seems a little too complex

I will do the first point, that just makes sense.
I'd rather not touch the cache, but I'll do the third point if necessary.

Well, it's not like this is the first or the biggest generated file in nixpkgs:

Doesn't mean we should keep adding them.

Then, after this first commit, it's just going to be small diffs.

Doesn't change that it's still 1MB extra bloat in shallow checkouts.
Why can't it live in an external repo?

Doesn't change that it's still 1MB extra bloat in shallow checkouts.

That's less than 0.5% of nixpkgs, for more than a thousand of FOSS games and game mods. That seems like a good tradeoff to me

Why can't it live in an external repo?

That question applies to every single package or package set though, doesn't it?
And it has been discussed to death:

#15480
#14897
https://discourse.nixos.org/t/wild-idea-how-about-splitting-nixpkgs-and-nixos/11487?u=fgaz
https://discourse.nixos.org/t/nixpkgss-current-development-workflow-is-not-sustainable/18741?u=fgaz
https://discourse.nixos.org/t/we-need-more-defined-guidelines-for-package-inclusion/3592?u=fgaz

Answers to the three questions there are yes, yes, and yes

Off topic in #107539 starting from https://github.com/NixOS/nixpkgs/issues/107539#issuecomment-778886930
Probably more

Regarding generated sets, the closest to a conclusion that I got from all those discussions is: Let's wait until flakes are stable to discuss this again, meanwhile generated sets are fine.
Regarding general package inclusion, this package set is updated upstream, will be updated here because it's automated, and is used by many

I explained why I think merging this is reasonable and provided a history of relevant discussions.
Can I at least get some constructive criticism instead of downvotes and laughs?

I explained why I think merging this is reasonable and provided a history of relevant discussions.
Can I at least get some constructive criticism instead of downvotes and laughs?

Seems like I might have downvoted that, too, but that wasn't intentional.

Sorry, meant to post a response.

That's less than 0.5% of nixpkgs

It's already so bloated we should just keep adding more? Keeping a generated 1MB file out of the repo seems like a very easy win with basically no downside, it's not like adding another input is a hassle.

for more than a thousand of FOSS games and game mods

Sound like a prefect example of something that can live in it's own repo.

That seems like a good tradeoff to me

People with bad internet would likely disagree.

It's already so bloated we should just keep adding more? Keeping a generated 1MB file out of the repo seems like a very easy win with basically no downside, it's not like adding another input is a hassle.

Adding a new input and keeping it updated is a hassle without the still experimental flakes.
And having a package in nixpkgs has a ton of other advantages, such as discoverability, inclusion in repology, and archival of sources in software heritage.

Sound like a perfect example of something that can live in it's own repo.

Why? As mentioned in https://github.com/NixOS/nixpkgs/pull/194749#issuecomment-1272266538 we have a consensus about including generated sets in nixpkgs. What is different about this set from haskell, emacs, vim, node, r... packages?

People with bad internet would likely disagree.

Trust me, I know how bad modern software can get with a bad internet connection! I had a terrible one until not so long ago. That's why I tried to optimize this as much as possible (it's now down to <1 MB uncompressed, 180K gzipped). In nixpkgs there are multiple packages that are individually more than that size.
There is still something I can do, though I'm not sure if that would be accepted: instead of only having a .nix file as mentioned in https://github.com/NixOS/nixpkgs/pull/194749#issuecomment-1271651430, there could be just a 600K (150K gzipped) .json file. Then the nix code would just be something like
map mkMinetestPackage (importJSON ./packages.json)

Adding a new input ... without the still experimental flakes.

I used the word "inputs" but I didn't mean to refer to flakes specifically ...  nix-channel, niv, npins, whatever.

keeping it updated is a hassle

Keeping it updated like you have to update nixpkgs anyway? How is that a hassle?

archival of sources in software heritage.

Not sure what this is? If you mean https://github.com/nix-community/nixpkgs-swh it hasn't been working for quite a while.

What is different about this set from haskell, emacs, vim, node, r... packages?

They are already in nixpkgs, this isn't. Haskell and node are used tree-wide by other packages. The others likely be could be external. This package set seems to be very self-contained, hence much easier to be kept out.

Trust me, I know how bad modern software can get with a bad internet connection! I had a terrible one

Would have expected a bit more consideration for the people who won't use this and are getting stuck with the bloat anyway.

until not so long ago.

...

In nixpkgs there are multiple packages that are individually more than that size.

Again, they already in and this isn't. It doesn't mean we should keep adding more, especially when keeping it out doesn't have much downside.

There is still something I can do, though I'm not sure if that would be accepted ...

Plenty of packages and sets do this so I don't see why it would be a problem here. 600k is still a lot of bloat so it doesn't change my objection.

The generated file is just twice some node-packages.nix file. Not a fan of these either since they just download, unzip and symlink things.

@fgaz Are you still planning to work on this?

@nyabinary  I plan to push a refinement I had locally on this branch (for archival), then I plan to close this and open a smaller pr that just adds the extension points (with a better design). I'll drop the package set for now. In parallel, I'm working on adding contentdb support to npins


Add support for isolator watch callback

This PR adds support of the watch callback for the CommandIsolator.
This callback differs from prepare and cleanup in that it is supposed to be long running, and return only if the container has reached a certain limit and is to be killed. It can also returns with an abandoned future, in which case the container will not be killed (with the drawback that the watch callback will never be called again during the lifecycle of the container).
This implementation is experimental, so not adding the documentation to README for now.

Can you clarify what does it mean that the watch method is different in the fact that it is "long-running". I don't see any loop or anything making it long running, it returns as other calls. Can you clarify?

There is indeed no loop: the watch call returns a Future<ContainerLimitation>, is called once by Mesos containerizer which will trigger a call to limit (kill and cleanup) the container when the future is confirmed and ready. This means that watch is intended to launch a long running, watching process (in the meaning of libprocess) to check frequently the status of the container.


polymerfire no longer working after v0.10.1

Description
polymerfire no longer working after v0.10.1, specifically <firebase-document> and <firebase-query>. Was developing with v0.9.7 all the while with no issue, and notice no longer working after updating the latest version (i.e. v0.10.3). I have traced the last know working version to be v0.10.0. Not sure if other have similar issue, or there is any breaking changes between 0.10.1 and v0.10.0.
Expected outcome
data is return (via data-binding)
Actual outcome
No data is returned (via data-binding)
Live Demo
N/A
Steps to reproduce
It's a bit hard to reproduce as in involve the whole application. Will try to isolate and reproduce if others is having similar issue.
Browsers Affected

[x] Chrome

Something to try: add a <link rel="import" href="bower_components/polymerfire/polymerfire.html"> at the very top of your app. My best guess is that you're initializing firebase-app before your document and query elements are upgraded.

@mbleigh You were right on the spot (except that it should be firebase.html instead of polymerfire.html. Prior to v0.10.1 I was able to run polymerfire by only importing individual element (i.e. <firebase-app>, <firebase-auth> etc...) without importing <link rel="import" href="bower_components/polymerfire/firebase.html"> at the top. Importing that did resolve the issue.
I also suggest adding documentation that importing firebase.html as a prerequisite, as it is not mentioned anywhere in the documentation.
Thanks!


[Question] Where is the performence report of DiskLruCache?

The performence report of DiskLruCache
in JVM(linux) and android？

There is not one, and we have no plans to make one. Performance will vary based on how the library is used and ultimately the speed of the disk will be the limiting factor.


Profile v3: Minimal queue about insight box to start the year

Who is this PR for?
educators, primarily K8
What problem does this PR fix?
The insight box doesn't work yet, and rather than making it work, it'd be better to avoid putting prominent "asks" in the product without an expectation or support for them used.
What does this PR do?
This rolls back the "share an insight" box, which communicated intent about design previously, and for now only shows a "coming soon" kind of box if there are no insights for the student.
Screenshot (if adding a client-side feature)

Checklists

[x] Author checked latest in IE - Student profile v3
[x] Author included specs for new code

selfie


Docs rewrite 03

Resolves #53
Edit: preview can be seen here: http://bloop.readthedocs.io/en/docs-rewrite-03/

Resolves #76


Cannot use text chat on AC lobbies.

Well, this is a sort of lie. I can USE text chat, but nobody can read the contents of my messages.

No one else has reported this problem to me. It is probably a module conflict or something like that. When you encounter this problem, are you a client or a server?

No one else has reported this problem to me. It is probably a mod conflict or something like that. When you encounter this problem, are you a client or a server?

also its probably because you have no other reported issues
ive ran this on vanilla in AC lobbies

After testing, everything is OK. Please check your other mods.


Convert disallow-unused-params to CST

Rule disallow-unused-params implementation using CST scopes.
TODO:

DONE Remove object pattern properties while fixing + add fix-tests for those cases.
DONE Test case #1946
DONE Test case #2002

Could you add test-case for https://github.com/jscs-dev/node-jscs/issues/1946 ?

And https://github.com/jscs-dev/node-jscs/issues/2002

TODO: Remove object pattern properties while fixing.

I see we all DONE here, just don't forget the git conventions (sorry :-)

Not a big deal but we've been using https://github.com/jscs-dev/node-jscs/blob/master/CONTRIBUTING.md#commit-message-format
something like disallowUnusedParams: refactor to use CST

I guess @mdevils is a rebel!

just don't forget the git conventions (sorry :-)


Molo 251 refactor - Template & Mote Patterns

The current Mote configuration works on the old set on Molo.
Mote is current pinned into mobiApp witch needs to be clean up into Molo core

@saeedmb8 please review the clean up and Django templates patterns


Can't compile

when I compile with Arduino ide 1.9 I get the following errors
can you supply info on compiling the code
THANX
MITCH
If I had a son he would be a son of a Mitch
B:\Blinds\ESPBlinds\ESPBlinds.ino: In function 'void setup()':
ESPBlinds:64:3: error: 'setupWifi' was not declared in this scope
64 |   setupWifi();
|   ^~~~~~~~~
ESPBlinds:66:26: error: 'mqttCallback' was not declared in this scope
66 |   mqttClient.setCallback(mqttCallback);
|                          ^~~~~~~~~~~~
ESPBlinds:68:5: error: 'mqttReconnect' was not declared in this scope
68 |     mqttReconnect();
|     ^~~~~~~~~~~~~
ESPBlinds:71:3: error: 'mqttPublish' was not declared in this scope
71 |   mqttPublish(MQTT_TOPIC_ENABLED, 0);
|   ^~~~~~~~~~~
ESPBlinds:74:3: error: 'loadFromEeprom' was not declared in this scope
74 |   loadFromEeprom();
|   ^~~~~~~~~~~~~~
B:\Blinds\ESPBlinds\ESPBlinds.ino: In function 'void loop()':
ESPBlinds:96:5: error: 'mqttReconnect' was not declared in this scope
96 |     mqttReconnect();
|     ^~~~~~~~~~~~~
B:\Blinds\ESPBlinds\ESPBlinds.ino: In function 'void closeBlinds()':
ESPBlinds:104:3: error: 'mqttPublish' was not declared in this scope
104 |   mqttPublish(MQTT_TOPIC_STATE, "closing");
|   ^~~~~~~~~~~
ESPBlinds:105:3: error: 'setStepperDirection' was not declared in this scope; did you mean 'stepDirection'?
105 |   setStepperDirection(DIRECTION_CLOSE);
|   ^~~~~~~~~~~~~~~~~~~
|   stepDirection
ESPBlinds:106:3: error: 'setStepperMode' was not declared in this scope
106 |   setStepperMode(MODE_CLOSE);
|   ^~~~~~~~~~~~~~
ESPBlinds:107:3: error: 'stepFor' was not declared in this scope; did you mean 'stepper'?
107 |   stepFor(STEPS_VERTICAL);
|   ^~~~~~~
|   stepper
B:\Blinds\ESPBlinds\ESPBlinds.ino: In function 'void openBlinds()':
ESPBlinds:114:3: error: 'mqttPublish' was not declared in this scope
114 |   mqttPublish(MQTT_TOPIC_STATE, "opening");
|   ^~~~~~~~~~~
ESPBlinds:115:3: error: 'setStepperDirection' was not declared in this scope; did you mean 'stepDirection'?
115 |   setStepperDirection(DIRECTION_OPEN);
|   ^~~~~~~~~~~~~~~~~~~
|   stepDirection
ESPBlinds:116:3: error: 'setStepperMode' was not declared in this scope
116 |   setStepperMode(MODE_OPEN);
|   ^~~~~~~~~~~~~~
ESPBlinds:117:3: error: 'stepFor' was not declared in this scope; did you mean 'stepper'?
117 |   stepFor(STEPS_VERTICAL);
|   ^~~~~~~
|   stepper
B:\Blinds\ESPBlinds\ESPBlinds.ino: In function 'void stepFor(int)':
ESPBlinds:127:3: error: 'setStepperEnabled' was not declared in this scope; did you mean 'stepperEnabled'?
127 |   setStepperEnabled(true);
|   ^~~~~~~~~~~~~~~~~
|   stepperEnabled
ESPBlinds:152:9: error: 'mqttPublish' was not declared in this scope
152 |         mqttPublish(MQTT_TOPIC_STEPS, currentStep);
|         ^~~~~~~~~~~
B:\Blinds\ESPBlinds\ESPBlinds.ino: In function 'void setStepperMode(int)':
ESPBlinds:163:3: error: 'mqttPublish' was not declared in this scope
163 |   mqttPublish(MQTT_TOPIC_MODE, mode);
|   ^~~~~~~~~~~
B:\Blinds\ESPBlinds\ESPBlinds.ino: In function 'void setStepperEnabled(bool)':
ESPBlinds:171:5: error: 'mqttPublish' was not declared in this scope
171 |     mqttPublish(MQTT_TOPIC_ENABLED, 1);
|     ^~~~~~~~~~~
ESPBlinds:174:5: error: 'mqttPublish' was not declared in this scope
174 |     mqttPublish(MQTT_TOPIC_ENABLED, 0);
|     ^~~~~~~~~~~
B:\Blinds\ESPBlinds\ESPBlinds.ino: In function 'void setStepperDirection(int)':
ESPBlinds:184:5: error: 'mqttPublish' was not declared in this scope
184 |     mqttPublish(MQTT_TOPIC_DIRECTION, "forwards");
|     ^~~~~~~~~~~
ESPBlinds:187:5: error: 'mqttPublish' was not declared in this scope
187 |     mqttPublish(MQTT_TOPIC_DIRECTION, "reverse");
|     ^~~~~~~~~~~
B:\Blinds\ESPBlinds\ESPBlinds.ino: In function 'void mqttCallback(char*, byte*, unsigned int)':
ESPBlinds:257:5: error: 'saveToEeprom' was not declared in this scope
257 |     saveToEeprom();
|     ^~~~~~~~~~~~
ESPBlinds:261:5: error: 'saveToEeprom' was not declared in this scope
261 |     saveToEeprom();
|     ^~~~~~~~~~~~
ESPBlinds:265:5: error: 'saveToEeprom' was not declared in this scope
265 |     saveToEeprom();
|     ^~~~~~~~~~~~
ESPBlinds:269:5: error: 'saveToEeprom' was not declared in this scope
269 |     saveToEeprom();
|     ^~~~~~~~~~~~
ESPBlinds:273:5: error: 'saveToEeprom' was not declared in this scope
273 |     saveToEeprom();
|     ^~~~~~~~~~~~
exit status 1
'setupWifi' was not declared in this scope
I

Ha wow, that's quite the error.. Did you copy constants.example.h to constants.h and fill out the Wifi & MQTT details (sorry, I acknowledge this was not documented at all in the readme).
Also, the .ino sketch has ESP8266 includes, are using an ESP8266 board?
Finally, the following arduino library needs to be installed:

https://github.com/knolleary/pubsubclient

(I really wish the Ardiuno IDE had a project package management solution)
Again, I acknowledge that none of the above has been documented at all in the readme or otherwise - sorry about that.

Thanks for the response
Yes I did copy constants.example.h to constants.hand edited it
I have now installed the library
I am still getting the same error

That's really odd that are you are still getting errors. Can you please try moving the setup() and loop() functions to the end of the file?
Also just noticed you mention you are using Arduino IDE 1.9 which appears to be a beta version. I am successfully compiling this using Arduino IDE 1.8.19 (on linux) - can you try using version 1.8.19?

My friend Eric is a programmer and he did not have time to solve the issues but he pointed out that the definitions shown here and others are not set up in the code.
I am not a programmer so this is the best explanation I can give you
// Locals
int currentStep = 0;
int currentMode = MODE_OPEN;
int stepDirection = EASYDRIVER_DIRECTION_FORWARDS;
bool stepperEnabled = true;
bool isOpening = false;
bool isClosing = false;
void setupWifi(void);
void mqttCallback(char* topic, byte* payload, unsigned int length) ;
[CECG_trans_Logo]THANX
Mitch Geier
President
Computer Emergency & Consulting Group, LLC.
<EMAIL_ADDRESS>609-758-1111 Ext 1
Privileged-Confidential Information may be contained in this message. If you are not the addressee indicated in this message (or responsible for delivery of the message to such person), you may not copy or deliver this message to anyone. In such case, you should destroy this message and kindly notify the sender by reply email. Please advise immediately if you or your employer do not consent to Internet email for messages of this kind.
The sender believes that this E-mail and any attachments were free of any virus, worm, Trojan horse, and/or malicious code when sent. This message and its attachments could have been infected during  transmission. By reading the message and opening any attachments, the recipient accepts full responsibility for taking protective and remedial action about viruses and other defects. CECG LLC. and Mitch Geier are not liable for any loss or damage arising in any way from this message or its attachments.
P Please consider the environment before printing this email.
From: Jacob Morris @.>
Sent: Friday, March 18, 2022 10:31 PM
To: se1exin/ESPBlinds @.>
Cc: Mitch Geier @.>; Author @.>
Subject: Re: [se1exin/ESPBlinds] Can't compile (Issue #1)
That's really odd that are you are still getting errors. Can you please try moving the setup() and loop() functions to the end of the file?
Also just noticed you mention you are using Arduino IDE 1.9 which appears to be a beta version. I am successfully compiling this using Arduino IDE 1.8.19 (on linux) - can you try using version 1.8.19?
—
Reply to this email directly, view it on GitHubhttps://github.com/se1exin/ESPBlinds/issues/1#issuecomment-1072922362, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ABWMISROK2O5WRXA5XHGVPDVAU35VANCNFSM5RCJKCGA.
Triage notifications on the go with GitHub Mobile for iOShttps://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Androidhttps://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.
You are receiving this because you authored the thread.Message ID<EMAIL_ADDRESS>

Ok I have done the decorations my buddy told me to do to  the code I have from github. It solved most of the errrors. However,  he states the code I have could  never work. So I might have a bad set of files from  github. Or github  was not updated with the latest…
here is why
I am getting this error
B:\Blinds\ESPBlinds\ESPBlinds.ino: In function 'void setup()':
ESPBlinds:81:47: error: invalid conversion from 'const char*' to 'int' [-fpermissive]
81 |   mqttPublish(MQTT_TOPIC_STATE, "closed");
You are defining
void mqttPublish(char *topic, int payload) {
// Serial.print(topic);
// Serial.print(": ");
// Serial.println(payload);
But the payload is not an int
As shown here
mqttPublish(MQTT_TOPIC_DIRECTION, "reverse");
so Please if you have a version that compiles please let me know where I can get it
[CECG_trans_Logo]THANX
Mitch Geier
President
Computer Emergency & Consulting Group, LLC.
<EMAIL_ADDRESS>609-758-1111 Ext 1
Privileged-Confidential Information may be contained in this message. If you are not the addressee indicated in this message (or responsible for delivery of the message to such person), you may not copy or deliver this message to anyone. In such case, you should destroy this message and kindly notify the sender by reply email. Please advise immediately if you or your employer do not consent to Internet email for messages of this kind.
The sender believes that this E-mail and any attachments were free of any virus, worm, Trojan horse, and/or malicious code when sent. This message and its attachments could have been infected during  transmission. By reading the message and opening any attachments, the recipient accepts full responsibility for taking protective and remedial action about viruses and other defects. CECG LLC. and Mitch Geier are not liable for any loss or damage arising in any way from this message or its attachments.
P Please consider the environment before printing this email.
From: Jacob Morris @.>
Sent: Friday, March 18, 2022 10:31 PM
To: se1exin/ESPBlinds @.>
Cc: Mitch Geier @.>; Author @.>
Subject: Re: [se1exin/ESPBlinds] Can't compile (Issue #1)
That's really odd that are you are still getting errors. Can you please try moving the setup() and loop() functions to the end of the file?
Also just noticed you mention you are using Arduino IDE 1.9 which appears to be a beta version. I am successfully compiling this using Arduino IDE 1.8.19 (on linux) - can you try using version 1.8.19?
—
Reply to this email directly, view it on GitHubhttps://github.com/se1exin/ESPBlinds/issues/1#issuecomment-1072922362, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ABWMISROK2O5WRXA5XHGVPDVAU35VANCNFSM5RCJKCGA.
Triage notifications on the go with GitHub Mobile for iOShttps://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Androidhttps://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.
You are receiving this because you authored the thread.Message ID<EMAIL_ADDRESS>

After further examination you have 2 functions with the same name mqqtPublish that are slightly different.
Since I am not a coder I have made changes that might work . At least with these changes it compiles. Here is the entire file in text.
Let me know what I might be missing per my last email…And thanks for the help and project
===========================
#include <ESP8266WiFi.h>
#include <EEPROM.h>
#include <PubSubClient.h>
#include "constants.h"
#include "EasyDriver.h"
// Outputs
const int PIN_STEP = 4;
const int PIN_DIR = 5;
const int PIN_MS1 = -1;
const int PIN_MS2 = -1;
const int PIN_ENABLE = 14;
const int PIN_FAN = 13;
// Inputs
//const int PIN_CUTOFF_CLOSE = 0;
//const int PIN_CUTOFF_OPEN = 3;
EasyDriver stepper = EasyDriver(PIN_STEP, PIN_DIR, PIN_MS1, PIN_MS2, PIN_ENABLE);
WiFiClient espClient;
PubSubClient mqttClient(espClient);
// Down = forwards == close
// Up   = Reverse == open
const int DIRECTION_CLOSE = EASYDRIVER_DIRECTION_FORWARDS;
const int DIRECTION_OPEN = EASYDRIVER_DIRECTION_REVERSE;
const bool MQTT_SEND_STEPS = false;
// Vars that are updatable via MQTT and saved into EEPROM...
// If this number is not found in EEPROM, then we assume no EEPROM values exist/have been saved
// and all other EEPROM values should be discarded/fallback to default values.
// See loadFromEeprom()
int EEPROM_MAGIC_NUMBER = 10001;
int STEPS_VERTICAL = 15000; // Number of full steps required to complete open/close sequence
int DELAY_CLOSE = 500; // In micros
int MODE_CLOSE = EASYDRIVER_MODE_FULL_STEP;
int DELAY_OPEN = 500; // In micros
int MODE_OPEN = EASYDRIVER_MODE_FULL_STEP;
// Locals
int currentStep = 0;
int currentMode = MODE_OPEN;
int stepDirection = EASYDRIVER_DIRECTION_FORWARDS;
bool stepperEnabled = true;
bool isOpening = false;
bool isClosing = false;
void setupWifi(void);
void mqttCallback(char* topic, byte* payload, unsigned int length) ;
void mqttReconnect(void);
void loadFromEeprom(void);
void setStepperDirection(int direction);
void setStepperMode(int mode);
void stepFor(int steps);
void setStepperEnabled(bool enabled);
void saveToEeprom();
void mqttPublish1(char *topic, int payload);
void mqttPublish(char *topic, String payload);
void setup() {
// Cut off switches (not used in hardware, but implemented in case required in future)
//  pinMode(PIN_CUTOFF_CLOSE, INPUT_PULLUP);
//  pinMode(PIN_CUTOFF_OPEN, INPUT_PULLUP);
pinMode(PIN_FAN, OUTPUT);
stepper.reset();
Serial.begin(115200);
while (! Serial);
setupWifi();
mqttClient.setServer(MQTT_SERVER, 1883);
mqttClient.setCallback(mqttCallback);
if (!mqttClient.connected()) {
mqttReconnect();
}
mqttPublish1(MQTT_TOPIC_ENABLED, 0);
mqttPublish(MQTT_TOPIC_STATE, "closed");
mqttPublish1(MQTT_TOPIC_STEPS, currentStep);
loadFromEeprom();
// Topic for controlling the stepper remotely
mqttClient.subscribe(MQTT_TOPIC_CONTROL_ENABLED);
mqttClient.subscribe(MQTT_TOPIC_CONTROL_DIRECTION);
mqttClient.subscribe(MQTT_TOPIC_CONTROL_STEPFOR);
mqttClient.subscribe(MQTT_TOPIC_CONTROL_BLINDS);
// Topics for updating EEPROM values remotely
mqttClient.subscribe(MQTT_TOPIC_CONTROL_MODE_OPEN);
mqttClient.subscribe(MQTT_TOPIC_CONTROL_MODE_CLOSE);
mqttClient.subscribe(MQTT_TOPIC_CONTROL_DELAY_OPEN);
mqttClient.subscribe(MQTT_TOPIC_CONTROL_DELAY_CLOSE);
mqttClient.subscribe(MQTT_TOPIC_CONTROL_STEPS_VERTICAL);
}
/**

MAIN LOOP
*/
void loop() {
if (!mqttClient.connected()) {
mqttReconnect();
}
mqttClient.loop();
}

void closeBlinds() {
isClosing = true;
mqttPublish(MQTT_TOPIC_STATE, "closing");
setStepperDirection(DIRECTION_CLOSE);
setStepperMode(MODE_CLOSE);
stepFor(STEPS_VERTICAL);
mqttPublish(MQTT_TOPIC_STATE, "closed");
isClosing = false;
}
void openBlinds() {
isOpening = true;
mqttPublish(MQTT_TOPIC_STATE, "opening");
setStepperDirection(DIRECTION_OPEN);
setStepperMode(MODE_OPEN);
stepFor(STEPS_VERTICAL);
mqttPublish(MQTT_TOPIC_STATE, "opened");
isOpening = false;
}
/**

STEPPER WRAPPERS
*/
void stepFor(int steps) {
setStepperEnabled(true);
for (int i = 0; i < steps; i++) {
//    Serial.print("STEP");
//    Serial.println(i);
// Stepping mode is effectively a multiplier on the desired number of steps
// E.g. a quarter step mode, to achieve a full step we need to do 4x stepper steps
for (int x = 0; x < currentMode; x++) {
stepper.step();
}
currentStep += stepDirection;
//    if (stepDirection == DIRECTION_CLOSE && digitalRead(PIN_CUTOFF_CLOSE) == LOW) {
//      Serial.println("ABORT CLOSE");
//      break;
//    }
//    if (stepDirection == DIRECTION_OPEN && digitalRead(PIN_CUTOFF_OPEN) == LOW) {
//      Serial.println("ABORT OPEN");
//      break;
//    }
if (!stepperEnabled) {
break;
}
if (MQTT_SEND_STEPS) {
if (currentStep % 250 == 0) {
mqttPublish1(MQTT_TOPIC_STEPS, currentStep);
}
}
mqttClient.loop();
}
setStepperEnabled(false);
}

void setStepperMode(int mode) {
stepper.setMode(mode);
currentMode = mode;
mqttPublish1(MQTT_TOPIC_MODE, mode);
}
void setStepperEnabled(bool enabled) {
stepper.enable(enabled);
if (enabled) {
digitalWrite(PIN_FAN, HIGH);
mqttPublish1(MQTT_TOPIC_ENABLED, 1);
} else {
digitalWrite(PIN_FAN, LOW);
mqttPublish1(MQTT_TOPIC_ENABLED, 0);
}
stepperEnabled = enabled;
}
void setStepperDirection(int direction) {
stepper.setDirection(direction);
stepDirection = direction;
if (direction == EASYDRIVER_DIRECTION_FORWARDS) {
stepper.setDelay(DELAY_CLOSE);
mqttPublish(MQTT_TOPIC_DIRECTION, "forwards");
} else {
stepper.setDelay(DELAY_OPEN);
mqttPublish(MQTT_TOPIC_DIRECTION, "reverse");
}
}
/**

WIFI / MQTT HELPERS
*/
void setupWifi() {
Serial.print("Connecting to ");
Serial.println(WIFI_SSID);
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println();
Serial.println("WiFi connected");
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
}

void mqttCallback(char* topic, byte* payload, unsigned int length) {
String topicStr = topic;
String value = "";
for (int i = 0; i < length; i++) {
value += (char)payload[i];
}
Serial.println("mqttCallback !");
Serial.println(topicStr);
Serial.println(value);
if (topicStr == MQTT_TOPIC_CONTROL_ENABLED) {
if (value.equals("1")) {
setStepperEnabled(true);
} else if (value.equals("0")) {
setStepperEnabled(false);
}
}
if (topicStr == MQTT_TOPIC_CONTROL_DIRECTION) {
if (value.equals("1")) {
setStepperDirection(DIRECTION_CLOSE);
} else if (value.equals("0")) {
setStepperDirection(DIRECTION_OPEN);
}
}
if (topicStr == MQTT_TOPIC_CONTROL_STEPFOR) {
int steps = value.toInt();
stepFor(steps);
}
if (topicStr == MQTT_TOPIC_CONTROL_BLINDS) {
if (value.equals("opened") && !isOpening) {
// if (value.equals("opened")) {
openBlinds();
} else if (value.equals("closed") && !isClosing) {
// } else if (value.equals("closed")) {
closeBlinds();
}
}
if (topicStr == MQTT_TOPIC_CONTROL_MODE_OPEN) {
MODE_OPEN = value.toInt();
saveToEeprom();
}
if (topicStr == MQTT_TOPIC_CONTROL_MODE_CLOSE) {
MODE_CLOSE = value.toInt();
saveToEeprom();
}
if (topicStr == MQTT_TOPIC_CONTROL_DELAY_OPEN) {
DELAY_OPEN = value.toInt();
saveToEeprom();
}
if (topicStr == MQTT_TOPIC_CONTROL_DELAY_CLOSE) {
DELAY_CLOSE = value.toInt();
saveToEeprom();
}
if (topicStr == MQTT_TOPIC_CONTROL_STEPS_VERTICAL) {
STEPS_VERTICAL = value.toInt();
saveToEeprom();
}
}
void mqttReconnect() {
while (!mqttClient.connected()) {
Serial.print("Attempting MQTT connection...");
// Attempt to connect
if (mqttClient.connect(MQTT_CLIENT_ID, MQTT_USER, MQTT_PASSWORD, MQTT_TOPIC_STATUS, 1, true, "disconnected", false)) {
 Serial.println("connected");

  // Once connected, publish an announcement...
  mqttClient.publish(MQTT_TOPIC_STATUS, "connected", true);
} else {
  Serial.print("failed, rc=");
  Serial.print(mqttClient.state());
  Serial.println(" try again in 5 seconds");
  delay(5000);
}

}
}
void mqttPublish1(char *topic, int payload) {
// Serial.print(topic);
// Serial.print(": ");
// Serial.println(payload);
mqttClient.publish(topic, String(payload).c_str(), true);
}
void mqttPublish(char *topic, String payload) {
// Serial.print(topic);
// Serial.print(": ");
// Serial.println(payload);
mqttClient.publish(topic, payload.c_str(), true);
}
/**

EEPROM HELPERS
*/

void loadFromEeprom() {
EEPROM.begin(24);
//Read data from eeprom
int magicNumber;
int modeOpen;
int modeClose;
int delayOpen;
int delayClose;
int stepsVertical;
EEPROM.get(0, modeOpen);
EEPROM.get(4, modeClose);
EEPROM.get(8, delayOpen);
EEPROM.get(12, delayClose);
EEPROM.get(16, stepsVertical);
EEPROM.get(20, magicNumber);
EEPROM.end();
if (magicNumber == EEPROM_MAGIC_NUMBER) {
Serial.print("Successfully loaded config from eeprom");
MODE_OPEN = modeOpen;
MODE_CLOSE = modeClose;
DELAY_OPEN = delayOpen;
DELAY_CLOSE = delayClose;
STEPS_VERTICAL = stepsVertical;
} else {
Serial.print("EEPROM MAGIC NUMBER INCORRECT: ");
Serial.print(magicNumber);
Serial.print(" != ");
Serial.println(EEPROM_MAGIC_NUMBER);
Serial.print("Keeping default step config!");
}
mqttPublish1(MQTT_TOPIC_MODE_OPEN, MODE_OPEN);
mqttPublish1(MQTT_TOPIC_MODE_CLOSE, MODE_CLOSE);
mqttPublish1(MQTT_TOPIC_DELAY_OPEN, DELAY_OPEN);
mqttPublish1(MQTT_TOPIC_DELAY_CLOSE, DELAY_CLOSE);
mqttPublish1(MQTT_TOPIC_STEPS_VERTICAL, STEPS_VERTICAL);
}
void saveToEeprom() {
EEPROM.begin(24);
EEPROM.put(0, MODE_OPEN);
EEPROM.put(4, MODE_CLOSE);
EEPROM.put(8, DELAY_OPEN);
EEPROM.put(12, DELAY_CLOSE);
EEPROM.put(16, STEPS_VERTICAL);
EEPROM.put(20, EEPROM_MAGIC_NUMBER);
EEPROM.commit();
EEPROM.end();
mqttPublish1(MQTT_TOPIC_MODE_OPEN, MODE_OPEN);
mqttPublish1(MQTT_TOPIC_MODE_CLOSE, MODE_CLOSE);
mqttPublish1(MQTT_TOPIC_DELAY_OPEN, DELAY_OPEN);
mqttPublish1(MQTT_TOPIC_DELAY_CLOSE, DELAY_CLOSE);
mqttPublish1(MQTT_TOPIC_STEPS_VERTICAL, STEPS_VERTICAL);
}
[CECG_trans_Logo]THANX
Mitch Geier
President
Computer Emergency & Consulting Group, LLC.
<EMAIL_ADDRESS>609-758-1111 Ext 1
Privileged-Confidential Information may be contained in this message. If you are not the addressee indicated in this message (or responsible for delivery of the message to such person), you may not copy or deliver this message to anyone. In such case, you should destroy this message and kindly notify the sender by reply email. Please advise immediately if you or your employer do not consent to Internet email for messages of this kind.
The sender believes that this E-mail and any attachments were free of any virus, worm, Trojan horse, and/or malicious code when sent. This message and its attachments could have been infected during  transmission. By reading the message and opening any attachments, the recipient accepts full responsibility for taking protective and remedial action about viruses and other defects. CECG LLC. and Mitch Geier are not liable for any loss or damage arising in any way from this message or its attachments.
P Please consider the environment before printing this email.
From: Jacob Morris @.>
Sent: Friday, March 18, 2022 10:31 PM
To: se1exin/ESPBlinds @.>
Cc: Mitch Geier @.>; Author @.>
Subject: Re: [se1exin/ESPBlinds] Can't compile (Issue #1)
That's really odd that are you are still getting errors. Can you please try moving the setup() and loop() functions to the end of the file?
Also just noticed you mention you are using Arduino IDE 1.9 which appears to be a beta version. I am successfully compiling this using Arduino IDE 1.8.19 (on linux) - can you try using version 1.8.19?
—
Reply to this email directly, view it on GitHubhttps://github.com/se1exin/ESPBlinds/issues/1#issuecomment-1072922362, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ABWMISROK2O5WRXA5XHGVPDVAU35VANCNFSM5RCJKCGA.
Triage notifications on the go with GitHub Mobile for iOShttps://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Androidhttps://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.
You are receiving this because you authored the thread.Message ID<EMAIL_ADDRESS>