Could not require 'ember-cli-build.js': Cannot find module 'broccoli-tslinter'

When I bump ember's glimmer-engine version to any SHA after 0fdf041f90308825e5d496ffe5c1050e5a0f2e82 I get the following error upon running npm start in the ember.js repo:
$ npm start

><EMAIL_ADDRESS>start /home/zmulgrew/workspace/zth-ember.js
> ember serve

DEPRECATION: Overriding init without calling this._super is deprecated. Please call `this._super.init && this._super.init.apply(this, arguments);` addon: `ember-cli-dependency-checker`
    at Function.Addon.lookup (/home/zmulgrew/workspace/zth-ember.js/node_modules/ember-cli/lib/models/addon.js:896:27)
Could not start watchman; falling back to NodeWatcher for file system events.
Visit http://ember-cli.com/user-guide/#watchman for more info.
Could not require 'ember-cli-build.js': Cannot find module 'broccoli-tslinter'
Error: Could not require 'ember-cli-build.js': Cannot find module 'broccoli-tslinter'
    at Function.Module._resolveFilename (module.js:325:15)
    at Function.Module._load (module.js:276:25)
    at Module.require (module.js:353:17)
    at require (internal/module.js:12:17)
    at Object.<anonymous> (/home/zmulgrew/workspace/zth-ember.js/node_modules/glimmer-engine/ember-cli-build.js:11:14)
    at Module._compile (module.js:409:26)
    at Object.Module._extensions..js (module.js:416:10)
    at Module.load (module.js:343:32)
    at Function.Module._load (module.js:300:12)
    at Module.require (module.js:353:17)
    at require (internal/module.js:12:17)
    at Object.<anonymous> (/home/zmulgrew/workspace/zth-ember.js/ember-cli-build.js:45:21)
    at Module._compile (module.js:409:26)
    at Object.Module._extensions..js (module.js:416:10)
    at Module.load (module.js:343:32)
    at Function.Module._load (module.js:300:12)

I believe this is because broccoli-tslinter is listed as a devDependency in glimmer, but the ember.js ember-cli-build.js requires glimmer-engine's ember-cli-build.js:
var glimmerEngine = require('glimmer-engine/ember-cli-build')();

Not  sure what the best way to fix this is? I can think of two options:

Move broccoli-tslinter to dependencies in glimmer.
Add broccoli-tslinter- to ember.js's devDependencies so it will "be there" after npm install.

Ideas?
@chadhietala @GavinJoyce

Lets do option #1 (move to dependencies here).


fix: incorrect unformat not format value

see https://github.com/braintree/restricted-input/issues/58#issuecomment-494038672

We'll also need an integration test as well so we can fully test this behavior.

I will try to deal with this, but as I said earlier ruby is not the language that I know well

@crookedneighbor tagging you just in case you don’t see this, otherwise.

I'll try to review this again by the end of the week.

@crookedneighbor ping

So, if I'm reading this correctly, this only matters when programmatically setting the value, and then changing the pattern? Or is there another case where this causes a problem?

That's right, I haven't found any other cases yet.

@crookedneighbor Something went wrong with integration tests, unfortunately I can't restart the tests

