No HDD or System info showing

First of all this is an excellent project.
I've got it up and running on my windows server 2008 r2 box but for some reason it doesn't show any HDD or System info stats. S.m.a.r.t works fine.
"Traceback (most recent call last):
File "C:\Users\Administrator\Desktop\HTPC-Manager-master2\libs\cherrypy_cpreq
uest.py", line 670, in respond
response.body = self.handler()
File "C:\Users\Administrator\Desktop\HTPC-Manager-master2\libs\cherrypy\lib\en
coding.py", line 217, in call
self.body = self.oldhandler(*args, **kwargs)
File "C:\Users\Administrator\Desktop\HTPC-Manager-master2\libs\cherrypy\lib\js
ontools.py", line 63, in json_handler
value = cherrypy.serving.request._json_inner_handler(*args, **kwargs)
File "C:\Users\Administrator\Desktop\HTPC-Manager-master2\libs\cherrypy_cpdis
patch.py", line 61, in call
return self.callable(*self.args, **self.kwargs)
File "C:\Users\Administrator\Desktop\HTPC-Manager-master2\modules\stats.py", l
ine 213, in sysinfodash
cpu = psutil.cpu_times_percent(interval=0.1, percpu=False)
NameError: global name 'psutil' is not defined
2015-08-28 18:23:59 :: modules.sonarr :: ERROR :: Failed to fetch url=https://:/
api/Calendar?end=2015-09-04 path=Calendar?end=2015-09-04 error Invalid URL u'htt
ps://:/api/Calendar?end=2015-09-04': No host supplied
2015-08-28 18:23:59 :: modules.stats :: ERROR :: Could not get disk info global
name 'psutil' is not defined"
I have a sneaky feeling it's to do with this :-)

Your right, you don't have psutil installed on your computer. Download it from here https://pypi.python.org/pypi?:action=display&name=psutil#downloads

Thanks working fine now.
Much appreciated. :+1:

Good, let Me know if you have any other issues.

Is it possible to add a remote plex server? I am running this on a server I have network mounted to my plex server for additional storage.
Tried putting the ip/port with my plex creds but not connecting.

Remote as no in your local network? I don't know I have never tried that, but don't think if should be a issue if you use a raw ip and a port.

Yeah it's a different dedicated server.
I've tried raw ip/port with my plex account creds, says failed.

Don't trust the test button. Just open the module and see if it works there.

Check the log to see why it failed :)

Saying it's unauthorised when it's accessing my server:32400.
I've put plex credentials and can't find any seperate credential options within plex. Guess it just doesn't work.

I will just leave the install on plex and connect the sonarr and couchpotato to the server I use for storage :+1:

Any idea what this means?
Just noticed the system stats are:
CPU
User: 100.0%System: 0.0%Idle: 0.0%
MEM
Used: 7.1 MBFree: 8.6 MB
Server had 16GB RAM and CPU is only at 13%
2015-08-28 23:08:46 :: htpc.helpers :: ERROR :: Can't resize when PIL is missing
on system!

Was that on the desk board or in the stats module? You need to install oil if you want htpc manager to manipulate images.
See https://github.com/Hellowlol/HTPC-Manager/blob/master2/requirements.txt for a pull list of "requirements"


I want to scan the block and parse the transactions of the specified contract in the block. Is there a demo?

😂

Hi, yes, you can use this example https://github.com/xssnick/tonutils-go/blob/master/example/accept-payments/main.go
It reports every contract's tx to the channel

@xssnick why can't I set the contract to: UQBAjaOyi2wGWlk-EDkSabqqnF-MrrwMadnwqrurKpkla4QB

我想我已经拿到我想要的了，谢谢你，但是我仍然有一些问题：
type Cell struct {
	special   bool
	levelMask LevelMask
	bitsSz    uint
	data      []byte

	hashes      []byte
	depthLevels []uint16

	refs []*Cell
}

the data I want is in data, which contains transaction information. How should I obtain and parse it?

see readme, ton docs and examples, load cell similar to how it happens in contract (.BeginParse()) or map data to struct with tlb tags


Ensure the vm is running when vm operations are called

part of the fix of hyperhq/hyperd#598 (pod creation rollback), changes include:

change context lock from Mutex to RWMutex
move ctx.current access inside lock
ensure vm operations has the running status check

Signed-off-by: Wang Xu<EMAIL_ADDRESS>

LGTM


ENH: Extension should be able to accept PathLike sources objects

ENH: Extension should be able to accept PathLike sources objects
Adjust expectation to match behavior.
For consistency, ensure Extension.sources is always a path.Path object.

This PR is a resubmit of #230.

I've managed to fix the Windows tests and I started looking into the setuptools integration test failures. As it turns out, those are going to be harder to solve. I did start this branch to track some of the changes needed, but unfortunately, there's some pretty nasty code affecting paths. I'm thinking we're at least going to have to get Setuptools to the level of requiring str (and not bytes) for all paths before attempting to support pathlib.Path objects. Trying to support bytes and str and pathlib.Path is just going to be too complicated.
All of this makes me think we may want to defer this work until we can get distutils properly embedded within setuptools, so we don't have to deal with these concerns across two repositories.

A more compatible approach would be to just call os.fspath on all inputs, and keep the internal paths type as is.

A more compatible and more limited approach would be to just call os.fspath on all inputs, and keep the validation, the internal and exposed paths type as is.

That's a good suggestion. It would be incrementally better and would give users a better experience.


how are you dare

those steps installing the tool make no sense

Issue is closed since, I have solved the issue.

Issue is closed since, I have solved the issue.


P-S Exits Now If No Config File Could Be Found

Why:
P-S would terminate anyway because it couldn't find a script.

LGTM


Fix kotlin Issue makes unable to run on phone, and Overflow cuz by gemini summary function

Removed Unuse Library and Refactor class name


Unlock icloud iphone XS

Anyone know how to unlock icloud iphone XS free not only help me?

59

@namlong77 have you found a solution for unlock icloud iPhone XS ?


Reduce overhead in RetryStateImpl by fixing alignment

Commit Message: Reduce overhead in RetryStateImpl by fixing alignment
Risk Level: Low
Sizeof test
Before changes: 280
After changes: 264

/retest

@adisuissa @yurykats

/retest

Same comment as https://github.com/envoyproxy/envoy/pull/26128#issuecomment-1475573864 @DiazAlan - I think it would be helpful to have a quantitative method to track how these improvements are stacking up.


⚠ ClamAV has degraded performance

