Does spring data JDBC not support SQL queries using the exists keyword?

My project used spring data JDBC 2.19 and found
getNamedParamJdbcTemplate().getJdbcOperations().query(mysql.toString(), new BeanPropertyRowMapper<>(clazz), params); The exist query condition is not supported. The query result is an empty list. The SQL is as follows:
select A.* from ( select a.* from wo_ user a where 1=1 and instr(a.delete_ flag, ?) > 0 and exists(select 1 from wo_ org_ user b where b.user_ id=a.id and instr(b.delete_ flag, ?) > 0 ) ) A limit 0,20
If and exists (select 1 from wo...  is removed, it can be executed normally.
Has the new version solved this problem, or is my usage incorrect?

Please post the complete stack trace.
Also, the SQL looks completely broken to me. It kinda looks like there are plenty additional spaces in the posted code.

select  A.* from ( select a.* from wo_user a where 1=1  and instr(a.delete_flag, 'normal') > 0  and exists(select b.id from wo_org_user b where b.user_id=a.id and instr(b.delete_flag, 'normal') > 0 ) ) A limit 0,20
No exception is thrown. The JDBC template is finished and the result is an empty collection.

Please post the complete stack trace.
Also, the SQL looks completely broken to me. It kinda looks like there are plenty additional spaces in the posted code.

select A.* from ( select a.* from wo_user a where 1=1 and instr(a.delete_flag, 'normal') > 0 and exists(select b.id from wo_org_user b where b.user_id=a.id and instr(b.delete_flag, 'normal') > 0 ) ) A limit 0,20
No exception is thrown. The JDBC template is finished and the result is an empty collection.

Please post the complete stack trace.
Also, the SQL looks completely broken to me. It kinda looks like there are plenty additional spaces in the posted code.

mysql version：5.7.29-log
However, the method that calls the JDBC template contains generics. as below：
`public  List execQueryForPage(Class clazz, String sql, int currentPage, int pageSize, Object ...params) {
	int startRow = (currentPage - 1) * pageSize;
	StringBuilder mysql = new StringBuilder(200);
	mysql.append("select  A.* from ( ").append(sql).append(" ) A limit ").append(startRow).append(",").append(pageSize);
	log.info("sql={} params={}", mysql.toString(), params);
	return this.getNamedParamJdbcTemplate().getJdbcOperations().query(mysql.toString(), new BeanPropertyRowMapper<>(clazz), params);
}`

Please post the complete stack trace.
Also, the SQL looks completely broken to me. It kinda looks like there are plenty additional spaces in the posted code.

Sorry, the problem has been found. It's my fault. Among the parameters passed, an enumeration type is not converted to a string, but directly passed to the variable parameter of the JDBC template query function.


OSOE-792: Removing double escaping

OSOE-792
Fixes #319

I'm pretty sure this isn't a valid error here:
https://github.com/Lombiq/GitHub-Actions/actions/runs/7798765332/job/21268124561?pr=322

I'm pretty sure this isn't a valid error here: https://github.com/Lombiq/GitHub-Actions/actions/runs/7798765332/job/21268124561?pr=322

Nvm, they are.


Add rel="noopener" guidance to developer documentation

Fixes #3877
Added guidance for rel="noopener" for external hyperlinks having target="_blank_" to developer documentation files, warehouse/docs/development/frontend.rst and warehouse/docs/development/reviewing-patches.rst

@pgadige would you like to finish this up by addressing Nicole's review comment?
Thanks!

@brainwane thank you for the gentle reminder.
I shall finish this one after making changes as suggested by Nicole. 💯

@pgadige Hi! Just to be clear: if you are waiting for specific feedback from Nicole, please say so. Otherwise, if you are still intending on revising this PR, please say so. And if you need to give up and someone else should pick it up, please say so. Thanks!

This was fixed in #4952.

Thanks for your work @pgadige! If you'd like to work on another issue next, let us know by replying, and I'll be happy to give you a suggestion!

@pgadige Hi! Just to be clear: if you are waiting for specific feedback from Nicole, please say so. Otherwise, if you are still intending on revising this PR, please say so. And if you need to give up and someone else should pick it up, please say so. Thanks!

I sincerely apologise for not replying actively. I'm sorry for causing inconvenience. I shall take care, hence forth, to actively comment or update the issues. Thank you very much for all the valuable help and guidance.

This was fixed in #4952.

Thank you very much for referring this. I was unaware of it.


Set up regular diff consumption

We now have daily/hourly/minutely diffs back up here:
http://dump.openhistoricalmap.org/replication/
From our last conversation it might be very simple to just "turn on" diff consumption in OpenMaptiles, and Seth thought the minutelies would be small enough to use those.

Some preliminary discoveries, based of Googling OSM and imposm3, and thumbning through the OMT source code repositories...

In the initial data import, the -diff flag should have been present so as to set up some additional behaviors in imposm3 in the future. Judging by the script, "true" is the default if not set, and I do see a last.state.txt file present.

The import-osm docker image, has a config.json with a hardcoded URL for the OSM server, and for a daily schedule. https://github.com/openmaptiles/import-osm/blob/master/config.json As such, one clear step is to fork the import-osm utility and change the OHM replication URL, and change OMT's docker-compose.yaml to use this new version.

The OMT command would be docker-compose run update-osm https://github.com/openmaptiles/import-osm/blob/master/import_update.sh which would check for a set of diffs and apply them all. Reference:  https://imposm.org/docs/imposm3/latest/tutorial.html#updating and https://github.com/openmaptiles/import-osm/blob/master/import_update.sh

I think that tessera does some caching of vector tiles? After importing diffs, Tessera should be restarted. Since this can take a full minute and would be an interruption in tile service, perhaps this should not be done overly often?

Rather than forking import-osm, you can map an alternative config.json into the container using a volume:
config.json (in openmaptiles/openmaptiles):
{
    "replication_url": "http://dump.openhistoricalmap.org/replication/minute/",
    "replication_interval": "1m"
}

diff --git i/docker-compose.yml w/docker-compose.yml
index ae931f8..05aff55 100644
--- i/docker-compose.yml
+++ w/docker-compose.yml
@@ -38,6 +38,7 @@ services:
      - ./data:/import
      - ./build:/mapping
      - cache:/cache
+     - ./config.json:/usr/src/app/config.json
   import-osmborder:
     image: "openmaptiles/import-osmborder:0.4"
     env_file: .env

$ docker-compose run --rm import-osm bash
WARNING: The BBOX variable is not set. Defaulting to a blank string.
Creating network "openmaptiles_postgres_conn" with the default driver
root@7ab7e3fdf5fb:/usr/src/app# cat config.json
{
    "replication_url": "http://dump.openhistoricalmap.org/replication/minute/",
    "replication_interval": "1m"
}

tessera has an in-memory cache, so it does need to be restarted to clear that (presumably after update-osm completes, during which it will render "old" data). It restarts fairly quickly, but it could be an interruption nonetheless. A nice improvement would be to have tessera listen for SIGHUP and clear its cache in response without needing to restart (to be clear, it doesn't do this yet).
(I'm assuming we can safely target minutely diffs since OHM data doesn't change all that often, but I'm curious how long import-osm takes to run after edits have been made that need to trickle though various generalized tables.)

OK, this is up and running and we've confirmed OK for now at 30-60 min refresh as experienced by user (accounting for both webserver and potential client side browser caching)


Added to awesome-pocketbase

Hello, this is a courtesy note to say that your project has been added to awesome-pocketbase 👍

Thanks @benallfree !!


[Bug] /Search or /Count return 400 when the access level is set to 2 ot 3

Further details to come..

this is being tracked in pull request #245


[Open AI] Update recording policy the model name test

Packages impacted by this PR
OpenAI
Issues associated with this PR
Describe the problem that is addressed by this PR
Remove list of model names in playback modes
What are the possible designs available to address the problem? If there are more than one possible design, why was the one in this PR chosen?
Are there test cases added in this PR? (If not, why?)
Provide a list of related PRs (if any)
Command used to generate this PR:**(Applicable only to SDK release request PRs)
Checklists

[ ] Added impacted package name to the issue description
[ ] Does this PR needs any fixes in the SDK Generator?** (If so, create an Issue in the Autorest/typescript repository and link it here)
[ ] Added a changelog (if necessary)

API change check
API changes are not detected in this pull request.

@deyaaeldeen I refactor the function under the utils file in the latest commit


fix: error when pandora dev

Codecov Report

Merging #195 into master will decrease coverage by 0.24%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master     #195      +/-   ##
==========================================
- Coverage   80.52%   80.27%   -0.25%
==========================================
  Files         190      190
  Lines        6320     6333      +13
  Branches      847      847
==========================================
- Hits         5089     5084       -5
- Misses        849      868      +19
+ Partials      382      381       -1

Impacted Files
Coverage Δ

packages/hook/src/index.ts
59.37% <0%> (-40.63%)
:arrow_down:

packages/hook/src/patch/Global.ts
73.33% <0%> (-8.34%)
:arrow_down:

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 2502888...0433dcd. Read the comment docs.


Update example LedgerUri For Confidential Ledger Dataplane Stable

Data Plane API - Pull Request
No Change to API.
Just updating some examples to prevent confusion.
API Info: The Basics
No change. N/A

Link to engagement record issue: N/A

Is this review for (select one):

[ ] a private preview
[ ] a public preview
[✔ ] GA release - This PR is not really for a release but just a minor update to some examples. The spec is already GA-ed.

Change Scope
This section will help us focus on the specific parts of your API that are new or have been modified. Please share a link to the design document for the new APIs, a link to the previous Open API document (swagger) if applicable, and the root paths that have been updated.

Updated paths: /confidentialledger/data-plane/Microsoft.ConfidentialLedger/stable/2022-05-13/examples/ledger/

❔Got questions? Need additional info?? We are here to help!

 Contact us!
The Azure API Review Board is dedicated to helping you create amazing APIs. You can read about our mission and learn more about our process on our wiki.

💬 Teams Channel
💌 email

Click here for links to tools, specs, guidelines & other good stuff
Tooling

Open API validation tools were run on this PR. Go here to see how to fix errors
Spectral Linting
Open API Hub

Guidelines & Specifications

Azure REST API Guidelines
OpenAPI Style Guidelines
Azure Breaking Change Policy

Helpful Links

Azure DevTools Wiki

Only change to example.
Let me know when you need it merged.

Whenever is convenient. Sooner the better.
Thank you for the quick review and approval.


editorconfig rules for Typescript not enforced

We have naming rules in our editorconfig, and I jsut realized VS isn't applying them to Typescript files, although the class_names rule is in the [*]-section:
dotnet_naming_rule.class_names.symbols = classes
dotnet_naming_rule.class_names.style = class_style
dotnet_naming_rule.class_names.severity = error
dotnet_naming_symbols.classes.applicable_kinds = class, struct, enum
dotnet_naming_style.class_style.capitalization = pascal_case
Do I have to put it in an extra [*.ts]-section or something?
I have Typescript Analyzer and Typescript SDK 3.4.5 installed if that helps.
Edit: This is my .ts section:
[*.{ts,js}]
indent_size = 2
max_line_length = 80
# Interfaces
dotnet_naming_rule.interface_names.symbols = interfaces
dotnet_naming_rule.interface_names.style = interface_style
dotnet_naming_rule.interface_names.severity = error
dotnet_naming_symbols.interfaces.applicable_kinds = interface
dotnet_naming_style.interface_style.capitalization = pascal_case

@kendrahavens Do dotnet naming rules apply to TypeScript?

No, the dotnet style rules only pertain to C# and Visual Basic. Typescript predominantly uses TSLint to manage code style. There is a very popular VSCode extension for this. I don't believe we have a TSLint extension in Visual Studio. (@sana-ajani to correct me)

There is a typescript-tslint-plugin that you can use: https://github.com/Microsoft/typescript-tslint-plugin#with-visual-studio


Add more details in the "Contact" Object

For most people, email and url may be enough, but others - me, in today's case - need more info like jobTitle/position, phone, companyName, and companyUrl. This may be important if we write API Specification for another company.

As you say, for most people (based also on issues here) the existing fields in the contact object are probably sufficient. As per the specification:

This object MAY be extended with Specification Extensions

so you can define and use such fields as x-job-title, x-phone within this object.

Thanks, @MikeRalphson  for taking the time to check my issue & mentioning the x-property to extend the object.
What I really wanted was the phone with a tel: action for emergency stuff to be added to the specification, other properties were more of a suggestion to additional properties if anybody needed them, will be recognizable & available in OAS.
It's my first time to contribute at OAS, not really sure about the process to introduce something new (i.e. Adding phone, with tel: action in this case).

Check out DEVELOPMENT.md for an overview of the change processes. Bear in mind not all suggested changes, even if practical, will make it into the specification. Every new field and feature has a cost for those implementing the specification in tooling.
Basically the process would be to see if the issue gains support from the wider TDC, and then to take it to a PR against the spec itself. More complex changes might use the 'proposals' process.

@MikeRalphson Many thanks for explaining this to me. It's very clear now! 👍

@elharony Also, take a look at http://apisjson.org/  as it provides the ability to add a lot more information to an API.  The apisjson spec can be used in combination with OpenAPI descriptions.

@darrelmiller Thank you, Darrel. Will give it a try!

Closing as I think we identified alternative avenues here to extending the spec. itself, but feel free to re-open! Thanks all.


Add Mac OSX support

I tried just pulling down this library to try it out, and on my macbook I get a lot of errors revolving around the compilation of some mp4 library. Is this expected? Do I need to be on debian or some other os?

In file included from ../external/mp4v2/lib/src/atom_mdat.cpp:22:
In file included from ../external/mp4v2/lib/src/impl.h:6:
In file included from ../external/mp4v2/lib/src/src.h:28:
../external/mp4v2/lib/src/mp4util.h:36:51: error: invalid suffix on literal; C++11 requires a space between literal and identifier [-Wreserved-user-defined-literal]
throw new Exception("assert failure: "LIBMPV42_STRINGIFY((expr)), FILE, LINE, FUNCTION );
^
../external/mp4v2/lib/src/mp4util.h:58:9: error: cannot use 'throw' with exceptions disabled
throw new PlatformException("malloc failed",errno,FILE,LINE,FUNCTION);
^
../external/mp4v2/lib/src/mp4util.h:82:9: error: cannot use 'throw' with exceptions disabled
throw new PlatformException("malloc failed",errno,FILE,LINE,FUNCTION);
^
In file included from ../external/mp4v2/lib/src/atom_mdat.cpp:22:
In file included from ../external/mp4v2/lib/src/impl.h:6:
In file included from ../external/mp4v2/lib/src/src.h:29:
../external/mp4v2/lib/src/mp4array.h:124:1: error: cannot use 'throw' with exceptions disabled
MP4ARRAY_DECL(MP4Integer8, uint8_t)

OSX is yet not supported. It is in my TODO list as soon as I am able to get access to an OSX build environment (I am not a mac user myself).
Any help would be appreciated.

What environment does this work on?

Verified on Ubuntu, should work on any Linux with new GCC

I've been trying to put together a docker container for this, but for some reason I still can't get it to compile...I still get gcc compiler errors....
 I'm not sure why it still doesn't compile properly. Wondering if you can give me some hints

I am using 16.04 but should work on your set up.
Would you mind to open a new issue with the compiler errors?
I will try to reproduce your environment and see if I can make it fail also.
El 27/4/2017 18:43, "Sean Stringer"<EMAIL_ADDRESS>escribió:

So the docker file above shows an Ubuntu container with gcc and g++ 6
running. I'm not sure why it still doesn't compile properly. Wondering if
you can give me some hints
—
You are receiving this because you were assigned.
Reply to this email directly, view it on GitHub
https://github.com/medooze/media-server-node/issues/5#issuecomment-297771376,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ABBW835ytgn5c3lrtGmVIe3u-hlsLf6lks5r0MU1gaJpZM4NIXr4
.


Fixed connections pool leak on failed ydb.Open call

Pull request type

Please check the type of change your PR introduces:

[x] Bugfix
[ ] Feature
[ ] Code style update (formatting, renaming)
[ ] Refactoring (no functional changes, no api changes)
[ ] Build related changes
[ ] Documentation content changes
[ ] Other (please describe):

What is the current behavior?

Issue Number: #1433
What is the new behavior?

Other information

Codecov Report
Attention: Patch coverage is 0% with 1 line in your changes missing coverage. Please review.

Project coverage is 42.26%. Comparing base (a827ded) to head (38730a3).

Files with missing lines
Patch %
Lines

driver.go
0.00%
1 Missing :warning:

:exclamation:  There is a different number of reports uploaded between BASE (a827ded) and HEAD (38730a3). Click for more details.
HEAD has 213 uploads less than BASE

Flag
BASE (a827ded)
HEAD (38730a3)

macOS
12
0

unit
36
1

go-1.21.x
20
1

ubuntu
39
1

go-1.22.x
20
0

go-1.23.x
23
0

windows
12
0

integration
24
0

ydb-23.3
12
0

ydb-24.1
12
0

ydb-nightly
3
0

experiment
3
0

Additional details and impacted files
@@             Coverage Diff             @@
##           master    #1464       +/-   ##
===========================================
- Coverage   67.95%   42.26%   -25.69%
===========================================
  Files         350      293       -57
  Lines       36288    26450     -9838
===========================================
- Hits        24660    11180    -13480
- Misses      10551    14806     +4255
+ Partials     1077      464      -613

Flag
Coverage Δ

experiment
?

go-1.21.x
42.26% <0.00%> (-25.91%)
:arrow_down:

go-1.22.x
?

go-1.23.x
?

integration
?

macOS
?

ubuntu
42.26% <0.00%> (-30.12%)
:arrow_down:

unit
42.26% <0.00%> (+0.84%)
:arrow_up:

windows
?

ydb-23.3
?

ydb-24.1
?

ydb-nightly
?

Flags with carried forward coverage won't be shown. Click here to find out more.

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


buy links should open new tab

buy links should open new tab

this was meant for best cigars guide


Improve performance of simde_mm512_add_epi32

Improve and simplify implementation of simde_mm512_add_epi32 as follows:

Remove the explicit SVE implementation. For SVE vector lengths of VL={128, 256}, this explicit vector length agnostic (VLA) SVE loop performs significantly worse than the Neon equivalent, which can be executed using fewer instructions. This sequence of SVE intrinsics is also malformed according to clang, so it fails to compile altogether.

Preferentially use GCC's vector extension if available, instead of repeated calls to simde_mm256_add_epi32. There are a couple of reasons for this:

The added indirection results in worse code generation. See the code generation attached to commit message for an example with GCC 13.

GCC's vector extension is an easier optimization target for compilers, allowing them to appropriately output performant code generation depending on their own internal cost & tuning models. See the snippets attached to commit message for an example of improved code-gen in a vector length specific (VLS) context.

This brings the implementation of simde_mm512_add_epi32 back in line with other similar AVX512 intrinsics, such as simde_mm512_sub_epi32 and simde_mm512_mul_ps.
Fixes #980.

@AymenQ Thank you for your PR; I'm debugging the clang-16 issue over at https://github.com/simd-everywhere/simde/pull/1127


staging-datasets-server-job-queue-metrics-collector-284267dkcp9 fails on staging

Traceback (most recent call last):
  File "/src/jobs/cache_maintenance/src/cache_maintenance/main.py", line 11, in <module>
    from libcommon.storage_client import StorageClient
  File "/src/libs/libcommon/src/libcommon/storage_client.py", line 8, in <module>
    from libcommon.cloudfront import CloudFront
  File "/src/libs/libcommon/src/libcommon/cloudfront.py", line 8, in <module>
    from cryptography.hazmat.backends import default_backend
ModuleNotFoundError: No module named 'cryptography'

I think it affects all the cache-maintenance based cron jobs

fixed by https://github.com/huggingface/datasets-server/pull/2312


Move the mapping/sparse_pose_graph directory.

RFC=0001

@wally-the-cartographer merge

Merge requested by authorized user cschuet. Merge queue now has a length of 1.


[Sticky] Optimisation ideas

This issue is raised as a repository for ideas about how to speed up optimisation.

[x] Do not look for nearest segment after every segment - instead try to burn the next segment on the subpath, only looking at other segments when you need to travel.
[x] Optimise Inner Path identification so that it only checks groups and not segments
[x] For Merge Passes, maintain a pass count on the CutObject in order to avoid having independent CutObjects for each pass which then need to be searched through on a travel move
[x] Fix the inner path identification so that rasters are inside a closed cut if any point is inside (different from vectors).
[x] Optimise raster image creation so that it creates multiple smaller images where time taken to sweep large empty areas is greater than the time needed for an extra acceleration/deceleration for an extra separate raster.
[x] Optimise for components by burning the all inside elements of an outside cut before moving only another area.
[x] Optimise single large rasters elements with a lot of empty space by breaking them into smaller elements before above optimisation. (Needs to be before as otherwise you will merge them all back again. It might be beneficial to break the above raster optimisation by grouping literally overlapping rasters and creating many images, then breaking apart these large images, and then combining close into grouped images where this is better than doing them separately (combining happening after inside identification if grouped inside is selected, and before inside identification if grouped inside is not selected),
[ ] In the Candidates routine, if a path segment in a sub-path/CutGroup has fewer burns than the preceding path segment then always give it as a candidate, otherwise only give it as a candidate if the start point is more than a certain distance from the previous candidate. If a sub-path contains many small segments, this will reduce the number of subpaths considered as candidates without substantially reducing the travel optimisation.
[x] Use numpy for inner first identification, or greedy or 2-opt. If necessary explicitly parallelise numpy usage.
[x] Extend numpy usage with GPU alternative(s) to numpy.
[ ] Instead of only using start/end points as a travel point, consider calculating the nearest point of the line joining the start and end points (using SciPy?). Obviously some PathSegment types are easier than others to calculate this. It should be possible to limit the list of paths we do this for as some paths can be shown to be more distant than others based only on their end points.
[ ] Rather than "greedy" being single minded about the absolute shortest travel move, instead we look at the shortest two (or three) moves and look 2 or three moves ahead to see whether a slightly smarter travel move would be better.

On the initial numbering scheme:
1. Stay on path
Implemented
2. Simplify large numbers of short PathSegments

This is unneeded. We use zingl-bresenham curves. We don't subdivide cuts into straight line segments to begin with. We merely draw the curves within our native plot sequence. It's much better to do this way. But, unless the user has divided their curve that way, the curve will be fed into the plotplanner and decomposed into octagonal and diagonal moves, and this will pixel perfect plot the cut. It also makes it scale invariant.

My suggestion for reducing many short PathSegments to a fewer number of Bezier curves was to reduce the time needed to optimise, not for improving cut time. With hindsight I think my brain-dump suggestion to change segments to a simpler type was unnecessary.
However, simplifying large numbers of short PathSegments to significantly fewer PathSegments at load time (optional setting to enable this) might be beneficial at optimise time. And of course these would be preserved if you did a save, so potentially the overhead of reducing PathSegments would only happen on raw svgs.
3. Python sort

The power of the sorting there is somewhat negated this is a NLog(N) process to sort the list and it's an N process to merely look at things. You can't do that faster without storing the proper values in a more useful manner. There's a lot of options for solving K cases of find the closest point to point Q.

I have tried this - and as you suggested it would be, it was actually slower.
4. / 5. Numpy etc.

Numpy isn't really a requirement. This would make it a requirement.
CuPy isn't a requirement, this would make it a requirement.

I was not intending to suggest that we should make them a requirement - but should take advantage if they are available.
6. Clustering

Limited the checked points is the method that all solutions to nearest point problems employ. This is usually done by some manners of chunking the points into clusters and determine since no point is nearer to this point than the edge of the cluster the fact that the point is in that cluster proves it cannot be closer so do not check that point cluster. I've coded my own novel algorithm for this which I feel is a lot easier.

SVGs with groups may already have information that can be used for a sort of clustering. We could potentially do some optimisation based on Groups.
But I think you are right - the O() of the algorithm is more important than parallelisation because for large SVGs, O(NLogN) or O(N^2) will quickly overtake whatever parallelism you can achieve on CPU or even GPU.

Sort all candidates into two lists, sorted by x coord and y coord. (Occurs 1 time, O(NlogN)).
Find position of current point in the sorted lists. (log(n), binary search)
Iterate within both list in the +x, +y and -x and -y direction. Storing the current best solution.
Stop search in that direction if and when the current closest point is closer than the distance in only the one coordinate. (Since if dx > d_curr, it doesn't matter what the y-value is all candidates in that direction disqualified since they must be further away).
The algorithm is log(n) for finding a point within the field. So we're doing this for N points or so gives us NLogN, as the overall solution. The current solution is N^2, your proposed resort each time thing is N^2log(N).

Yes.
If we are doing pure python where all algorithms are possible, then this would seem to be optimal. But using e.g. numpy where numpy has some things it does in C in parallel, but some things that need to come back to single-threaded python for processing, O() still trumps, but it may still be faster to have a slightly less optimal algorithm (which is still O(NlogN)) but which utilises specific numpy features.

I think that greedy is a form of clustering in the sense that a lot of the time the travel moves are likely to be optimal,

Clustering in context refers to when you cluster euclidean space to solve greedy faster because you can use clustered algorithms to solve nearest point problems faster than O(N) and lets you solve greedy faster than O(N^2).
Numpy greedy would be brute force. So rather than O(N*log(n)) we're doing O(N^2) but trying to make up for the difference with the raw speed of the combined operations in the C code. -- The bigger issue is that it's not constrained either. Or would need to be constrained rather than just search the set of all endpoints. You need to search the set of all endpoints which occur from within the inner first candidate list.
http://honors.cs.umd.edu/reports/kuang.pdf
I think we could actually make a 2-opt that works for our HTSP problem. We drop invalid nodes and proceed to perform a cheapest valid insert, probably in a brute force manner.
https://stemlounge.com/animated-algorithms-for-the-traveling-salesman-problem/
So in theory a correctly done numpy solution could help here.

Though at a certain point we're going to have way more trouble with the polygon in polygon algorithm timewise than the optimizations here.

-This is NOT completed - nor will it ever be as there will always be further potential optimisations to consider.
However, I would like you to confirm that my image / raster optimisation that is in 0.7 has been ported forward to 0.8 (if you cannot determine the margins from the speed, then a fixed margin of (say) 500mil would probably do).
And I am pretty certain that some of the above suggestions have not been implemented yet - like use of numpy for my suggestion of greedy and your suggestion, nor e.g. a new algorithm I have in mind for 2-opt etc.


will make Login Page look more attractive to enhance user experience[GSSOC'23]

I will make the Login Page and Background of Login page more attractive to enhance User Experience, Login page background does not suit it it need some color grinding to make it awesome , Please Assign me this issue under @GSSOC'23 to make it better

I would like to improve the UI of login page and make it  more attractive .The current login page ui is not very soothing to see from user point of view. Kindly assign me this issue under GSSSSOC 2023.


Collection navigation property in owned type

I have an owned type that has navigation properties to other entities. When the navigation property is one-to-one everything works fine, but if the navigation property is one-to-many (without referencing the collection navigation property) or many-to-one, I get an error 'Unable to determine the relationship represented by navigation property ...' when trying to create an migration.
Steps to reproduce
This a rough model.
public class Parent
	{
		public long Id { get; set; }

		public OwnedType Owned { get; set; }
	}
	public class OwnedType
	{
		public long Id { get; set; }

		public ICollection<RelatedEntity> RelatedEntities { get; set; }
	}

	public class RelatedEntity
	{
		public long Id { get; set; }

		public OwnedType OwnedType { get; set; }

		public long OwnedTypeId { get; set; }
	}

	public class ParentConfig : IEntityTypeConfiguration<Parent>
	{
		public void Configure(EntityTypeBuilder<Parent> builder)
		{
			builder.HasKey(e => e.Id);

			builder.OwnsOne(e => e.Owned)
				.HasKey(o => o.Id);
		}
	}

	public class OwnedTypeConfig : IEntityTypeConfiguration<OwnedType>
	{
		public void Configure(EntityTypeBuilder<OwnedType> builder)
		{
			builder.HasKey(e => e.Id);

			builder.HasMany(e => e.RelatedEntities)
				.WithOne(r => r.OwnedType)
				.HasForeignKey(r => r.OwnedTypeId);
		}
	}

	public class RelatedEntityConfig : IEntityTypeConfiguration<RelatedEntity>
	{
		public void Configure(EntityTypeBuilder<RelatedEntity> builder)
		{
			builder.HasKey(e => e.Id);

			builder.HasOne(e => e.OwnedType)
				.WithMany(o => o.RelatedEntities)
				.HasPrincipalKey(o => o.Id);
		}
	}

PMC Output:
Unable to determine the relationship represented by navigation property 'AddressAbbreviation.Address' of type 'UserAddress'. Either manually configure the relationship, or ignore this property using the '[NotMapped]' attribute or by using 'EntityTypeBuilder.Ignore' in 'OnModelCreating'
Further technical details
EF Core version: 2.2.6
Database provider: (e.g. Microsoft.EntityFrameworkCore.SqlServer)
Target framework: .NET Core 2.2
Operating system: Windows 10 64-bit
IDE: Visual Studio 2017 15.9.18

@GlumacP This is because using IEntityTypeConfiguration can only be used for non-owned types. See #15681. EF Core 3.1 generates a clearer exception message.


Bump iohk-monitoring - drop dependency on snap

Description
This PR:

bumps iohk-monitoring to a version that replaces the snap server beckend with wai / warp.
switches all remaining build targets in the repo from snap-based ekg to ekg-wai.
sensibly constrains ekg-forward (0.5 contains a space leak, and 0.7 will contain breaking changes).

This ultimately removes snap-server from node dependency graph entirely.
Checklist

[x] Commit sequence broadly makes sense and commits have useful messages
[ ] New tests are added if needed and existing tests are updated.  These may include:

golden tests
property tests
roundtrip tests
integration tests
See Runnings tests for more details

[ ] Any changes are noted in the CHANGELOG.md for affected package
[x] The version bounds in .cabal files are updated
[x] CI passes. See note on CI.  The following CI checks are required:

[ ] Code is linted with hlint.  See .github/workflows/check-hlint.yml to get the hlint version
[ ] Code is formatted with stylish-haskell.  See .github/workflows/stylish-haskell.yml to get the stylish-haskell version
[ ] Code builds on Linux, MacOS and Windows for ghc-8.10.7 and ghc-9.2.7

[x] Self-reviewed the diff

!! DO NOT MERGE !!
Dropping the snap dependency will be realized as part of the upcoming node release process (cc @neilmayhew )


split nested tests

No matter how I look at the circleci documentation and forums and stackoverflow, their implementation of splitting tests seems buggy to me.
It will take a few words to explain. First of all, we currently have only 7 classes that have @Nested inside them, these 7 generate more, of course, because I create fully qualified class names from them.  An example would be a lot easier to get, let's look at KubernetesClientBootstrapConfigurationTests
it has 8 @Nested classes. Thus I generate 8 different classes to be passed to -DtestsToRun. Let's track this because it is important.
Two of them are here:

KubernetesClientBootstrapConfigurationTests$KubernetesEnabled
KubernetesClientBootstrapConfigurationTests$KubernetesEnabledOnPurpose

And here

org.springframework.cloud.kubernetes.client.config.KubernetesClientBootstrapConfigurationTests$KubernetesEnabledConfigDisabled

Three more here:

org.springframework.cloud.kubernetes.client.config.KubernetesClientBootstrapConfigurationTests$KubernetesEnabledSecretsDisabled
org.springframework.cloud.kubernetes.client.config.KubernetesClientBootstrapConfigurationTests$KubernetesDisabled
org.springframework.cloud.kubernetes.client.config.KubernetesClientBootstrapConfigurationTests$KubernetesEnabledSecretsAndConfigDisabled

And the last two here:

org.springframework.cloud.kubernetes.client.config.KubernetesClientBootstrapConfigurationTests$KubernetesClientBootstrapConfigurationNotInsideK8s
org.springframework.cloud.kubernetes.client.config.KubernetesClientBootstrapConfigurationTests$KubernetesClientBootstrapConfigurationNotInsideK8s

The idea of this exercise is that I do indeed pass all the @Nested tests to -DtestsToRun.

Unfortunately circleci does not handle that entirely correct. When I output the json file that keeps track of all the tests that it knows about, see here for example, only 4 of them are present. Why? I have no idea :(
I still see entries in logs like:
Autodetected classname timings.
No timing found for "org.springframework.cloud.kubernetes.client.config.KubernetesClientBootstrapConfigurationTests$KubernetesClientBootstrapConfigurationInsideK8s"
No timing found for "org.springframework.cloud.kubernetes.client.config.KubernetesClientBootstrapConfigurationTests$KubernetesEnabled"
No timing found for "org.springframework.cloud.kubernetes.client.config.KubernetesClientBootstrapConfigurationTests$KubernetesEnabledConfigDisabled"
No timing found for "org.springframework.cloud.kubernetes.client.config.KubernetesClientBootstrapConfigurationTests$KubernetesEnabledSecretsDisabled

meaning some inner tests are perfectly parsed, some are not. And why circleci does not generate these in its own json file is beyond me. Truth being said, this is not that important for us. The mere fact that we have this problem, it does not mean they will not be split; they will, just not by timing. Also, because there are so little number of files that fall under this category, it's something we can totally ignore, for now.
The other way to think about it - we are still splitting, just that circleci is not perfect about it, which is more then OK.

I've also opened a question about it to circleci, but my post is yet to be accepted. I will also keep an eye on this in later builds and see if this has to do with some heuristics that they have. Either way, the position we are now looks fairly good to me, still.

@ryanjbaxter is there a chance for this and some other PRs to be looked at? I am really not trying to be pushy in any shape or form, I am just not sure what I should be doing next. I want to contribute more and fix some of the things that I still have in my head, but I have no visibility of future roadmaps and branches, etc. :(
As I understand some things are OK to be put in main (once reviewed), some, like a refactor of configmaps/secrets implementation is not (as we talked in a PR in November).  I have 6 pending PRs and about 5 more in my plans of fixing/adding more enhancements.
As an example, I see this roadmap for 2022.0.x where there are 3 PRs of mine listed, which is lovely! But, there are no time lines, no explicit branch 2022.0.x for in our code base created...

Yes the PRs are on my list to get to soon.  Coming back after the holidays has been a bit insane because of the changes made on main and getting that all working (thank!) plug just digging myself out of emails etc.  Now that all the branches look stable 🤞 I can try and get back to some of the PRs and issues.

oh my, this is a very valid point, I did not even think about it. Fully agree, will close this one and will re-factor the tests.


Color Issue

I noticed that the pwr: color is different at different times. For example if I run  pwr sh ... (notice the space at the beginning), it is not blue for the using ... statements. Likewise with something like pwr sh ...; pwr load ... for the loaded ... statements. I traced it down to this line:
$WriteToHost = ($MyInvocation.ScriptLineNumber -eq 1) -and ($MyInvocation.OffsetInLine -eq 1) -and ($MyInvocation.PipelineLength -eq 1)

I was wondering why this is necessary and if there is a different way to determine this?

Yes. See https://github.com/airpwr/airpwr/pull/56

Obsoleted by #75.


Component example

Lustre looks really interesting! Do you have an example of how to use a component with its own state handling? I think I understand the component function and how you pass in data but how do you dispatch events back to the caller?

You can use event.emit to emit dom events from your update function.
So you'd have an Effect like:
event.emit("my-custom-event", json.object([
  #("wibble", json.int(1)),
  #("wobble", json.string("hello"))
]))

The parent element could listen to it like any other event
element("your-component", [
  event.on("my-custom-event", fn(event) {
    use #(wibble, wobble) <- result.try(
      // your custom event data is under the "detail" field
      // of the event object
      dynamic.field("detail", dynamic.tuple2(
        dynamic.int,
        dynamic.string
      ))
    )
  })
], [
  ...
])

Awesome! Thanks.


Created a bsteve folder

This is my pull request for devops03 class

Find my pull request for the class


How can I get sources of libCMRosIF-linux64.so?

Hi IPG members, thanks a lot for excellent project, I find that quite helpful.
The question is, I doesn't find any source files corresponding to ./lib/libCMRosIF-linux64.so in this project, are they closed-source?if not, can you provide some links to these source files?
Best regards.

Hello,
These libraries will likely stay as closed-source as they may have hooks to the IPG CarMaker source code. Most internal colleagues in IPG also do not have access to the library's source code, so unless the policy changes, for the time being the library will be provided as a pre-compiled file.

Hello, These libraries will likely stay as closed-source as they may have hooks to the IPG CarMaker source code. Most internal colleagues in IPG also do not have access to the library's source code, so unless the policy changes, for the time being the library will be provided as a pre-compiled file.

Got it, appreciated for the quick response

I'm just curious, nothing blocked, thanks for asking


Feature: Image Upload should display waiting modal during image upload

In the Image Upload Add New View, the modal should appear with the swirly-gif waiting screen while the image is being uploaded and processed. Currently, it just shows the 'Success' message when upload completes, but it leave the user waiting during the actual upload, which can take some time.

This feature has been developed in the unstable branch. It will be incorporated into the master branch upon the next release (v0.00.05+).


Add tool to easily assess model compatibility

Description
As we are exploring support for more models, more tuning techniques, larger size models and multi-gpu vs single gpu with various context sizes, we often need to perform test to figure out if a model is compatible or not and under which configuration (single-gpu vs multi-gpu).
This story is to create a script that automates some of above exploration a bit and provides output that is easier to document (or automatically create markdown file).
Discussion
Provide detailed discussion here
Acceptance Criteria

[ ] Script that is able to run test as described above.
[ ] Add help in the tool that helps users run the script.
[ ] Update docs with information about this script

The goal here is to predict whether or not .train() is going to complete successfully, given tuning parameters, a model, and a compute configuration.
I see two ways to accomplish this, so if I am off base feel free to advise:

The "Here's what worked in the past" strategy:
We create some kind of publicly accessible data store that contains historic evidence (logs, etc) of successful tuning exercises (parameters, including model version) and what software packaging (conda config) and compute configuration (GPU, CPU, RAM etc) was used to perform the tuning.  Maybe this get reported into a governance module? Maybe on a model card long term?

The "Let's give it a quick try" strategy:
We add a command line switch to the fine and peft tuning kickoff scripts --bootstrap_only, that if present, exits after a successful .bootstrap() or errors out with a message why bootstrapping failed, including due to lack of resources (GPU, RAM, etc). This doesn't guarantee .train() will execute, and

I don't see a way to predict whether .train() will complete successfully without actually calling it and waiting for it to fail.
I do have several bash shell scripts that does handle the overhead of setting up a training session (fetch the model, public or 'bring your own') sets up the output, etc. I do not know how much help that would be, but I could look into parameterize it further.

@olson-ibm lets start with 2, i.e Let's give it a quick try approach. I was thinking we can expose this via a --compatibility-test option in currently script and do following:

bootstrap
train

With train, we can set 1 epoch, so that it doesn't keep going and not save the model at the end. Later on I image we can also add a dry-run functionality to .train function itself, which just tries to estimate if it will work or not without actually executing training 🤔

which just tries to estimate if it will work or not without actually executing training 🤔

Can't wait to see what your thinking is here :)
PR on the rest of the above will be out shortly...

Gaurav says to leverage the 'estimate' module for compatibility testing without doing actual training.

Moving this back to ToDo for now since Joe is working on a more pressing task in the internal repo


Unable to get kit running

Repro(s)
git clone https://github.com/jhabdas/react-native-webpack-starter-kit.git react-native-kit && cd $_
npm install

Get the following errors in the terminal.
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "install"
npm ERR! node v4.2.1
npm ERR! npm  v2.14.7
npm ERR! code EPEERINVALID

npm ERR! peerinvalid The package<EMAIL_ADDRESS>does not satisfy its siblings' peerDependencies requirements!
npm ERR! peerinvalid Peer<EMAIL_ADDRESS>wants<EMAIL_ADDRESS><0.16 || 0.15.0-rc

Seems like an issue with react-native-webpack-server.   I have submitted a similar issue at
https://github.com/mjohnston/react-native-webpack-server/issues/147

Thanks for the issue @thachp. While RNWS looks for a new maintainer I've decided to push ahead on this app. The errors you're seeing are expected per the release notes for v1.17.0 and should not impact your ability to use the kit. I'll leave this issue open until the errors (NPM 2) and warnings (NPM 3) are cleaned up upstream.

Thanks for your help.


Edits on documentation made for university student project

For a university school project I will be making some edits to your documentation which will aim to make writing more technical
Please add edits if you would like :)

Hi @compSciKai
Sure, you are welcome :)
The documentation is not great for this library and I also should write some tutorials, but I am currently still focusing mainly on the technical core.


Implement wrangler dev --inspect

Helps with #946.
How do I use this?

wrangler dev --inspect, which should have output similar to this:

💁  watching "./"
👂  Listening on http://<IP_ADDRESS>:8787
[2021-07-28 13:38:20] GET worker.jnelson.workers.dev/ HTTP/1.1 200 OK
🕵  Open chrome://inspect, click 'Configure', and add localhost:9230

Follow the instructions about chrome://inspect. You should see a screen like this:
Click 'inspect', which should bring up a devtools popup:

What features are implemented?

Sources tab
Memory tab
Profiler tab

What features are not implemented?

Breakpoints. These need to be implemented upstream in the remote Worker.
Console tab. I'm not sure why this isn't working.
'Trace' button on chrome://inspect. Hitting this will cause Chrome to send a GET request without a path, to which wrangler returns a 400 Bad Request. I suspect there's something wrong with the JSON endpoint that wouldn't be too hard to fix.
Closing and re-opening the devtools window only sporadically works; you sometimes need to restart wrangler to fix it. This happens because wrangler currently uses a single persistent websocket connection to the remote. I tried changing it to open a new websocket each time Chrome connects, but that fails with 502 errors on the later connections, and this at least sometimes works.
Making changes to your code will live-update the preview, but will not live-update the websocket. This can be confusing, since the code you're debugging is no longer running on cloudflareworkers.com. I have no idea how to make this work.

Console tab. I'm not sure why this isn't working.

I take it back - this works if you hit 'Open dedicated DevTools for Node', but not if you hit 'inspect'.

Hmm - so about the 'Console' thing - when trying this with Deno, which has a similar feature, I'm seeing it send back
{"method":"Debugger.paused","params":{"callFrames":[{"callFrameId":"-4899094861937594869.1.0","functionName":"","functionLocation":{"scriptId":"79","lineNumber":0,"columnNumber":0},"location":{"scriptId":"79","lineNumber":0,"columnNumber":0},"url":"file:///home/jnelson/src/test-wrangler/index.js","scopeChain":[{"type":"module","object":{"type":"object","className":"Object","description":"Object","objectId":"-4899094861937594869.1.1"},"startLocation":{"scriptId":"79","lineNumber":0,"columnNumber":0},"endLocation":{"scriptId":"79","lineNumber":12,"columnNumber":0}},{"type":"global","object":{"type":"object","className":"Window","description":"Window","objectId":"-4899094861937594869.1.2"}}],"this":{"type":"undefined"}}],"reason":"debugCommand","hitBreakpoints":[]}}

I wonder if Chrome is waiting to see that before sending Runtime.evaluate? If so, that gives me hope it would be fixed automatically when I implement breakpoints.

'Trace' button on chrome://inspect. Hitting this will cause Chrome to send a GET request without a path, to which wrangler returns a 400 Bad Request. I suspect there's something wrong with the JSON endpoint that wouldn't be too hard to fix.

This is also broken for node and deno, so probably not a bug on our end.

Prewarming for authenticated previews isn't implemented upstream yet, but once it is this diff should make it work for --inspect: https://gist.github.com/jyn514/1120f4fe889f50ff241e6b1ae8335b12

Is there a way to just not let people add breakpoints or is that more trouble than it's worth?

Hmm, I think it might be possible by overriding https://chromedevtools.github.io/devtools-protocol/1-3/Debugger/#method-getPossibleBreakpoints to return an empty list. But I'm not sure whether that would be easier or harder than just getting breakpoints to work; I would rather spend time on that.
Note that any sort of change to the info being reported has to be made upstream in the Workers runtime; if we did it on Wrangler's end by overriding the response it means more delay between when the feature gets implemented and when people can use it (since they'd have to update their version of wrangler).

I see the Memory tab loading great but I'm seeing strange results when I try to analyze an app. Do you have a memory consumption example working I could check out?

No, I don't have a working example of this. I'll remove it from the "Features implemented" section of the PR description.


Consider seaweedfs for cluster

https://github.com/chrislusf/seaweedfs#compared-to-glusterfs-ceph

/label stale

Seaweed is nice but for now longhorn seems like fine solution.


[NS-837] Bump Cilium to latest and greatest

Upgrade Cilium to 1.16.  Successfully deployed a cluster and confirmed the release version is as expected:
% cilium version
cilium-cli: v0.16.14 compiled with go1.22.5 on darwin/arm64
cilium image (default): v1.16.0
cilium image (stable): v1.16.0

% k get kubernetescluster a7727736-c9b9-40cc-af95-c1878fe3f7c6 -n project-smnv4 -o jsonpath="{.status.conditions[].message}"
Provisioned

Any technical reason for this I should be aware of, or is this just making the number bigger?

@spjmurray It's a prereq to the various performance improvements once we eventually move away from iptables and kube-proxy.

All for faster!


Possibility to arrange SegmentedButton vertically

Use case
I see that SegmentedButton are only ment to be horizontal, but we often see the need to arrange them vertically.
An example below (snipped from an android/kotlin app):

Proposal
Please add a direction parameter in SegmentedButton, which turns the direction of the layout.
...such as this one, actually suggested from Gemini:
import 'package:flutter/material.dart';

// ...

SegmentedButton<int>(
  style: ButtonStyle(
    // Customize the button style for verticalorientation
    padding: MaterialStateProperty.all(EdgeInsets.symmetric(vertical: 12.0, horizontal: 8.0)),
    textStyle: MaterialStateProperty.all(TextStyle(fontSize: 16.0)),
    // Add more styling as needed
  ),
  segments: const <ButtonSegment<int>>[
    ButtonSegment<int>(value: 0, label: Text('Option 1')),
    ButtonSegment<int>(value: 1, label: Text('Option 2')),
    ButtonSegment<int>(value: 2, label: Text('Option 3')),
    // Add more segments as needed
  ],
  selected: <int>{0}, // Set initial selection
  onSelectionChanged: (Set<int> newSelection) {
    // Handle selection changes
    print('Selected segment: ${newSelection.first}');
  },
  direction: Axis.vertical, // Set the direction to vertical
)

the call has been forwarded...

In case we add support for this, there should be design spec accordingly, but it doesn't exist on M3 design as I can see: https://m3.material.io/components/segmented-buttons/specs.
Instead, I see ToggleButtons has direction that you can try to see if it fits your case or not.

Could the suggestion be forwarded to the Material team then ?

ToggleButton is m2, cant see it is mentioned in m3. We are trying to
implement m3 in our projects from now on.
tir. 18. juni 2024, 13:41 skrev Huy @.***>:

This needs to be triaged by Flutter design team afterward if you think
this feature should be added to SegmentedButton. Doesn't ToggleButtons
https://api.flutter.dev/flutter/material/ToggleButtons-class.html work
for your case?
—
Reply to this email directly, view it on GitHub
https://github.com/flutter/flutter/issues/150416#issuecomment-2175895841,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ACVSTEHDM3VJOIQG26VJGCLZIAMG3AVCNFSM6AAAAABJPSAXCSVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCNZVHA4TKOBUGE
.
You are receiving this because you authored the thread.Message ID:
@.***>

This sounds reasonable. M3 SegmentedButton supports vertical orientation

Preview

Please assign me to this.
I already started working on.


Add contact to blog rm contact page

Changes

Added contact info and image to left panel of blog page
[incorrectly included on this branch] removed dates from blog title page, changed title color

closes #49 #47


API V2 Review - DS18x20 Component

I've cherry-picked only the commits for the DS18x20 component and selected the base as the migration branch, the file sto review should mostly reflect the DS18x20 API.
Please do not merge this branch, this is a review-only PR.
Resolves #638

100% agree that's what I believe it does too.
The comment confused me though as it doesn't mention the division ( /16)
instead talking about a 16bit integer data type.
I only understood after visiting the getTemp2 function
On Tue, 22 Oct 2024, 21:05 Brent Rubell, @.***> wrote:

@.**** commented on this pull request.
In src/components/ds18x20/hardware.cpp
https://github.com/adafruit/Adafruit_Wippersnapper_Arduino/pull/644#discussion_r1811313014
:

 _drv_therm.convertTemp(_sensorId, DSTherm::MAX_CONV_TIME, false);

if (ec != OneWireNg::EC_SUCCESS)
return false;

// Scratchpad placeholder is static to allow reuse of the associated
// sensor id while reissuing readScratchpadSingle() calls.
// Note, due to its storage class the placeholder is zero initialized.
static PlaceholderDSTherm::Scratchpad scrpd;
ec = _drv_therm.readScratchpad(_sensorId, scrpd);
if (ec != OneWireNg::EC_SUCCESS)
return false;

// Read the temperature from the sensor
long temp = scrpd->getTemp2();
_temp_c = temp / 16.0; // Convert from 16-bit int to float

@tyeth https://github.com/tyeth I could be wrong! This is why we review
each other's math.
Here's what I think this does,

getTemp2() is the "Temperature in Celsius degrees returned as
fixed-point integer with multiplier 16"

e.g. 20.125 C is returned as 322.

We read temp as a long, scaled by x16
To get the real temperature, we divide that long value by 16
Then, we assign the value to a float, _temp_c

—
Reply to this email directly, view it on GitHub
https://github.com/adafruit/Adafruit_Wippersnapper_Arduino/pull/644#discussion_r1811313014,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABTBZ45QWHKFEWSSWG7QMJ3Z42VZ7AVCNFSM6AAAAABQGEAR2SVHI2DSMVQWIX3LMV43YUDVNRWFEZLROVSXG5CSMV3GSZLXHMZDGOBWGE4DCNBUGM
.
You are receiving this because you were mentioned.Message ID:
@.***
.com>

I'm going to adjust the comment to reflect this conversation


Show last used kernel from MRU in new notebook

Currently in MRU mode, when there is no selected kernel for a notebook (e.g., new notebook), we would always show the quick pick and ask users to pick. For users who are switching between a couple of kernels infrequently, they may want to just use the lastly picked one.

Let's keep this behavior and wait for feedback


getSimplePathPlans getting into an infinite loop

Description
I am trying to use @xstate/test to generate test plans for a simple machine i wrote. The machine can be found here - https://xstate.js.org/viz/?gist=502f835cd08540f84d15c3031c28f6b0
When i try to generate test plans for the machine using getSimplePathPlans, i get a maximum call size exceeded error. Looking at the context value when this happens it looks like getSimplePathPlans goes into an infinite loop.
I can play with the machine alright in the visualizer though.
Expected Result
A test plan which can be used to generate tests.
Actual Result
getSimplePathPlans throws a maximum call stack size exceeded error
Error: Unable to transition from state {"block_delete":"block_delete_active"} | {"selected_conv_count":4801} on event {"type":"SELECT_CONV"}: Maximum call stack size exceeded
    at findAdjacencies (https://ncrig.csb.app/node_modules/@xstate/graph/lib/graph.js:126:27)

    at findAdjacencies

Reproduction
Here's a codesandbox link for reproducing the issue. I imported the test plan into the src/index.js file to reproduce it. The error can be seen in the console.
https://codesandbox.io/s/model-based-testing-for-chat-ncrig
Here's a link to XState Visualiser for the machine - https://xstate.js.org/viz/?gist=502f835cd08540f84d15c3031c28f6b0
Additional context
xstate vesion - 4.6.7
@xstate/test version - 0.1.0

Please read here: https://xstate.js.org/docs/packages/xstate-test/#testmodel-getshortestpathplans-options. You need to add a filter to prevent runaway traversal scenarios like this.

Thanks a lot!
The documentation example shows the filter option to be passed to createModel but it's actually for the getShortestPathPlans function.
const todosModel = createModel(todosMachine, {
  // Tell the algorithm to limit state/event adjacency map to states
  // that have less than 5 todos
  filter: state => state.context.todos.length < 5
}).withEvents({
  // ...
});


splitbelow and splitright?

describe ":split", ->
    it "splits the current file upwards", ->
      pane = atom.workspace.getActivePane()
      spyOn(pane, 'splitUp').andCallThrough()
      filePath = projectPath('split')
      editor.saveAs(filePath)
      keydown(':')
      submitNormalModeInputText('split')
      expect(pane.splitUp).toHaveBeenCalled()
      # FIXME: Should test whether the new pane contains a TextEditor
      #        pointing to the same path

  describe ":vsplit", ->
    it "splits the current file to the left", ->
      pane = atom.workspace.getActivePane()
      spyOn(pane, 'splitLeft').andCallThrough()
      filePath = projectPath('vsplit')
      editor.saveAs(filePath)
      keydown(':')
      submitNormalModeInputText('vsplit')
      expect(pane.splitLeft).toHaveBeenCalled()
      # FIXME: Should test whether the new pane contains a TextEditor
      #        pointing to the same path

I found that in ex-mode/spec/ex-commands-spec.coffee, by default split goes to left and up. Can I change it to right and below as that's my vim setting?

I can hack into this code and replace splitLeft by splitRight and the same goes for splitUp. But it would be better to have a way to add this to init.coffee...

Good Idea, I'll see what I can do.

I'd suggest that one can be able to set the command sp vs to choose either spawn from rightbelow or the other way around --- either by adding a toggle box in package setting or define the commands in init.coffee

This is fully supported now thanks to #133 and #159.


Add support for Linux-based systems to GPU plugin

Currently GPU plugin do not works on Linux systems. The problem is that even after adding proper JOGL natives for Linux, the input on Linux is broken (confirmed by 2 separate people trying to run GPU plugin on Linux). Possible solution is switch from JOGL to LWJGL2 what works just fine or to LWJGL3 (untested, we would need to use their experimental JAWT api what they do not have documented very well).
EDIT: Problem with LWJGL2 is that it do not propagates any input to canvas, so it needs to be proxies. JOGL simply grabs all input and does nothing with it on Linux.

So after some research and help of @Whitehooder (no clue what is his name on GitHub), the solution for Linux will be: replace current JAWTWindow binding with NEWT window (basically native GL window) reparented on top of JAWTWindow and then forward events from JAWTWindow to game canvas. I updated #6503 to use that approach and it is almost working, with small issues (and input proxies are still WIP, so only mouse is working). Looks like this solution will also solve issue on how to create window on Mac (issue #6482), so only thing left there will be convert compute shaders to OpenCL.


Downloading an Image from a DM

Im trying to download an image with the "DownloadBinary" method from the TwitterAccessor class but i always get the result of an "Invalid parameter" in line 11

1. byte[] b_imageData = TwitterAccessor.DownloadBinary("https://ton.twitter.com/i/ton/data/dm/842103797698723851/842103786856448005/JWPa2oer.jpg");
2. byte[] b_imageFromDisc = File.ReadAllBytes(@"C:\JWPa2oer.jpg");
3. //DEBUG output
4. ConsoleHandler.CMsg(b_imageData.Length.ToString(), ConsoleColor.Cyan);      //OUTPUT: 122755
5. ConsoleHandler.CMsg(b_imageFromDisc.Length.ToString(), ConsoleColor.Cyan); //OUTPUT: 123779
6.
7. try
8. {
9.
10.     using (MemoryStream MS = new MemoryStream(b_imageData))
11.         using (Image Img = Image.FromStream(MS))
12.             Img.Save(@"C:\output.jpg", ImageFormat.Jpeg);
13.
14. }catch(Exception ex)
15. {
16.     ConsoleHandler.CMsg(ex.Message, ConsoleColor.Cyan);
17. }

The code works if i read the picture from my pc. So is something wrong with my download attempt?
Thanks.

Twitter does not support such operation. I tried in the past to access the TON API to get the image for DM but the binary they return is not a properly formatted image.

Thanks for the fast answer. Is it possible to open a Webclient with the TwitterCredentials to get the image manually?

It's one of those things where it must be possible, because the Twitter client does it, but it's not documented and difficult to justify the time working it out.
If you figure it out, I think we'd all be interested!

I used an webclient and added the "auth_token" as cookie to it that makes it possible to login as the user.

@Steffen1269 Were you able to make it work? Was the binary correctly formatted?

@linvi I can take a look into it but i have to try to get the auth_token cookie from a webclient.
Yes the binary was correctly formatted.

I will look into it too. If you could share your code/steps to reproduce this would be great though.

using System;
using System.IO;
using System.Net;
using System.Security.Cryptography;
using System.Text.RegularExpressions;

namespace NukeTwitterBot
{
    class ImgDL
    {
        protected WebClient client;
        protected Random rnd;
        protected string tmp_filename;
        public ImgDL()
        {
            rnd = new Random();
            tmp_filename = rnd.Next(100000, 99999999).ToString();
            client = new WebClient();
        }

        public int DownloadImage(string url, string fileformat, string uid, string uname)
        {
            try
            {
                if (!Directory.Exists((Environment.CurrentDirectory + "\\temp\\")))
                    Directory.CreateDirectory((Environment.CurrentDirectory + "\\temp\\"));

                client.DownloadFile(new Uri(url), Environment.CurrentDirectory + "\\temp\\" + tmp_filename + fileformat);

                string new_filename = "";
                using (var md5 = MD5.Create())
                {
                    using (var stream = File.OpenRead(Environment.CurrentDirectory + "\\temp\\" + tmp_filename + fileformat))
                    {
                        new_filename = BitConverter.ToString(md5.ComputeHash(stream)).Replace("-", string.Empty);
                        stream.Flush();
                        stream.Dispose();
                    }
                    md5.Dispose();
                }

                if (!Directory.Exists((Environment.CurrentDirectory + "\\images\\")))
                    Directory.CreateDirectory((Environment.CurrentDirectory + "\\images\\"));

                if (!File.Exists(Environment.CurrentDirectory + "\\images\\" + new_filename + fileformat))
                {
                    File.Move(Environment.CurrentDirectory + "\\temp\\" + tmp_filename + fileformat, Environment.CurrentDirectory + "\\images\\" + new_filename + fileformat);
                    //Add file to database \/
                    Program.database.AddSubmission(uid, uname, new_filename, new_filename + fileformat);
                }
                else
                {
                    File.Delete(Environment.CurrentDirectory + "\\temp\\" + tmp_filename + fileformat);
                    return 1;
                }

                return 0;
            }
            catch
            {
                return 2;
            }
        }

        public int DownloadImageWithCredentials(string url, string uid, string uname)
        {
            client.Headers.Add(HttpRequestHeader.Cookie, "auth_token=" + Program.settings.AUTH_TOKEN);
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(new Uri(url));
            request.AllowAutoRedirect = false;
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            string redirUrl = response.Headers["Location"];
            response.Close();

            string source = client.DownloadString(redirUrl);
            Regex rgx = new Regex("data-full-img=\"(.*?)\"");
            MatchCollection matches = rgx.Matches(source);

            if (matches.Count != 1)
            {
                throw new Exception("1");
            }

            string imgLink = matches[0].ToString().Replace("data-full-img=", "").Replace("\"", "");
            return DownloadImage(imgLink, Path.GetExtension(imgLink), uid , uname);
        }
    }
}

Thank you very much. I will see if I can add this directly in Tweetinvi.

#550 @pal5hahnair apparently solved this issue.


[$1000] Message with special characters showing as markdown in notification received

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Action Performed:

Open the app & login with user A
Go to the chat with user B
send /> to user B
user B will see the notification in this format />

Expected Result:
The preview should have /> as original message
Actual Result:
The preview is showing /$gt;  instead
Workaround:
unknown
Platforms:

Which of our officially supported platforms is this issue occurring on?

[ ] Android / native

Version Number: 1.2.58-2
Reproducible in staging?: y
Reproducible in production?: y
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos:

Expensify/Expensify Issue URL:
Issue reported by: @daraksha-dk
Slack conversation: https://expensify.slack.com/archives/C049HHMV9SM/p1674475359155939
View all open jobs on GitHub
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~01db990281d1661242
Upwork Job ID:<PHONE_NUMBER>122084864
Last Price Increase: 2023-02-01

I was able to replicate:

Proposal
We can use the org.apache.commons package StringEscapeUtils to unescape the characters so they are displayed correctly. This is the standard approach to do this
diff --git a/android/app/build.gradle b/android/app/build.gradle
index 65e233274..7d3359d50 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -330,6 +330,8 @@ dependencies {
     // Multi Dex Support: https://developer.android.com/studio/build/multidex#mdex-gradle
     implementation 'com.android.support:multidex:1.0.3'

+    implementation 'org.apache.commons:commons-lang3:3.11'
+
     // Plaid SDK
     implementation project(':react-native-plaid-link-sdk')
     // This okhttp3 dependency prevents the app from crashing - See https://github.com/plaid/react-native-plaid-link-sdk/issues/74#issuecomment-648435002
diff --git a/android/app/src/main/java/com/expensify/chat/customairshipextender/CustomNotificationProvider.java b/android/app/src/main/java/com/expensify/chat/customairshipextender/CustomNotificationProvider.java
index 9b8f64d51..3eb466759 100644
--- a/android/app/src/main/java/com/expensify/chat/customairshipextender/CustomNotificationProvider.java
+++ b/android/app/src/main/java/com/expensify/chat/customairshipextender/CustomNotificationProvider.java
@@ -42,6 +42,7 @@ import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
+import org.apache.commons.text.StringEscapeUtils;

 public class CustomNotificationProvider extends ReactNotificationProvider {

@@ -165,6 +166,7 @@ public class CustomNotificationProvider extends ReactNotificationProvider {
         String avatar = reportAction.get("avatar").getString();
         String accountID = Integer.toString(reportAction.get("actorAccountID").getInt(-1));
         String message = reportAction.get("message").getList().get(0).getMap().get("text").getString();
+        message = StringEscapeUtils.unescapeHtml(message);
         long time = Timestamp.valueOf(reportAction.get("created").getString(Instant.now().toString())).getTime();
         String roomName = payload.get("roomName") == null ? "" : payload.get("roomName").getString("");
         String conversationTitle = "Chat with " + name;

Proposal
As per the problem statement and screenshots, it is not clear whether the issue is happening only when the message is coming from an android device or if the message is coming from any device.
I would first investigate various platforms and see if the issue is replicated when the message is sent from Web and iOs.
a. If the issue is indeed happening when the message is sent from any platform, then I would proceed with unescaping as suggested above.
b. If the issue is happening only when the message is sent from Android, then I will inspect the code for putting the message into the data store and probably find some additional escaping implemented and remove that.
Onyx is smart enough to look after escaping the characters and this kind of issue is probably due to some extra escaping implemented by a developer.

@daraksha-dk or @kavimuru  Is this only reproducible on android?

I only tested for android and it works.. But unable to test on ios.. do development builds not have notifications on ios?

Tested it myself, looks good on
Desktop

iOS

Thanks @esh-g for the proposal but I think there might be better options, so I will wait!

@Santhosh-Sellavel Are you having doubts about using this library? Or would you like any other change in approach?

@Santhosh-Sellavel Are you having doubts about using this library? Or would you like any other change in approach?

Looking for other options, there may be solutions without using a library!

Another option is to use a custom table with all the html entities but I don't think that will be maintainable...
An alternative library (not so widely used): https://www.unbescape.org/

I too thought of having a list (custom table) for the html entities but there are so many! Like the following would be the code to replace the accent letters:
text = text.replace("Ç", "Ç");
text = text.replace("ç", "ç");
text = text.replace("Á", "Á");
text = text.replace("Â", "Â");
text = text.replace("Ã", "Ã");
text = text.replace("É", "É");
text = text.replace("Ê", "Ê");
text = text.replace("Í", "Í");
text = text.replace("Ô", "Ô");
text = text.replace("Õ", "Õ");
text = text.replace("Ó", "Ó");
text = text.replace("Ú", "Ú");
text = text.replace("á", "á");
text = text.replace("â", "â");
text = text.replace("ã", "ã");
text = text.replace("é", "é");
text = text.replace("ê", "ê");
text = text.replace("í", "í");
text = text.replace("ô", "ô");
text = text.replace("õ", "õ");
text = text.replace("ó", "ó");
text = text.replace("ú", "ú");

Many other things like greek alphabets and other utf-8 characters are still left out... And Java does not have a native method for unescaping these strings. It may have a URL decoder but that is different and cannot be used here. So that is the reason I went with the library org.apache.commons because it is very widely used and already it is a dependency of a the react-native-blob-util package. So it is already being used in every react native project out there!
+--- project :react-native-blob-util
|    +--- com.facebook.react:react-native:+ -> 0.70.4-alpha.2 (*)
|    \--- org.apache.commons:commons-lang3:3.0 -> 3.12.0

You can get the output above by running: ./gradlew app:dependencies in the android directory

Some alternatives
I think apache should be perfect but to be thorough, I can enlist a couple more alternatives

https://gmailassistant.sourceforge.net/src/org/freeshell/zs/common/HtmlManipulator.java.html
https://www.unbescape.org/

we are getting some proposals, the process is working no overdue yet

@sketchydroide @bfitzexpensify @Santhosh-Sellavel this issue was created 2 weeks ago. Are we close to approving a proposal? If not, what's blocking us from getting this issue assigned? Don't hesitate to create a thread in #expensify-open-source to align faster in real time. Thanks!

@sketchydroide @bfitzexpensify @Santhosh-Sellavel this issue was created 2 weeks ago. Are we close to approving a proposal? If not, what's blocking us from getting this issue assigned? Don't hesitate to create a thread in #expensify-open-source to align faster in real time. Thanks!

@sketchydroide @bfitzexpensify @Santhosh-Sellavel this issue was created 2 weeks ago. Are we close to approving a proposal? If not, what's blocking us from getting this issue assigned? Don't hesitate to create a thread in #expensify-open-source to align faster in real time. Thanks!

Additional Proposal
Root cause
You can see the reportAction that gets sent has the same html and text values

Solutions
Option 1:
So we can unescape the text part of the message before passing it off
This can be done easily with lodash.

Here is the java part accessing the message(unchanged)

Option 2
I'm not sure if it is meant for the text and html values to be the same here, I think the text should be unescaped and the html should be escaped. Therefore, we can fix the ExpensiMark library's html to text method being used while creating a new reportAction

We are using the ExpensiMark parser in src/libs/reportUtils.js

Will look into this Tomorrow!

Just a thing I realised for option 1, the LocalNotfication doesn't work for native platforms I think so if we want to go with option 1, we would have to escape it in the Java like in the earlier proposal..
But anyway, I think option 2 should be better

@sketchydroide @bfitzexpensify @Santhosh-Sellavel this issue is now 3 weeks old. There is one more week left before this issue breaks WAQ and will need to go internal. What needs to happen to get a PR in review this week? Please create a thread in #expensify-open-source to discuss. Thanks!

Ah on to it now!

Sorry for the delay,
@sketchydroide
This seems to be valid. What's thoughts on this option 2  here, Do '.text' & '.html' need to have the same values in reportAction?
If not we can go with this proposal option2, else we can go with this proposal.

@sketchydroide @bfitzexpensify @Santhosh-Sellavel this issue is now 3 weeks old. There is one more week left before this issue breaks WAQ and will need to go internal. What needs to happen to get a PR in review this week? Please create a thread in #expensify-open-source to discuss. Thanks!

@esh-g have you tested this one?

@Santhosh-Sellavel  Yes!. Here is the test image: https://github.com/Expensify/App/issues/14493#issuecomment-1412683660

@esh-g Any steps to test this one in development?

Actually, I had to build an apk to test that...

@bfitzexpensify Let's not double this further until @sketchydroide post his thoughts on this

Oh I thought so cool, thanks @esh-g!

To be honest I'm not completly sure, I don't think they need to be, but it has been a while since we had the conversation on what each should represent. Let's onpen a chat in slack

@Santhosh-Sellavel If you are concerned with the version being html4, I can also do the implementation with a library like unbescape which I think supports htmll5.
OR
I can make a custom class for the unescaping as well.
Here is a link the html character encodings full table along with the html version:
https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references#List_of_character_entity_references_in_HTML
I can extract the data from the table above and make a custom parser, so that we can have more control.
But I think it is better if we go about unescaping in javascript with the underscore.js library as suggested in option 2.

@esh-g We can explore option 2 here.
Can explain more clearly what you are proposing.

@Santhosh-Sellavel Going with option 2 would require changes to the backend as well. As suggested in the slack conversation

@Santhosh-Sellavel Going with option 2 would require changes to the backend as well. As suggested in the slack conversation

We are fine with that can you explain resubmitting the proposal for option2 in the new template. Please avoid too much text or too many snippets, thanks!

New Proposal
Please re-state the problem that we are trying to solve in this issue
The notifications on android have escaped html characters like < instead of <
What is the root cause of that problem?
The root cause is that the text property of the reportAction is escaped to html, but it should be plain text as suggested in the slack discussion
And we are passing reportComment as a parameter, which is escaped to html characters as expected by the API. But the backend should return the text field as unescaped and html field as escaped
What changes do you think we should make in order to solve the problem?
While sending the 'AddComment' command to the API in the src/libs/actions/Report.js https://github.com/Expensify/App/blob/24456045369c409cb0741ab188d775c30358bc80/src/libs/actions/Report.js#L197
We need to change the backend code of this to properly un-escape the special characters for the text field. Although I am unaware of the backend code, if it is in javascript, I would suggest using the unescape method from underscore.js because that is the library we are using to escape the string in the first place.
Thanks!

PS Only one sippet this time 😅

Hey, I just learned that the backend is in php so the function htmlspecialchars_decode() built into php can be used to decode the reportComment parameter to be displayed in the text field. I don't think any front-end changes should be required.

Current assignee @bfitzexpensify is eligible for the External assigner, not assigning anyone new.

Current assignee @Santhosh-Sellavel is eligible for the External assigner, not assigning anyone new.

Triggered auto assignment to @tylerkaraszewski (External), see https://stackoverflow.com/c/expensify/questions/7972 for more details.

@tylerkaraszewski @bfitzexpensify @Santhosh-Sellavel this issue is now 4 weeks old and preventing us from maintaining WAQ, can you:

Decide whether any proposals currently meet our guidelines and can be approved as-is today
If no proposals meet that standard, please take this issue internal and treat it as one of your highest priorities
If you have any questions, don't hesitate to start a discussion in #expensify-open-source

Thanks!

Current assignee @Santhosh-Sellavel is eligible for the Internal assigner, not assigning anyone new.

@Santhosh-Sellavel - that proposal seem fine and straightforward to me.

Cool, can you get started on it?

📣 @Santhosh-Sellavel! 📣
Hey, it seems we don’t have your contributor details yet! You'll only have to do this once, and this is how we'll hire you on Upwork.
Please follow these steps:

Get the email address used to login to your Expensify account. If you don't already have an Expensify account, create one here. If you have multiple accounts (e.g. one for testing), please use your main account email.
Get the link to your Upwork profile. It's necessary because we only pay via Upwork. You can access it by logging in, and then clicking on your name. It'll look like this. If you don't already have an account, sign up for one here.
Copy the format below and paste it in a comment on this issue. Replace the placeholder text with your actual details.

Format:
Contributor details
Your Expensify account email: <REPLACE EMAIL HERE>
Upwork Profile Link: <REPLACE LINK HERE>

Yes, I can work on this.

Hey, I just learned that the backend is in php so the function htmlspecialchars_decode() built into php can be used to decode the reportComment parameter to be displayed in the text field. I don't think any front-end changes should be required since we are only building optimistic data there.
cc @Santhosh-Sellavel

In the proposal I mentioned using the unescape from underscore.js but
@tylerkaraszewski I think you can use the htmlspecialchars_decode() function in php as the backend is not in js....

📣 @esh-g! 📣
Hey, it seems we don’t have your contributor details yet! You'll only have to do this once, and this is how we'll hire you on Upwork.
Please follow these steps:

Get the email address used to login to your Expensify account. If you don't already have an Expensify account, create one here. If you have multiple accounts (e.g. one for testing), please use your main account email.
Get the link to your Upwork profile. It's necessary because we only pay via Upwork. You can access it by logging in, and then clicking on your name. It'll look like this. If you don't already have an account, sign up for one here.
Copy the format below and paste it in a comment on this issue. Replace the placeholder text with your actual details.

 Thank you for contributing to Expensify!

@tylerkaraszewski, @bfitzexpensify, @Santhosh-Sellavel Huh... This is 4 days overdue. Who can take care of this?

I've replicated this in my emulator and I'm working on it.

Ok, discussing this internally this is the suggested way we came up with to handle this, since I ended up doing the fix as an internal engineer:

@Santhosh-Sellavel will review my PR since it’s front-end and E/App.
@Santhosh-Sellavel gets paid the flat $1000 rate for reviewing the internal PR.
The bug reporter gets paid the $250 bug reporting bonus.

@bfitzexpensify - does that seem reasonable for this?

Would I be eligible for compensation for pointing out the root cause of text being different than html as well as proposing a fix in php with the htmlspecialchars_decode()?
cc @Santhosh-Sellavel @tylerkaraszewski

Looks like we're going to move the fix into PHP afterall.

@esh-g we won't be able to compensate you in this case — we've discussed internally, and though your suggestion wasn't incorrect, it was something that we felt was reasonably obvious as a cause

@tylerkaraszewski, @bfitzexpensify, @Santhosh-Sellavel Whoops! This issue is 2 days overdue. Let's get this updated quick!

@tylerkaraszewski, @bfitzexpensify, @Santhosh-Sellavel Still overdue 6 days?! Let's take care of this!

@tylerkaraszewski, @bfitzexpensify, @Santhosh-Sellavel 8 days overdue is a lot. Should this be a Weekly issue? If so, feel free to change it!

Re-opening so assigned BZ can handle the payment(s)

@daraksha-dk can you please apply here - https://www.upwork.com/jobs/~01ba51910e738629a1? Thank you!

All done here


Add final runtime

This is the impl of final classes and methods in the runtime.
Motivation
To finalize.
Test plan
See included automated tests.

Sure. When making this branch I actually did final classes first, so I'll break those out.

I thought for a bit and did some tests to see if I could come up with a way to know whether to skip the final checks without the flag. A problem is that we can't just flag the method def with name name on module mod as being "done", since that causes us to stop issuing errors for redefinitions of final methods. Since we store the sig block in a hash keyed by exactly this information, this makes putting a bit on the sig block information not quite work.
Merging for now, but I'll continue to try to think about this, and also if we start using it in a lot of other places/_on_method_added gets more things added to it, we should probably re-visit.


Only print "file change detected" if program changed

Fixes #46949
Testing on a few projects, updateProgram is cheap (a couple of milliseconds), so I don't think this will have a negative impact. I'm not sure if this is generically true, though, or just specific to my Linux machine and what I tested.
I have no idea how to test this, though, except manually.

@typescript-bot pack this

I have no idea how to test this, though, except manually.

I said, not realizing there are tests for it that I could have run and now fail. Oops.

This is the wrong fix as-is, as updateProgram can print out the Watching for file changes message immediately, whereas I assumed it would be scheduled for some unspecified time in the future.


No module named 'requests'

I've followed the instructions for the Anaconda install, leaving aside the NextFlow stuff.  I had a panicky moment when I didn't know the path where git had installed the timsConvert, but eventually I found it.  Frustratingly, when I run the software, I receive this error:
(timsconvert) C:\Windows\System32\timsconvert\bin>run.py --input "C:\Research\LC-MSMS_BakeOff\TIMS\HT_20230206_GenNext_0V_1_S1-B1_1_1482.d"
Traceback (most recent call last):
File "C:\Windows\System32\timsconvert\bin\run.py", line 1, in
from timsconvert import *
File "C:\Windows\System32\timsconvert\bin\timsconvert_init_.py", line 9, in
import requests
ModuleNotFoundError: No module named 'requests'
Fine!  If requests isn't installed, I'll just install it.  Here's the response:
(timsconvert) C:\Windows\System32\timsconvert\bin>pip install requests
Requirement already satisfied: requests in c:\programdata\anaconda3\envs\timsconvert\lib\site-packages (2.27.1)
Requirement already satisfied: idna<4,>=2.5 in c:\programdata\anaconda3\envs\timsconvert\lib\site-packages (from requests) (3.4)
Requirement already satisfied: charset-normalizer~=2.0.0 in c:\programdata\anaconda3\envs\timsconvert\lib\site-packages (from requests) (2.0.12)
Requirement already satisfied: certifi>=2017.4.17 in c:\programdata\anaconda3\envs\timsconvert\lib\site-packages (from requests) (2022.12.7)
Requirement already satisfied: urllib3<1.27,>=1.21.1 in c:\programdata\anaconda3\envs\timsconvert\lib\site-packages (from requests) (1.26.16)
I seem to be at a dead end.  Does anyone have a suggestion for resolving this impasse?

Hi @dtabb73, sorry to hear you're having these issues. Could you share the output when you use which conda and which python in the command line with the timsconvert venv activated? I suspect the system might have some confused Python PATHs (see here and here for more details).

Hi!  I tried to reproduce my problem with the software this evening, and strangely it all worked just fine.  I am wondering if I installed the software in an administrator Anaconda command prompt and then tried to run it for the first time in a non-administrator Anaconda command prompt.  In any case, this evening I've been  able to execute the software when using both admin and non-admin Anaconda command prompts!  The problem with 'requests' didn't materialize.
I did not see a command-line option for specifying that I want the software to sum together MS/MS data from adjoining ion mobility times to produce a higher-quality MS/MS.  At the moment I am using a command-line like this:
python run.py --input C:\Research\LC-MSMS_BakeOff\TIMS\HT_20230206_GenNext_10V_1_S1-C1_1_1483.d --mode centroid --compression zlib --verbose
My intent is to reproduce the TIMSConvert workflow in use over at ProteoSAFe.
Thank you!

No problem at all! If you do happen to reproduce the issue in the future, let us know. I will add that I've made some updates this week that include updates to the installation process, and I have a few more I am working on at the moment.
As far as summing the MS/MS data from separate ion mobility scans/times, if I'm understanding it correctly, that is currently not a function of TIMSCONVERT as my goal is to simply convert without too much data manipulation unless absolutely necessary. However, I'm happy to speak more about it if you need help on the TIMSCONVERT end. Something I am looking into separating some of the data access code out of TIMSCONVERT to make it more portable for myself and others to develop scripts/projects like that.


Omitting * from markdown

I know this was a conscious decision, here's a bit of discussion in slack about the change during the bug bash:

mrvisser [10:35 AM]
no it’s a good question, I posted above about it, what do you think?

[10:35]
> Should we support an `*` followed by a space to be a bulleted list still?
> I personally use bulleted list a lot when I’m markdowning
> and it doesn’t affect *Research

cnicoletti [10:35 AM]
I am one who doesnt use markdown often, but that is like THE one I use

mrvisser [10:35 AM]
the bulleted list?

cnicoletti [10:36 AM]
Ahh, I see now, yes, I would say so

mrvisser [10:36 AM]
or the emphasis? or both?

cnicoletti [10:36 AM]
both

[10:36]
but definitely for bulleting

[10:36]
but I see how I can just use - lists

mrvisser [10:37 AM]
I didn’t know that

* I think is a pretty important character to have. Is there a less intrusive way we can have an exception for *Research?
At the least, maybe a little legend at the bottom of textareas that support markdown. For example, I've seen a simple list of supported syntax on a single line at the bottom of a text area like:
*bold*, _italic_, * bulleted list, -strikethrough-

I agree that disabling * just because of *Research and *Unity seems a bit unfortunate.
If we change that we might also need to consider updating old comments and stuff.

Testing asterisk and *Research and *Unity etc.

Can we implement the Markdown asterisk rules that Github has in place? They show *Research and *Unity as expected, but still allow for emphasising.

Assigning to @sallakarppinen for implementation

The other task I'm currently working on (migrating users to Shibboleth login) is not in Github but I'll get on this as soon as I'm finished with that one.

I don't think I can get the exact same functionality as Github without lookbehinds, but I've set it to only escape asterisks when a) at the start of the word if followed by capital R or U, or b) in the middle of a string but surrounded by whitespace. I think that using gfm option it'll also ignore asterisks when there's no closing asterisk on the same line, but not certain. Seems to work that way on my local.

@sallakarppinen : Can we implement the emphasising using the following rule:

Emphasise everything between a * at the beginning of a word followed by a * as the last character of a word.
Escape all other *s

Back to @sallakarppinen for follow-up

@nicolaasmatthijs: Do we want to be able to do bulleted lists with asterisks still?

Back to @sallakarppinen

@nicolaasmatthijs, IIRC you were looking into finding a regex based solution for this, as I had been unable to craft one that doesn't use lookbehinds. Did you get anywhere with that or should we go with what we have now?

Looks like this can actually be fixed by swapping our markdown parser to showdown...


Investigate Ingress for Core

We currently have MTLS ingress protected by the OBWac ssl certs, which are generated via Open Banking.
Do we need to revise this when creating a 'core' deployment to fully strip OB out of the product

Good point, we need to generate a new certificate for the MTLS ingress to use. This cert needs to be issued by the Test Trusted Directory CA.
We update the following nginx configuration (which configures MTLS):
nginx.ingress.kubernetes.io/auth-tls-secret: $(NAMESPACE)/obri-ca

This configures MTLS to expect the client to send a cert signed by one of the CAs present in that secret, currently the secret contains the Open Banking Pre Production CA certs and the Test Trusted Directory CA cert, a new secret should be created which just contains the Test Trusted Directory CA cert.


feat: add support for hybrid applications

In nest hybrid applications, multiple microservice instances may be created. In that case nest event and message handlers can be assigned to a specific transport. → Docs
This PR adds support for that by adding transportId to NatsJetStreamServer which nest uses internally.
import { NATS_TRANSPORT } from '@nestjs-plugins/nestjs-nats-jetstream-transport';

@Controller('user')
export class UserController {
  @EventPattern('user.created', NATS_TRANSPORT)
  async userCreatedHandler(...) {
    // only events published to nats get handled.
  }
}

transportId can also be overridden in NatsJetStreamServerOptions. Like this, multiple nats microservices can be connected, which is needed when working with more than one stream.
import {
  NATS_TRANSPORT_EVENTS,
  NATS_TRANSPORT_COMMANDS,
} from './transports';

const bootstrap = async () => {
  const app = await NestFactory.create(AppModule);

  app.connectMicroservice({
    strategy: new NatsJetStreamServer({
      transportId: NATS_TRANSPORT_EVENTS,
      connectionOptions: {
        servers: `localhost:4222`,
        name: 'my-service-events',
      },
      consumerOptions: { ... },
      streamConfig: {
        name: 'events',
        subjects: ['events.*'],
        retention: RetentionPolicy.Limits,
        ...
      },
    }),
  });

  app.connectMicroservice({
    strategy: new NatsJetStreamServer({
      transportId: NATS_TRANSPORT_COMMANDS,
      connectionOptions: {
        servers: `localhost:4222`,
        name: 'my-service-commands',
      },
      consumerOptions: { ... },
      streamConfig: {
        name: 'commands',
        subjects: ['commands.*'],
        retention: RetentionPolicy.Workqueue,
        ...
      },
    }),
  });

  await app.startAllMicroservices();

  ...
};

bootstrap();

Caveats
Having multiple nats microservices and overriding transportId feels like something we shouldn't have to do. Maybe a cleaner solution would be consuming multiple streams with only one microservice connection. That however would be more complex to implement.
export interface NatsJetStreamServerOptions {
  ...
  streamConfig?: NatsStreamConfig[] | NatsStreamConfig;
}

This is exactly what my project needs.  The only issue I see with this implementation is that multiple NATS connections will be made (one for each custom transport).  Not a big deal, but yes, the caveat you mention would be the only down side.


Describe Map Creation

Provide the documentation enable a user to build their own map.

[x] Reference map creation documentation (can refer to sumo documentation)
[ ] Give an explanation of how to create a new map.
[ ] Explain how to modify the map to allow users to create their own traffic routes.

fixed with #701


fix duplicated enrichments

don't load kube-state-metrics alert resources

Nice work. Lets make sure we do extensive testing on a demo cluster before releasing. It might also make sense to test a few different setups like a single Slack sink and multiple Slack sinks.
I think you're missing a call to event.add_finding() in the following places:

java_pod_troubleshooting.py line 40 and line 111
deployment_status_report.py line 54

There might be others - I started going over every call to add_enrichment in the code but didn't finish. I decided it was best to submit the review anyway. If you can, do another check to see if anything is missing.

I fixed those, but it's unrelated to this change
Thanks for the great review


Update ModSecurity 3.0.7

Thanks @khiemdoan for your PR. Maybe this one should come with support for the SecRequestBodyNoFilesLimit directive. Can you add it to your PR?


v0.2.1

fixed: isHoliday always returned false
sorry for changing the indents! it was my IDE's auto-correct indent plugin.

I had the same problem. An extra space in the name of the class on time.ir was make problem.
This also works:
elem.attribs.class.includes('eventHoliday')

@amiryxe
I'm a bit busy these days and can't fix it RN. I may fix it a in next few days, or maybe in next few weeks.
Anyway, PRs are welsome if you've got the time to fix it.


Fixed deep link bugs

Changes:

Updated credential request challenge param to be optional
Added query param encoding for deep links containing reserved characters
Added additional error handling for invalid credential requests
Fixed occasional splash screen stall bug

Sounds good, thanks for updating that!


ELEMENT: Navbar using Tailwind

Create a react component for Navbar using Tailwind.
Note: Commit only single file as per structure mentioned in readme
Information

Element Type: Navbar using Tailwind
Framework:

[ ] Bootstrap
[x] Tailwind
[ ] None
[ ] Other (Specify)

Hi, I would like to contribute to this, Please assign this issue to me.

Hi, I would like to contribute to this, Please assign this issue to me.

Assigned


Fix SSM section to new UI experience

FIS team appears to have removed SSM document shortcuts in favor of general SSM document usage. That means we have to construct the ARN in the experiment description

Can't reproduce. Suspect customer accidentally copied a space at end of line. Closing


Test to prevent redundant redirection fails

The test to prevent redirection to something already redirected checks the return incorrectly.
I have a fix for this.

Fix included into Development branch.

Fix was previously released in TimMangan fork.


install mavsdk on py zero

hi ' i try to install mavsdk python on my pi zero - and32
it not gave me o comp;it the isntallation - stuck at:
Running setup.py install for grpcio ... /
tanks for the help

Feels like an issue with grpcio rather than MAVSDK, then :thinking:

"Fixed" with docs update.