The integration tests won't work for you, since they include encrypted environmental variables. Travis can only run them with the env variables when it's a PR from a branch off the main repo (otherwise there'd be a danger of leaking the variables).

@crookedneighbor ping ?

I'll be out of office until Tuesday, so I won't be able to look at this again until next week.

@crookedneighbor ping again

@crookedneighbor ping

Taking a look at this again.

I've looked over this again and again, and I just don't think it's worth adding right now.
IMO, this is outside the scope of how restricted input functions. It cares about the keystrokes from the user. I'm not concerned with setting the value programmatically. (though, even in that case, since you're setting the value, you'll know ahead of time what the pattern should be can can simply set the pattern first instead of after the value is set)

This fix fixes the wrong unformat because it does not take into account that the value may be unformatted this is not only an example in #59 it may be trite insert like copy/paste, yes, in this case, you know the format but do not take into account what's in unformat the unformatted value falls and because of this, the characters from the inserted value disappear

copy/paste is handled by a specific copy/paste handler. So I don't think the issue you are describing is reproducible with copy paste.
The only way I could reproduce it is by setting a pattern that was shorter than the upcoming value, programmatically setting the value and then immediately setting the pattern. It's such an edge case, that I don't think it's worth complicating the source code to account for it (especially when it can be solved simply by setting the pattern ahead of time)


feat(game): add tooltip to display rounds left

Codecov Report

Merging #40 (89d32e0) into main (e25ffcb) will not change coverage.
The diff coverage is 100.00%.

@@            Coverage Diff            @@
##              main       #40   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files            2         2
  Lines           90       102   +12
  Branches        14        17    +3
=========================================
+ Hits            90       102   +12

Flag
Coverage Δ

unittests
100.00% <100.00%> (ø)

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

Impacted Files
Coverage Δ

src/dom-manipulation.ts
100.00% <100.00%> (ø)

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 e25ffcb...89d32e0. Read the comment docs.


Printing percentage complete data

Hi Andy, I have run some comparitive TCP dumps from the flashprint software and the adventure client.
I see the ADV client checks ~M119 and ~M105 to get the data it shows on the status page.
Flashprint also check ~M27 to capture the Percent complete.
I think just adding a query to ~M27 would provide you the ability to display  Percent complete.   Thoughts?
TCP REQUEST FOR M27 ~M27
TCP RESPONSE TO M27 REQUEST CMD M27 Received. SD printing byte 72/100 ok

This is great. I like it. If it’s something you’re interested in, I’m totally happy to take a PR to add this. Else, I’ll track it here in the backlog for me to get to.

This is great. I like it. If it’s something you’re interested in, I’m totally happy to take a PR to add this. Else, I’ll track it here in the backlog for me to get to.

If i was skilled enough to code this in, i totally would take a swing at it.  Unfortunately i'm not quite there.  I will need to wait for you to get to it in the backlog of features. (note, i think the remembering the IP address  (and/or discovering IP by sending the UDP packet on 18000 or 19000 i dont remember which) is definitely more useful than the percentage feature)

If i was skilled enough to code this in, i totally would take a swing at it.  Unfortunately i'm not quite there.  I will need to wait for you to get to it in the backlog of features. (note, i think the remembering the IP address  (and/or discovering IP by sending the UDP packet on 18000 or 19000 i dont remember which) is definitely more useful than the percentage feature)

In line with this, I think it would be awesome if the Status screen displayed the current extruder position (X,Y,Z) from M114.  The A Parameter is how much filament has been extruded in millimeters.  Once it gets up to 1000, it resets to 0.  (in the gCode files, it uses a G92 E0 code to set it back to 0 for the next meter.  I don't know if there's any way to keep track of it for a running tally, but if you count the number of G92 E0's in a gcode file and then take the last G1 E value it's the total length of filament.... (I foresee a fair amount of challenges to implement the A value accurately, but XYZ I expect would about as easy as M27...
Anyhow here's an example of the M114 from my Debug screen during a print
~M114\n
CMD M114 Received. \nX:31.57 Y:31.56 Z:5.35 A:825.2 B:0 \nok \n

discovering IP by sending the UDP packet on 18000 or 19000

I found a github repo which supposedly has this ability. I haven't really looked through it. Just now found it.


Calls Missing in Simple Trace

When I execute simple workloads, some calls seem to be missing or even wrong in the stacks. For example, considering the class
class Main {
	public static void main(String args[]) {
		for (int i = 0; i < 1000000; i++) {
			for (int j = 0; j < 5000; j++) {
				StringBuilder builder = stringAddition(j);
				if (builder.length() == 3) {
					System.exit(-1);
				}
			}
		}
	}

	public static StringBuilder stringAddition(int j) {
		StringBuilder builder = new StringBuilder();
		builder.append("Hello world");
		builder.append("hello");
		return builder;
	}
}

If I compile it with OpenJDK 11.0.3 on 64 Bit Ubuntu 18.04 and run it with
java -agentpath:$(pwd)/../async-profiler/build/libasyncProfiler.so=start,summary,traces=5,flat=10,file=mainprofile.txt -XX:+UnlockDiagnosticVMOptions -XX:+PreserveFramePointer -XX:+DebugNonSafepoints Main
the traces contain entries like

---<PHONE_NUMBER>9 ns (56.39%), 1412 samples
[ 0] jbyte_disjoint_arraycopy
[ 1] Main.main

Obviously, the Array copying was not invoked by Main, but (probably) by 'String.getBytes' or by 'AbstractStringBuffer.ensureCapacityInternal'. These entries are missing.
Stacks are only collected at safepoints, and therefore not always are exact. Nevertheless, if a trace is collected, shouldn't it be correct? Or is this an example of missing accuracy from #66?
Is there some solution / workaround, which could help me to get full traces for debugging purpose (at the cost of accuracy and performance)?

This is a known problem of HotSpot AsyncGetCallTrace API.
I've submitted the bug JDK-8178287 with the detailed analysis more than 2 years ago, but unfortunately there has been no progress on it.
In short, HotSpot cannot get stack traces at all while in the middle of System.arraycopy. This is a JVM fault, not the profiler's. For example, other tools based on AsyncGetCallTrace (e.g. honest-profiler or lightweight-java-profiler) will show none of these stack traces at all, returning AGCT.UnknownJavaErr5 error instead.
In contrast, async-profiler does its best to workaround this bug by popping the non-walkable stack frame off and trying to recover the rest of the stack trace. This is exactly what happens in your example, and that's why you see truncated stack traces. In fact, there is only one frame missing, but since several Java methods can be inlined into one frame, this may look as if several (inlined) methods are absent.
If you run Java with -XX:MaxInlineLevel=0 or -XX:TieredStopAtLevel=1, the stack traces will be certainly better, but the performance impact can be very big.

Hi ,
You have mentioned that this issue persists even with honest-profiler. How about with Java Mission Control because JMC claim that with this flag  -XX:+DebugNonSafepoints we can get accurate results.
and I percept DebugNonSafepoints will in turn invoke AGCT to get accuracy. Is that right. Could you please clarify on this.

@sattishv -XX:+DebugNonSafepoints option improves stack traces both for async-profiler and JMC; this is a highly recommended option for profiling. Also, if async-profiler is enabled via -agentpath, it turns on this option automatically.
JMC does not use AsyncGetCallTrace. Instead, when Flight Recorder is on, HotSpot collects stack trace samples through its own internal interface. However, the mechanism is almost the same in both cases. And yes, JMC also suffers from the above problems. If you run any of examples from JDK-8178287 with async-profiler and then with Flight Recorder, you'll see that JMC collects much less samples (it silently ignores events when it fails to traverse Java stack).

Thanks a lot for the response. I have created one more ticket on the same front . Could you please take a look.


v-model doesnt work both ways

multiselect doesnt apply the selected item if the selected item changed from an outside action
it was working before!

Yeah I have the same issue rn

using vue3
i have empty array of options and onMounted i fetch the data from api then set the array
multiselect is v-model is set to empty object which get fetched from api onMounted as well
bot options and v-model object are reactive
i had v2.4.2 and everything is working if i dont update


Add support for mapping container volumes in Aspire manifest to Azure Files-backed storage mounts in ACA

Aspire issue dotnet/aspire#1676 is adding support for emitting container volume information to the publishing manifest, e.g.:
{
  "resources": {
    "postgres": {
      "type": "container.v0",
      "connectionString": "Host={postgres.bindings.tcp.host};Port={postgres.bindings.tcp.port};Username=postgres;Password={postgres.inputs.password}",
      "image": "postgres:16.2",
      "volumes": [
        {
          "name": "postgresblah",
          "target": "/blah",
          "readOnly": false
        },
        {
          "target": "/foo",
          "readOnly": false
        }
      ],
   ...

These should be mapped to storage mounts backed by Azure Files shares when deployed to ACA. For now, each volume should be considered dedicated to that specific container. In the future we might introduce the ability to model volumes as resources themselves in which case they could be shared between different containers.
While both named and anonymous volumes will be emitted to the manifest, I think it only makes sense to support mapping named volumes to Azure Files shares for now, and have AZD log a message or fail with an error if an anonymous volume is detected.
Seems simplest approach to start with would be to create an Azure Storage account resource for the ACA environment (similar to how we create LAWS and ACR resources today) if there are any volumes specified on any containers, and then create an Azure Files share and ACA storage definition for each volume (essentially what this guide does).

What defines the location of the sub path on the file share which maps to the target. Would we have \fileshare\postgresblah mapping to /blah (in the container) (note I'm using UNC naming here just for disambiguation).

It's always mounted to the root of the file share AFAICT so we'd need a file share per volume.

That means you'd need a storage account per volume. That seems extreme.

No, one storage account with multiple Azure Files shares in it. Is that not possible?

From docs:

A storage account is a shared pool of storage in which you can deploy an Azure file share or other storage resources, such as blobs or queues. A storage account can contain an unlimited number of shares. A share can store an unlimited number of files, up to the capacity limits of the storage account.

We just merged a change to emit the bind mounts too. Might be interesting to think about an approach we might take to support mapping bind mounts to ACA somehow too (TBC that's lower priority than volume support).


Support <...> bracket matching in TypeScript

Mark < ... > in punctuation.definition.typeparameters.begin.ts and punctuation.definition.typeparameters.end.ts as brackets.
Should be very easy, given the new bracket matching feature to consider textmate scopes.

Hi @hediet
I verified that the angular brackets aren't colourized in typescript files. I want to work on this issue. Can you please give me a briefing as to what needs to be done?

Add < and > as bracket pair in the typescript language configuration.
Also see here https://code.visualstudio.com/updates/v1_67#_textmate-grammars-can-mark-tokens-as-unbalanced

Maybe it actually is easier to just exclude keyword.operator.relational.ts.

Add < and > as bracket pair in the typescript language configuration. Also see here https://code.visualstudio.com/updates/v1_67#_textmate-grammars-can-mark-tokens-as-unbalanced

I added < and > as bracket pair in the typescript language configuration file.  But it doesn't seem to resolve the issue.

Add < and > as bracket pair in the typescript language configuration. Also see here https://code.visualstudio.com/updates/v1_67#_textmate-grammars-can-mark-tokens-as-unbalanced

I added < and > as bracket pair in the typescript language configuration file.  But it doesn't seem to resolve the issue.

I have the same issue. I observed that yarn watch is not watching for changes in typescript-basic extension in my setup. This might be an issue in my build and I am trying to fix it.

Add < and > as bracket pair in the typescript language configuration. Also see here https://code.visualstudio.com/updates/v1_67#_textmate-grammars-can-mark-tokens-as-unbalanced

I added < and > as bracket pair in the typescript language configuration file.  But it doesn't seem to resolve the issue.

I have the same issue. I observed that yarn watch is not watching for changes in typescript-basic extension in my setup. This might be an issue in my build and I am trying to fix it.

Yeah same thing happening with me also. yarn watch is not watching typescript-basic

Did you configure the pair as colorized bracket pair?

@hediet Can you please review my PR? Also, I would require approval for running the rest of the action workflows. I hope you can provide the necessary approval.

Verification steps:

Verify that <...> is matched in TypeScript where it makes sense
Verify that < is not matched against a bracket in if (x <= y) { ... } or in other places where it does not make sense

@hediet @liby are multi-line generic parameter lists also matched?
eg.
type A = SomeLongerTypeName<
  AnotherFairlyLongTypeName,
  AndFinallyAReallyLongTypeName,
>;

Looking at the TextMate Scope Inspector, it seems like the < symbol is not matched as a punctuation.definition.typeparameters.begin.ts currently:

This would be helpful for extension development: https://github.com/frigus02/vscode-sql-tagged-template-literals/pull/21
cc @jrieken @sheetalkamat

Oh it looks like this may be a limitation of the TextMate single-line lookup: https://github.com/microsoft/TypeScript-TmLanguage/issues/761


Improve CICD

Problem Statement
Our current CI pipeline is limited to building a Docker image without pushing it to any registry or automating the deployment process. To streamline our workflow and ensure better control over deployments, we need to extend the CI to handle deployments, use semantic-release for versioning, generate changelogs, and manage Docker images efficiently by promoting from staging to production without a re-build.
Proposed Solution
We propose the following CI/CD workflow:

Feature Branch:

Run tests and validations exclusively within the feature branch.
Only allow rebases that are conflict-free to maintain branch integrity.

Merge to Main:

When a branch is merged into the main branch, a workflow is triggered.

Semantic Release for Versioning and Changelogs:

Implement semantic-release to automatically determine the version number based on conventional commits.
Automatically generate a changelog based on the commits.
The workflow updates the specific app's package.json with the new release version and commits the updated package.json and changelog to the repository.
Push these changes back to the origin.

Release Candidate:

The workflow creates a GitHub release candidate (e.g., app_name/0.0.0-rc.0).
A Docker image for the release candidate is built, pushed to the registry, and deployed to the staging environment (specific to the app).

Draft Release & Image Promotion:

The same workflow creates a draft release with the final version tag (e.g., app_name/0.0.0). If a draft with the same tag already exists, it is updated.
Once the draft release is published by a developer, the Docker image from the staging environment is promoted to the production environment without re-building, ensuring consistency and saving resources.

Production Deployment:

A separate workflow is triggered upon publishing the draft release, promoting the staging Docker image to the production environment.

Tasks

[ ] Update CI pipeline to automate tests and validations on feature branches.
[ ] Implement semantic-release for version management and changelog generation.
[ ] Automate the process of committing and pushing updated package.json and changelog to the repository.
[ ] Configure the creation and deployment of release candidates to staging.
[ ] Set up the creation and management of draft releases.
[ ] Automate the promotion of Docker images from staging to production without re-building.

Benefits
This approach will:

Automate the deployment process while preserving control over when releases are published.
Utilize semantic-release for consistent and automated versioning and changelog generation.
Ensure that all versioning and changelog updates are committed and pushed to the repository automatically.
Improve efficiency by promoting Docker images from staging to production without the need for a re-build.
Reduce manual intervention and errors during the deployment process.

Additional Considerations

Ensure the workflow is compatible with our monorepo structure.
Validate the process thoroughly on a smaller app before applying it across the entire repository.
Document the new workflow so that all team members understand the process.

@ygrishajev I am interested in this issue.
I want to contribute your team.
Is it possible to complete this issue?

@JamesRyo Hey! Thanks for your interest! I think we could use some help here for sure. I'd like to approach this one step by step. Let me think what we could take off with here. I'll post later

Thank you.
I am waiting for your post.

Hello
I can handle this issue.
Could you give me opportunity to handle this issue?

Hey @pcfreak30 ! Thanks for sharing! Honestly I've never used changesets and haven't even considered it...  unfortunately I've already implemented chnagelogs/releases part and it's functional. I would have investigated that option for sure if I came across it before ;)
I'll check it out for the future though for sure!

Hey @pcfreak30 ! Thanks for sharing! Honestly I've never used changesets and haven't even considered it... unfortunately I've already implemented chnagelogs/releases part and it's functional. I would have investigated that option for sure if I came across it before ;)
I'll check it out for the future though for sure!

tbh from my exp, I would go and evaluate if you actually want what I described and do the work to switch if not. I have used semantic and eventually moved and I prefer changesets.


Selecting huge numbers gives incorrect results

Driver version v0.3.2-patch11
Selecting some huge numbers gives incorrect results.
For example:
SELECT toUInt64(15369343623947579499) a, toNullable(15369343623947579499) b;
in dBeaver:

in DataGrip:

Thanks @ne1r0n for reporting the issue. I can reproduce the same issue on latest DBeaver but it works in other DB client like SQuirreL SQL.
Behind the scene, by default JDBC driver maps UInt64 to Java long so you may see negative value when calling ResultSet.getLong() but you should really call ResultSet.getObject() or ResultSet.getBigDecimal() instead.

In refactored version, I added Unsigned* classes for unsigned data types(e.g. com.clickhouse.client.data.UnsignedLong for UInt64). This was mainly to fix type conversion issues but it may resolve the display issue in most database clients using the driver as well(DataGrip now shows correct result and same for DBeaver).

The issue has been fixed in JDBC driver, but it looks like DBeaver has display issue - dbeaver/dbeaver#20014


The statistics event processor method in DSpace 7.5 removes the beginning of OAI identifier prefixes that start with www.

Describe the bug
Our OAI identifier prefix is in the form www.repository.cam.ac.uk (for example, a complete identifier is oai:www.repository.cam.ac.uk:1810/348931). We send our item statistics to IRUS-UK for processing, and have been contacted by them as the OAI identifiers we send have changed form.
Before we upgraded to 7.5 they were in this form: oai:www.repository.cam.ac.uk:1810/348931 now they are being sent as oai:repository.cam.ac.uk:1810/348931 - ie the www is being removed.
As far as we can tell, in all other instances our DSpace repository exposes our OAI identifers correctly. A function in org.dspace.statistics.export.processor.ExportEventProcessor called getHostName is responsible for removing the 'www' part of our OAI prefixes in this context. DSpace 5 didn't behave in this way, although of course the statistics exporter was an external plug in and not part of the main codebase.
To Reproduce
Steps to reproduce the behavior:

Have a DSpace 7.5 repository (it may also affect DSpace 7.1 - 7.4).
Define an OAI identifier prefix in oai.identifier.prefix that begins with 'www'.
Generate a statistics event and observe that 'www' is removed from the OAI identifier generated.
Check how the API exposes the same identifier with the 'www' part of the prefix intact.

Expected behavior
Statics events that are exported should contain the entire OAI identifier prefix configured in the repository, even if they begin with 'www'.

@peter975 : This sounds, to me, like it might be a small bug in the IRUS-related code in ExportEventProcessor.  It sounds like the problem is these lines (because the output of Utils.getHostName() is used to fill out the oai:[hostname]: prefix on the next line):
https://github.com/DSpace/DSpace/blob/main/dspace-api/src/main/java/org/dspace/statistics/export/processor/ExportEventProcessor.java#L138-L142
Instead of that, based on your description of the error, that oai:[hostname] prefix should likely just be built from the value of oai.identifier.prefix configuration, something like this...
String oaiPrefix = configurationService.getProperty("oai.identifier.prefix");

[bunch of appends].
append(URLEncoder.encode("oai:" + oaiPrefix + ":" + item.getHandle(), UTF_8));

I think the problem here is simply that the code appears to not be using the oai.identifier.prefix.    That's just a guess though based on my reading of the code.  This would require a volunteer to try out that change and create a PR.


chore(docker): support building with gradio

Description

add building cmd in Makefile
remove generated assets of gradio
fix ci lint issues

Modules

[ ] UI
[ ] Controller
[ ] Agent
[ ] Client
[ ] Python-SDK
[x] Others

Checklist

[ ] run code format and lint check
[ ] add unit test
[ ] add necessary doc

Should we inform others, make sure they run build-gradio-ui before they do fe development

Add rebuild-gradio cmd in Makefile  in 5f5b2ac
Update readme  in e372f58

@waynelwz


Calling es.init() multiple times causes multiple connect & disconnect listeners to be added

Hi,
I would first like to thank you for the nice and very useful library.
I'm writing down code to ensure that the connection to the database (currently using MongoDB) is always up, by handling cases like:

When the service initiating the event store boots up before the mongodb process starts.
When a disconnection happens (e.g. after a mongodb restart) or a temporary network problem.

I tried to handle this in a retry function that calls es.init(), however, calling init multiple times causes the following warnings to be fired:
MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 connect listeners added. Use emitter.setMaxListeners() to increase limit

MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 disconnect listeners added. Use emitter.setMaxListeners() to increase limit

This also causes any connect and disconnect handlers to be called multiple times, and I'm also concerned that init wasn't written with these scenarios in mind, which might cause other issues.
I understand that the implementation of init already handles the retry part while connecting -for the first time- (via the tolerance library), but it doesn't handle the "reconnect after a disconnection" scenarios, and external code initiating the library might have reasons to reconnect/reinitiate for any other reasons.
Is there a workaround? For example by calling es.store.connect() directly (to reconnect)? And if so, will that cause any problem initiating the dispatcher?
Thanks

May I ask how your mongodb options look like?
There’s a possibility to define autoReconnect for mongodb...

Thanks @adrai,
autoReconnect did the trick, my bad!
To answer your question, here're the options (after enabling autoReconnect):
const store = eventstore({
  type: "mongodb",
  host: "mongo",
  port: 27017,
  dbName: MONGODB_DATABASE,
  authSource: MONGODB_DATABASE,
  username: MONGODB_USERNAME,
  password: MONGODB_PASSWORD,
  eventsCollectionName: "events",
  snapshotsCollectionName: "snapshots",
  transactionsCollectionName: "transactions",
  positionsCollectionName: "positions",
  timeout: Number(RETRY_ATTEMPTS) * Number(RETRY_INTERVAL),
  options: {
    useNewUrlParser: true,
    useUnifiedTopology: true,
    poolSize: Number(MONGODB_POOLSIZE),
    autoReconnect: true,
    reconnectTries: Number(RETRY_ATTEMPTS),
    reconnectInterval: Number(RETRY_INTERVAL),
    //loggerLevel: 'debug',
    appname: 'EventStore'
  }
});


feat: Implement spanner::Client::Commit.

This is an initial (and likely incomplete) implementation for
spanner::Client::Commit().
The main rationale is that we will need a simple function like this
to test any other function that reads or modifies data. It also
introduces the first integration test that manipulates and reads
some data.

This change is

The build breakage is unrelated, please take a look.

PTAL.

PTAL.


Warning: no default GPU device available

After running into "no module named 'hyperchamber'" and following your instructions on other issues, I ran into "no module named 'natsort'" then pillow, then nashpy. I did the same pip3 install (missing module) --upgrade --force-reinstall after that, I ran the first hypergan test that had no missing modules. I got a different error. Here is everything that happened after i typed that in.
`NAME-iMac:~ NAME$ hypergan test
/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/tensorflow/python/framework/dtypes.py:516: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
_np_qint8 = np.dtype([("qint8", np.int8, 1)])
/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/tensorflow/python/framework/dtypes.py:517: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
_np_quint8 = np.dtype([("quint8", np.uint8, 1)])
/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/tensorflow/python/framework/dtypes.py:518: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
_np_qint16 = np.dtype([("qint16", np.int16, 1)])
/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/tensorflow/python/framework/dtypes.py:519: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
_np_quint16 = np.dtype([("quint16", np.uint16, 1)])
/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/tensorflow/python/framework/dtypes.py:520: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
_np_qint32 = np.dtype([("qint32", np.int32, 1)])
/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/tensorflow/python/framework/dtypes.py:525: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
np_resource = np.dtype([("resource", np.ubyte, 1)])
/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/tensorboard/compat/tensorflow_stub/dtypes.py:541: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
_np_qint8 = np.dtype([("qint8", np.int8, 1)])
/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/tensorboard/compat/tensorflow_stub/dtypes.py:542: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
_np_quint8 = np.dtype([("quint8", np.uint8, 1)])
/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/tensorboard/compat/tensorflow_stub/dtypes.py:543: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
_np_qint16 = np.dtype([("qint16", np.int16, 1)])
/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/tensorboard/compat/tensorflow_stub/dtypes.py:544: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
_np_quint16 = np.dtype([("quint16", np.uint16, 1)])
/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/tensorboard/compat/tensorflow_stub/dtypes.py:545: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
_np_qint32 = np.dtype([("qint32", np.int32, 1)])
/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/tensorboard/compat/tensorflow_stub/dtypes.py:550: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
np_resource = np.dtype([("resource", np.ubyte, 1)])
Loading configuration /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/hypergan/configurations/default.json
Hooray!
Hypergan is installed correctly.  Testing tensorflow for GPU support.
WARNING:tensorflow:From /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/hypergan/cli.py:215: The name tf.Session is deprecated. Please use tf.compat.v1.Session instead.
Warning: no default GPU device available
Default GPU Device:
Current available tensorflow devices:
_DeviceAttributes(/job:localhost/replica:0/task:0/device:CPU:0, CPU, 268435456,<PHONE_NUMBER>0046152813)
There were errors in the test, please see the logs`
Can you please help? I can show you the logs if you want.

Is it a problem with the way I set up HyperGAN, my GPU, or tensorflow?

im getting the same thing (the natsort dependency part), but I havent restarted yet after installing CUDA. im assuming itll probably fix for me after a restart, but i havent actually tried this yet.

I found the solution: Just open Geforce Experience and update your drivers. It'll fix everything.

I'm sorry, how do I open Geforce Experience? I'm on mac, by the way.

I'm so dumb. Geforce Experience is a downloadable program.

I have wine, but I'm getting an error saying "The operating system in use is not supported by this package" Which is obvious, but is there any way around it?

that sounds like a different issue. you probably shouldnt get tensorflow GPU then and maybe itll work without GPU support. uninstall tensorflow-gpu. itll probably be considerably slower but it should work. (maybe)

Result:
WARNING: Skipping tensorflow-GPU as it is not installed.

I'll install tensorflow, which I thought I had, then uninstall tensorflow-GPU. It probably won't work but I'll try.

I did it and got the same warning as before.

Its obviously because I'm on mac though.

1.0 switches to pytorch so this error will change(although I'm unsure of status of pytorch on osx).


Update zh-HANS.coffee

update some of the translations.

add some new translations

@zlydh where should I find new words that need translation?

Hello, @Raphaelwuhao! Thank you for contributing. Can you sign our CLA so that I can merge your pull request?

@Imperadeiro98 sure, done.


Build failed with an exception with windows

Describe the bug

What went wrong:
Execution failed for task ':opus_flutter_android:buildNdkBuildDebug[arm64-v8a]'.

com.android.ide.common.process.ProcessException: [arm64-v8a] Compile        : opus <= NSQ_del_dec.c
[arm64-v8a] Compile        : opus <= PLC.c
[arm64-v8a] Compile        : opus <= shell_coder.c
[arm64-v8a] Compile        : opus <= tables_gain.c

C++ build system [build] failed while executing:
@echo off
To Reproduce
in terminal run
flutter run --flavor dev
Current behavior
build failed
Expected behavior
can build success
Screenshots

Smartphone + device (please complete the following information):

Device: Android Studio simulator
OS: win10
java 17

Hey @abstain23
Some build tools, like the Android NDK, have limitations when handling file paths. They expect paths without spaces to avoid ambiguity in command-line arguments. Even though most modern tools support spaces, older components like ndk-build still exhibit this issue.
Try moving the NDK folder to a path without spaces (e.g., C:\Android\NDK), the tool can parse the path correctly, resolving the build error. Updating local.properties ensures the project knows where to find the NDK in its new location. That's a local created issue and maybe is going un-noticed till now


Always use compression if the client supports it

This will greatly reduce the size of the response making requests faster

While this post is old, it does clearly state how to use automatic decompression
http://blogs.msdn.com/b/dotnet/archive/2013/07/17/httpclient-2-2-is-now-stable.aspx

If an implementation of HttpClient doesn’t support automatic decompression, it returns false from the SupportsAutomaticDecompression property and throws a NotSupportedException from the setter and getter for the AutomaticDecompression property.

This was created as a way to "future proof" the use of decompression. If an HttpClient is written for some other device like an IoT device and they are unable to decompress for whatever reason then it will throw an exception.

Pretty sure that's there so classes deriving from the base HttpClientHandler can override to show they don't support automatic decompression and you're just newing up one that always will, but I guess it could be implemented differently on some future platform.
No harm in keeping the check anyway. :smile:

I disagree. Please do not automatically set this property. Automatic decompression may do some undesirable behavior. I use refit to proxy some calls and stream the response. What actually happens is that when automatic compression is set, HttpClient will decompress the stream then send the response down. This was adding about a 10-20ms overhead before the response would be send to the client depending on the size of the payload and creating more garbage. If your eventual goal is to send the result to a browser that will decompress it this is just wasteful.
I solved my need by doing the following:
    [Headers("Accept-Encoding:gzip,deflate,sdch")]
    public interface IPassThroughRoute

I know this is not the norm admittedly, but I like that if I need the option I can just send a httphandler with the compression fields set.

I can see your point on that. I saw Refit as a client library rather than a server tier library. Of course it could be used in either case and I would not want decompressing just to compress it again either. There work be a workaround for this by sending your own HttpClientHandler into the overridden For method. And the same can be said for using compression... All client development should be requesting compression so maybe make a change so that each platform has a different implementation? On .NET it would not request zip, while client (WP/Store) would.

Sorry, I think that if users want compression, they can provide their own HttpClient, I don't want to build this into Refit by default, I'd rather have what Microsoft chooses to provide as defaults for HttpClient


[Mod Conflict] Overworld Ore Generation stops completely and other planets only generate ore from another mod

Version of Advanced Rocketry
1.16.5-2.0.0-10-universal.jar
Have you verified this is an issue in the latest unstable build

[x] Y

Version of LibVulpes
LibVulpes-1.16.5-1.0.2-18-universal.jar
Version of Minecraft
1.16
Does this occur without other mods installed
No. I've tried deleting the "easy steel and more" mod, yet the issue persists. Ore generation does not cease if libvulpes is installed without Advanced Rocketry, but none of the Advanced Rocketry ores spawn.
Crash report or log or visualVM (if applicable)
N/A
Description of the problem
In an existing modded 1.16 world, Installing Advanced Rocketry causes all Overworld Ore Generation to cease except for the ores added by Create Mod 0.3.1. These ores stop spawning in the Overworld but appear to be the only ores which spawn on other planets.
Possible mod conflicts that could be causing this issue:
https://www.curseforge.com/minecraft/mc-mods/easy-steel-forge/
EasySteel-1.16.4-1.2.13.jar - adds its own ores. Tried uninstalling. Result: existing world still does not generate ores. New world does not generate ores.
https://www.curseforge.com/minecraft/mc-mods/create
create-mc1.16.5_v0.3.1c.jar - adds its own ores. Did not try uninstalling as that would mess up the whole world I have.
https://www.curseforge.com/minecraft/mc-mods/extended-caves
extcaves-2.4.jar - adds block deposits like lavastone deeper underground. This generation is not affected.
https://www.curseforge.com/minecraft/mc-mods/biomes-o-plenty
BiomesOPlenty-1.16.4-<IP_ADDRESS>5-universal.jar - changes world generation by adding new biomes. I tested ore generation in Minecraft's Default Biomes to control for this.

if you create a world with only Advanced rocketry, libvulpes, and create, does the issue occur there too?


Bug: Wrapped text causes screen and scrollbar flickering

As soon as a paragraph with wrapped lines exceeds the size of the text area (and the scrollbar is displayed), the view starts to flicker as soon as you continue typing. The scrollbar then also wobbles up and down.
This can be recreated with the RichTextDemo in the repo:

I would also be happy to try to fix the error myself if anyone has a tip on where to start after troubleshooting.
Environment info:
RichTextFX Version: 0.10.9
Operating System: Windows 11
Java version: Java 17
Tested with JavaFX version: 11 / 17 / 19

This is most probably coming from the Flowless library, so you can start looking there. In particular the problem I think seems to be with VirtualizedScrollPane, as this behavior only occurs when the text area is wrapped in one.

I have not been able to solve the problem yet, but may have found the cause of the problem: The VirtualizedScrollPane uses the totalHeightEstimateProperty, which ultimately comes from VirtualFlow#totalHeightEstimateProperty -> orientation.heightEstimateProperty -> virtualFlow#totalLengthEstimateProperty and this length estimate comes from the sizeTracker. the SizeTracker determines the totalLength as multiplying the number of cells by the averageLength.
However, the cell count is briefly reduced by 1 when editing a paragraph. This can change the average a lot if the other paragraphs are normally shorter and this in turn causes the scrollbar to jump so much. After editing the cell, the cell count is back to the initial value (+1) and the Average is back to "normal". The solution might be that the averageLength and therefore the totalLength are only updated when no text is currently being entered.
Sample values of my tests when a letter is added to the paragraph:
totalLength (old value, new value): 28938.25 -> 1938.75
Average (old value, new value): 1315.375 -> 88.125
Cells: 1
and immediately after that:
Total: 1938.75 -> 28938.25
Average: 88.125 -> 1315.375
Cells: 2

Thanks a stack for the research and feedback so far !!!
Based on your reported observations and some experimentation I've submitted a PR that I believe fixes this.
Could you maybe try it and see .....

Hm, unfortunately, that doesn't seem to have solved the problem yet (at least for me). When I use the PR's code, the scrollbar in the RichtextDemo still flickers.

This may be because, even though 0 values are filtered out, the average is still temporarily multiplied with a cell count of cells - 1, resulting in a smaller totalLength than it should be.
I will hopefully be able to investigate the problem further on Friday at the latest. Maybe then I will have an update on this.

Have made substantial additional changes to the PR to remove the flicker.
Please give it a try when you can, thanks.

Thank you for your support regarding the bug! This improves it, however it sometimes still flickers.
One problem with this solution is that the scrollbar now flickers when the first paragraph is written. This flickering occurs either because the ScrollBarPolicy is "AS_NEEDED". In this case, the scrollbar is displayed temporarily for a short time and then hidden again. In the case of ALWAYS, the thumb of the scrollbar is temporarily at 100% height before it is scaled properly again. This is because totalHeightEstimate is still sometimes temporarily at 0. To illustrate I recorded a gif (I'm pasting the text here, but the same effect occurs if you're typing fast):

I'm not totally sure why (as the length calculation seems to be based on cells) but, while totalHeightEstimate is 0, lengthOffsetEstimate grows when pasting text like shown in the gif.
Based on that the shown behavior can somewhat be improved by defining totalHeightEstimate as follows:
   this.totalLengthEstimate = Val.combine(
                averageLengthEstimate, cells.sizeProperty(), lengthOffsetEstimate,
                (avg, n, lengthOffset) -> {
                    double total = n * avg;
                    return total > lengthOffset ? total : lengthOffset;
                });

This way the total length is never smaller than the length offset, which I think is an assumption we can make.
However, while this fixes the showing / hiding of the scrollbar, ultimately all combined, it more or less looks the same like the gif posted in the initial comment of the bug report, only less frequent.
Also, if you enter paragraphs quickly the scrollbar lags behind now:

Unfortunately, I can't really think of a better, concrete solution right now either. It would probably be optimal if the cell did not have to be removed temporarily, but could be updated in place. Then the average and therefore the totalLength would not jump so much. Unfortunately, I don't yet have such a deep understanding of Flowless to be able to judge whether this is possible.

Thanks for the feedback, will continue to look at it tomorrow.
There is an experimental branch for cell reuse in RichTextFX, if you want to take a look. (Even though it currently fails some tests, it does work but sometimes has an exception.)

Hi Jugen,
Thank you for your continued support. I just tried around again and am now a bit confused: apparently your PR at Flowless is the solution after all, but with the following change (maybe?):
                EventStreams.changesOf( knownLengths ).filter( c -> c.getList().size() > 0 )
         ---       // skips spurious events resulting from cell replacement (delete then add again)
         ---       .successionEnds( Duration.ofMillis( 15 ) )
`

When I remove the highlighted lines (and only use your PausableSuccessionStream, line 140), the wobble no longer occurs for me at all. I haven't been able to figure out exactly why that is. Maybe I'm overlooking a test case and the problem still exists. But I still wanted to share this briefly here. Tomorrow I will deal with it again intensively.

Hi Elias, this has been a particularly hard nut to crack but I'm hopeful that with the latest commit that we've mostly got it now.
As you suggested I experimented with RichTextFX cell reuse to see if that would help but it seems that Flowless itself is responsible for the spurious removals and additions, so unfortunately as you've also noticed that didn't help (and yeah it is a bit confusing).
Anyway, over the last two weeks I've become convinced that the solution is to somehow simultaneously update averageLengthEstimate, totalLengthEstimate, and lengthOffsetEstimate (which are interdependent) while at the same time dodging those false events from Flowless cell refreshes.  After much head scratching and experimentation, I believe the latest commit mostly achieves this.
Thanks so much for your continued efforts, input, and troubleshooting this with me. I really appreciate it and hope that your testing will mostly be successful this time round. Looking forward to the results ....

That does indeed seem to fix the problem! Thank you very much for the hard work.
One problem that still remains is the usage in combination with a ScaledVirtualized, there the flickering still occurs (with any zoom factor, but appears that higher zoom factors make the flickering more likely to appear):

When logging the estimated height and the estimated scroll pos y it appears that the estimated height stays the same (which is good because that comes from the SizeTracker, if I understand it correctly and that was just fixed with the PR), while estScrollY has rapid changes similar to those which were fixed.
Example log data:
Old scroll pos y: 5062.4, new: 4477.2
Old scroll pos y: 4477.2, new: 5062.4
Old scroll pos y: 5062.4, new: 4477.2
Old scroll pos y: 4477.2, new: 5062.4

Unfortunately I hadn't much time to look into it further. If you think that this problem is out of the scope of this ticket, I will be happy to create a new one.
Thanks again for your work!

I think the ScaledVirtualized issue is just a rounding problem which results in the values being slightly out causing the flickering as the values converge. Have submitted a commit to the PR to address. Please give it try and let me know if it helps, thanks.

I've only tested it briefly, but with the latest commit the problem with the ScaledVirtualized seems to be fixed as well. I think then the bug is actually completely fixed. Thank you again for your great work.
By the way: I found the following old bugticket, which seems to describe the same problem. This could then probably also be closed: https://github.com/FXMisc/RichTextFX/issues/260

Thanks a stack, and have linked the 260 issue aswell.
Will do a final review tomorrow then and probably merge.


Xenos should need to be full health to evolve

Description

Devolving and Evolving should require full health. I checked CM13 and a Xeno needs to be full health to evolve there. Otherwise lower tier xenos can save their evolve for a free (after a small doafter) heal.
Reproduction

Screenshots

Additional context

I believe this has been already fixed: https://github.com/RMC-14/RMC-14/pull/2805

That's for devolving. Evolving atm does not need full health


Added install instructions for ARCitect on Linux

As discussed in the ARCitect issues I prepared a KB guide for the install instructions on Linux. I added the link (hopefully the correct one when it will be online) to the ARCitect index markdown as well.

Thanks, @Hannah-Doerpholz


yaji doesn't recognize malformed json

bellow is a call which doesn't raise exception as it should (string value for field a is not terminated)
[@"{"a" : "test" yajl_JSON]

Same issue here. Sample JSON is:
{"id":1,"name":"test","date":"0000-00-00"
(missing close bracket)


⚠ sandbox-api.piste.gouv.fr healthcheck has degraded performance

In 8570ada, sandbox-api.piste.gouv.fr healthcheck (https://sandbox-api.piste.gouv.fr/cassation/judilibre/v1.0/healthcheck) experienced degraded performance:

HTTP code: 200
Response time: 2813 ms

Resolved: sandbox-api.piste.gouv.fr healthcheck performance has improved in 8c3d39d.


non-exhaustive patterns: Patch not covered in src/lib.rs:118

Hi, meet a problem when I try to build oauth-client.
That's the error message.
src/lib.rs:118:22: 127:6 error: non-exhaustive patterns: Patch not covered [E0004]
src/lib.rs:118     let method_str = match method {
src/lib.rs:119         Method::Options => "OPTIONS",
src/lib.rs:120         Method::Get => "GET",
src/lib.rs:121         Method::Head => "HEAD",
src/lib.rs:122         Method::Post => "POST",
src/lib.rs:123         Method::Put => "PUT",
...
src/lib.rs:118:22: 127:6 help: pass --explain E0004 to see a detailed explanation
error: aborting due to previous error
Could not compile oauth-client.
I can build it success before 2015-05-02, and now it can't build.

Add the follow line can fix problem.
Method::Patch => "PATCH"


Custom node disappears when center is off the screen

I have a custom node that renders the continents on which I overlay a network graph.  When zooming or moving the graph if the center of the node goes out of view the entire node disappears.  This issue doesn't seem to happen for a square or diamond style node.  I've defined a height and width for the node that should encompass its rendering.  I think this is a bug? but maybe I'm doing something wrong?
Here's my ctxRenderer:
const iMAP_HEIGHT = 180 * 10;
const iMAP_WIDTH = 360 * 10;

export default function drawMap({ctx}) {
  const drawNode = () => {
    drawLandMass(ctx);  // write continents based on lat/lon paths
  };
  return {
    drawNode,
    nodeDimensions: {width: iMAP_WIDTH, height: iMAP_HEIGHT},
  };
}

I'm seeing the same thing, the node vanishes as soon as the center of it is rendered off screen.


add file protocol

Fixes #10

Current coverage is 99.60% (diff: 77.77%)

No coverage report found for master at 9fd333a.

Powered by Codecov. Last update 9fd333a...047b540

:shipit:


Creation of SMS API Family

Problem description
It has been proposed in the API backlog (Issue#372) a new API to receive SMS (application template available at PR#391). The team feels that this new proposal fits fairly well in a new API family alongside this one i wanted to query the owners of this ShortMessageService subproject to see if they are ok with including the new API withing this Github project
Expected action
@tcchiba @a-ramit Please show your view on this
CC
ReceiveSMS API Owners: @ailton-santana @adsjr2, TSC Member: @hdamker

Currently ShortMessageService sub-project includes APIs for Send SMS and SMS Delivery call back notification.
By just looking at the name of this new API i.e. ‘Receive SMS’, it seems to be part of ShortMessageService family.
However, I am not very clear on the use cases of this new API. Can someone point me to the use case of this please.
Thanks & Regards,
Ramit Chawla
From: Herbert Damker @.>
Sent: Wednesday, March 27, 2024 9:23 PM
To: camaraproject/ShortMessageService @.>
Cc: RAMIT CHAWLA @.>; Mention @.>
Subject: Re: [camaraproject/ShortMessageService] Creation of SMS API Family (Issue #9)
[CAUTION: External Email] Do not click links or open attachments unless you recognize the sender and know the content is safe.
@TEF-RicardoSerrhttps://github.com/TEF-RicardoSerr
My thoughts:

Option 1: If the APIs will are very closely related (e.g. have shared schema definitions), will follow same life cycle, and will have joint releases, then it is ok to have them together within the same repository.
Option 2: If this condition are not given then it might be better to develop the APIs in separate repositories to avoid complexity in release management. That still allows to maintain them together by one team (e.g. one call for both repositories). That would be in line with the notion of "API Family" as a working group across multiple sub projects.

For some more details on my thoughts you can have a look on https://wiki.camaraproject.org/display/CAM/2023-11-02+TSC+Minutes?preview=/4554757/4554780/TSC-2023-11-02-API_Families_and_APIs.pptx.pptx
—
Reply to this email directly, view it on GitHubhttps://github.com/camaraproject/ShortMessageService/issues/9#issuecomment-2023119751, or unsubscribehttps://github.com/notifications/unsubscribe-auth/A5RGDJH3OCWTINIYWEPHXRLY2LMOJAVCNFSM6AAAAABFLBS54KVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDAMRTGEYTSNZVGE.
You are receiving this because you were mentioned.Message ID<EMAIL_ADDRESS>
This email and any files transmitted with it are confidential and intended solely for the use of the individual or entity to whom they are addressed. If you have received this email in error please notify the system manager. This message contains confidential information and is intended only for the individual named. If you are not the named addressee you should not disseminate, distribute or copy this e-mail. Please notify the sender immediately by e-mail if you have received this e-mail by mistake and delete this e-mail from your system. If you are not the intended recipient you are notified that disclosing, copying, distributing or taking any action in reliance on the contents of this information is strictly prohibited . The information contained in this mail is propriety and strictly confidential.

“CONFIDENTIALITY NOTICE This e-mail message and any attachments are only for the use of the intended recipient and may contain information that is privileged, confidential or exempt from disclosure under applicable law. If you are not the intended recipient, any disclosure, distribution or other use of this e-mail message or attachments is prohibited. If you have received this e-mail message in error, please delete and notify the sender immediately. Thank you.”

Receive SMS would allow interaction from the subscriber.
Example 1:
Dentist office sends a message to client:
'Your next appointment is scheduled for 12/04/2024. Reply Y to confirm'
Example 2:
Anti-spam regulations request that subscriber has the option to sign out.
"50% off at Old Navy this weekend. Reply 'STOP' to stop receiving our promotions"
Example 3:
Customer Service feedback
"How did we serve you today? On a scale from 1 to 5, 1 being the worst and 5 being the best, how do you rate our attendant?"
Example 4:
Additional security for bank transactions
"A withdrawal of $1,000 from your account has just happened. Confirm you are aware of this transaction, replying Y. N otherwise."
It would require:

The phone number that replied
A message field
A webhook URL (this would have to be provided on the Send SMS if a reply is expected) : this is the URL where the A2P server is expecting any answer.
HTTP method (POST or GET)

It is approved in Backlog https://github.com/camaraproject/APIBacklog/issues/18  to extend scope of the subgroup (minutes here) to support receiveSMS use case. The following must be accomplished:

[ ] Update README to include the new scope
[ ] Update Codeowners and Maintainers files

@adsjr2 @ailton-santana recomend you to create a PR encompassing this

Hi @adsjr2, could you please review this pending AP from backlog? It implies the formalization of the Receive SMS functionality to be part of the ShortMessageService API.


Update it to hide Gmail counter

Thank you for building this extension.
Is it possible to hide notification count for Gmail as well ?

Thank you for the suggestion. I added the feature and it's under review from the chrome web store.
For now, if you'd like you can download the latest release and install the extension manually

Wow, thanks a ton @ngeldvis.
Suggestion: You might want to update the description and images on Chrome Extension Page.
This app works on most websites that I have tried: Linkedin, Twitter.


.pdf: Hedin House. Rental History should start with Current Address / Fill Landlord Info

Rental History table should start with current address and then fill out previous addresses
Landlord and Address column should fill with landlord's Name and Address, not applicant's address

This looks correct to me? If someone can clarify I can fix.

Yes, that looks right to me.


Getting wrong duration and position of song in ios.

Describe the bug
Getting wron duration and position of song in ios.working fine in android
To Reproduce
React native 62
Environment (please complete the following information):
Run react-native info in your project and share the content.
"react-native-track-player": "^1.1.4",
Are you testing on a real device or in the simulator? Which OS version are you running?
*Simulator and phone both
Code
export const addplaylist = async (song, currentsongid) => {
await TrackPlayer.reset();
await TrackPlayer.add(song);
const getsong = await new Promise(async (resolve, reject) => {
TrackPlayer.skip(String(currentsongid)).then(() => {
resolve({success: true});
});
});
if (getsong.success) {
await TrackPlayer.play().then((res) => {
return {success: true};
});
}
};

I'm also getting the wrong track player duration there is any solution?

any solution to this issue I am getting same bug in IOS for longer audios, if audio is longer than 30 mins or 1 hour then duration does not come correct, I attached a screenshot. I am version 1.2.7 of the track player

@sandeepkundu4344 @MJahanzaibKhan @rahutwr33, I was actually facing the same issue on ios and struggle a lot with it, I solved it.
I stream audio from my own server and adding codec inside Content-type solved my issue !
(Example for mp4: Content-type audio/mp4 codecs="mp4a.40.2"). With that song length is correctly displayed in app and on control center 👍
Hope that can help to solve your issue

it's really big problem, any solution?

Having this issue too. Even when the Track Object is added with the correct duration, the lock screen player always has the wrong duration.

Having this issue too. Anyone has any solution? I used v3.2.0

This is also happening to me, but not always. It depends on the track, some tracks report the correct duration and skip to the correct seconds, and others when skipping to X seconds, fail to do so to the correct time, always having and offset.
Setting the duration in the Track objects makes no difference. I imagine it has something to do with the underlying iOS bridge library and code, but haven't isolated the origin of the issue yet.

Looking into other libs, found this in Expo AV https://docs.expo.dev/versions/latest/sdk/av/#what-is-seek-tolerance-and-why-would-i-want-to-use-it-ios-only
It could be possible that this is the default behaviour in iOS based on https://developer.apple.com/documentation/avfoundation/avplayer/1387741-seek#discussion
If precision is important, we need to specify the tolerance with which the player will seek. There's no code to do so from this library, we would need to add support for this.

import TrackPlayer, { useProgress } from 'react-native-track-player'; //import useProgress
// Add this funtion
const formatTime = (seconds) => {
const minutes = Math.floor(seconds / 60);
const secs = Math.floor(seconds % 60);
return ${String(minutes).padStart(2, '0')}:${String(secs).padStart(2, '0')};
};
//return start time and end time duration
const ProgressDisplay = () => {
const { position, duration } = useProgress();
return (
    <View style={styles.progressLevelDuration}>
        <Text style={styles.progressLabelText}>
            {formatTime(position)}
        </Text>
        <Text style={styles.progressLabelText}>
            {formatTime(duration - position)}
        </Text>
    </View>
);

};


HTTP reusable client causes no overload compile error

I have this sample code, which is minimal and basically exactly the same as a few of the examples:
 1 require "http/client"
 2
 3 uri = URI.parse "https://google.com"
 4 client = HTTP::Client.new uri
 5 client.get "/"

From this, I get this long list of errors and source code:
$ crystal build bug.cr
Error in ./bug.cr:5: instantiating 'HTTP::Client#get(String)'

client.get "/"
       ^~~

in macro 'macro_3713436322992' /usr/lib64/crystal/http/client/client.cr:225, line 11:

  1.
  2.     # Executes a GET request.
  3.     # The response will have its body as a `String`, accessed via `HTTP::Client::Response#body`.
  4.     #
  5.     # ```
  6.     # client = HTTP::Client.new("www.example.com")
  7.     # response = client.get("/", headers: HTTP::Headers{"User-agent": "AwesomeApp"}, body: "Hello!")
  8.     # response.body #=> "..."
  9.     # ```
 10.     def get(path, headers = nil : HTTP::Headers?, body = nil : String?) : HTTP::Client::Response
 11.       exec "GET", path, headers, body
 12.     end
 13.
 14.     # Executes a GET request and yields the response to the block.
 15.     # The response will have its body as an `IO` accessed via `HTTP::Client::Response#body_io`.
 16.     #
 17.     # ```
 18.     # client = HTTP::Client.new("www.example.com")
 19.     # client.get("/", headers: HTTP::Headers{"User-agent": "AwesomeApp"}, body: "Hello!") do |response|
 20.     #   response.body_io.gets #=> "..."
 21.     # end
 22.     # ```
 23.     def get(path, headers = nil : HTTP::Headers?, body = nil : String?)
 24.       exec "GET", path, headers, body do |response|
 25.         yield response
 26.       end
 27.     end
 28.
 29.     # Executes a GET request.
 30.     # The response will have its body as a `String`, accessed via `HTTP::Client::Response#body`.
 31.     #
 32.     # ```
 33.     # response = HTTP::Client.get("/", headers: HTTP::Headers{"User-agent": "AwesomeApp"}, body: "Hello!")
 34.     # response.body #=> "..."
 35.     # ```
 36.     def self.get(url : String | URI, headers = nil : HTTP::Headers?, body = nil : String?) : HTTP::Client::Response
 37.       exec "GET", url, headers, body
 38.     end
 39.
 40.     # Executes a GET request and yields the response to the block.
 41.     # The response will have its body as an `IO` accessed via `HTTP::Client::Response#body_io`.
 42.     #
 43.     # ```
 44.     # HTTP::Client.get("/", headers: HTTP::Headers{"User-agent": "AwesomeApp"}, body: "Hello!") do |response|
 45.     #   response.body_io.gets #=> "..."
 46.     # end
 47.     # ```
 48.     def self.get(url : String | URI, headers = nil : HTTP::Headers?, body = nil : String?)
 49.       exec "GET", url, headers, body do |response|
 50.         yield response
 51.       end
 52.     end
 53.
 54.     # Executes a POST request.
 55.     # The response will have its body as a `String`, accessed via `HTTP::Client::Response#body`.
 56.     #
 57.     # ```
 58.     # client = HTTP::Client.new("www.example.com")
 59.     # response = client.post("/", headers: HTTP::Headers{"User-agent": "AwesomeApp"}, body: "Hello!")
 60.     # response.body #=> "..."
 61.     # ```
 62.     def post(path, headers = nil : HTTP::Headers?, body = nil : String?) : HTTP::Client::Response
 63.       exec "POST", path, headers, body
 64.     end
 65.
 66.     # Executes a POST request and yields the response to the block.
 67.     # The response will have its body as an `IO` accessed via `HTTP::Client::Response#body_io`.
 68.     #
 69.     # ```
 70.     # client = HTTP::Client.new("www.example.com")
 71.     # client.post("/", headers: HTTP::Headers{"User-agent": "AwesomeApp"}, body: "Hello!") do |response|
 72.     #   response.body_io.gets #=> "..."
 73.     # end
 74.     # ```
 75.     def post(path, headers = nil : HTTP::Headers?, body = nil : String?)
 76.       exec "POST", path, headers, body do |response|
 77.         yield response
 78.       end
 79.     end
 80.
 81.     # Executes a POST request.
 82.     # The response will have its body as a `String`, accessed via `HTTP::Client::Response#body`.
 83.     #
 84.     # ```
 85.     # response = HTTP::Client.post("/", headers: HTTP::Headers{"User-agent": "AwesomeApp"}, body: "Hello!")
 86.     # response.body #=> "..."
 87.     # ```
 88.     def self.post(url : String | URI, headers = nil : HTTP::Headers?, body = nil : String?) : HTTP::Client::Response
 89.       exec "POST", url, headers, body
 90.     end
 91.
 92.     # Executes a POST request and yields the response to the block.
 93.     # The response will have its body as an `IO` accessed via `HTTP::Client::Response#body_io`.
 94.     #
 95.     # ```
 96.     # HTTP::Client.post("/", headers: HTTP::Headers{"User-agent": "AwesomeApp"}, body: "Hello!") do |response|
 97.     #   response.body_io.gets #=> "..."
 98.     # end
 99.     # ```
100.     def self.post(url : String | URI, headers = nil : HTTP::Headers?, body = nil : String?)
101.       exec "POST", url, headers, body do |response|
102.         yield response
103.       end
104.     end
105.
106.     # Executes a PUT request.
107.     # The response will have its body as a `String`, accessed via `HTTP::Client::Response#body`.
108.     #
109.     # ```
110.     # client = HTTP::Client.new("www.example.com")
111.     # response = client.put("/", headers: HTTP::Headers{"User-agent": "AwesomeApp"}, body: "Hello!")
112.     # response.body #=> "..."
113.     # ```
114.     def put(path, headers = nil : HTTP::Headers?, body = nil : String?) : HTTP::Client::Response
115.       exec "PUT", path, headers, body
116.     end
117.
118.     # Executes a PUT request and yields the response to the block.
119.     # The response will have its body as an `IO` accessed via `HTTP::Client::Response#body_io`.
120.     #
121.     # ```
122.     # client = HTTP::Client.new("www.example.com")
123.     # client.put("/", headers: HTTP::Headers{"User-agent": "AwesomeApp"}, body: "Hello!") do |response|
124.     #   response.body_io.gets #=> "..."
125.     # end
126.     # ```
127.     def put(path, headers = nil : HTTP::Headers?, body = nil : String?)
128.       exec "PUT", path, headers, body do |response|
129.         yield response
130.       end
131.     end
132.
133.     # Executes a PUT request.
134.     # The response will have its body as a `String`, accessed via `HTTP::Client::Response#body`.
135.     #
136.     # ```
137.     # response = HTTP::Client.put("/", headers: HTTP::Headers{"User-agent": "AwesomeApp"}, body: "Hello!")
138.     # response.body #=> "..."
139.     # ```
140.     def self.put(url : String | URI, headers = nil : HTTP::Headers?, body = nil : String?) : HTTP::Client::Response
141.       exec "PUT", url, headers, body
142.     end
143.
144.     # Executes a PUT request and yields the response to the block.
145.     # The response will have its body as an `IO` accessed via `HTTP::Client::Response#body_io`.
146.     #
147.     # ```
148.     # HTTP::Client.put("/", headers: HTTP::Headers{"User-agent": "AwesomeApp"}, body: "Hello!") do |response|
149.     #   response.body_io.gets #=> "..."
150.     # end
151.     # ```
152.     def self.put(url : String | URI, headers = nil : HTTP::Headers?, body = nil : String?)
153.       exec "PUT", url, headers, body do |response|
154.         yield response
155.       end
156.     end
157.
158.     # Executes a HEAD request.
159.     # The response will have its body as a `String`, accessed via `HTTP::Client::Response#body`.
160.     #
161.     # ```
162.     # client = HTTP::Client.new("www.example.com")
163.     # response = client.head("/", headers: HTTP::Headers{"User-agent": "AwesomeApp"}, body: "Hello!")
164.     # response.body #=> "..."
165.     # ```
166.     def head(path, headers = nil : HTTP::Headers?, body = nil : String?) : HTTP::Client::Response
167.       exec "HEAD", path, headers, body
168.     end
169.
170.     # Executes a HEAD request and yields the response to the block.
171.     # The response will have its body as an `IO` accessed via `HTTP::Client::Response#body_io`.
172.     #
173.     # ```
174.     # client = HTTP::Client.new("www.example.com")
175.     # client.head("/", headers: HTTP::Headers{"User-agent": "AwesomeApp"}, body: "Hello!") do |response|
176.     #   response.body_io.gets #=> "..."
177.     # end
178.     # ```
179.     def head(path, headers = nil : HTTP::Headers?, body = nil : String?)
180.       exec "HEAD", path, headers, body do |response|
181.         yield response
182.       end
183.     end
184.
185.     # Executes a HEAD request.
186.     # The response will have its body as a `String`, accessed via `HTTP::Client::Response#body`.
187.     #
188.     # ```
189.     # response = HTTP::Client.head("/", headers: HTTP::Headers{"User-agent": "AwesomeApp"}, body: "Hello!")
190.     # response.body #=> "..."
191.     # ```
192.     def self.head(url : String | URI, headers = nil : HTTP::Headers?, body = nil : String?) : HTTP::Client::Response
193.       exec "HEAD", url, headers, body
194.     end
195.
196.     # Executes a HEAD request and yields the response to the block.
197.     # The response will have its body as an `IO` accessed via `HTTP::Client::Response#body_io`.
198.     #
199.     # ```
200.     # HTTP::Client.head("/", headers: HTTP::Headers{"User-agent": "AwesomeApp"}, body: "Hello!") do |response|
201.     #   response.body_io.gets #=> "..."
202.     # end
203.     # ```
204.     def self.head(url : String | URI, headers = nil : HTTP::Headers?, body = nil : String?)
205.       exec "HEAD", url, headers, body do |response|
206.         yield response
207.       end
208.     end
209.
210.     # Executes a DELETE request.
211.     # The response will have its body as a `String`, accessed via `HTTP::Client::Response#body`.
212.     #
213.     # ```
214.     # client = HTTP::Client.new("www.example.com")
215.     # response = client.delete("/", headers: HTTP::Headers{"User-agent": "AwesomeApp"}, body: "Hello!")
216.     # response.body #=> "..."
217.     # ```
218.     def delete(path, headers = nil : HTTP::Headers?, body = nil : String?) : HTTP::Client::Response
219.       exec "DELETE", path, headers, body
220.     end
221.
222.     # Executes a DELETE request and yields the response to the block.
223.     # The response will have its body as an `IO` accessed via `HTTP::Client::Response#body_io`.
224.     #
225.     # ```
226.     # client = HTTP::Client.new("www.example.com")
227.     # client.delete("/", headers: HTTP::Headers{"User-agent": "AwesomeApp"}, body: "Hello!") do |response|
228.     #   response.body_io.gets #=> "..."
229.     # end
230.     # ```
231.     def delete(path, headers = nil : HTTP::Headers?, body = nil : String?)
232.       exec "DELETE", path, headers, body do |response|
233.         yield response
234.       end
235.     end
236.
237.     # Executes a DELETE request.
238.     # The response will have its body as a `String`, accessed via `HTTP::Client::Response#body`.
239.     #
240.     # ```
241.     # response = HTTP::Client.delete("/", headers: HTTP::Headers{"User-agent": "AwesomeApp"}, body: "Hello!")
242.     # response.body #=> "..."
243.     # ```
244.     def self.delete(url : String | URI, headers = nil : HTTP::Headers?, body = nil : String?) : HTTP::Client::Response
245.       exec "DELETE", url, headers, body
246.     end
247.
248.     # Executes a DELETE request and yields the response to the block.
249.     # The response will have its body as an `IO` accessed via `HTTP::Client::Response#body_io`.
250.     #
251.     # ```
252.     # HTTP::Client.delete("/", headers: HTTP::Headers{"User-agent": "AwesomeApp"}, body: "Hello!") do |response|
253.     #   response.body_io.gets #=> "..."
254.     # end
255.     # ```
256.     def self.delete(url : String | URI, headers = nil : HTTP::Headers?, body = nil : String?)
257.       exec "DELETE", url, headers, body do |response|
258.         yield response
259.       end
260.     end
261.
262.     # Executes a PATCH request.
263.     # The response will have its body as a `String`, accessed via `HTTP::Client::Response#body`.
264.     #
265.     # ```
266.     # client = HTTP::Client.new("www.example.com")
267.     # response = client.patch("/", headers: HTTP::Headers{"User-agent": "AwesomeApp"}, body: "Hello!")
268.     # response.body #=> "..."
269.     # ```
270.     def patch(path, headers = nil : HTTP::Headers?, body = nil : String?) : HTTP::Client::Response
271.       exec "PATCH", path, headers, body
272.     end
273.
274.     # Executes a PATCH request and yields the response to the block.
275.     # The response will have its body as an `IO` accessed via `HTTP::Client::Response#body_io`.
276.     #
277.     # ```
278.     # client = HTTP::Client.new("www.example.com")
279.     # client.patch("/", headers: HTTP::Headers{"User-agent": "AwesomeApp"}, body: "Hello!") do |response|
280.     #   response.body_io.gets #=> "..."
281.     # end
282.     # ```
283.     def patch(path, headers = nil : HTTP::Headers?, body = nil : String?)
284.       exec "PATCH", path, headers, body do |response|
285.         yield response
286.       end
287.     end
288.
289.     # Executes a PATCH request.
290.     # The response will have its body as a `String`, accessed via `HTTP::Client::Response#body`.
291.     #
292.     # ```
293.     # response = HTTP::Client.patch("/", headers: HTTP::Headers{"User-agent": "AwesomeApp"}, body: "Hello!")
294.     # response.body #=> "..."
295.     # ```
296.     def self.patch(url : String | URI, headers = nil : HTTP::Headers?, body = nil : String?) : HTTP::Client::Response
297.       exec "PATCH", url, headers, body
298.     end
299.
300.     # Executes a PATCH request and yields the response to the block.
301.     # The response will have its body as an `IO` accessed via `HTTP::Client::Response#body_io`.
302.     #
303.     # ```
304.     # HTTP::Client.patch("/", headers: HTTP::Headers{"User-agent": "AwesomeApp"}, body: "Hello!") do |response|
305.     #   response.body_io.gets #=> "..."
306.     # end
307.     # ```
308.     def self.patch(url : String | URI, headers = nil : HTTP::Headers?, body = nil : String?)
309.       exec "PATCH", url, headers, body do |response|
310.         yield response
311.       end
312.     end
313.

      exec "GET", path, headers, body
      ^~~~

instantiating 'exec(String, String, Nil, Nil)'
in /usr/lib64/crystal/http/client/client.cr:390: instantiating 'new_request(String, String, Nil, Nil)'

    exec new_request method, path, headers, body
         ^~~~~~~~~~~

in /usr/lib64/crystal/http/client/client.cr:448: instantiating 'HTTP::Headers#[]=(String, (String | URI))'

    headers["Host"] ||= host_header
                    ^~

in macro 'method_missing' expanded macro: forward_missing_to:1, line 1:

  1.       @hash.[]=(_arg0, _arg1)
  2.

      @hash.[]=(_arg0, _arg1)
            ^~

no overload matches 'Hash(HTTP::Headers::Key, Array(String))#[]=' with types String, (String | URI)
Overloads are:
 - Hash(K, V)#[]=(key : K, value : V)

Meanwhile doing:
 1 require "http/client"
 2
 3 HTTP::Client.get "https://google.com"

Works perfectly fine.
Here is my crystal version:
$ crystal -v
Crystal 0.12.0 (Sat Mar 19 09:55:34 UTC 2016)

Using URI as argument to initialize a HTTP::Client is only available since Crystal 0.13.0
See #2213 and Crystal's Changelog


Refactor

Refactor to pull Authentication out of the Client
You can now get the signature for any request data using \Akamai\Open\EdgeGrid\Authentication, this paves the way for plugins for other HTTP clients
This is expected to be v0.2.0

Release checklist:

[ ] Tag 0.2.0
[ ] Create release on github
[ ] Add phar
[ ] Publish release
[ ] Update examples
[ ] Merge examples


Need steps to configure the Influxdb bucket in Grafana

My Jmeter script properly writes the data into the Influxdb. But i can't able to add the bucket in the grafana board. I tried to add the bucket as influxdb datasource its failing as 'InfluDB: BadRequest" .
Version details
Java: 12
JMeter : 5.5
influxDB: v2.3.0+SNAPSHOT.090f681737
Grafana: 9.0.1
Jmeter Log:
2022-06-25 03:37:48,960 INFO i.g.m.i.v.InfluxDatabaseBackendListenerClient: Data has been imported successfully, batch with size is --> 86, elapsed time is --> 12 ms 2022-06-25 03:37:52,976 INFO i.g.m.i.v.InfluxDatabaseBackendListenerClient: Data has been imported successfully, batch with size is --> 105, elapsed time is --> 16 ms 2022-06-25 03:37:56,981 INFO i.g.m.i.v.InfluxDatabaseBackendListenerClient: Data has been imported successfully, batch with size is --> 112, elapsed time is --> 19 ms 2022-06-25 03:38:00,980 INFO i.g.m.i.v.InfluxDatabaseBackendListenerClient: Data has been imported successfully, batch with size is --> 104, elapsed time is --> 12 ms 2022-06-25 03:38:04,981 INFO i.g.m.i.v.InfluxDatabaseBackendListenerClient: Data has been imported successfully, batch with size is --> 113, elapsed time is --> 12 ms 2022-06-25 03:38:08,988 INFO i.g.m.i.v.InfluxDatabaseBackendListenerClient: Data has been imported successfully, batch with size is --> 110, elapsed time is --> 13 ms 2022-06-25 03:38:12,999 INFO i.g.m.i.v.InfluxDatabaseBackendListenerClient: Data has been imported successfully, batch with size is --> 112, elapsed time is --> 16 ms 2022-06-25 03:38:16,999 INFO i.g.m.i.v.InfluxDatabaseBackendListenerClient: Data has been imported successfully, batch with size is --> 108, elapsed time is --> 14 ms 2022-06-25 03:38:21,011 INFO i.g.m.i.v.InfluxDatabaseBackendListenerClient: Data has been imported successfully, batch with size is --> 111, elapsed time is --> 13 ms 2022-06-25 03:38:25,020 INFO i.g.m.i.v.InfluxDatabaseBackendListenerClient: Data has been imported successfully, batch with size is --> 109, elapsed time is --> 13 ms 2022-06-25 03:38:29,022 INFO i.g.m.i.v.InfluxDatabaseBackendListenerClient: Data has been imported successfully, batch with size is --> 109, elapsed time is --> 12 ms 2022-06-25 03:38:33,027 INFO i.g.m.i.v.InfluxDatabaseBackendListenerClient: Data has been imported successfully, batch with size is --> 103, elapsed time is --> 15 ms 2022-06-25 03:38:37,026 INFO i.g.m.i.v.InfluxDatabaseBackendListenerClient: Data has been imported successfully, batch with size is --> 105, elapsed time is --> 13 ms 2022-06-25 03:38:41,026 INFO i.g.m.i.v.InfluxDatabaseBackendListenerClient: Data has been imported successfully, batch with size is --> 101, elapsed time is --> 10 ms 2022-06-25 03:38:45,041 INFO i.g.m.i.v.InfluxDatabaseBackendListenerClient: Data has been imported successfully, batch with size is --> 102, elapsed time is --> 14 ms 2022-06-25 03:38:49,046 INFO i.g.m.i.v.InfluxDatabaseBackendListenerClient: Data has been imported successfully, batch with size is --> 107, elapsed time is --> 15 ms 2022-06-25 03:38:53,049 INFO i.g.m.i.v.InfluxDatabaseBackendListenerClient: Data has been imported successfully, batch with size is --> 109, elapsed time is --> 13 ms 2022-06-25 03:38:57,060 INFO i.g.m.i.v.InfluxDatabaseBackendListenerClient: Data has been imported successfully, batch with size is --> 112, elapsed time is --> 14 ms 2022-06-25 03:39:01,071 INFO i.g.m.i.v.InfluxDatabaseBackendListenerClient: Data has been imported successfully, batch with size is --> 113, elapsed time is --> 13 ms 2022-06-25 03:39:05,082 INFO i.g.m.i.v.InfluxDatabaseBackendListenerClient: Data has been imported successfully, batch with size is --> 111, elapsed time is --> 11 ms 2022-06-25 03:39:09,086 INFO i.g.m.i.v.InfluxDatabaseBackendListenerClient: Data has been imported successfully, batch with size is --> 112, elapsed time is --> 13 ms 2022-06-25 03:39:13,101 INFO i.g.m.i.v.InfluxDatabaseBackendListenerClient: Data has been imported successfully, batch with size is --> 113, elapsed time is --> 21 ms 2022-06-25 03:39:17,102 INFO i.g.m.i.v.InfluxDatabaseBackendListenerClient: Data has been imported successfully, batch with size is --> 116, elapsed time is --> 13 ms 2022-06-25 03:39:21,108 INFO i.g.m.i.v.InfluxDatabaseBackendListenerClient: Data has been imported successfully, batch with size is --> 110, elapsed time is --> 12 ms 2022-06-25 03:39:25,123 INFO i.g.m.i.v.InfluxDatabaseBackendListenerClient: Data has been imported successfully, batch with size is --> 112, elapsed time is --> 14 ms 2022-06-25 03:39:29,126 INFO i.g.m.i.v.InfluxDatabaseBackendListenerClient: Data has been imported successfully, batch with size is --> 105, elapsed time is --> 16 ms 2022-06-25 03:39:33,128 INFO i.g.m.i.v.InfluxDatabaseBackendListenerClient: Data has been imported successfully, batch with size is --> 103, elapsed time is --> 12 ms 2022-06-25 03:39:37,142 INFO i.g.m.i.v.InfluxDatabaseBackendListenerClient: Data has been imported successfully, batch with size is --> 103, elapsed time is --> 17 ms 2022-06-25 03:39:41,141 INFO i.g.m.i.v.InfluxDatabaseBackendListenerClient: Data has been imported successfully, batch with size is --> 97, elapsed time is --> 11 ms 2022-06-25 03:39:45,164 INFO i.g.m.i.v.InfluxDatabaseBackendListenerClient: Data has been imported successfully, batch with size is --> 101, elapsed time is --> 20 ms 2022-06-25 03:39:49,165 INFO i.g.m.i.v.InfluxDatabaseBackendListenerClient: Data has been imported successfully, batch with size is --> 109, elapsed time is --> 11 ms 2022-06-25 03:39:53,179 INFO i.g.m.i.v.InfluxDatabaseBackendListenerClient: Data has been imported successfully, batch with size is --> 107, elapsed time is --> 12 ms 2022-06-25 03:39:57,182 INFO i.g.m.i.v.InfluxDatabaseBackendListenerClient: Data has been imported successfully, batch with size is --> 110, elapsed time is --> 13 ms 2022-06-25 03:40:01,194 INFO i.g.m.i.v.InfluxDatabaseBackendListenerClient: Data has been imported successfully, batch with size is --> 109, elapsed time is --> 16 ms 2022-06-25 03:40:05,194 INFO i.g.m.i.v.InfluxDatabaseBackendListenerClient: Data has been imported successfully, batch with size is --> 111, elapsed time is --> 15 ms 2022-06-25 03:40:09,204 INFO i.g.m.i.v.InfluxDatabaseBackendListenerClient: Data has been imported successfully, batch with size is --> 111, elapsed time is --> 13 ms 2022-06-25 03:40:13,215 INFO i.g.m.i.v.InfluxDatabaseBackendListenerClient: Data has been imported successfully, batch with size is --> 109, elapsed time is --> 15 ms 2022-06-25 03:40:17,220 INFO i.g.m.i.v.InfluxDatabaseBackendListenerClient: Data has been imported successfully, batch with size is --> 112, elapsed time is --> 14 ms 2022-06-25 03:40:21,232 INFO i.g.m.i.v.InfluxDatabaseBackendListenerClient: Data has been imported successfully, batch with size is --> 111, elapsed time is --> 14 ms 2022-06-25 03:40:25,238 INFO i.g.m.i.v.InfluxDatabaseBackendListenerClient: Data has been imported successfully, batch with size is --> 111, elapsed time is --> 13 ms 2022-06-25 03:40:29,250 INFO i.g.m.i.v.InfluxDatabaseBackendListenerClient: Data has been imported successfully, batch with size is --> 110, elapsed time is --> 15 ms 2022-06-25 03:40:33,256 INFO i.g.m.i.v.InfluxDatabaseBackendListenerClient: Data has been imported successfully, batch with size is --> 107, elapsed time is --> 12 ms 2022-06-25 03:40:37,274 INFO i.g.m.i.v.InfluxDatabaseBackendListenerClient: Data has been imported successfully, batch with size is --> 103, elapsed time is --> 16 ms 2022-06-25 03:40:41,272 INFO i.g.m.i.v.InfluxDatabaseBackendListenerClient: Data has been imported successfully, batch with size is --> 105, elapsed time is --> 12 ms 2022-06-25 03:40:45,282 INFO i.g.m.i.v.InfluxDatabaseBackendListenerClient: Data has been imported successfully, batch with size is --> 101, elapsed time is --> 12 ms 2022-06-25 03:40:49,292 INFO i.g.m.i.v.InfluxDatabaseBackendListenerClient: Data has been imported successfully, batch with size is --> 107, elapsed time is --> 11 ms 2022-06-25 03:40:53,302 INFO i.g.m.i.v.InfluxDatabaseBackendListenerClient: Data has been imported successfully, batch with size is --> 106, elapsed time is --> 14 ms 2022-06-25 03:40:57,307 INFO i.g.m.i.v.InfluxDatabaseBackendListenerClient: Data has been imported successfully, batch with size is --> 115, elapsed time is --> 14 ms 2022-06-25 03:41:01,314 INFO i.g.m.i.v.InfluxDatabaseBackendListenerClient: Data has been imported successfully, batch with size is --> 107, elapsed time is --> 12 ms 2022-06-25 03:41:05,319 INFO i.g.m.i.v.InfluxDatabaseBackendListenerClient: Data has been imported successfully, batch with size is --> 98, elapsed time is --> 12 ms 2022-06-25 03:41:09,325 INFO i.g.m.i.v.InfluxDatabaseBackendListenerClient: Data has been imported successfully, batch with size is --> 110, elapsed time is --> 15 ms
Grafana Issue

@ManiR-02 hello,
See the steps here:

You need to go to data sources

Then click "Add data sources"

Select Influx DB and then switch to Flux

Then set settings

Actually, your question is related to general things but not to the project related. You can find such steps in the google.
BR,
Mike


Ability to assign a datatype to segment:0x0000

Is your feature request related to a problem? Please describe.
There's no mechanism to apply a datatype to an address of the form SEG:0000.  The below (correct disassembly) from KRNL386.EXE (Windows 3.11) illustrates this issue perfectly:
                             **************************************************************
                             *                          FUNCTION                          *
                             **************************************************************
                             void __pascal16far POSTEVENT(HTASK hTask)
                               assume DS = 0x1018
             void              <VOID>         <RETURN>
             HTASK             Stack[0x4]:2   hTask
                             Ordinal_31                                      XREF[1]:     Entry Point(*)
                             POSTEVENT
   1000:7d92 e8 e7 ff       0           CALL       GetTaskIntoES                                    SegmentCodeAddress GetTaskIntoES
   1000:7d95 26 ff 06       0           INC        word ptr ES:[0x6]
             06 00
   1000:7d9a ca 02 00       0           RETF       0x2

decompiles to:
void __pascal16far POSTEVENT(HTASK hTask)

{
   int *piVar1;
   SegmentCodeAddress SVar2;

   SVar2 = GetTaskIntoES(hTask);
   piVar1 = (int *)&DAT_1018_0006;
   *piVar1 = *piVar1 + 1;
   return;
}

converting ES:[0x6] into an address in the applications DS (data segment - 1018:0006).  Whereas what's required is for ES:[0x6] to be the 6th-7th byte of a 0x200 byte structure (TaskDatabase).
Describe the solution you'd like
The ability to set a datatype on an address of this format.  (I believe it is what used to be a based datatype.)
Describe alternatives you've considered
Changing the global data area (at address 1018:0000) to type TaskDatabase - breaks everything else that really uses the data in 1018:0000 - 1018:0200.

Try setting ES to a value at the beginning of the function as is done for DS.
You could create an arbitrary memory block in segment memory to hold TaskDatabase, and set ES at the beginning of this function to that value.
Looking at the function more closely, I would make a custom return value for the CALL to GetTaskIntoES and have it return a pointer to the TaskDatabase in the ES register.  This is actually what is going on.  The decompiler should pick that up.
There may be other ways with the new pointer typedef, but I'd try this first.

Nice one!  Creating a memory block to hold a TaskDatabase object worked, but only after setting the DS register to the newly created memory block.  I think the reason/fault is described in https://github.com/NationalSecurityAgency/ghidra/issues/4393.
The only issue doing it this way is lots of new memory blocks will be needed for any type accessed this way (or maybe a big union!).

Glad you got it to work.
If you can change the GetTaskIntoES() to return a value in ES and set the return type to  (TaskDatabase *), you would probably get a more general solution.  Might be some issues, since ES is not the full pointer size, so it might not accept the data type / offset.

If you can change the GetTaskIntoES() to return a value in ES and set the return type to (TaskDatabase *)

I did that, but on its o2
you would probably get a more general solution. Might be some issues, since ES is not the full pointer size, so it might not accept the data type / offset.

If you can change the GetTaskIntoES() to return a value in ES and set the return type to (TaskDatabase *)

That's what I did beforehand, but doing that alone doesn't work because ES is the segment portion of the address and not the offset.  Also, setting ES for the next assembly instruction (as below)
             assume ES = 0x9000
   1000:7d95 26 ff 06       0           INC        word ptr ES:[0x6]
             06 00

does nothing when interpreting the addressES:[0x6].  However, setting DS instead like
             assume DS = 0x9000
   1000:7d95 26 ff 06       0           INC        word ptr ES:[0x6]
             06 00

produces a better outcome
piVar1 = (int *)&taskDB.nWaitingEvents;

I thought that might happen.
Would be better if the ES were understood as the upper part of the pointer.
Did you set the assume value at the instruction, or at the beginning of the function?
If you were able to do it at the instruction, that is a change in the decompiler I was unaware of.  In previous versions, the decompiler only picks up setting of register values at the beginning of a function.

I changed the register value at the instruction  location NOT the beginning of the function.

Would be better if the ES were understood as the upper part of the pointer.

Absolutely.  (Don't forget about the other segment registers CS, DS, FS, GS, SS, etc.)

Did you set the assume value at the instruction, or at the beginning of the function?

I changed the register value at the instruction location NOT the beginning of the function.
Also, adding a value for ES at the start of the function just gave ES that value for the first assembly instruction.  Selecting all assembly statements in the function DID apply the given value to ES for all instructions but, unless I amended the DS register on the INC instruction, the member (of the taskDB object) wasn't recognised because the data element used the original DS value (0x1018) resulting in the data item being DAT_1018_0006 instead of taskDB.nWaitingEvents (which was the 6th byte at my newly created - and type asigned - location of 9000:0000).  (To me, this clearly shows that Ghidra is currently only geared up to work on the data segment DS.  Can this be addressed?)

Changing the register value at any instruction location other than at the start of the function will be ignored.  It has to occur at the beginning of the function for the decompiler to pick it up.
Setting DS at the INC instruction should have no effect.
I think what is happening is that when you set the ES at the start of the function, and then changed the function to return a value in ES in a custom calling convention, essentially the decompiler thinks the ES register value has changed from the call and no longer uses the value at entry to the function.
There might be an assumption in the decompiler that assumes values are offset from the DS segment, but in this case I'm not sure why you are getting a pointer to &DAT_1018_0006
In the main branch, I get:
void __stdcall16far POSTEVENT(void)

{
  int *piVar1;
  undefined2 unaff_ES;

  FUN_1000_7d7c();
  piVar1 = (int *)0x6;
  *piVar1 = *piVar1 + 1;
  return;
}

If I set ES at the beginning of the function with NO changes to the called function signature:
void __stdcall16far POSTEVENT(void)

{
  FUN_1000_7d7c();
  iRam90000006 = iRam90000006 + 1;
  return;
}

Adding the TaskDatabase structure at 9000 yields:
void __stdcall16far POSTEVENT(void)

{
  FUN_1000_7d7c();
  taskDB.nWaitingEvents = taskDB.nWaitingEvents + 1;
  return;
}

This is using protected mode which keeps the segment separate from the offset for pointers.
We'll be changing the default import to protected mode and making some changes to the assumptions for calculations with the CS register.  They currently are very incorrect.

This is using protected mode which keeps the segment separate from the offset for pointers. We'll be changing the default import to protected mode and making some changes to the assumptions for calculations with the CS register. They currently are very incorrect.

Will any of these help with near/far pointers?

I have a similar situation here - dragon_FUN_1108_0dd6.zip in which a lower level nested structure contains an array of segments that should be used as the basis of another array of uint's, whereas instead I'm seeing an assignment to the constant index, like:
*(undefined2 *)((int)idWord << 1) = 0;.
in the for loop!

@ryanmkurtz any p

@ryanmkurtz any progress?

In the example above, the line
*(undefined2 *)((int)idWord << 1) = 0;
should actually be something akin to
pObj = MAKELP(pCatNGram.a5x12Byte_0x24.m_saSegs_0x8.m_aSegs[(idWord % 65536) >>15], idWord<<1);
*pObj = 0;

as each element of the m_aSegs array is a 2-byte segment descriptor and the offset into that segment is the index represented by another 2-byte (word) array index idWord, hence together making up a 32-bit address.

In general, if the label on the ticket is still Status: Triage, you can assume no progress.

Is https://github.com/NationalSecurityAgency/ghidra/issues/1412#issuecomment-2479843872 a possible solution?

Hello @emteere. I'm now using Ghidra 11.3 and I'm still not getting the correct address if I set ES to 0x9000 for the whole function (see 1st image)

even setting ES on the INC assembly line does nothing

What does kinda work, is changing DS from its default of 0x1018 to 0x9000 on the INC line (something you've said shouldn't work!)

This is saying to me that ONLY the DS segment register is being used in evaluating addresses, which isn't right!
Are you getting different results as you did back in Jan 2023?