In 5fbee66, ClamAV (https://spamassassin.apache.org/) experienced degraded performance:

HTTP code: 200
Response time: 463 ms

Resolved: ClamAV performance has improved in c81e035.


Fix two digit year parsing with YYYY format

Further to the discussion in #2344, this PR provides an alternative way to fix #2343.
I've had to delete one of the existing tests to get this to pass -- it seems that although a couple of people have agreed that the behaviour described in #2343 is unwanted, there was actually a test there to make sure it happened.

  I realise now that I should run grunt locally to preempt these problems, I guess I wasn't thinking.

Could you please rebase to squash the extra commits into the first one?  Thanks.

Merged in 768cfccbbe2e7c9d53f1e5d44e09b58fde6a5518

This change creates an unwanted behavior when a year beginning with 00 is received. For example, the year 0021 get's converted to 2021 when trying to format it with YYYY, and the year 0098 is converted to 1998. Is there any way on which I can avoid this conversion on this specific cases? I would like to have the years as they are: 0098 or 0021. Thanks!


chore: added restart actions for dbs/apps/drains

~proof~
tests

Pushed up a small design tweak @madhuravius


Use default FlutterActivity in non-plugin examples

Brings hello_world and flutter_gallery Android code in line with the
corresponding iOS code.

LGTM

I think we should revert this one. It doesn't really make sense.
We just spent some effort to get the examples to match what you get in a new project, and this is a step backwards. On the iOS side, the template is also being changed, but not in a way that removes the integration with the plugins (when they're added).
If there's a discrepancy between the Android/iOS code for these projects, we should bring both closer to the new project template, not away from it.

I think we should revert this one. It doesn't really make sense.

This is just a revert of the plugin-specific bits that I added in the last couple days. We ran into enough issues trying to get the examples in usable shape on the iOS side that I decided to do the migration piecewise -- get the worskpace files landed, and general shape of the projects to match but without the plugin/pods integration. This CL reverts simply brings the Android side into consistency with the iOS side. The goal is to eventually have the examples all include plugin support by default, once all the issues with the default template (covered in #9763) are addressed.
Until then, it seems inconsistent to include plugin support in these examples on one platform but not the other.

@cbracken that was the context I was missing! Thanks!


Canonicalize AccessPath.

Most classes Raksha generates that correspond to Datalog facts contain an AccessPath. This means that the contents of a single AccessPath are duplicated in many places throughout memory. We should canonicalize this somehow. There are a few ways we could imagine doing so:

Currently, an AccessPath is a std::vector of Selectors. The only Selectors we have created are FieldSelectors, each of which contains a std::string. Rather than having each Selector store its own std::string, we could instead put the strings in some sort of long-lived arena and put a absl::string_view in each Selector instead. While this would only canonicalize the strings within, and not the AccessPath itself, this would canonicalize most of the memory used by an AccessPath while minimally altering its current structure.

Rename what is currently AccessPath to CanonicalAccessPath, allocate that on some sort of long-lived arena, and have AccessPath contain only a pointer to a CanonicalAccessPath. This could be combined with option 1.

Currently, the Type tree points down to its children only. If Types also pointed to their parents, then we could have an AccessPath contain only a pointer to a type, and thus describe the path up the tree from that Type to its root. An AccessPath would then also need to contain an optional InstantiatedRoot field, describing the instantiated root that should be substituted for the spec root at which a type would be anchored. This would probably be the solution with the least memory footprint and where potentially-shared data moves around the least. Printing out the type would be a little more expensive, as it would have to traverse a linked list up the type tree, but would have the same asymptotic complexity as printing our current AccessPath's contained vector. Unless types were also canonicalized (hard to do in a system with type slicing) equality could be more complex as well, requiring O(N) comparisons to confirm equality. Because the parser enforces many desired uniqueness properties for us, though, this might not be a dealbreaker. It is, however, more complex and more disruptive than the other options, so this one is probably not worth it.

Just realized that canonicalizing the AccessPath directly might be a bit of a red herring . We might be better off canonicalizing the objects that contain the AccessPaths. Let’s go through the objects that contain AccessPaths:
For TagCheck and TagClaim, we could split the objects into a Decl and a Defn variant. The Decl can be stationary on a ParticleSpec (ParticleDecl?) and contain the full AccessPathSelectors. The Defns can contain substitute AccessPathRoots (which are fixed size, and quite small if we canonicalize the component strings) and otherwise point to the Decl they define.
Edges are a bit different: while we eventually want to create edge facts that link a leaf AccessPath to a leaf AccessPath, the way Arcs manifests (and, I imagine, other similar systems) are written, it’s very natural to draw a dataflow edge between inner types. Create an EdgeBundle class, which draws an edge between two TypeRefs at two AccessPathRoots. The TypeRefs can be expressed as pointers to stationary Types residing on structures such as HandleConnections or HandleConnectionSpecs.
Using the above scheme, we can make AccessPaths not duplicated in multiple locations without canonicalizing them directly (although, as mentioned, canonicalizing Selector strings is probably still a good idea).

We no longer have a strongly structured representation of an AccessPath in the IR. This was specific to the Arcs manifest frontend, which is now deprecated. Closing.


New-RubrikSnapshot fails for Nutanix VM

Current Behavior:
Provide information about the failure by issuing the command using the -Verbose command.
$4ahvlist is an array of 4 AHV IDs, and in the example below I reference the first one in the array. $SnapSLADomainName does get resolved to the expected SLA ID as you'll see in the output
PS C:\> $4ahvlist[0] | New-RubrikSnapshot -SLA $SnapSLADomainName -Verbose
VERBOSE: Validate the Rubrik token exists
VERBOSE: Found a Rubrik token for authentication
VERBOSE: Gather API Data for New-RubrikSnapshot
VERBOSE: Selected 1.0 API Data for New-RubrikSnapshot
VERBOSE: Load API data for
VERBOSE: Description: Create an on-demand snapshot for the given object ID
VERBOSE: Determining the SLA Domain id
VERBOSE: Validate the Rubrik token exists
VERBOSE: Found a Rubrik token for authentication
VERBOSE: Gather API Data for Get-RubrikSLA
VERBOSE: Selected 5.0 API Data for Get-RubrikSLA
VERBOSE: Load API data for
VERBOSE: Description: Retrieve summary information for all SLA Domains
VERBOSE: Build the URI
VERBOSE: URI = https://eri-rubrik.domain.local/api/v2/sla_domain
VERBOSE: Build the query parameters for primary_cluster_id
VERBOSE: Query = Found limit flag
VERBOSE: URI = https://eri-rubrik.domain.local/api/v2/sla_domain?primary_cluster_id=local&limit=9999
VERBOSE: Submitting the request
VERBOSE: GET https://eri-rubrik.domain.local/api/v2/sla_domain?primary_cluster_id=local&limit=9999 with 0-byte payload
VERBOSE: received 14346-byte response of content type application/json; charset=UTF-8
VERBOSE: Received HTTP Status 200
VERBOSE: Formatting return value
VERBOSE: Filter the results
VERBOSE: Filter match = Name
VERBOSE: Multiple URIs detected. Selecting URI based on NutanixVirtualMachine:::88e0f733-f7a2-456b-8956-e7530659dd2e-vm-65110faf-157e-4e92-a677-25b2badabc36
VERBOSE: Loading Nutanix API data
VERBOSE: List of set parameters: [SLA, domain Hyperion-SAP Servers] [Verbose, True] [id, NutanixVirtualMachine:::88e0f733-f7a2-456b-8956-e7530659dd2e-vm-65110faf-157e-4e92-a677-25b2badabc36] [SLAID, 6f673f0e-82fd-4bdb-b21a-d3896dec52e3]
VERBOSE: Build the body parameters
VERBOSE: Adding forceFullSnapshot...
VERBOSE: Adding slaId...
VERBOSE: Body = {
    "slaId":  "6f673f0e-82fd-4bdb-b21a-d3896dec52e3"
}
VERBOSE: Submitting the request
VERBOSE: POST https://eri-rubrik.domain.local/ with -1-byte payload
WARNING: The endpoint supplied to Rubrik is invalid. Likely this is due to an incompatible version of the API or references pointing to a non-existent endpoint. The URI passed was: https://eri-rubrik.domain.local
The remote server returned an error: (404) Not Found.
At C:\Users\User1\Documents\WindowsPowerShell\Modules\Rubrik\<IP_ADDRESS>9\Private\Submit-Request.ps1:64 char:21
+                     throw $_.Exception
+                     ~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OperationStopped: (:) [], WebException
    + FullyQualifiedErrorId : The remote server returned an error: (404) Not Found.

Expected Behavior:
Take a snapshot of the VM with the specified SLA.  The same approach works for VMware.
From comparing against the same step for Vmware ID, the URI isn't getting formed as expected:
VERBOSE: POST https://eri-rubrik.domain.local/ with -1-byte payload
If I do this for VMware, I see something like this instead:
VERBOSE: POST https://eri-rubrik.domain.local/api/v1/vmware/vm/VirtualMachine:::ff814ce8-7d7e-4280-b47b-f702f5bf349f-vm-281562/snapshot with -1-byte payload
We ended up leveraging Invoke-RubrikRESTCall to perform the same action instead.
Steps to Reproduce:
Please provide detailed steps for reproducing the issue.

Create a variable with an ID
Issue a snapshot request with New-RubrikSnapshot.

Context:

Rubrik PowerShell Module Version: Use Get-Module -ListAvailable Rubrik
PowerShell Version: Use Get-PSVersion
Operating System:

Failure Logs

Thanks so much @dewbrik  - you are bang on - there is something causing the URI to not be formed properly.
We will test out in our lab and have a look!  Thanks for filing this..
Mike

Addressed by #467

@dewbrik  - this has been merged into the master code branch now :)
Thanks 👍


Completion of error handling

Would you like to add more error handling for return values from functions like the following?

calloc ⇒ xtbuild
fopen ⇒ xtsave

I'll take a handle for xtload() for fopen. Not too concerned with calloc or fopen for writes failing.

I suggest to avoid ignorance of return values a bit more.
Would you like to detect every error situation as early as possible?

Okay, I'll pop in ecalloc() and efopen() wrappers

assertations for callocs and fopens were added instead

actually, now that I think about it, asserts can be disabled globally. efopen and ecalloc were added instead.

Thanks for your small source code improvement.
There are still more function calls to reconsider.


Build llvm_mode failed

Thank you for your great job! But I have occured a problem while building this fuzzer.
I cd llvm_mode and type make to build the llvm_mode, but error, the message is:
/usr/bin/ld: ../afl-llvm-rt.o: in function `Tlsh_new':
/home/ubuntu/stateafl/llvm_mode/tlsh/src/tlsh-wrapper.cpp:6: undefined reference to `operator new(unsigned long)'
/usr/bin/ld: /home/ubuntu/stateafl/llvm_mode/tlsh/src/tlsh-wrapper.cpp:6: undefined reference to `operator delete(void*)'
/usr/bin/ld: ../afl-llvm-rt.o: in function `Tlsh_delete':
/home/ubuntu/stateafl/llvm_mode/tlsh/src/tlsh-wrapper.cpp:46: undefined reference to `operator delete(void*)'
/usr/bin/ld: ../afl-llvm-rt.o: in function `Tlsh::Tlsh()':
/home/ubuntu/stateafl/llvm_mode/tlsh/src/tlsh.cpp:69: undefined reference to `operator new(unsigned long)'
/usr/bin/ld: /home/ubuntu/stateafl/llvm_mode/tlsh/src/tlsh.cpp:69: undefined reference to `operator delete(void*)'
/usr/bin/ld: ../afl-llvm-rt.o: in function `Tlsh::Tlsh(Tlsh const&)':
/home/ubuntu/stateafl/llvm_mode/tlsh/src/tlsh.cpp:74: undefined reference to `operator new(unsigned long)'
/usr/bin/ld: /home/ubuntu/stateafl/llvm_mode/tlsh/src/tlsh.cpp:74: undefined reference to `operator delete(void*)'
/usr/bin/ld: ../afl-llvm-rt.o: in function `Tlsh::~Tlsh()':
/home/ubuntu/stateafl/llvm_mode/tlsh/src/tlsh.cpp:80: undefined reference to `operator delete(void*)'
/usr/bin/ld: /usr/bin/ld: DWARF error: could not find variable specification at offset 7e2
/usr/bin/ld: DWARF error: could not find variable specification at offset 7ed
/usr/bin/ld: DWARF error: could not find variable specification at offset 87a
../afl-llvm-rt.o: in function `TlshImpl::~TlshImpl()':
/home/ubuntu/stateafl/llvm_mode/tlsh/src/tlsh_impl.cpp:88: undefined reference to `operator delete[](void*)'
/usr/bin/ld: /home/ubuntu/stateafl/llvm_mode/tlsh/src/tlsh_impl.cpp:89: undefined reference to `operator delete[](void*)'
/usr/bin/ld: ../afl-llvm-rt.o: in function `TlshImpl::reset()':
/home/ubuntu/stateafl/llvm_mode/tlsh/src/tlsh_impl.cpp:94: undefined reference to `operator delete[](void*)'
/usr/bin/ld: /home/ubuntu/stateafl/llvm_mode/tlsh/src/tlsh_impl.cpp:96: undefined reference to `operator delete[](void*)'
/usr/bin/ld: ../afl-llvm-rt.o: in function `TlshImpl::update(unsigned char const*, unsigned int)':
/home/ubuntu/stateafl/llvm_mode/tlsh/src/tlsh_impl.cpp:176: undefined reference to `operator new[](unsigned long)'
/usr/bin/ld: ../afl-llvm-rt.o: in function `TlshImpl::final(int)':
/home/ubuntu/stateafl/llvm_mode/tlsh/src/tlsh_impl.cpp:406: undefined reference to `operator delete[](void*)'
/usr/bin/ld: /home/ubuntu/stateafl/llvm_mode/tlsh/src/tlsh_impl.cpp:411: undefined reference to `operator delete[](void*)'
/usr/bin/ld: /home/ubuntu/stateafl/llvm_mode/tlsh/src/tlsh_impl.cpp:420: undefined reference to `operator delete[](void*)'
/usr/bin/ld: /home/ubuntu/stateafl/llvm_mode/tlsh/src/tlsh_impl.cpp:441: undefined reference to `operator delete[](void*)'
/usr/bin/ld: /home/ubuntu/stateafl/llvm_mode/tlsh/src/tlsh_impl.cpp:462: undefined reference to `operator delete[](void*)'
/usr/bin/ld: ../afl-llvm-rt.o: in function `TlshImpl::hash(int) const':
/home/ubuntu/stateafl/llvm_mode/tlsh/src/tlsh_impl.cpp:557: undefined reference to `operator new[](unsigned long)'
/usr/bin/ld: ../afl-llvm-rt.o:(.eh_frame+0xf97): undefined reference to `__gxx_personality_v0'
/usr/bin/ld: ../afl-llvm-rt.o:(.eh_frame+0x112f): undefined reference to `__gxx_personality_v0'
clang-11: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [Makefile:135: test_build] Error 1

My OS is CentOS.

I add -lstdc++ in the Makefile and rebuild, then solved it.


what is the alternative of load_data() in rasa 0.13 and above versions

Originally posted by @nuronics in https://github.com/RasaHQ/rasa_nlu/issues/720#issuecomment-437366263

not sure what you mean, this function still exists https://github.com/RasaHQ/rasa_nlu/blob/master/rasa_nlu/training_data/init.py#L10
Also please ask usage questions like this on our forum


Improved ButterKnife Implementation. Addressed #627

ButterKnife Version is updated to latest 8.4.0
Support Library Version is updated to latest version 24.2.0
ButterKnife is used in most parts of the app.

Current coverage is 11.15% (diff: 0.00%)

No coverage report found for development at 08d6525.

Powered by Codecov. Last update 08d6525...789823e


Bug fixing

Don't merge it now, there are other bugs to fix. Just push it here so that gradle builds won't fail.

Codecov Report

Merging #118 into master will increase coverage by 0.12%.
The diff coverage is 37.50%.

@@             Coverage Diff              @@
##             master     #118      +/-   ##
============================================
+ Coverage     60.63%   60.75%   +0.12%
- Complexity      540      542       +2
============================================
  Files           100      100
  Lines          1974     1975       +1
  Branches        232      232
============================================
+ Hits           1197     1200       +3
+ Misses          714      711       -3
- Partials         63       64       +1

Impacted Files
Coverage Δ
Complexity Δ

...address/logic/commands/project/AddTaskCommand.java
0.00% <0.00%> (ø)
0.00 <0.00> (ø)

...ddress/logic/commands/project/EditTaskCommand.java
0.00% <0.00%> (ø)
0.00 <0.00> (ø)

.../address/logic/commands/project/FilterCommand.java
55.55% <0.00%> (ø)
2.00 <0.00> (ø)

...ess/logic/commands/project/NewTeammateCommand.java
0.00% <0.00%> (ø)
0.00 <0.00> (ø)

...rc/main/java/seedu/address/model/ModelManager.java
100.00% <ø> (+1.66%)
28.00 <0.00> (ø)

...main/java/seedu/address/model/project/Project.java
81.25% <66.66%> (+2.02%)
32.00 <1.00> (+2.00)

.../address/logic/commands/project/AssignCommand.java
95.45% <100.00%> (ø)
10.00 <0.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 945972a...e9c6c36. Read the comment docs.


Add GUI for configuration of systemd service

Added a PySide GUI window for configuration of systemd user service.
The GUI is launched using using the --gui
mdd --gui

Systemd user service units are created when changing gui elements.
The data which will be sent is displayed in a preview pane using a monospace font.
Configuration and unit files

~/.config/mdd.conf (python dictonary)
~/.config/systemd/user/mdd.service
~/.config/systemd/user/mdd.timer

Clicking OK will post to the metrics-api - Cancel - do just that.
See pull request #18
A desktop file would look like
[Desktop Entry]
Version=1.0
Name=Manjaro Data Donor
Comment=Donate Basic System Info To Manjaro Linux Community
Exec=/usr/bin/mdd --gui
StartupNotify=true
Terminal=false
Type=Application

PR #18 closed


Add option to configure handler type for jdbc

druid.sql.avatica.type=[json/protobuf]

I love this feature.
According to @navis, this option can be used as follows :
jdbc:avatica:remote:url=http://localhost:8082/druid/v2/sql/avatica/;serialization=PROTOBUF


[UI5 2.x] Where do I find the typescript definitions for OpenUI5 V2 ?

Hi,
I followed this guide https://community.sap.com/t5/open-source-blogs/introducing-openui5-2-x/ba-p/13580633 to test my OpenUI5 based application with the nightly version of OpenUI5 V2.
Since I'm using typescript for my application, I was wondering where I could get the correct typescript definition for version 2. I couldn't find it in the usual place: https://www.npmjs.com/package/@openui5/types
Can you provide any information about the typescript definition for OpenUI5 V2 ?
Thanks,
Markus
OpenUI5 version:
v2 nightly

Hello @mofterdinger,
Thanks for your question!
The OpenUI5 2.0 is not yet published to npm, since it is not officially released.
Having this in mind, testing with the typescript definitions for 2.0 is not possible for the moment, since the version is still in development.
Kind Regards,
Yana


feat(define): Allow injection of route matching algorithm, default switch-path

In some cases I've wanted to inject my own matching algorithm (example:  I've created a custom reg-ex matcher for routes) and not use switch-path.  This PR allows users to inject when they define their routes.  I'm posting it for discussion and possibly for merge.

Cool, thanks for this. I'll merge this as I don't see any issues with this if you still want to after me asking a question. Are there alternatives to switch-path you see worth investigating first?
I'm not set on switch-path being what is used, just what I built this with via familiarity at the time

Another question, what do you think about having a "bring your own route matcher" only?
makeRouterDriver(history, matchFn)

I haven't investigated alternatives to switch-patch other than writing my own since my needs were pretty basic (reg-ex and array priority ordering for routes) so my function was pretty trivial to write.  It does look like solid alternatives exist like https://github.com/rcs/route-parser  Also, I liked injection (as opposed to investigating/proposing an alternative) since it's an easy first step which could lead to a switch without getting into the broad discussion of pros and cons of different libs.
I like the idea of "bring your own route matcher" only.  If you're cool with it, we can discuss and I can change the PR accordingly.

There is also https://github.com/cerebral/url-mapper for instance.
I think I'm in favor of BYOM (bring your own matcher). If we can get semi decent typings I'm sold.

I've posted an update, critiques welcome.

Thanks @ntilwalli great PR LGTM

Published as v3.0.0


Using the @iot-app-kit/* in version 10.2.0 after migration from 9.15.0 the visualisation interrupts.

Describe the bug
When using the @iot-app-kit/* in version 10.2.0 after migration from 9.15.0 the visualisation interrupts.
Pls. see the screenshots below.
To Reproduce
Steps to reproduce the behavior:
Build plugin using the following dependencies:
{
  "dependencies": {
    "@angular/animations": "^16.2.0",
    "@angular/cdk": "^16.2.11",
    "@angular/common": "^16.2.0",
    "@angular/compiler": "^16.2.0",
    "@angular/core": "^16.2.0",
    "@angular/forms": "^16.2.0",
    "@angular/platform-browser": "^16.2.0",
    "@angular/platform-browser-dynamic": "^16.2.0",
    "@angular/router": "^16.2.0",
    "@angular/upgrade": "^16.2.0",
    "@aws-sdk/client-iottwinmaker": "^3.569.0",
    "@aws-sdk/credential-providers": "^3.569.0",
    "@c8y/bootstrap": "1019.21.1",
    "@c8y/client": "1019.21.1",
    "@c8y/devkit": "1019.21.1",
    "@c8y/ngx-components": "1019.21.1",
    "@c8y/style": "1019.21.1",
    "@iot-app-kit/components": "10.2.0",
    "@iot-app-kit/core": "10.2.0",
    "@iot-app-kit/react-components": "10.2.0",
    "@iot-app-kit/scene-composer": "10.2.0",
    "@iot-app-kit/source-iottwinmaker": "10.2.0",
    "@ngx-formly/core": "^6.3.0",
    "@ngx-translate/core": "14.0.0",
    "ngx-bootstrap": "11.0.2",
    "react": "^18.2.0",
    "react-dom": "^18.2.0",
    "react-router-dom": "^6.22.0",
    "rxjs": "~7.8.1",
    "three": "^0.151.3",
    "util": "^0.12.5",
    "zone.js": "~0.13.0"
  },
}

produces a Cumulocity plugin where the current datapoint disappear while being refreshed.
In the screenshot below the values for Wind Speed, Power Actual, Power Actual disappear every 1 second for a short while and overlay (linear, rotation) turn white.
The same works when using:
{
  "dependencies": {
    "@angular/animations": "^16.2.0",
    "@angular/cdk": "^16.2.11",
    "@angular/common": "^16.2.0",
    "@angular/compiler": "^16.2.0",
    "@angular/core": "^16.2.0",
    "@angular/forms": "^16.2.0",
    "@angular/platform-browser": "^16.2.0",
    "@angular/platform-browser-dynamic": "^16.2.0",
    "@angular/router": "^16.2.0",
    "@angular/upgrade": "^16.2.0",
    "@aws-sdk/client-iottwinmaker": "^3.569.0",
    "@aws-sdk/credential-providers": "^3.569.0",
    "@c8y/bootstrap": "1019.21.1",
    "@c8y/client": "1019.21.1",
    "@c8y/devkit": "1019.21.1",
    "@c8y/ngx-components": "1019.21.1",
    "@c8y/style": "1019.21.1",
    "@iot-app-kit/components": "9.15.0",
    "@iot-app-kit/core": "9.15.0",
    "@iot-app-kit/react-components": "9.15.0",
    "@iot-app-kit/scene-composer": "9.15.0",
    "@iot-app-kit/source-iottwinmaker": "9.15.0",
    "@ngx-formly/core": "^6.3.0",
    "@ngx-translate/core": "14.0.0",
    "ngx-bootstrap": "11.0.2",
    "react": "^18.2.0",
    "react-dom": "^18.2.0",
    "react-router-dom": "^6.22.0",
    "rxjs": "~7.8.1",
    "three": "^0.151.3",
    "util": "^0.12.5",
    "zone.js": "~0.13.0"
  },
}

Expected behavior
The update of datapoints in the scene using 10.2.0 should not interrupt. The update of  in 9.15.0
Screenshots
Interruption using 10.2.0:

Works using 9.15.0:

Thank you for reporting, I have moved this to our backlog.

Hi @sagIoTPower,
Could you provide more detail of the observation?
1/ The issue relates with dataoverlay, correct?
2/ There is a refresh logic to update data for each 1 second, correct?
3/ With iot-app-kit 9.15.0, "values for Wind Speed, Power Actual, Power Actual" looks smooth and constantly updating with latest value, correct?
4/ With iot-app-kit 10.2.0, "Wind Speed, Power Actual, Power Actual disappear every 1 second for a short while and overlay (linear, rotation) turn white", correct?
4.1/ Does above value come back with correct value as version 9.15.0 does, but disappears shortly?
4.2/ Does the issue repeat for every 1 second? Or it is constantly turn white all the time?

Hi @cshang2017,
Could you provide more detail of the observation?
1/ The issue relates with dataoverlay, correct?

Yes, it is only related to overlays. The glb image is always rendered correctly.

2/ There is a refresh logic to update data for each 1 second, correct?

Yes, the values are updated every 1 sec

3/ With iot-app-kit 9.15.0, "values for Wind Speed, Power Actual, Power Actual" looks smooth and constantly updating with latest value, correct?

Yes, that is the case.

4/ With iot-app-kit 10.2.0, "Wind Speed, Power Actual, Power Actual disappear every 1 second for a short while and overlay (linear, rotation) turn white", correct?
4.1/ Does above value come back with correct value as version 9.15.0 does, but disappears shortly?

Yes, the correcty values and the display come back for a short time an then turn white again

4.2/ Does the issue repeat for every 1 second? Or it is constantly turn white all the time?

It repeat every 1 sec. Then the values in the overlays are rendered correctly for a short moment and then turn white again.

If I may add, I use Angular and wrap the react components:
@Component({
  selector: "twinmaker-sceneviewer",
  standalone: true,
  imports: [CommonModule, CoreModule, ReactComponentDirective],
  encapsulation: ViewEncapsulation.None,
  template: `

  `,
})

We reverted the zustand version in the recent release, can you check if you still experience this bug in the latest version of the package?

Issue should be fixed by previous comment.
Feel free to reopen if further assistance is needed 🙏


Uncaught Error: Failed to get page http://ip.bablosoft.com/?requestid=53341 with HttpClient

it work fine for a long time util today i got error Uncaught Error: Failed to get page http://ip.bablosoft.com/?requestid=53341 with HttpClient

Greetings, apparently you have local problems accessing the default IP information service - maybe your provider started blocking it or something like that.
In any case, there is a workaround - you can use the ip-api service by specifying the appropriate settings when installing the proxy.

thanks! I found it's because my proxy is blocked.


Check lookup tables for values before ChemicalDomains

Fixes #144
Changes made in this Pull Request:

PR Checklist

[ ] Tests?
[ ] Docs?
[ ] CHANGELOG updated?
[ ] Issue raised/referenced?

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 63.66%. Comparing base (1d7e4ff) to head (92d3ccf).

:exclamation:  There is a different number of reports uploaded between BASE (1d7e4ff) and HEAD (92d3ccf). Click for more details.
HEAD has 51 uploads less than BASE

Flag
BASE (1d7e4ff)
HEAD (92d3ccf)

52
1

Additional details and impacted files


Textures occasionally flash white during texture switching

See
https://vimeo.com/user28693218
at 00:17 (the post)
at 00:24 (picture on wall above wine rack)
at 01:02 (sign on fence)
at 01:36 (vertical pipe on left side of steam engine)
This may be an NVidia driver bug, because it's been reported in other programs.
See:

https://www.nvidia.com/en-us/geforce/forums/geforce-graphics-cards/5/227707/antialiasing-issuetexture-flickeringtexture-pop-in/
https://community.secondlife.com/forums/topic/478264-viewer-performance-improvements/

It might be useful to take the textured cube example and have it switch between multiple copies of the same texture at a high rate to see if this can be replicated with a simple test case.

Interesting, last time I did that with the cube example I didn't see anything on my nvidia card, but I'll recheck.

Going to close, please re-open if it's still an issue.


ENHANCED - Show steps for calculation in 9s and 10s complement

Related Issuse

No steps were shown for 9's and 10's complement calculation

Closes: #772
Describe the changes you've made
Added required functionality to code base by making appropriate changes to index.html and logicjavascript.js
Checklist:

[x] My code follows the style guidelines of this project.
[x] I have performed a self-review of my own code.
[x] I have commented my code, particularly in hard-to-understand areas.
[ ] I have made corresponding changes to the documentation.
[x] My changes generate no new warnings.

Screenshots

Original
Updated

original screenshot
updated screenshot

Sir @sairish2001 ,
Again there was same blank spaces error. Coflict has been resolved successfully

After resolving the conflict it showing, only one line of deletion and 0 lines of addition.
Check whether your changes reflect in this PR

Here is the code proof as can be seen under commits tab


Handle trailing body end-of-line comments

Summary
This PR adds custom logic to handle end-of-line comments of the last statement in a body.
For example:
while True:
    if something.changed:
        do.stuff()  # trailing comment

b

The # trailing comment is a trailing comment of the do.stuff() expression statement. We incorrectly attached the comment as a trailing comment of the enclosing while statement  because the comment is between the end of the while statement (the while statement ends right after do.stuff()) and before the b statement.
This PR fixes the placement to correctly attach these comments to the last statement in a body (recursively).
Test Plan
I reviewed the snapshots and they now look correct. This may appear odd because a lot comments have now disappeared. This is the expected result because we use verbatim formatting for the block statements (like while) and that means that it only formats the inner content of the block, but not any trailing comments. The comments were visible before, because they were associated with the block statement (e.g. while).

Current dependencies on/for this PR:

main

PR #4811   👈

This comment was auto-generated by Graphite.

@MichaReiser started a stack merge that includes this pull request via Graphite.


Easier setup of the settings during installation

As an administroatr i have an easy and bullet-proof method to adjust the settings of the django project to enable the functionality of the koalixcrm

I think with the previous commit, the installation is not yet bullet prove but is much more robust compared to the situation with the hard-coded fop-executable.
Still there is an issue with the templates that need to be installed.
One of the templates has even hard-coded references to the font config-files

to close the issue, the installation of the templates with ./mange.py koalixcrm_install_defaulttemplates must be updated


Google layers and markers not showing on Safari (12.1)

I have developed map by using leaflet version (1.7.1) and all maps, layers and markers work as expected on Chrome, Edg but not on iphone(Safari - tested on v 12.1), There is no any errors show up in console at all and all markers are available in html elements section (refer to attached  screen shoot) however the layer is not displayed and markers as well!, since there is no error; I find my self unable to debug this issue and that's why I'm seeking for your support
Steps to reproduce
1- Screen shoot from Safari console is attached for your reference
2- please find the code :
<head>
<!-- leaflet map scripts -->
        <link rel="stylesheet"<EMAIL_ADDRESS>    integrity="sha512-xodZBNTC5n17Xt2atTPuE1HxjVMSvLVW9ocqUKLsCC5CXdbqCmblAshOMAS6/keqq/sMZMZ19scR4PsZChSR7A=="
    crossorigin=""/>

        <!-- Make sure you put this AFTER Leaflet's CSS -->
        <script<EMAIL_ADDRESS>    integrity="sha512-XQoYMqMTK8LvdxXYG3nZ448hOEQiglfqkJs1NOQV44cWnUrBc8PkAOcXy20w0vlaXaVUearIOBhiXZ5V3ynxwA=="
    crossorigin=""></script>
</head>

<body>
<script>

var driver_icon = L.icon({
    iconUrl: '/media/load/driver_icon.png',
    // shadowUrl: 'leaf-shadow.png',

    iconSize:     [30, 40], // size of the icon
    shadowSize:   [10, 10], // size of the shadow
    iconAnchor:   [22, 94], // point of the icon which will correspond to marker's location
    // shadowAnchor: [4, 62],  // the same for the shadow
    popupAnchor:  [-3, -76] // point from which the popup should open relative to the iconAnchor
});

var pickup_icon = L.icon({
    iconUrl: '/media/load/pickup_arrow.png',
    // shadowUrl: 'leaf-shadow.png',

    iconSize:     [30, 40], // size of the icon
    // shadowSize:   [50, 64], // size of the shadow
    iconAnchor:   [22, 94], // point of the icon which will correspond to marker's location
    // shadowAnchor: [4, 62],  // the same for the shadow
    popupAnchor:  [-3, -76] // point from which the popup should open relative to the iconAnchor
});

var dropoff_icon = L.icon({
    iconUrl: '/media/load/dropoff_arrow.png',
    // shadowUrl: 'leaf-shadow.png',

    iconSize:     [30, 40], // size of the icon
    // shadowSize:   [50, 64], // size of the shadow
    iconAnchor:   [22, 94], // point of the icon which will correspond to marker's location
    // shadowAnchor: [4, 62],  // the same for the shadow
    popupAnchor:  [-3, -76] // point from which the popup should open relative to the iconAnchor
});

$(function getLocation() {
  let lat;
  let lon;
  if (navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(showPosition,errorCallback);
  }
  else {
    console.log("location service is blocked on this device");
  }

  function errorCallback(error) {
    if (error.code == error.PERMISSION_DENIED) {

      $(function myFunction() {
      if (navigator.userAgent.indexOf("Chrome") != -1 ) {
       if (window.confirm("Unfortunately, You can't use map view because Location service is blocked on this device,Please click ok to follow the steps of enabling location service!"))
       {
        window.open("https://support.google.com/chrome/answer/142065?hl=en&co=GENIE.Platform%3DAndroid&oco=1");
       }
       else {
       window.location.href = "{% url 'Load_List_Carrier' %}";
       }
      }
      else if(navigator.userAgent.indexOf("Safari") != -1)
      {
      if (window.confirm("Unfortunately, You can't use map view because Location service is blocked on this device,Please click ok to follow the steps of enabling location service!"))
       {
        window.open("https://support.apple.com/en-ae/guide/mac-help/mh35873/mac");
       }
       else {
      window.location.href = "{% url 'Load_List_Carrier' %}";
      }
    }

      })
    }
}

 function showPosition(position) {
  lat = position.coords.latitude.toString();
  lon = position.coords.longitude.toString();
  console.log("lat1",lat,"lon1",lon);

mymap = L.map('mapid').setView([lat, lon], 16);
  layerGroup = L.layerGroup().addTo(mymap);
  L.tileLayer('http://{s}.google.com/vt/lyrs=s&x={x}&y={y}&z={z}',{
    maxZoom: 20,
    subdomains:['mt0','mt1','mt2','mt3']
}).addTo(mymap);

$(function watchLocation() {
  // let lat;
  // let lon;
  if (navigator.geolocation) {
    navigator.geolocation.watchPosition(currentPosition);
  } else {
    console.log("Geolocation is not supported by this browser.");
  }

 function currentPosition(position) {
  lat = position.coords.latitude.toString();
  lon = position.coords.longitude.toString();
  console.log("lat2",lat,"lon2",lon);
  if (mymap !== undefined && mymap !== null){
                 mymap.remove();
             }
  mymap = L.map('mapid').setView([lat, lon], 16);
  layerGroup = L.layerGroup().addTo(mymap);
  L.tileLayer('http://{s}.google.com/vt/lyrs=s&x={x}&y={y}&z={z}',{
    maxZoom: 20,
    subdomains:['mt0','mt1','mt2','mt3']
}).addTo(mymap);
  driver_marker = new L.Marker([lat,lon],{icon: driver_icon},{draggable:false}).addTo(layerGroup).bindPopup(`<b style="font-size:8px;">Hello {{user.first_name}}!This is your current location<br>Click on load icons to view their details and send your quotations<br>Good Luck!.</b>`).openPopup();

let loads_pickup = `${{coordinates_pickup}}`;
loads_pickup = loads_pickup.replace("$","");
loads_pickup = loads_pickup.replace("[","");
loads_pickup = loads_pickup.replace("]","");
loads_pickup = loads_pickup.replace(/'/g,"");
let l1 = loads_pickup.split("N");
let pickup = [];
let match_pickup = 1;
let marker_pickup = [];
let slug_pickup = []
for (let i = 0; i < l1.length - 1; i++){
    let load_pickup = l1[i].replace(", ","").split(",");
    lat_pickup = load_pickup[0];
    lan_pickup = load_pickup[1];
    slug_pickup[i] = load_pickup[2];
    if (pickup.includes(lat_pickup)) {
        lat_pickup = parseFloat(lat_pickup);
        lat_pickup += 0.0001 * match_pickup;
        match_pickup += 1;
      }
    if (pickup.includes(lan_pickup)) {
        lan_pickup = parseFloat(lan_pickup);
        lan_pickup += 0.0001 * match_pickup;
        match_pickup += 1;
        }
    pickup.push(lat_pickup,lan_pickup);
    marker_pickup[i] = new L.Marker([lat_pickup,lan_pickup], {icon: pickup_icon},{draggable:false}).addTo(layerGroup).on('click', function(e) {

      window.open("{% url 'LoadDetailViewCarrier' slug=1234 %}".replace(/1234/, slug_pickup[i]), "_blank", "toolbar=yes,scrollbars=yes,resizable=yes,top=500,left=500,width=300,height=500");
        });
    }
console.log(marker_pickup);
console.log("match pickup",match_pickup);
console.log(pickup.length);
console.log(pickup);

let loads_dropoff = `${{coordinates_dropoff}}`;
loads_dropoff = loads_dropoff.replace("$","");
loads_dropoff = loads_dropoff.replace("[","");
loads_dropoff = loads_dropoff.replace("]","");
loads_dropoff = loads_dropoff.replace(/'/g,"");
let l2 = loads_dropoff.split("N");
let dropoff = [];
let match_dropoff = 1;
let marker_dropoff = [];
let slug_dropoff = [];
for (let i = 0; i < l2.length - 1; i++){
    let load_dropoff = l2[i].replace(", ","").split(",");
    lat_dropoff = load_dropoff[0];
    lan_dropoff = load_dropoff[1];
    slug_dropoff[i] = load_dropoff[2];
    if (dropoff.includes(lat_dropoff)) {
        lat_dropoff = parseFloat(lat_dropoff);
        lat_dropoff += 0.0001 * match_dropoff;
        match_dropoff += 1;
      }
    if (pickup.includes(lan_dropoff)) {
        lan_dropoff = parseFloat(lan_dropoff);
        lan_dropoff += 0.0001 * match_dropoff;
        match_dropoff += 1;
        }
    dropoff.push(lat_dropoff,lan_dropoff);
    marker_dropoff[i] = new L.Marker([lat_dropoff,lan_dropoff], {icon: dropoff_icon},{draggable:false}).addTo(layerGroup).on('click', function(e) {
      window.open("{% url 'LoadDetailViewCarrier' slug=1234 %}".replace(/1234/, slug_dropoff[i]), "_blank", "toolbar=yes,scrollbars=yes,resizable=yes,top=500,left=500,width=300,height=500");
        });
}
console.log("match dropoff",match_dropoff);
console.log(dropoff.length);
console.log(dropoff);
}
})
 }
})

 </script>

Expected behavior
display layer and markers
Current behavior
only map and current location marker is displayed
Environment

Leaflet version: 1.7.1
Browser (with version): Safari 12.1
OS/Platform (with version): IOS

Additional context
this code is developed in Django framework
Minimal example reproducing the issue
Please create an example using https://leafletjs.com/edit.html or any other jsfiddle-like site.

[ ] this example is as simple as possible
[ ] this example does not rely on any third party cod

e

Unfortunately we can't help with these kinds of problems since it doesn't appear to be a Leaflet issue. Also note that using Google tiles like this is forbidden by their terms of use — you should use https://gitlab.com/IvanSanchez/Leaflet.GridLayer.GoogleMutant instead.


384,601

Well, it is unmergeable obviously. But I'm pretty certain, you can bring that down even lower.
0x00fAD9428B29872fc68E2f3711E5F3532b74e3ea

I'll be back


Enhancement/plotting: 10-color scheme added

The official CMS 10-color scheme is added.
Depending on the number of processes to plot in the histogram either the 6- or 10-color scheme is chosen.
If there are more then 10 processes to plot, a warning is printed.

Thanks @felixzinn !


Leshan BS DTLS_Server boot incorrect error

The BS_DTLS server will deliver the BS server, which will cause the client to frequently connect to the BS. This is incorrect. In the comparison test, we tried to connect to the ATT platform. We parsed the COAP packet and found that the BS delivered the DM server, not the BS server.

What are you using at client and server side exactly ? are you using leshan library or leshan demo or something else ? which verison ?
I will also need a better/precise explanation about what you achieve because I don't get you at all.  :confused:
If you have a wireshark/tcpdump capture this could help to understand too.

The client uses an IoT module, and the module itself supports the LWM2M protocol.
The server address is: https://leshan.eclipseprojects.io/bs
We open the server, add a BS client to the server, and the module writes the added configuration file to initiate registration to the leshan server. This is my test process.we also grabbed the wireshark packet. From the packet point of view, the object 0/0 sent by the BS server is still the BS server, which is incorrect. I don’t think it should be sent to the BS server repeatedly.
Attached is the wirshark file:
connected to leshanBS-wireshark.zip

you don't use DTLS at all
the BS provides 2 server, /0/0 the BS server itself, /0/1 the DM server
it's your device, which restarts the bootstrap

Why your module keeps on bootstrapping is left to your module. Maybe you can check the logs there.

Thank you, there is another question, how to modify the BS java file in the leshan-master project to ensure that only the DM server is delivered, not the BS server

Without BS your device may get dead. You won't have a chance to redo a bootstrap, e.g. in case where credentials are changing.
maybe you better fix the iot module.

Maybe I missed something but just use the wizard  :thinking: :

Without BS your device may get dead.

This depends a lot about how much the device follow the spec. Theoretically it should not erase the bs server on delete /0.
So previous bs server should be kept.
But the specification does prevent you to override it with a WRITE. (I still don't understand the point of the spec here :disappointed:)
I try to explain this in the wizard UI :

A LWM2M Bootstrap Session generally starts by deleting part of the existing configuration on the LWM2M client.
By default, objects /0 and /1 are deleted, then you will be able to define LWM2M Server and LWM2M Bootstrap Server to add.
Note that Security /0 Object Instance storing LWM2M Bootstrap server data can not be deleted using Delete Request.
Adding Security instance without knowing the Instance ID of Bootstrap Server could lead to some unexpected behavior (see >OMA#522, OMA#523).
By default, this wizard use the convention that LWM2M Bootstrap Server Security instance ID is 0.
If your client don't use this convention, you can use autoIdForSecurityObject=true and so Leshan will start the Bootstrap >session with a Discover request to know which Security instance ID is used for the Bootstrap Server.

"autoIdForSecurityObject=true" in which file is this modified, I didn't find it

hello，does Leshan have API interface documentation? I want to query the data reported by the client to the server

I'm not sure to get the point.

I want to query the data reported by the client to the server

This issue is about bootstrap server and during a bootstrap session this is rather the server which send data to the client..
I don't get which API you are talking about.
If this is java API, there is nothing more than getting started and the javadoc.
If this is about server demos, see :

https://github.com/eclipse/leshan/wiki/F.A.Q.#could-i-reuse-leshan--demo-
https://github.com/eclipse/leshan/wiki/F.A.Q.#is-there-a-rest-api-for-leshan-server-demo-

Hello, Client sends data to the leshan server, and it will be rejected by the server probabilistically. May I ask why? The server has subscribed and the client also responded. The first packet of data was successfully sent. After a while, the sent data was rejected by the server.

rst-leshan.zip
I also confirmed that the IP has not changed

I found that the probability of the server sending RST messages is quite high. What is the server doing? I frequently receive RST messages from the server.

In my experience, such RST for CON notifies are mainly caused by address changes. The nasty side of that is, that sometimes it's not the client, which changes the address, it's a component on the ip-route/path. Especially for RFC7641 (observe/notify), that precondition of stable ip-addresses too frequently turns out to fail for longer periods. To have a tool to detect such change, Eclipse/Californium has a "myip" resource, that respond with the client's ip-address visible to the server. Not sure, if the leshan project has interest to add that (it's out of scope of lwm2m, I only use it for diagnose), otherwise you may use coap and the Eclipse/Californium "californium.eclipseprojects.io" sandbox to find out, if something changes your address. Use
GET coap://californium.eclipseprojects.io/myip
???.???.193.130:28???

and repeat that after such a quite period.
For Californium (in divergence and not compliant to RFC7252/RFC7641) we added therefore "scoped tokens", using them may help to overcome that. It requires additional an endpoint-context-matcher. For DTLS such a endpoint matching could be done using the principal, for plain UDP I guess, the used matcher will withdraw the notification and therefore send a RST.
(I would recommend, that you start using DTLS. And, maybe setup your own leshan sandbox.)

What do you mean, if I use DTLS, I won't get the RST problem from the server?

That depends on the used EndpointContextMatcher, so it's a question to the leshan team, which one the sandbox is using. And, if (upcoming) RFC9146 is not used, that usually requires a (resumption) handshake. In the past there have been a lot of discussion about RFC7252 9.1.2, I'm not sure, what the outcome in LwM2M about that was.

But first, I would recommend, that you check, if your client's address is really changed on the path. Hope you client is able to execute coap GET requests.

I just connected to the leshan server using DTLS. After I sent a packet of data, I waited 5 minutes before sending the data. The server did not send an RST message. I still hope that the leshan team can optimize the non-DTLS scenario.
The server I am currently using: https://leshan.eclipseprojects.io/

I still don't get how those question are related to this issue named  "Leshan BS DTLS_Server boot incorrect error":

hello，does Leshan have API interface documentation? I want to query the data reported by the client to the server

Client sends data to the leshan server, and it will be rejected by the server probabilistically. May I ask why? The server has subscribed and the client also responded. The first packet of data was successfully sent. After a while, the sent data was rejected by the server.

So, please next time open 1 issue by subject ...

I also think your last issue is about device IP changing (probably because of NAT or something like this)

I still hope that the leshan team can optimize the non-DTLS scenario.

No this is not about optimization this is about following or not the RFC(s).
Here some documentation to read to better understand this :

https://github.com/eclipse/leshan/wiki/LWM2M-Observe#my-device-receive-rst-coap-message-
https://github.com/eclipse/leshan/wiki/LWM2M-Observe#requestnotifications-matching

The server did not send an RST message

That may be also caused by just dropping your notification. So is the changed data shown in the leshan Web UI?

服务器没有发送 RST 消息

这也可能是由于仅删除您的通知造成的。那么乐山Web UI中显示的数据是变化的吗？

Yes，Data is changing in real time

Just to mention:
In my experience, using plain coap (without dtls) is not recommended for the public internet.
It is more common in private networks with less security considerations/constraints. e.g. a NB-IoT device and a vpn-ip-tunnel to your server. But not for general.

Could we close this one ?

yes. thanks a lot

You're welcome

Dear leshan：
When I read and write object resources through the northbound API interface, request timeouts frequently occur.
Is this problem caused by frequent requests to the server, or is it caused by too small network bandwidth?
Thanks & Best Regards,
吴延平  Davis Wu | Software Testing Engineer | Quectel Wireless Solutions Co., Ltd.
Mobile: +86-187 1500 1062 | Email<EMAIL_ADDRESS>| Tel: +86-551-65869386*8380
Website: www.quectel.comhttp://www.quectel.com/  | Wechat: wuyan1404618543
Building 1-C, China Speech Valley Area A, 3335 Xiyou Road, High-tech Zone, Hefei, Anhui 230088, China
安徽省合肥市高新区习友路3335号中国（合肥）国际智能语音产业园A区1号中试楼  230088
[6857b0ea042d04a447fdac6d7fa12cd2]
From: Simon @.>
Sent: Friday, February 11, 2022 5:13 PM
To: eclipse/leshan @.>
Cc: Davis Wu(吴延平) @.>; Author @.>
Subject: Re: [eclipse/leshan] Leshan BS DTLS_Server boot incorrect error (Issue #1199)
You're welcome
—
Reply to this email directly, view it on GitHubhttps://github.com/eclipse/leshan/issues/1199#issuecomment-1036006050, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AXKU2SDBKY2ZX7G4AYNFAFDU2THLNANCNFSM5MDUUSLA.
Triage notifications on the go with GitHub Mobile for iOShttps://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Androidhttps://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.
You are receiving this because you authored the thread.Message ID<EMAIL_ADDRESS>


Add include path for LV2

I'm trying to package Ratatouille for Flatpak and this was the first hurdle.

Usually pgk-config lv2 comes out empty and the lv2 header been found in the system include path. If it does something for a flatpack build, I think it is better to keep it as a patch there.

That's fair, I can do that. But... why do that only for the LV2 headers? Libsndfile, Cairo, etc. appear to bell handled by pkg-config as well.

lv2 isn't a library, it's "just" a set of header files, so it doesn't comes with a lv2.pc file. cairo and sndfile does that and implement this way there own dependencies. For example cairo gives:
pkg-config --cflags --libs cairo
-I/usr/include/cairo -I/usr/include/libpng16 -I/usr/include/freetype2 -I/usr/include/pixman-1 -lcairo

while
pkg-config --cflags --libs lv2
return empty with regular lv2 instalation. So, when adding lv2 to the pkg-config flags helps on flatpack, flatpack would properly added a pc file for lv2.
The usual way to use the lv2 headers is to just include them via the include path of the host system, no linking is needed, hence no ldfalgs to add.

I'll have to noodle on this a bit, but it makes sense. Thanks for the explanation, and for your patience. :)


v1.0 release versions seems not to be working

I downloaded the Raspberry Pi 2 image, used balenaEtcher to write it to the SD card. Then I had tried booting it in Raspberry Pi 4 , but all I got is just a black screen, I also tried to boot it in Raspberry Pi 2, but it just hangs with the rainbow screen. Both versions were tried (sysupgrade and the other one). Later on, I have tried using another software for writing to SD – Win32DiskImager. But that didn‘t helped. To make sure that this is not related to my machine, I used other computers to write to the card, but the effect is the same.
Some additional information
•	OS that I use: Windows 10
•	Size of the SD cards I‘ve tried to write to: 64 GB and 16 GB
I‘ve also tried VDI image with VirtualBox (version 6.1.4 r136177). It gets to the GRUB loader, but after this, it just crashes. From what I can see from logs, It looks like that it results in critical error when trying to boot the kernel.
I’ve also downloaded VMware to check if this would work, but unfortunately this seems to be not working also. After the grub loader screen, it starts booting, but at some point (crng init done), it just hangs. I’ve waited for about 40 minutes, but nothing progressed.

Sorry to hear you are having trouble. When virtualbox exits during the decompression of the Linux Kernel, it is usually do to PAE/NX being disabled in the virtual machine settings. Try navigating to Machine > Settings > System > Processor > Enable PAE/NX. Also ensure when creating the virtual machine, select Type: Linux > Version: Linux 2.6 / 3.x / 4.x (32-bit).

I have went ahead and tested these settings for the vdi and vmdk using Windows 10, Ubuntu 18.04 LTS, and MacOS boxes. Screenshots are below with OS and VBox versions.
I will have to perform additional tests for Raspberry pi this week and will follow up with any additional procedures. Thanks for reporting.
Windows 10

VMDK

VDI
MacOS

VMDK

VDI
Ubuntu 18.04

VDI

VMDK

Thank you, with the configuration you provided, VDI amd VMDK boots just fine without errors. I realized that I need to hit enter at this point, otherwise it will just hang forever 😊:

Anyway, is there anything I need to configure additionally in order to access IoTGoat? It seems that it is not accessible by the br-lan IP:

Unsure of the root issue thats causing the NAT interface to be inaccessible from the host. Try switching the network interface to bridged adapter which should work fine (No issues on my end).
With VMWare, NAT works by default.

Thank you, finally I've managed to launch it 💯 With the VDI image, using bridged adapter didn't helped, but VMDK with bridged adapter works just fine.

Hello. Have you been able to test the project in a raspberry pi? I want to try this project, but I need to know if it works before buying the raspberries (virtualization is not an option).
Also, would it work on a pi 4, or do I have to purchase a pi 2? Thanks in advance

Hello. Have you been able to test the project in a raspberry pi? I want to try this project, but I need to know if it works before buying the raspberries (virtualization is not an option).
Also, would it work on a pi 4, or do I have to purchase a pi 2? Thanks in advance

Hi, the current version of OpenWRT, that the project is using, is not compatible with Pi 4, but it works on Pi 2, I've managed to run it.

谢谢，我终于成功启动了 💯 对于 VDI 映像，使用桥接适配器没有帮助，但使用桥接适配器的 VMDK 工作正常。

请问的vmware是怎么设置，启动了vmdk

@Radv1la I was trying to flash the SD card with the provided image using the Raspberry pi imager.
but i am getting an error "3306530 bytes in not a multiple of 512 bytes".
I tried to flash using roofus also , but getting the rainbow display.
Any solution ??


Fix: Manually building AAB via menu does not work #5

For AssetPackBuilder line 48, shouldn't it be Path.GetFileNameWithoutExtension as to get rid of the .bundle?


Update OpenGitOps Chairs

Per voting and governance: https://lists.cncf.io/g/cncf-tag-app-delivery/topic/gitops_wg_co_chair_voting/88730547?p=,,,20,0,0,0::recentpostdate/sticky,,,20,2,0,88730547,previd=1643326631408951757,nextid=1617389664921586464&previd=1643326631408951757&nextid=1617389664921586464

Welcome aboard @chris-short! 🎉 🙇
Will send the list email announcement right after merging this PR.


contenthash changing even though file remains identical

This issue was opened because https://github.com/webpack/webpack/issues/7984 was closed saying it's been fixed even though many people have reported that it has definitely not been fixed.
Bug report
	output: {
		filename: 'file-[contenthash].js',
		chunkFilename: 'chunk-[contenthash].js'
	},
        optimization: {
        	splitChunks: {
		chunks: 'all',
		cacheGroups: {
				vendors: {
					test: /[\\/]node_modules[\\/]/,
				},
			},
		},
       }

What is the current behavior?
If I have the above config, in my build I get a file called file-XXX.js and chunk-XXX.js. If I change the config line from chunkFilename: 'chunk-[contenthash].js' to chunkFilename: 'CHUNK-[contenthash].js', then the files are file-YYY.js and chunk-XXX.js. So chunk- has the same name but file- has a different name when the chunkFilename changes.
If the current behavior is a bug, please provide the steps to reproduce.
Create a webpack bundle when the chunkFilename is set to one value, then create another bundle after changing the chunkFilename. You'll see the the contenthash has changed even though the file contents are identical.

What is the expected behavior?
I'm using [contenthash] and in both cases the file contents are identical so the contenthash shouldn't change and the filename should remain the same.

Other relevant information:
webpack version:  4.17.1
Node.js version: 10.9.0
Operating System: linux
Additional tools:

digging into this, I diffed a few files to see if i could reproduce. the only thing that changed was the module id, and it was an off by one error. for example:
(window.webpackJsonp = window.webpackJsonp || []).push([
  [25], {
    1325: function(e, n, a) {

(window.webpackJsonp = window.webpackJsonp || []).push([
  [25], {
    1324: function(e, n, a) {

i apologize i haven't dug into webpack too deeply. is it possible that something is running async & the modules are being returned in a non-deterministic fashion? perhaps we could generate content hashes of the module ids themselves & then if space is an issue, convert those hashes into incrementing ints?

Please provide minimum reproducible tst repo

Please provide minimum reproducible test repo/configuration of webpack

@evilebottnawi I found a problem with the contenthash changing overtime without sense (v4.40.2).
For example: with same code running multiple times the build varies between wh.main.b2369436d71b884088ff.js and wh.main.0ed4140fdff48c469dbc.js. I mean, might return 2, 3 or 8 times the first hash and then suddenly changes to the other, and after repeat same hash 1 or 2 times it returns to the first again.
I did a diff of the files, and they are Identical (no diff at all).
Bundle file is 20.8 KiB. Config is trivial:
module.exports = {
  name: 'wh',
  entry: {
    wh: [path.resolve('src/wh.ts'), path.resolve('src/wc.ts')],
  },
  output: {
    filename: 'scripts/[name].main.[contenthash].js',
    libraryTarget: 'amd',
  },
  optimization: {
    splitChunks: false,
  },
  externals: ['react', 'react-dom'],
};

Some hint?

@artola hm, can you create minimum reproducible test repo? Maybe bug

@artola hm, can you create minimum reproducible test repo? Maybe bug

I can not share the codebase, then I tried to create a simplified JS repo, might be too simplified, because I can not reproduce it after 20 builds, while in the original it happens in a few tries.
I have returned to the original version that is TS, I did compile manually TS to JS tsc -p tsconfig.json and remapped the webpack to use the JS version. I can not reproduce it once the ts-loader is not used.
I would need to investigate further and deeper to confirm that it is the use of ts-loader + babel-loader causing this issue.
What I can see is that there is no diff in the content of the files, just the contenthash changing.
@evilebottnawi What do you recommend?

@artola maybe ts generate empty spaces like newlines/spaces/etc?

File length is the same (in chars), and the diff tool can not see any difference. It seems something related to the "calculate hash process".

@artola what about BOM?

@artola what about BOM?

None. The output is "identical" with tools to verify them (cmp, diff, stat, checksum, BOM existence).

@artola Is the configuration exactly what is provided higher or different (no additional plugins/loaders/etc)?

I use a  base to create the specifics using webpack-merge, mainly adding the entry and library specific. See both below. By the way, the code is only TS (no styles, neither images, nothing).
@evilebottnawi Sorry for the disturb, I would like to get a simpler and reproducible case. I will continue trying with a repo, now adding TS and ts-loader.
Base
'use strict';

const webpack = require('webpack');
const path = require('path');

module.exports = (env = 'safe', argv = {}) => {
  const {mode = process.env.NODE_ENV || 'production'} = argv;

  {
    const target = ['next', 'safe'];

    if (!target.includes(env)) {
      const valid = target.map(JSON.stringify).join(', ');
      const received = JSON.stringify(env);
      throw new Error(
        `Using \`webpack-config-proactive\` requires that you specify the target \`env\`. Valid values are ${valid}. Instead, received: ${received}.`,
      );
    }
  }

  {
    const target = ['development', 'production'];

    if (!target.includes(mode)) {
      const valid = target.map(JSON.stringify).join(', ');
      const received = JSON.stringify(mode);
      throw new Error(
        `Using \`webpack-config-proactive\` requires that you specify the optimization \`mode\`. Valid values are ${valid}. Instead, received: ${received}.`,
      );
    }
  }

  const safe = env !== 'next';
  const development = mode === 'development';
  const production = mode === 'production';

  return {
    name: 'base',
    mode,
    entry: path.resolve('src/index.ts'),
    output: {
      path: path.resolve('dist'),
      pathinfo: false,
      filename: production
        ? 'scripts/[name].[contenthash].bundle.js'
        : 'scripts/[name].bundle.js',
      hotUpdateMainFilename: 'hmr/[hash].hot-update.json',
      hotUpdateChunkFilename: 'hmr/[id].[hash].hot-update.js',
      devtoolModuleFilenameTemplate: '[absolute-resource-path]',
    },
    resolve: {
      symlinks: false,
      modules: [path.resolve('node_modules'), 'node_modules'],
      extensions: ['.ts', '.tsx', '.mjs', '.js', '.jsx', '.json'],
    },
    module: {
      rules: [
        {
          test: /\.mjs$/,
          include: /node_modules/,
          type: 'javascript/auto',
        },
        {
          oneOf: [
            // Core
            {
              test: /\.(ts|tsx)$/,
              exclude: /node_modules/,
              use: [
                safe && {
                  loader: 'babel-loader',
                  options: {
                    envName: mode,
                    configFile: true,
                    cacheDirectory: true,
                    cacheCompression: false,
                  },
                },
                {
                  loader: 'ts-loader',
                  options: {
                    onlyCompileBundledFiles: true,
                  },
                },
              ].filter(Boolean),
            },
            safe && {
              test: /\.(mjs|js|jsx)$/,
              include: /node_modules/,
              use: [
                {
                  loader: 'babel-loader',
                  options: {
                    envName: mode,
                    configFile: true,
                    cacheDirectory: true,
                    cacheCompression: false,
                  },
                },
              ],
            },
            // Others
            {
              test: /\.css$/,
              use: [
                {
                  loader: 'style-loader',
                },
                {
                  loader: 'css-loader',
                  options: {
                    importLoaders: 1,
                  },
                },
                {
                  loader: 'postcss-loader',
                  options: {
                    plugins: () => [require('autoprefixer')],
                  },
                },
              ],
            },
            {
              test: /\.(scss|sass)$/,
              use: [
                {
                  loader: 'style-loader',
                },
                {
                  loader: 'css-loader',
                  options: {
                    importLoaders: 2,
                  },
                },
                {
                  loader: 'postcss-loader',
                  options: {
                    plugins: () => [require('autoprefixer')],
                  },
                },
                {
                  loader: 'sass-loader',
                },
              ],
            },
            {
              test: [/\.bmp$/, /\.gif$/, /\.jpe?g$/, /\.png$/],
              loader: 'url-loader',
              options: {
                limit: 10000,
                name: 'statics/media/[name].[hash:8].[ext]',
              },
            },
            {
              exclude: /\.(mjs|js|jsx|json|ejs|html)$/,
              loader: 'file-loader',
              options: {
                name: 'statics/others/[name].[hash:8].[ext]',
              },
            },
          ].filter(Boolean),
        },
      ],
    },
    plugins: [production && new webpack.HashedModuleIdsPlugin()].filter(
      Boolean,
    ),
    optimization: {
      splitChunks: {
        chunks: 'all',
        name: 'vendors',
      },
      runtimeChunk: false,
    },
    // Turn off performance hints because these warnings become cumbersome.
    // Just re-enable them when you analyze the build.
    performance: {
      hints: false,
    },
    devtool: production ? 'none' : 'source-map',
    // Reduce the info presented to avoid noise.
    // Just tweak it when you analyze the build.
    stats: production ? 'normal' : 'minimal',
  };
};

Specific
'use strict';

const config = require('@sl/rdk.webpack-config-proactive');
const utils = require('@sl/rdk.webpack-config-proactive/utils');
const {externals} = require('@sl/fusion.common-externals');
const path = require('path');

module.exports = (env = 'safe', argv = {}) => {
  const {mode = process.env.NODE_ENV || 'production'} = argv;

  const base = config(env, argv);

  const safe = env !== 'next';
  const development = mode === 'development';
  const production = mode === 'production';

  const manifestPlugin = new utils.ManifestPlugin();

  return [
    utils.merge(base, {
      name: 'wb',
      mode,
      entry: {
        wb: path.resolve('src/wb.ts'),
      },
      output: {
        filename: production
          ? 'scripts/[name].main.[contenthash].js'
          : 'scripts/main.bundle.js',
        chunkFilename: production
          ? 'scripts/wb.[name].[contenthash].js'
          : 'scripts/[name].bundle.js',
        jsonpFunction: 'webpackJsonp_wb',
        library: ['SL', 'wm'],
        libraryTarget: 'assign',
      },
      module: {
        rules: [
          {
            test: [/requirejs/, /@webcomponents\/custom-elements/],
            enforce: 'pre',
            use: 'script-loader',
          },
        ],
      },
      plugins: [production && manifestPlugin].filter(Boolean),
    }),
    utils.merge(base, {
      name: 'wh',
      mode,
      entry: {
        wh: [path.resolve('src/wh.ts'), path.resolve('src/wc.ts')],
      },
      output: {
        filename: production
          ? 'scripts/[name].main.[contenthash].js'
          : 'scripts/[name].bundle.js',
        chunkFilename: production
          ? 'scripts/wh.[name].[contenthash].js'
          : 'scripts/[name].bundle.js',
        libraryTarget: 'amd',
      },
      plugins: [production && manifestPlugin].filter(Boolean),
      optimization: {
        splitChunks: false,
      },
      externals: production ? externals : undefined,
    }),
  ];
};

The build is multi-config (2 configs) and the only 1 that fails is name: 'wh'. It is AMD with 2 externals (['react', 'react-dom']), all-in 1 chunk.

For me config looks good, maybe bug in webpack, hard to say what is wrong without reproducible test repo

For me config looks good, maybe bug in webpack, hard to say what is wrong without reproducible test repo

@evilebottnawi Thanks a lot for your help. I would say that it is a webpack bug because it is the responsible to create the contenthash, right?
The problem for us is that it will kill our long term cache without a sense. :(

@artola yes, webpack create hashes, but something can generate difference content so webpack change hash, we will find problem with reproducible test repo

I got it ! ... I am close to create a very min repo.

@evilebottnawi Thanks a lot for the support. Finally I have a min repo. Please see the README for more details.
As stated, it is a random error, but reproducible in a few runs. Might be related to somehow ts-loader, to check with other users reporting this issue.
All package versions stated in the yarn.lock. Local environment: Node v11.15.0.
cc @rightaway

I was able to reproduce @artola's hashes changing.  It took about 10 rebuilds before the hash changed. Node v12.6.0, npm v6.9.0, yarn v1.16.0.
FWIW, I have a similar issue with the contenthash changing even though the file diffs remain the same.  In my case I'm not using Typescript, but I do have a bunch of other plugins/rules, so hard to say if a 3rd party library is responsible.  I'll try comparing my configuration with @artola's to find a common theme.
My issue happens more often when I build on a different box (e.g., CircleCI running a check to see if any JS files were changed and not reprocessed with Webpack), so that may be something to look at if you're having issues reproducing @artola's code.

@pydolan Good info. I have a flashback, to some other issues where the problem was related to sort arrays as non-deterministic (no compare fn: [...].sort()).

@evilebottnawi @TheLarkInn Could you reproduce the issue with the min repo ?  Might be that with some hint of you guys I could debug it to find some extra info.

@artola reproduced :+1: investigating why this happens, thanks for repo

@artola find a problem, it is bug in ts-loader
Debugging:

Go here https://github.com/webpack/webpack/blob/v4.41.2/lib/NormalModule.js#L475
Change code to

const handleParseResult = result => {
    console.log(this.resource)
    console.log(this.buildMeta)
    this._lastSuccessfulBuildMeta = this.buildMeta;
    this._initBuildHash(compilation);
    return callback();
};

Run yarn build > problem
Run yarn build > problem2 multiple times until the hash changes
Compare result

Look on tsLoaderDefinitionFileVersions in problem and problem2, they have difference order and sometimes additional things so hash of module is not same, contenthash is not just a hash from a file content, it is more smart.
Please open issue in ts-loader.

@pydolan please create reproducible test repo, problem above was in ts-loader

@evilebottnawi Thanks a lot! ... I will look how to fix  this issue withts-loader.

The issue happens with JS projects too not just TS!
@artola is talking about a different issue. His hash is changing even though nothing changes. As @evilebottnawi says, just keep running yarn build until the hash changes.
But that was never my issue. As I said in the first post it happens when you change the webpack config like chunkFilename. It happens deterministically so you'll see it right away if you try.

@rightaway Can you clarify? Maybe you can create minimum reproducible test repo?

You motivated me to debug this further on my end, and after trying various things to narrow down the cause, it appears that expose-loader is responsible:
If I have the following rule, building on my Linux vs Mac machines results in a different hash:
{
  test: require.resolve("jquery"),
  loader: "expose-loader?jQuery!expose-loader?$"
}

However, if I change this to the following, the hashes on the two machines then match:
{
  test: require.resolve("jquery"),
  loader: "expose-loader?$"
}

I'll submit this issue to the expose-loader team.

@evilebottnawi Any repo will work, including the one @artola uploaded earlier. You can use that one and do the steps in the original bug report and you'll see what I mean.

@rightaway what do you mean?

You asked for a reproducible test repo. So the repo that @artola linked above will work for this purpose. To reproduce the issue from that repo you can follow the steps in the first message in this thread.

@rightaway a problem in the @artola messages was found, please create a minimum reproducible test repo for your problem

I had a similar issue with Webpack constantly outputting different files. Turned out that, in my case, it was because of WebpackPluginServe. The solution was to add that plugin only when in non-prod.

@artola find a problem, it is bug in ts-loader
Debugging:

Go here https://github.com/webpack/webpack/blob/v4.41.2/lib/NormalModule.js#L475
Change code to

const handleParseResult = result => {
    console.log(this.resource)
    console.log(this.buildMeta)
    this._lastSuccessfulBuildMeta = this.buildMeta;
    this._initBuildHash(compilation);
    return callback();
};

Run yarn build > problem
Run yarn build > problem2 multiple times until the hash was changed
Compare result

Look on tsLoaderDefinitionFileVersions in problem and problem2, they have difference order and sometimes additional things so hash of module is not same therefore chunk hash changes too, contenthash is not just a hash from a file content, it is more smart.
Please open issue in ts-loader.

Follow up: https://github.com/TypeStrong/ts-loader/issues/1048

Issue is still active.

@rightaway provide reproducible test repo

@evilebottnawi I open a new issue, and provide a reproducible test repo.
https://github.com/webpack/webpack/issues/10864
you can test it.

@evilebottnawi Experiencing the same issue, @hopperhuang provided a reproducible repo.

In TODO

WIP on https://github.com/webpack/webpack/issues/10864
I would like to close this issue, since here there are so many different problems that are not related to each other. This does not mean that all cases fixed. Almost all problems come from vendor loaders/plugins and we can't fix it on our side. But if you faced to this problem, I ask you to open a new issue with reproducible test repo (as do @hopperhuang ) and we will help (and even tell you exactly how to fix a problems if it is possible).
Please do not set :-1: I would like to get away from one big issue with different problems to small issues. It will be more convenient for everyone. Thanks for using webpack and helping with problems.

Thanks for making webpack great @evilebottnawi :smiley: I won't open a new issue as I ended up using a custom hash based on the git commit instead since like you said plugins and many factors can influence the contenthash.
For people looking at this issue, something like webpack-git-hash might be a possibility, in my case I had to make a custom function to work with how AWS Beanstalk packages releases, but it's still the same idea.

@balthazar anyway, you still have a problem? I want to investigate :smile:

yes i have the same issue,
import { get } from 'lodash'
import 'github-markdown-css/github-markdown.css'
var test = {a: {b: 'w'}}
console.log(get(test, 'a.w'))

if i import 'github-markdown-css/github-markdown.css' the contenthash will change;
then i remove github-markdown-css/github-markdown.css the contenthash not change;
itis else suit for 'antd'

Fixed in webpack@5

For anyone bumping into this, the hot reload plugin can cause unique build hashes:
plugins: [
	new webpack.HotModuleReplacementPlugin(),
],

This happens because the hot reload module contains a random time-based string that unsurprisingly changes on each build and therefore changes the content hash of the entire bundle.
The solution is to simply remove that plugin on production because having hot reload there doesn't make sense.

您好，您的邮件已收到，我将尽快给您回复。谢谢


Version bump for 3.2.3 release

includes:
Support HDP 2.6.2 and <IP_ADDRESS> ( Issue: #260 )

minor formatting issue, otherwise 👍 lgtm


Cursor changes to pointer on hover

I have solved the issue#32.
Please check out the pull request.
Thank you.

post photo

This was the condition before changes:

This is after changing cursor to pointer.

there is not impact of this change


[FR] Dark mode

Hi, I am using kiosk mode with fully kiosk app and cannot apply dark mode to the dashboard.
Would it be possible to add URL parameter to force browser/dashboard dark mode ?theme=dark|light ?
Cheers, K

kiosk-mode does not have a dark mode neither does it control the themes dark mode but there is a home assistant community thread with some solutions to your problem
https://community.home-assistant.io/t/change-dark-light-mode-of-default-theme-based-on-automation/516181/19

@Klemen1337,
If you need some help setting up a theme just let us know. Closing this issue.
Regards


Make subnet & security group optional fields

Checklist

[x] Appropriate branch selected (all PRs must first be merged to dev before they can be merged to master)
[x] Any modified or new methods or classes have helpful JavaDoc and code is thoroughly commented
[x] The description lists all applicable issues this PR seeks to resolve
[x] The description lists any configuration setting(s) that differ from the default settings
[x] All tests and CI builds passing

Description
Use the target group ARN to get the load balancer and automatically set the subnet and security
group ID if they are not provided when saving a server.
re ibi-group/datatools-ui#507

Codecov Report

Merging #259 into dev will decrease coverage by 11.42%.
The diff coverage is 0%.

@@              Coverage Diff              @@
##                dev     #259       +/-   ##
=============================================
- Coverage     31.56%   20.14%   -11.43%
+ Complexity      655      399      -256
=============================================
  Files           151      151
  Lines          8082     8098       +16
  Branches       1079     1082        +3
=============================================
- Hits           2551     1631      -920
- Misses         5219     6321     +1102
+ Partials        312      146      -166

Flag
Coverage Δ
Complexity Δ

#end_to_end_tests
?
?

#unit_tests
20.14% <0%> (-0.06%)
399 <0> (ø)

Impacted Files
Coverage Δ
Complexity Δ

...ools/manager/controllers/api/ServerController.java
5.97% <0%> (-7.01%)
1 <0> (-5)

.../conveyal/datatools/manager/models/LoadStatus.java
0% <0%> (-100%)
0% <0%> (-1%)

...a/com/conveyal/datatools/manager/auth/Actions.java
0% <0%> (-100%)
0% <0%> (-1%)

...manager/jobs/CreateFeedVersionFromSnapshotJob.java
0% <0%> (-100%)
0% <0%> (-4%)

...ls/manager/models/FeedValidationResultSummary.java
0% <0%> (-92%)
0% <0%> (-4%)

...yal/datatools/manager/jobs/FetchSingleFeedJob.java
0% <0%> (-82.36%)
0% <0%> (-6%)

...ls/manager/jobs/NotifyUsersForSubscriptionJob.java
0% <0%> (-72.35%)
0% <0%> (-7%)

...va/com/conveyal/datatools/manager/models/Note.java
0% <0%> (-66.67%)
0% <0%> (ø)

.../com/conveyal/datatools/manager/models/Bounds.java
0% <0%> (-64.29%)
0% <0%> (-5%)

.../conveyal/datatools/manager/models/Deployment.java
0% <0%> (-61.3%)
0% <0%> (-21%)

... and 39 more

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 ad4b2fb...232c789. Read the comment docs.

:tada: This PR is included in version 3.6.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


subscriptions not working with auth rules

Amplify CLI Version
v6
Question
i recently migrated from react native v5 to v6 is to set auth rules for subscriptions but it's not working for me.
I have a schema for a "message" type
type Message
  @model
  @auth(
    rules: [
      {
        allow: owner
        ownerField: "editors"
        operations: [create, read, delete]
      }
      { allow: private, operations: [create] }
    ]
  )
  @aws_cognito_user_pools {
  id: ID!
  text: String
  createdAt: String
  authorId: ID!
  chatRoomId: ID!
  editors: [String]
}

and i try to set up a sub in a useFocusEffect
 const variables = {
    filter: {
      chatRoomId: { eq: chatroomid },
     // i tried adding owner here as well
    },
  };
    const subscription = API.graphql({
      query: onCreateMessage,
      variables: variables,
      // @ts-ignore
    }).subscribe({
      next: async (eventData) => {...}

subscriptions won't fire at all nor will they throw an error.
If i add " read " on private permissions " { allow: private, operations: [create, read] }"  then it works.
However i only want users in the editors string to have read access as it could be a private group chat. This works with regular calls to get messages but not subscriptions.
i tried passing in authToken it doesn't help.

Hi @ryanSoftwareEngineer, in the schema you've shared, you're using @aws_cognito_user_pools AppSync Auth directive explicitly on the Amplify's @model type. Is there a reason to have that since it's not necessary in the user input schema.

Hi @ryanSoftwareEngineer, in the schema you've shared, you're using @aws_cognito_user_pools AppSync Auth directive explicitly on the Amplify's @model type. Is there a reason to have that since it's not necessary in the user input schema.

I removed it and ran amplify push. I'm still seeing the same behavior.
in the legacy cli there was a requirement to pass in owner https://docs.amplify.aws/javascript/tools/cli-legacy/auth-directive/#authorizing-subscriptions. Is that still necessary? if you have changed owner field should it be owner or editors?  is there documentation for authorizing subscriptions in the latest version? I wasn't able to find any.
i've tried passing both username and sub from cognito user to the editors field.
message record  in dynamodb:
{
  "id": {
    "S": "4e150b20-a0e7-4815-850c-8d0b27773a1d"
  },
  "authorId": {
    "S": "4e80c0ed-e753-4509-9be3-5b8da3aab2db"
  },
  "chatRoomId": {
    "S": "8b7e6ba2-228a-4578-b73d-d2c32d674084"
  },
  "createdAt": {
    "S": "2024-03-18T20:21:14.390Z"
  },
  "editors": {
    "L": [
      {
        "S": "9f9ba468-4688-459d-a06a-7d96a7e12a35"  <- i've tried the cognito sub and the username here
      },
      {
        "S": "d0615ec2-f874-43ed-b302-2ee55f7f40a9"
      }
    ]
  },
  "text": {
    "S": "But it doesn’t work"
  },
  "updatedAt": {
    "S": "2024-03-18T20:21:14.390Z"
  },
  "__typename": {
    "S": "Message"
  }
}

I used amplify to remove api amplify remove api pushed the changes, then added the api back without the @aws_cognito_user_pools in my schema and it works now!!!
It seems like the resolver has the same code but it's working now.

I assume if you are using aws cognito autorization mode in amplify v6, then you should be using JWT token as well.
In v6 access to JWT token  has changed as compared to v5.
To get JWT token in v6 -
const {tokens} = await fetchAuthSession();
const jwtToken = tokens?.accessToken.toString() || '';
Making this change in my code got my subscriptions working again

@vishal2develop do you mind providing more information about what you mean by this? I'm having the same issue as @ryanSoftwareEngineer and haven't been able to fix it. The subscription seems to work fine when creating my table using allow.authenticated() but doesn't work when I use allow.owner().
Where are you importing fetchAuthSession and what are you doing with the jwttoken you create to fix this problem?

In my setup, I used the fetchAuthSession method inside my AuthContextProvider to fetch and store the JWT token. This token is then passed down to the components through React Context. Components that need to make authorized GraphQL subscriptions can access the JWT token from this context.
A child component accessing my provider values:
const Client = ({children}: IClient) => {
  const {userJwtToken} = useAuthContext();

  // Using useMemo so that a new Apollo client is not created on every re-render
  const client = useMemo(() => {
    const jwtToken = userJwtToken || '';

    const auth: AuthOptions = {
      type: appSyncConfig.aws_appsync_authenticationType as AUTH_TYPE.AMAZON_COGNITO_USER_POOLS,
      jwtToken: jwtToken,
      // jwtToken: async () => token, // Required when you use Cognito UserPools OR OpenID Connect. token object is obtained previously
      // credentials: async () => credentials, // Required when you use IAM-based auth.
    };
    const link = ApolloLink.from([
      createAuthLink({url, region, auth}),
      createSubscriptionHandshakeLink({url, region, auth}, httpLink),
    ]);

    return new ApolloClient({
      link,
      cache: new InMemoryCache({typePolicies}),
    });
  }, [userJwtToken]);
  return <ApolloProvider client={client}>{children}</ApolloProvider>;
};

allow.owner vs allow.authentucated

I feelallow.authenticated() only requires that the user is authenticated, without verifying ownership of specific records
allow.owner() enforces that the user must be the owner of the item they are trying to access or modify. For this to work, the JWT token needs to be properly included in requests so that the server can verify the user’s identity and ownership.