gem-maven-plugin downloads for each version of the gem a pom file

Hi,
When I add a gem dependency to my JRuby project it downloads a pom file for each version of the gem. I am not entirely sure whether this is correct behavior or configurable behavior but it does slow down significantly fetching a dependency. Is this tweakable? If not , why is this happening?
(I am specifying explicit versions for each gem in the pom file)
I also get the following error when running mvn package:
[ERROR] Failed to execute goal de.saumya.mojo:gem-maven-plugin:1.0.2:exec (default) on project longboat: error in executing jruby: loading resource from classloader failed: META-INF/jruby.home/bin/gem -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal de.saumya.mojo:gem-maven-plugin:1.0.2:exec (default) on project longboat: error in executing jruby
Caused by: java.io.FileNotFoundException: loading resource from classloader failed: META-INF/jruby.home/bin/gem
	at de.saumya.mojo.ruby.ScriptUtils.getScriptFromResource(ScriptUtils.java:47)
	at de.saumya.mojo.ruby.script.ScriptFactory.newScriptFromResource(ScriptFactory.java:150)
	at de.saumya.mojo.ruby.script.ScriptFactory.newScriptFromJRubyJar(ScriptFactory.java:115)
	at de.saumya.mojo.ruby.gems.GemsInstaller.maybeAddArtifact(GemsInstaller.java:230)
	at de.saumya.mojo.ruby.gems.GemsInstaller.installGems(GemsInstaller.java:143)
	at de.saumya.mojo.ruby.gems.GemsInstaller.installGems(GemsInstaller.java:114)
	at de.saumya.mojo.ruby.gems.GemsInstaller.installGems(GemsInstaller.java:102)
	at de.saumya.mojo.ruby.gems.GemsInstaller.installPom(GemsInstaller.java:61)
	at de.saumya.mojo.gem.AbstractGemMojo.executeJRuby(AbstractGemMojo.java:339)
	at de.saumya.mojo.jruby.AbstractJRubyMojo.execute(AbstractJRubyMojo.java:291)

This is using jruby-1.7.12 and version 1.0.2 of the gem-maven-plugin. The configuration of the gem-maven-plugin is as follows:

 <plugin>
    <groupId>de.saumya.mojo</groupId>
    <artifactId>gem-maven-plugin</artifactId>
    <version>${jruby.plugins.version}</version>
    <executions>
        <execution>
            <goals>
                <goal>exec</goal>
            </goals>
            <phase>compile</phase>
            <configuration>
                <execArgs>bundle exec rake test</execArgs>
            </configuration>
        </execution>
    </executions>
    <extensions>true</extensions>
    <configuration>
        <includeRubygemsInResources>true</includeRubygemsInResources>
        <includeRubygemsInTestResources>false</includeRubygemsInTestResources>
    </configuration>
</plugin>

Best,
Diederik

Sorry @mkristian  to re-open the issue, but I had some troubles with this and I'd like to your opinion.
Trying to use 'asciidoctor-bibtext' as a maven dependency crashes because one of the dependency ranges tries to pull a gem that does not exist anymore. But newer versions solve this issue.
rubygems:namae:gem:0.8.2 -> rubygems:rubysl:gem:2.0.8 -> rubygems:rubysl-json:gem:[2.0,2.99999]: No versions available for rubygems:rubysl-json:gem:[2.0,2.99999] within specified range

Could it be possible to skip this error so that if in the end a valid and newer version exists the plugin continues? or as a workaround, could it be possible to use the sets goal to override some of the dependencies instead of having to define all gems?

@abelsromero the problem is really under the hood. the moment declare namae-0.8.2 in your pom.xml then maven will resolve it before it hits any plugin or extension. namae-0.8.2 is also particular in the sense that namae-0.8.1 and namae-0.8.3 do not have any dependency to rubysl - only version 0.8.2 does have this dependency. so I would ask the namae people to yank 0.8.2 as it clearly can not be installed anymore and gives errors with maven and gradle.
in short a plugin in maven can not fix this problem with empty version ranges after a project yanked all its gems.
but it is possible to fix this with exclusions:
gem 'namae', '0.8.2', :exclusions => ['rubygems:rubysl']
gem 'rubysl', '2.1.0'

So, I understand that the resolution is 100% delegated to maven and nothing can be done...well, was worth it a try :+1:
In anycas I got it to work setting all gems manually using the set goal, but it's really a lot of work.


Explorer viewing of sub-content "hides" content at same level

I agree

I don't see any open duplicates

vertical scrolling keeps the parent directories shown at the very top which is great.  But there is no indication of "sibling" entries which are hidden.  Consider the full directory tree below:

Note: The 'zzz_filler_files' directory is necessary to overfill the explorer viewable area and show the vertical scroll bar.
Now, I have carefully scrolled to deceive you:

Directory 'level_2a' is no longer shown.  It doesn't appear to exist.  I understand why its behaving this way and like the feature, but am asking for an enhancement.
The enhancement is to somehow indicate that there is "entries above" level_2b in my example.  That might be indicated by a horizontal line or series of '. . .' periods between the level1 and level2_b entries.  I don't know the best way to indicate this but I hope I've described the intent of this request.
Version: 1.86.2
Commit: 903b1e9d8990623e3d7da1df3d33db3e42d80eda
Date: 2024-02-13T19:41:37.860Z
Electron: 27.2.3
ElectronBuildId: 26908389
Chromium: 118.0.5993.159
Node.js: 18.17.1
V8: <IP_ADDRESS>-electron.0
OS: Linux x64 3.10.0-1127.10.1.el7.x86_64

You are not seeing any divider due to the theme you are using. It should be visible in our default themes.

We provide 3 colours for sticky scroll which you could convince your theme author to set or you con overwrite them in your settings in the following way:
"workbench.colorCustomizations": {
        "sideBarStickyScroll.shadow": ADD_YOUR_COLOR_HERE,
        "sideBarStickyScroll.background": ADD_YOUR_COLOR_HERE,
        "sideBarStickyScroll.border": ADD_YOUR_COLOR_HERE
    },


Implement delete function, add documentation

Hi @kmaehashi
I wanted to let you know that I have taken your feedback into consideration and made the necessary changes to the cupy.delete implementation.
Please let me know if you would like me to make any further changes or if you are ready to review the changes I have made. I look forward to hearing back from you soon.

Dear @kmaehashi
I have taken your feedback into consideration and made the necessary changes .
I look forward to hearing back from you soon.

/test mini

/test mini

It seems the test code hits a ROCm issue regarding indexing.
15:46:15 cupy_tests/manipulation_tests/test_add_remove.py ...Fatal Python error: Aborted
15:46:15
15:46:15 Thread 0x00007f6b13af6740 (most recent call first):
15:46:15   File "/tmp/.local/lib/python3.10/site-packages/cupy/_manipulation/add_remove.py", line 40 in delete
15:46:15   File "/tmp/tmp.ooKJVWRWXl/tests/cupy_tests/manipulation_tests/test_add_remove.py", line 52 in test_delete_with_indices_as_int
15:46:15   File "/tmp/.local/lib/python3.10/site-packages/cupy/testing/_loops.py", line 45 in _call_func
15:46:15   File "/tmp/.local/lib/python3.10/site-packages/cupy/testing/_loops.py", line 70 in _call_func_cupy
15:46:15   File "/tmp/.local/lib/python3.10/site-packages/cupy/testing/_loops.py", line 94 in _call_func_numpy_cupy
15:46:15   File "/tmp/.local/lib/python3.10/site-packages/cupy/testing/_loops.py", line 273 in test_func
15:46:15   File "/opt/pyenv/versions/3.10.0/lib/python3.10/unittest/case.py", line 549 in _callTestMethod
15:46:15   File "/opt/pyenv/versions/3.10.0/lib/python3.10/unittest/case.py", line 591 in run
15:46:15   File "/opt/pyenv/versions/3.10.0/lib/python3.10/unittest/case.py", line 650 in __call__
15:46:15   File "/tmp/.local/lib/python3.10/site-packages/_pytest/unittest.py", line 330 in runtest
15:46:15   File "/tmp/.local/lib/python3.10/site-packages/_pytest/runner.py", line 167 in pytest_runtest_call
15:46:15   File "/tmp/.local/lib/python3.10/site-packages/pluggy/_callers.py", line 39 in _multicall
15:46:15   File "/tmp/.local/lib/python3.10/site-packages/pluggy/_manager.py", line 80 in _hookexec
15:46:15   File "/tmp/.local/lib/python3.10/site-packages/pluggy/_hooks.py", line 265 in __call__
15:46:15   File "/tmp/.local/lib/python3.10/site-packages/_pytest/runner.py", line 260 in <lambda>
15:46:15   File "/tmp/.local/lib/python3.10/site-packages/_pytest/runner.py", line 339 in from_call
15:46:15   File "/tmp/.local/lib/python3.10/site-packages/_pytest/runner.py", line 259 in call_runtest_hook
15:46:15   File "/tmp/.local/lib/python3.10/site-packages/_pytest/runner.py", line 220 in call_and_report
15:46:15   File "/tmp/.local/lib/python3.10/site-packages/_pytest/runner.py", line 131 in runtestprotocol
15:46:15   File "/tmp/.local/lib/python3.10/site-packages/_pytest/runner.py", line 112 in pytest_runtest_protocol
15:46:15   File "/tmp/.local/lib/python3.10/site-packages/pluggy/_callers.py", line 39 in _multicall
15:46:15   File "/tmp/.local/lib/python3.10/site-packages/pluggy/_manager.py", line 80 in _hookexec
15:46:15   File "/tmp/.local/lib/python3.10/site-packages/pluggy/_hooks.py", line 265 in __call__
15:46:15   File "/tmp/.local/lib/python3.10/site-packages/_pytest/main.py", line 349 in pytest_runtestloop
15:46:15   File "/tmp/.local/lib/python3.10/site-packages/pluggy/_callers.py", line 39 in _multicall
15:46:15   File "/tmp/.local/lib/python3.10/site-packages/pluggy/_manager.py", line 80 in _hookexec
15:46:15   File "/tmp/.local/lib/python3.10/site-packages/pluggy/_hooks.py", line 265 in __call__
15:46:15   File "/tmp/.local/lib/python3.10/site-packages/_pytest/main.py", line 324 in _main
15:46:15   File "/tmp/.local/lib/python3.10/site-packages/_pytest/main.py", line 270 in wrap_session
15:46:15   File "/tmp/.local/lib/python3.10/site-packages/_pytest/main.py", line 317 in pytest_cmdline_main
15:46:15   File "/tmp/.local/lib/python3.10/site-packages/pluggy/_callers.py", line 39 in _multicall
15:46:15   File "/tmp/.local/lib/python3.10/site-packages/pluggy/_manager.py", line 80 in _hookexec
15:46:15   File "/tmp/.local/lib/python3.10/site-packages/pluggy/_hooks.py", line 265 in __call__
15:46:15   File "/tmp/.local/lib/python3.10/site-packages/_pytest/config/__init__.py", line 167 in main
15:46:15   File "/tmp/.local/lib/python3.10/site-packages/_pytest/config/__init__.py", line 190 in console_main
15:46:15   File "/tmp/.local/lib/python3.10/site-packages/pytest/__main__.py", line 5 in <module>
15:46:15   File "/opt/pyenv/versions/3.10.0/lib/python3.10/runpy.py", line 86 in _run_code
15:46:15   File "/opt/pyenv/versions/3.10.0/lib/python3.10/runpy.py", line 196 in _run_module_as_main

Could you add XFAIL to test_delete_with_indices_as_int test, similar to #4653?
     if cupy.cuda.runtime.is_hip:
         pytest.xfail('HIP may have a bug')

Dear @kmaehashi , I have added the fix in a previous commit, but a Docs Build issue came up. I was looking over it in the couple of days but didn't solve it, do you have any hint to start from ?

If you rerun the CI the problem should go away. Our doc website had an issue that's resolved now.

If you rerun the CI the problem should go away. Our doc website had an issue that's resolved now.

Thanks @leofang for your informative response.

I've retriggered CI, it should pass :)

@Anas20001 We are about to cut a release, so let me trigger the remaining tests for this PR later this week.

/test mini

Jenkins failure seems unrelated, let's merge!


Trying to download the recording.

Hey.
I've upgraded to 0.2.0 and I'm having issues with downloading recordings.
I have tried this:
uva.recordings['60223fe0f650c88a5c8ae592'].download('rec.mp4')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: '60223fe0f650c88a5c8ae592'
>>> uva.get_recordings()['60223fe0f650c88a5c8ae592'].download('rec.mp4')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'generator' object is not subscriptable

Thanks for all the help.

Could you run
from unifi_video import UnifiVideoAPI
from datetime import datetime

OID_WANTED = '60223fe0f650c88a5c8ae592'

uva = UnifiVideoAPI(
    api_key='8mXZpaPS4KqaZRrDkoI8pO3OWJl42z3P',
    check_ufv_version=False,
    addr='<IP_ADDRESS>',
    port=7080)

oid_timestamp = int(OID_WANTED[:8], 16)
available_oids = uva.get('recording?idsOnly=true&sortBy=startTime&sort=desc&limit=0')['data']

recs = [r for r in uva.get_recordings() if r._id == OID_WANTED]
rec_ids = [oid for oid in available_oids if oid == OID_WANTED]
older_than_wanted = [
    ts for ts in [int(oid[:8], 16) for oid in available_oids]
    if ts < oid_timestamp
]

print('uva: {}, api: {}, api all: {}, older: {}'.format(
    len(recs),
    len(rec_ids),
    len(available_oids),
    len(older_than_wanted)))

and report what the last print() spits out.

Could you run
from unifi_video import UnifiVideoAPI
from datetime import datetime

OID_WANTED = '60223fe0f650c88a5c8ae592'

uva = UnifiVideoAPI(...)

oid_timestamp = int(OID_WANTED[:8], 16)
available_oids = uva.get('recording?idsOnly=true&sortBy=startTime&sort=desc&limit=0')['data']

recs = [r for r in uva.get_recordings() if r._id == OID_WANTED]
rec_ids = [oid for oid in available_oids if oid == OID_WANTED]
older_than_wanted = [
    ts for ts in [int(oid[:8], 16) for oid in available_oids]
    if ts < oid_timestamp
]

print('uva: {}, api: {}, api all: {}, older: {}'.format(
    len(recs),
    len(rec_ids),
    len(available_oids),
    len(older_than_wanted)))

and report what the last print() spits out.

this error for the first line indicates that the recording was not found. Try using
uva.refresh_recordings(0) uva.recordings['60223fe0f650c88a5c8ae592'].download('rec.mp4')
If you still get the error, the recording was probably not available in the Unifi Video Server.
One extra "gotcha" is that when you download the video, the unifi server may not have finished, so you may get a partial video. In my code I check the expected length and compare it to the length of the downloaded video. If it is too short, I wait a bit and then try again.

for rec in uva.get_recordings():
    print(rec)
....
UnifiVideoRecording: {'_id': '60265c69f650c88a5c8b3b62', 'rec_type': 'motionRecording', 'start_time': '2021-02-12T10:45:53', 'end_time': '2021-02-12T10:46:09'}
UnifiVideoRecording: {'_id': '60265f8ff650c88a5c8b3b6b', 'rec_type': 'motionRecording', 'start_time': '2021-02-12T10:59:19', 'end_time': '2021-02-12T10:59:45'}
>>> uva.recordings['60265f8ff650c88a5c8b3b6b'].download('rec.mp4')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: '60265f8ff650c88a5c8b3b6b'
>>> OID_WANTED = '60265f8ff650c88a5c8b3b6b'
>>> oid_timestamp = int(OID_WANTED[:8], 16)
>>> available_oids = uva.get('recording?idsOnly=true&sortBy=startTime&sort=desc&limit=0')['data']
>>>
>>> recs = [r for r in uva.get_recordings() if r._id == OID_WANTED]
>>> rec_ids = [oid for oid in available_oids if oid == OID_WANTED]
>>> older_than_wanted = [
...     ts for ts in [int(oid[:8], 16) for oid in available_oids]
...     if ts < oid_timestamp
... ]
>>>
>>> print('uva: {}, api: {}, api all: {}, older: {}'.format(
...     len(recs),
...     len(rec_ids),
...     len(available_oids),
...     len(older_than_wanted)))
uva: 1, api: 1, api all: 4947, older: 4946
>>>

Thank you.
uva.refresh_recordings() will refresh the internal recordings collection while uva.get_recordings() will instead fetch an up-to-date recordings listing and return it as an iterable, giving no guarantee that the recordings
collection in the UnifiVideoAPI instance contains the same recordings. So, like @donaldrs suggested, you should refresh_recordings() before subscripting the internal collection:

uva.refresh_recordings(0)
uva.recordings['60223fe0f650c88a5c8ae592'].download('rec.mp4')

This ensures uva.recordings includes the latest recordings.
You cannot subscribe the iterable from get_recordings() with and ID as is. You'll have to resort to some sort of finagling. Couple of examples:
rid = '60265f8ff650c88a5c8b3b6b'
list(filter(lambda x: x._id == rid, uva.get_recordings()))[0].download('rec.mp4')

or
rid = '60265f8ff650c88a5c8b3b6b'
{ v._id: v for v in uva.get_recordings() }[rid].download('rec.mp4')

and neither is any better than just doing
for rec in uva.get_recordings():
  if rec._id == '60265f8ff650c88a5c8b3b6b':
    rec.download('rec.mp4')

I didn't anticipate a use case where you'd get a recording ID outside the context of iterating the internal collection. Maybe it'd make sense to write a separate method for that.
Please let me know if there is something I didn't address.

Thank you guys. That works. !


Funds Disappeared V 0.9

Hi,
Big problem here. I had 67k BTS. I tried buying MoonFund but cancelled my order because the buy order wasn't working (V0.8). Then problem started to happen. (Cryptoctopus -> Unknown)
I moved on to V0.9RC1 yesterday and today, I bought more BTS through metaexchange and what I bought completely replace my previous balance and lost all of my previous balance. WTF is going on?

I'm a bit confused, because in your first picture, it shows 67 BTS, not 67K BTS... Is that just a coincidence and you are talking about some other 67K BTS?

Sorry, I am a bit confused too. Here is a more complete story:
I had 57k of BTS. I tried buying MoonFund but cancelled my order because the buy order wasn't working (V0.80). Then problem started to happen. (Cryptoctopus -> Unknown). I had 67BTS in my wallet but my 57k wouldn't reappear after I cancelled my buy order for MoonFunds.

From the console, can you type "history cryptoctopus" and paste the results here?
(you can get to console by clicking on "cryptoctopus" drop down on right hand top of screen, then selecting "Advanced", then select "Console" tab)

TIMESTAMP           BLOCK     FROM                TO                  AMOUNT                  MEMO                                        BALANCE                 FEE                 ID
2015-04-18T15:00:20 2314093   metaexchangebtc     cryptoctopus        54,645.97147 BTS        mX: buy BTS                                 54,645.97147 BTS        0.00000 BTS         2ecdb302
2015-04-19T01:42:10 2317864   cryptoctopus        UNKNOWN             54,578.34883 BTS                                                    67.12264 BTS            0.50000 BTS         4ec26f43
2015-04-23T15:45:50 2357341   metaexchangebtc     cryptoctopus        31,635.64413 BTS        mX: buy BTS                                 31,702.76677 BTS        0.00000 BTS         7ec8413a
Seems the funds went to the market and didn't came back when I cancelled

riverhead saved the day with: wallet_regenerate_keys cryptoctopus 12000
Issue closed

I don't see your market order at all (there should be a BID or ASK as the destination for a market order). Maybe try a "rescan" from the console...

This is the exact same thing that happened to me.   Need help.


sub-PR 5

Hopefully there aren't too many things in this one. Several different miscellaneous items, including some new statistics.

By using the namelist namelist.restC and without the conda environment, the verification result on Casper looks below:

CPU (intel, 2 MPI ranks) vs. GPU (nvhpc, 2 MPI ranks + 2 V100 GPUs)
Stat output comparison
Identical variables: 63
variables with rel_diff > 1.e-6: 23
variables with rel_diff <= 1.e-6: 0
four variables with largest error: PPMIN, PPMAX, VOR2KM, DIVMAX
Droplet 0th-order diagnostic comparison
Identical variables: 9
variable with rel_diff > 1.e-6: 3
variable with rel_diff <= 1.e-6: 0
three variables with largest error: Tpavg (~3.4e-6), radmin (~6.2e-6), prsavg (~1.1e-6)
Droplet 1st-order diagnostic comparison
Identical variables: 511
variable with rel_diff > 1.e-6: 1
variable with rel_diff <= 1.e-6: 0
one variables with largest error: numconc(1) (~1.0)

Compared to the PR #109, the stat output comparison result is consistent. The 0th-order droplet diagnostic shows one fewer identical variable and one more variable with relative difference >1.e-6, which is prsavg. The 1st-order droplet diagnostic shows one inconsistent variable, which is numconc(1). The relative difference is close to 100%. The value of numconc(1) in the CPU run is 0.150681E-04 while that in the GPU run is 0.152588E-07. I am not sure whether this difference is caused by the mismatch of prsavg variable or not. I am also not sure whether the difference of the droplet diagnostic here is even expected or not, though the init3d subroutine is tweaked slightly here. Need to see @drichte2 and @johnmauff's opinions on these results.

@sjsprecious I'm pretty sure the answer is yes, but tnumpart is part of the 0th order diagnostics, right? And that comes out exactly the same (it'd better)? The difference in prsavg should have nothing to do with the 1st order diagnostic.
It would be very weird if tnumpart was the same but only one element of numconc was off, since the sum of the numconc array should be equal to tnumpart divided by the domain volume.

@sjsprecious For this issue, maybe instead of checking numconc you can replace it with partnum? This variable simply says how many particles are within each height range. The sum of this array should give you exactly tnumpart, and it's partnum which is subject to reduction operations (and therefore where the difference might come from)

@sjsprecious I'm pretty sure the answer is yes, but tnumpart is part of the 0th order diagnostics, right? And that comes out exactly the same (it'd better)? The difference in prsavg should have nothing to do with the 1st order diagnostic.
It would be very weird if tnumpart was the same but only one element of numconc was off, since the sum of the numconc array should be equal to tnumpart divided by the domain volume.

Hi @drichte2, thanks for your quick reply. Yes, tnumpart matches exactly between CPU and GPU runs, which makes me think if something is wrong when calculating the domain volume. I originally thought prsavg was the culprit but it seems not now.

Hmm, it turns out that the GPU code with the changes here no longer compiles on Casper (nvhpc/22.2 + cuda/11.6), but still compiles on Gust (nvhpc/23.1 + cuda/11.7). Thus maybe our GPU changes here trigger a bug in the old nvhpc compiler.
By using the namelist namelist.restC and without the conda environment, the verification result on Gust looks below:

CPU (intel, 2 MPI ranks) vs. GPU (nvhpc, 2 MPI ranks + 2 A100 GPUs)
Stat output comparison
Identical variables: 59
variables with rel_diff > 1.e-6: 22
variables with rel_diff <= 1.e-6: 5
four variables with largest error: PPMIN, PPMAX, VOR2KM, DIVMAX
Droplet 0th-order diagnostic comparison
Identical variables: 8
variable with rel_diff > 1.e-6: 3
variable with rel_diff <= 1.e-6: 1
three variables with largest error: Tpavg (~3.4e-6), radmin (~6.2e-6), prsavg (~1.1e-6)
Droplet 1st-order diagnostic comparison
Identical variables: 512
variable with rel_diff > 1.e-6: 0
variable with rel_diff <= 1.e-6: 0

Compared to the PR https://github.com/george-bryan/CM1/pull/109, the stat output comparison result shows four fewer identical variable, one fewer variable with relative difference >1.e-6, and five more variables with relative difference <1.e-6. These five variables are THPMAX, STHPMX, TKEMAX , RHMIN and THPMIN. The 0th-order droplet diagnostic shows two fewer identical variables, one more variable with relative difference >1.e-6 (which is prsavg), and one more variable with relative difference <1.e-6 (which is radavg). The 1st-order droplet diagnostic is consistent. Since I switch to a different machine, I expect that the verification results may change and most non-identical variables are still within the tolerance. Still need to see @drichte2 and @johnmauff's comments on these results.

droplet diagnostic shows two fewer identical variables, one more variable with relative difference >1.e-6 (which is prsavg), and one more variable with relative difference <1.e-6 (which is radavg). The 1st-order droplet diagnostic is consistent. Since I switch to a different machine, I expect that the verification results may change and most non-identical variables are still within the tolerance. Still need to see @drichte2 and @johnmauff's comments on these results.

@sjsprecious Just to be clear, these are relative differences, right? For example the droplet radii are O(1e-6) so an absolute difference that large is like 100% relative error.
Also, just to confirm: these are a comparison between CPU and GPU of this most recent PR -- not a comparison of the previous version to the PR?
Assuming these are true, none of those numbers are particularly concerning to me. It seems that those that are larger than 1e-6 are still O(1e-6).

droplet diagnostic shows two fewer identical variables, one more variable with relative difference >1.e-6 (which is prsavg), and one more variable with relative difference <1.e-6 (which is radavg). The 1st-order droplet diagnostic is consistent. Since I switch to a different machine, I expect that the verification results may change and most non-identical variables are still within the tolerance. Still need to see @drichte2 and @johnmauff's comments on these results.

@sjsprecious Just to be clear, these are relative differences, right? For example the droplet radii are O(1e-6) so an absolute difference that large is like 100% relative error.
Also, just to confirm: these are a comparison between CPU and GPU of this most recent PR -- not a comparison of the previous version to the PR?
Assuming these are true, none of those numbers are particularly concerning to me. It seems that those that are larger than 1e-6 are still O(1e-6).

@drichte2 , yes, all the difference of statistics here is relative difference.
And yes, the comparison here is between CPU and GPU runs for this PR.
Glad to know that these numbers look fine to you. Will wait for John's input before I approve this PR.


[temps-dir and todos file] How do I change place for them ?

Hey!
I'm really fond of time++ gnome extension. It let me focus on my work at a given time. Thanks for developping it.
When installing it, I choosed the default place for temps-dir and todos file which is my home dir. I tried to change this in vain. How do I do it ?
Regards

temps-dir? You mean the directory where you put your csv files?

First move you csv folder where you want it.
Then go to the file settings in the popup menu and change the file paths.
I believe you'll have to delete the csv folder again because time++ monitors it and will
make a new empty one each time you move it.

It works ! Thank you.


Work around for Optional get(), isEmpty() methods level 2

Summary
Hi! For simulator2, I understand that we can iterate through the priority queue until there are no events left, but we also have to check for the next event executed by the highest priority event and add it to the priority queue. if i were to use orElse(), i would have to add a new event to the priority queue so wouldn't that mean the loop never ends? is there any way to work around this or is the only solution to use orElse()?
Description
Describe the problem and code snippets if necessary
Screenshots (if any):
Insert Images here if necessary

You can mapping the Optional<Event> directly into Optional<PQ> and add the Event into the queue in the process. After that, extract the updated PQ out to update the existing using orElse(). If the Optional is empty it should return the original PQ.

@daitenshionyan  ooh thank you!! your idea worked!


Statusline functions don't show running checks when Neomake is disabled

It is possible to NeomakeDisable* and then run Neomake manually. This is mentioned in the docs.
When Neomake is disabled, the statusline changes to an unconditional $SCOPE-, with scope being the disable scope.
This is triggered by this code:
https://github.com/neomake/neomake/blob/dbd873a988af116017fba2bfffcb27ac92097d9a/autoload/neomake/statusline.vim#L271-L275
This means when Automake is disabled and you run a check manually, there's no feedback.
Expected behavior
The same feedback for running a check when automake is enabled should be available when automake is disabled.
Steps to reproduce

Disable automake for a buffer: NeomakeDisableBuffer
Verify the statusline string is now "b-"
Run Neomake manually
Verify the statusline shows no feedback, as opposed to the behaviour with automake enabled

https://github.com/neomake/neomake/pull/1865 would fix this also, without adding new formats etc - which might be good base for #1862 then.
Please let me know what you think.


Change detection fails when multiple instances of a component are present

I'm submitting a ...

[x] bug report
[ ] feature request
[ ] other (Please do not submit support requests here (see above))

Current behavior:
AngularJS fails to detect changes to an individual component when a second instance of the component is present.
Minimal reproduction of the problem with instructions:
https://plnkr.co/edit/1uHMSpsMGqGt0hOGy2Rr?p=preview
Angular version: 1.6.4
Browser: all
Anything else:
Note that when the same state-change is applied to both component instances, then AngularJS does correctly update the DOM for both.

AngularJS works as expected. The (un)expected behavior stems from the fact that you are using directives that don't create their own scope and thus re-use the parent scope. In doing so, both try to set parentScope.ctrl.isFooShown to their controller instance, so effectively the second instance overwrites the first one. What you end up with is two directive instances which both rely on the second controller's isFooShown property (because that is what parentScope.ctrl.isFooShown refers to).
I can't be sure, but it seems that you want isolated components, in which case you should use scope: {} in your Directive Definition Object to request an isolate scope. (If you are using a recent AngularJS version, you can use the .component() helper, which uses isolate scopes by default.)
Updated plnkr:
 function fooPanelDirective() {
   return {
     template: '

',
+    scope: {}
     controller: FooPanelController,
     controllerAs: 'ctrl'
   };
 }

@gkalpak, If the problem is that both instances of the component are sharing the same scope, then shouldn't both instances be hidden when I change the state of the first one?
Interestingly, I found that if I use an ng-repeat to generate the two instances (instead of individually defining each one), then the DOM is correctly updated with the state of an individual instance.
https://plnkr.co/edit/4YGZYUXxB5ZOmQzEMncU?p=preview

As explained in my previosu comment, both instances refer to the second instance's controller in their template. So, when you change firstControllerInstance.isFooShown (as you do in your tests), nothing happens. If you changed secodnControllerInstance.isFooShown then both directive instances would be affected.
Using ngRepeat is expected to solve this, because with ngRepeat "each template instance gets its own scope" (docs).

That makes sense. Thanks for the explanation!


update a valid image for mun

@lorensen Test now seems to show 15 cases, adding an image for mun

I added case 0 as it was missing to make it consistent with the VTK Textbook. It passed all tests on Linux and Windows. Is there a reason why mun is doing something different here?

Just a different system to it needs a new valid image. That test has 5
valid images checked in and only the first had the new cases. Now the first
two do.
On Thu, Aug 30, 2018 at 5:35 PM, Andrew Maclean<EMAIL_ADDRESS>wrote:

I added case 0 as it was missing to make it consistent with the VTK
Textbook. It passed all tests on Linux and Windows. Is there a reason why
mun is doing something different here?
—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub
https://github.com/lorensen/VTKExamples/pull/235#issuecomment-417474613,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AHC6R2neYFk2G_R6yWwScYQWMf8JgVOzks5uWFqLgaJpZM4WT3_s
.

--
Ken Martin PhD
Distinguished Engineer
Kitware Inc.
101 East Weaver Street
Carrboro, North Carolina
27510 USA
This communication, including all attachments, contains confidential and
legally privileged information, and it is intended only for the use of the
addressee.  Access to this email by anyone else is unauthorized. If you are
not the intended recipient, any disclosure, copying, distribution or any
action taken in reliance on it is prohibited and may be unlawful. If you
received this communication in error please notify us immediately and
destroy the original message.  Thank you.


pod framework,when i run iphone and this error

ld: -weak_library and -bitcode_bundle (Xcode setting ENABLE_BITCODE=YES) cannot be used together
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Try after ENABLE_BITCODE=NO

add these lines on your pod file and update
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['ENABLE_BITCODE'] = 'NO'
end
end
end


InMap constraints don't work with If statements

Bug Report
Steps to Reproduce:
Run the following profile
{
    "schemaVersion": "0.9",
    "fields": [
        { "name": "country", "type": "string", "nullable": false },
        { "name": "state", "type": "string", "nullable": false },
        { "name": "city", "type": "string", "nullable": false },
        { "name": "gender", "type": "string", "nullable": false }
    ],
    "rules": [
        {
            "rule": "map",
            "constraints": [
              { "field": "state", "is": "inMap", "file": "cities.csv", "key": "State" },
              { "field": "country", "is": "inMap", "file": "cities.csv", "key": "Country" },
              { "field": "city", "is": "inMap", "file": "cities.csv", "key": "City" }
            ]
        },
        {
            "rule": "constriant",
            "constraints": [
              { "field": "state", "is": "matchingRegex", "value": "^[AN].*" }
            ]
        },
        {
            "rule": "if",
            "constraints": [
                {
                    "if":   { "field": "state", "is": "matchingRegex", "value": "^[A].*" },
                    "then": { "field": "gender", "is": "matchingRegex", "value": "^F$" },
                    "else": {  "field": "gender", "is": "matchingRegex", "value": "^M$" }
                }
            ]
        }
    ]
  }

Expected Result:
Data from the inMap being mapped to the fields according to the key and the gender field is either F or M.
country,state,city,gender
USA,Alabama,Montgomery,F
USA,New Hampshire,Concord,M
USA,Alaska,Juneau,F

Actual Result:
Data is not being mapped from the in map file with the fields. An example is below:
country,state,city,gender
"%Gf","A7+","su~","F"
"|s","Nhe","5U","M"
"&","A","m?%Rxkc9","F"

It looks like the field group is not being correctly maintained in processing.

Fixed in #1416

This is now correctly mapping from the file. But it is not using the same index for all the rows using the inMap.


Dev

Labels (hint)
Choose the obligatory labels:

"ctg" (category): bug-fix, enhancement, refactoring, etc.
"comp" (component): symbolic-engine, fuzzing, codegen, etc.

Feel free to apply more labels to your PR, e.g.: lang-java, priority-minor, spec-performance
Title (hint)
Describe what you've changed or added in terms of functionality.
For example:

Add summaries for the nested classes

Support test generation for paths with spaces in JavaScript

Remove packageName property not defined in Java 8

Check that the title contains

no branch name
no GitHub nickname
no copy-pasted issue title

Description
Fixes # (issue)
Add more info if needed:

context/purpose for implementing changes
detailed description of the changes made

How to test
Automated tests
Please specify the automated tests for your code changes: you should either mention the existing tests or add the new ones.
For example:

The proposed changes are verified with tests:
utbot-fuzzing/src/test/kotlin/org/utbot/fuzzing/FuzzerSmokeTest.kt

Manual tests
If it is impossible to provide the automated tests, please reason why. Usually, it is relevant only for UI- or documentation-related PRs.
If this is your case, share the detailed manual scenarios that help to verify your changes.
Self-check list
Check off the item if the statement is true. Hint: [x] is a marked item.
Please do not delete the list or its items.

[ ] I've set the proper labels for my PR (at least, for category and component).
[ ] PR title and description are clear and intelligible.
[ ] I've added enough comments to my code, particularly in hard-to-understand areas.
[ ] The functionality I've repaired, changed or added is covered with automated tests.
[ ] Manual tests have been provided optionally.
[ ] The documentation for the functionality I've been working on is up-to-date.

OK


Added minified version

I added a minified version for those that just want to include it in their site and don't need to worry about adjusting it. Also this version is almost 4x smaller.

Thanks but have a read of #4 and #75.

Ah. Sounds good. Lots of good points on both sides there. Carry on :)


@EnableRabbitIntegrationTests Improvements

Demo ClassMapper in @RabbitListener
Add example of how to use a custom ClassMapper with JSON.
Also, use a TestExecutionListener to defer queue deletion until after the
context has been stopped; avoids shutdown delays and noise in logs.

Merged as a604f74e5dbda10aac165fe2cd387e6540815310


Consider a render state structure

There are numerous examples of code like this in the codebase:
    final JCGLBlendingType g_b = this.g.getBlending();
    final JCGLDepthBuffersType g_db = this.g.getDepthBuffers();
    final JCGLCullingType g_cu = this.g.getCulling();
    final JCGLColorBufferMaskingType g_cm = this.g.getColorBufferMasking();
    final JCGLStencilBuffersType g_st = this.g.getStencilBuffers();
    final JCGLShadersType g_sh = this.g.getShaders();
    final JCGLDrawType g_dr = this.g.getDraw();
    final JCGLArrayObjectsType g_ao = this.g.getArrayObjects();
    final JCGLTexturesType g_tx = this.g.getTextures();
    final JCGLViewportsType g_v = this.g.getViewports();

    if (g_db.depthBufferGetBits() > 0) {
      g_db.depthBufferTestDisable();
      g_db.depthBufferWriteDisable();
    }

    if (g_st.stencilBufferGetBits() > 0) {
      g_st.stencilBufferDisable();
    }

    g_b.blendingDisable();
    g_cu.cullingDisable();
    g_cm.colorBufferMask(true, true, true, true);
    g_v.viewportSet(parameters.getOutputViewport());

It might be worth having an R2RenderStateType that can efficiently switch to configured sets of global state. Something like:
R2RenderStateType rs;

rs.setBlending(Optional.empty());
rs.setCulling(Optional.empty());
rs.setColorBufferMask(true, true, true, true);
rs.setViewport(parameters.getOutputViewport());

... and then:
rs.activate(g);

The purpose of this is to always provide a completely clean slate when it comes to global state that can leak. For example, the above doesn't set a polygon rendering mode, which means that it implicitly assumes that the polygon mode is set to TRIANGLES. When a piece of code happens to set the polygon mode to something else, the current code will break.
This may actually be a feature for jcanephora to implement.

This is now used everywhere, no reason to keep this open.


Inceptionbn unittest

This PR fixes #295
Note that this PR changes InceptionBN function for testability. The reason is described in the commit message of f167ccb. I believe this does not change the behavior of the function. But please point it out if my understanding is incorrect.

Write test for invalid pool type (it causes NotImplementError)

LGTM except some comments.


Dselans/refresh v2

This includes QOL changes + stuff we've discussed between @jacobheric @blinktag and @uzarubin

Closing the other WIP PR in favor of this one.

Also made the linter a bit stricter.


feat(pinga): consume work from a Jetstream work queue

This change refactors the Pinga server to consume its work (i.e. job requests) via a NATS Jetstream work queue. Leaving outstanding work on an external queue means that a Pinga instance won't lose pending requests when it's shut down or restarted.
The refactoring uses our lib/naxum crate to consume the requests from a Jetstream Stream and otherwise keeps the existing logic largely in place. Importantly:

Processing a job request will almost unconditionally be successfully consumed. This means that if a job itself fails, it will be considered an "acked" message and a successful job run. This matches the prior behavior and can be changed in the future. The implication is that NATS currently will not help to re-deliver a job that has already been run (even if it failed).
Jobs that have failed will no longer be tracked via the JobFailure DAL object and related database table. It appears as though there is no consumer of this data and it's very likely that the JobFailure concept came about before we improved our tracing/logging/telemetry. If this is required again, it can be revived.
A "blocking" job will still use a core NATS reply subject as a mechanism to reply to the caller of the job. Core NATS seems to be the appropriate medium in this case as there should already be a subscriber to that inbox and if the caller goes away, then core NATS will simply drop the reply as no one is listening. A reply subject is added the job request via a NATS message header as the request is published on a NATS Jetstream Stream and there isn't a user-facing API to provide such a reply subject (which is by design).

In addition to using lib/naxum in general the following structural changes have been made:

Remove the old graceful shutdown mechanics and rely on CancellationToken and TaskTracker types instead (these work better with naxum anyway).
Both a Pinga server and any producer of job requests (that would be a DAL Context that is committing with pending jobs) will attempt to create the PINGA_JOBS Jetstream Stream instance, ensuring that the cold boot order of services is not important.

There is still further work to bring Pinga to a behavioral parity with prior version and still more work to address several known issues:

The span-per-request facility isn't fully threaded through and isn't inherently OpenTelemetry-aware.
It's unclear if some of the instrumented spans are being dropped or grouped differently without this consistent request span.
On a graceful shutdown, any jobs in flight will simply be cancelled, whereas we would prefer the in flight jobs be given a window of time to complete before finishing a shutdown.
Not all concurrency metrics are present. These are better delivered as middleware that can wrap around the inner service, but this hasn't been written up yet (note that this middleware can be used across Pinga, Veritech, and Rebeaser services).

/try

ENG-2651


Inconsistent behavior when using RESTORE with dumped negative integers

Search before asking

[X] I had searched in the issues and found no similar issues.

Version
2.9.0
Minimal reproduce step
<IP_ADDRESS>:6666> set k -1
OK
<IP_ADDRESS>:6666> get k
"-1"
<IP_ADDRESS>:6666> dump k
"\x00\xc0\xff\x06\x00\x9a~\x16\xa4p]\xa1V"
<IP_ADDRESS>:6666> restore k1 0 "\x00\xc0\xff\x06\x00\x9a~\x16\xa4p]\xa1V"
OK
<IP_ADDRESS>:6666> get k1
"255"
<IP_ADDRESS>:6666> get k
"-1"
<IP_ADDRESS>:6666> set k2 -2
OK
<IP_ADDRESS>:6666> get k2
"-2"
<IP_ADDRESS>:6666> dump k2
"\x00\xc0\xfe\x06\x00$FVjY\x0c\xb3\xa2"
<IP_ADDRESS>:6666> restore k22 0 "\x00\xc0\xfe\x06\x00$FVjY\x0c\xb3\xa2"
OK
<IP_ADDRESS>:6666> get k2
"-2"
<IP_ADDRESS>:6666> get k22
"254"

What did you expect to see?
The value remains negative after RESTORE.
What did you see instead?
when restoring dumped negative integers, the values are restored as positive numbers (255 for -1 and 254 for -2).
Anything Else?
Possibly a problem with the following code?
https://github.com/apache/kvrocks/blob/2a0c57ac7fc4499a210bc452884025a0010cb470/src/storage/rdb.cc#L158-L160
Are you willing to submit a PR?

[ ] I'm willing to submit a PR!

@fstd2 Good catch. Would you like to fix this?

@git-hulk I'll try.
https://github.com/apache/kvrocks/pull/2547


Wrong Roboto display on webapp

Added explanation on README. One might still have to manually upload the Roboto font to the web app in order to make weighting work.


#1: add support for horses in database initialization

Se agrego la parte de los caballos

/paulo - can you please review this pull request?

/paulo - can you check now?


Unable to build using Chinese characters in the source code

namespace Utils;

class Greeting
{

    public static function say()
    {
        echo "中文";
    }

}

Fixed in the development branch. Feel free to open a new issue if the problem appears again. Thank you for contributing!


Alert enhancement

Changes:
Alert group and alert
Use wechat as a Notifier
expression based alert
Issue:
https://github.com/rancher/docs/issues/1166

LGTM


CBL-3914: Add user-agent header to the replicator

simple default template and test
enhancing to follow as separate tickets for git commit, Linux OS and Windows OS related information.

Note : Tests fails as it requires LiteCore update.


vmap of pmap gives wrong shape

When I do a batched pmap (vmap over pmap), I can access the batch dimension inside the vmap (and it hides another dim of the array).  See repro below:
from jax import lax, pmap, vmap, map
def vv(x, y):
  """Vector-vector multiply"""
  return np.vdot(x, y)

def distributed_matrix_vector(x, y, distributed=True):
  """Matrix vector multiply. First batch it and then row by row"""
  fv = lambda z: lax.map(lambda j: vv(j, y), z)
  if distributed:
    res = pmap(fv)(x.reshape((jax.device_count(), -1) + tuple(x.shape[1:])))
  else:
    res = fv(x)
  print("Inside matrix vector code %s (should be %s)" % (res.shape, (x.shape[0], 1)))
  return res

print("Not vmapped")
key = random.PRNGKey(1)
x = random.normal(key, (800, 50))
y = random.normal(key, (50, 1))
result = distributed_matrix_vector(x, y)
print("Outside matrix vector code", result.shape)

print("Vmapped")
batched_mvm = vmap(lambda b: distributed_matrix_vector(x, b, True), in_axes=(0,))
y = random.normal(key, (10, 50))
result = batched_mvm(y)
print("Outside matrix vector code", result.shape)

# Not vmapped
# Inside matrix vector code (8, 100) (should be (800, 1))
# Outside matrix vector code (8, 100)
# Vmapped
# Inside matrix vector code (8, 10) (should be (800, 1))
# Outside matrix vector code (100, 8, 10)```

I think perhaps we want to reshape res before returning it, to merge the pmapped axis back in. Also, if we use np.dot instead of np.vdot (because the latter when called on a (50,) input and a (50, 1) input will return a scalar result, flattening the second argument) we get nicer shapes:
def vv(x, y):
  """Vector-vector multiply"""
  return np.dot(x, y)

def distributed_matrix_vector(x, y):
  """Matrix vector multiply. First batch it and then row by row"""
  fv = lambda z: lax.map(lambda j: vv(j, y), z)  # or vmap
  res = pmap(fv)(x.reshape((jax.device_count(), -1) + tuple(x.shape[1:])))
  res = res.reshape(res.shape[0] * res.shape[1], *res.shape[2:])
  print("Inside matrix vector code %s (should be %s)" % (res.shape, (x.shape[0], 1)))
  return res

Then the first "Not vmapped" section prints like this:
Not vmapped
Inside matrix vector code (800, 1) (should be (800, 1))
Outside matrix vector code (800, 1)

Will look at the second bit now.

Second bit is definitely a JAX bug! One that I'm surprised lasted this long, but I have a vague feeling I knew this wasn't covered by our tests. Thanks for finding our bugs, Jaxpr Snoek.
The issue was basically that we reused BatchTrace.post_process_call, a method for handling some details for jit, for pmap as well. But in some cases we need to handle pmap differently. We need a post_process_map!
I'll take this opportunity to refactor some stuff...


Adding github repo of the website

Hey @lovishprabhakar I want to add the github repo to this website so that when anyone come to this website they can also contribute to it just by clicking the link. Can you please assign me this issue. Thank you!

/assign


Cast not returning decrypted values

Everything works great but I cannot get the decrypted values back. Other than setting casts is there anything else that needs to be done?

@roelofr  Was wondering if you had a chance to look at this ?

I'll look into this tomorrow (CEST), but I missed it the first time somehow

@roelofr  ok thank you

I couldn't replicate the issue, until I tried to cast from a custom cast to the database. Working on a fix now.

@roelofr  just sharing my code I am not using any custom cast and still hd an issue where the decrypted values are not returned. I tried
`<?php
declare(strict_types=1);
namespace App;
use Illuminate\Database\Eloquent\Model;
use App\Http\Abstracts\UuidModel;
use Illuminate\Support\Str;
use Roelofr\EncryptionCast\Casts\EncryptedAttribute;
class IntakeForm extends UuidModel
{
protected $guarded=[];
/**
 * @inheritDoc
 */
protected $casts = [
    'active' =>'boolean' ,
	'address'=>EncryptedAttribute::class,
    'phone' => EncryptedAttribute::class
];
 /**
 * Get the owning imageable model.
 */
public function intakeformable()
{
    return $this->morphTo();
}

}`
[2020-08-26 18:58:31] dev.ERROR: syntax error, unexpected '?', expecting function (T_FUNCTION) or const (T_CONST) {"exception":"[object] (ParseError(code: 0): syntax error, unexpected '?', expecting function (T_FUNCTION) or const (T_CONST) at /Users//code/instawalkin/vendor/roelofr/laravel-encryption-cast/src/Casts/EncryptedAttribute.php:17) [stacktrace] #0 /Users//code/instawalkin/vendor/composer/ClassLoader.php(322): Composer\\Autoload\\includeFile('/Users/...') #1 [internal function]: Composer\\Autoload\\ClassLoader->loadClass('Roelofr\\\\Encrypt...')

Just wondering if I need to add getAttribute and setAttribute as well?

Are you running PHP 7.4 or PHP 8.0? The line mentioned will throw an exception on PHP 7.3 or older as I'm using typed properties.

I actually installed 7.4.9 - But my composer was not referring to two paths for PHP
"require": {
"php": "^7.3.6"}
And  "config": {
"preferred-install": "dist",
"sort-packages": true,
"optimize-autoloader": true,
"platform": {
"php": "7.4.9"
}
I did a composer dumpautoload after changing both too 7.4.9 and still am getting an error

Also deleted the composer lock file and did a composer install

Fixed, had to do a composer global install and restart my machine

I... I don't know how you have php installed via composer as you're insinuating, but I can recommend to not use a config.platform property unless you really need one. It's safer to rely on Composer figuring it out for you and just use a "php": ">=7.4" entry in your require group.

ah ok ill change it thaks for the advice


Image Registration

Hello @akshitagupta15june , I would like to work on this issue "Image Registration" using homography .
Can you please assign me the same for gssoc,21 ?

Please tell me more about it

@akshitagupta15june
Here, I would take a wrapped or morphed image and register/match the image with the reference image.
I would be comparing  the key-points and descriptors of the both wrapped and the reference image using ORB

Ok add your implementation inside awesome face operations folder

are u working on this?

@akshitagupta15june  yess, I am .
I have finished with the coding section, and now I have started to work on the Readme( documentation) part.


Create Reverse SQL String function

Create SQL function to reverse a string (in the backend.)

Note that this need to reverse at the character, not byte level. Unicode ftw.

This function is now available in the recent built. The below query executes and results the expected answer.
select Reverse('hello') Output: 'olleh'
Thanks. So closing this issue.

This function is now available in the recent built. The below query executes and results the expected answer.
select Reverse('hello') Output: 'olleh'
Thanks. So closing this issue.


NPM: metadelta vs @metadelta/core

They both seem to be the same, except that @metadelta/core is more up-to-date. Which one should I use? Or should I stick to installing from GitHub?

I recommend installing from GitHub as itl'll be easier to audit. Keep in mind that this package is unmaintained though.


Add description of Ingress annotations for out-of-tree Issuers

These Ingress annotations are necessary for ingress-shim to create Certificates with out-of-tree Issuers. As such, documentation for this is helpful.

Thanks for this 😄
/lgtm
/approve
/ok-to-test


get cram from iRods archive

Note: you will need to make sure the hpf account you're running the pipeline from has access to the iRods directory you've linked in units.tsv
Example iRods path: /resarchivezone/tcag/translational_genomics/illumina/genodermatoses/SZU25195/sample.cram

Modified code to accept iRods file path for BAMs.
Tested it on one mital lab genome


Bug : Enhancing the navbar and there is a overlapping in the navbar

Adding better effects and transitions to the Navbar solves the overlapping of buttons, and creates a better navbar, the color combinations nare not visible and clear.

can you add Level 3 to this under Gsoc ext

@devxMani This issue is already been addressed in another issue if not resolved then we will assign it to you


Add and expose loadBalancerSourceRanges in rollout deployment template.

Add and expose loadBalancerSourceRanges in the rollout deployment template.
Issue Link - https://github.com/devtron-labs/devtron/issues/1409

Update documentation too for these changes and include name field as well in the documentation.
https://docs.devtron.ai/devtron/user-guide/creating-application/deployment-template/rollout-deployment#service


add Subscription with context pointer

This follows https://github.com/ros2/rclc/issues/50
This adds rclc_executor_add_subscription_with_context allowing a subscription to avoid calls to global namespace.

@BrettRD thanks for providing this pull request. Feel free to can add me as a reviewer once the PR is ready.

Closing to reduce noise while I add tests and split the PR


Integrate reach resizing code

I believe we have old code centered around the resizing of both segments and reaches.
We should just need to integrate the code that makes it possible to change the size of a reach.
I am not sure if we need to store the original configuration of the reaches as well in case we need to revert the system back after the computations are complete. Brian had mentioned this might be important if they needed to compare the flows at certain points in the network with their original IDs.

@jhrehanoaa
Let's unlink this from the Phase 2 and build a new milestone/project for Phase 3.
@awlostowski-noaa
You have finished this in large measure. We can talk about the best way to integrate what you have, then decide where that leads with the other options on the table.

Duplicate of #23

This capability is closely tied with testing of stability and sensitivity of the algorithms.

I have segment resizing code from when we were back in the office. I sent
that over to Adam to aid with the work that he recently presented. Is this
not what he had accomplished?
On Thu, Aug 27, 2020 at 11:41 AM jameshalgren<EMAIL_ADDRESS>wrote:

@jhrehanoaa https://github.com/jhrehanoaa
Let's unlink this from the Phase 2 and build a new milestone/project for
Phase 3.
@awlostowski-noaa https://github.com/awlostowski-noaa
You have finished this in large measure. We can talk about the best way to
integrate what you have, then decide where that leads with the other
options on the table.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/NOAA-OWP/t-route/issues/72#issuecomment-682062302,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AOIRIPHJKJWJDPD5KJZ6KFLSC2EDDANCNFSM4ORUP3SA
.

--
Jacob E. Hreha
National Water Center
205 Hackberry Lane,
Tuscaloosa, AL  35401
Office:<PHONE_NUMBER> x71475
<EMAIL_ADDRESS><EMAIL_ADDRESS>http://nws.noaa.gov/oh/nwc/ http://www.nohrsc.noaa.gov/

Closed with #177

Closed with #177


blueprint show -s indexerror

running on ubunto-10.04.3
alex@alex-ubuntu:~$ blueprint show -S myserver
Traceback (most recent call last):
File "/usr/bin/blueprint-show", line 66, in
filename = getattr(b, options.generate)(options.relaxed).dumpf()
File "/usr/lib/python2.6/dist-packages/blueprint/init.py", line 463, in sh
return frontend.sh.sh(self, relaxed, server, secret)
File "/usr/lib/python2.6/dist-packages/blueprint/frontend/sh.py", line 186, in sh
service=service)
File "/usr/lib/python2.6/dist-packages/blueprint/init.py", line 493, in walk
walk.walk(self, **kwargs)
File "/usr/lib/python2.6/dist-packages/blueprint/walk.py", line 27, in walk
walk_files(b, **kwargs)
File "/usr/lib/python2.6/dist-packages/blueprint/walk.py", line 96, in walk_files
callable(pathname, f)
File "/usr/lib/python2.6/dist-packages/blueprint/frontend/sh.py", line 113, in file
s.add(*commands, stdin=f['content'], stdout=pathname)
File "/usr/lib/python2.6/dist-packages/blueprint/frontend/sh.py", line 257, in add
self.out.append(command(*args, **kwargs))
File "/usr/lib/python2.6/dist-packages/blueprint/frontend/sh.py", line 208, in command
'' if '\n' == stdin[-1] else '\n',
IndexError: string index out of range

Thanks for reporting this, Alex.


Add docs on instance groups

Note that I removed the note about restarting to pick up the new image since I've seen the opposite lately.


Is it possible to enable the Require() Import ?

Hello,
I have a typescript application and I use your tool. In my Typescript file, I import your library dynamically with the
import { extract } from “@extractus/article-extractor”;
But once the code compiles in Javascript, it converts to
const article_extractor_1 = require(“@extractus/article-extractor”);
And I get an error :
const article_extractor_1 = require("@extractus/article-extractor");

Error [ERR_REQUIRE_ESM]: require() of ES Module

** to a dynamic import() which is available in all CommonJS modules.

Is it possible to make the import available with require like the old article-parser library?
Thanks

Yeah, the only reason why I'm not using this package is I run into this when I build my typescipt project. I don't want to have to restructure my whole project for this one package.
@Philrobots, were you able to come up with a workaround for this?

Yeah, the only reason why I'm not using this package is I run into this when I build my typescipt project. I don't want to have to restructure my whole project for this one package.
@Philrobots, were you able to come up with a workaround for this?

RIght now, I use the last version that accept require import
v7.2.6

@Philrobots @keypuncheralwin sorry for the inconvenience. I will try to revert CJS version in the next release.

@Philrobots @keypuncheralwin sorry for the inconvenience. I will try to revert CJS version in the next release.

thank you very much

Yeah, the only reason why I'm not using this package is I run into this when I build my typescipt project. I don't want to have to restructure my whole project for this one package.
@Philrobots, were you able to come up with a workaround for this?

RIght now, I use the last version that accept require import
v7.2.6

it worked. thanks

@ndaidong  What's up with this issue ?
Still not resolved


Allow user to highlight graphs with colours. The user can select a colour (+ assign) a name and use this colour to mark nodes and edges in the graph.

User selects nodes and edges in between are coloured automatically.

Duplicate of #158

Duplicate of #158


Korean translation

한국어 번역입니다.

This is Korean translation supported by clayop.

There were some significant translation updates in newlayout branch, please help us keep Korean translation up to date, here is what have changed compared to develop branch: https://www.evernote.com/shard/s9/sh/2d935ab8-5b6b-40c3-aff2-012c16dda03f/16fe31e2c152562f


Custom notification sound is not working in iOS 13.6

I have followed the documentation and the custom notification was working just fine. But in the updated iOS version(13.6) in iPhone SE(old) I am unable to get the custom notification sound. It. might be a bug fir the updated iOS version.
Could you please check this!
I have added the plugin in my ionic 3 apps. Let me show you a few things and codes for better understandings.
I have added this to config.xml under ios platform.
<resource-file src="resources/ios/sound/notification_sound.caf" />

in the above screenshot, you can clearly see the file under Resources.
it is a .caf file and less than 30 seconds hence follow apple rules for ringtone which I got after converting like in docs
The push notification works through firebase cloud functions like this.

This was working fine but now not. Awaiting your response to this.

Ours is working fine with simply sound: 'mysound.caf' as part of the notification payload.

@spacesuitdiver Yes, buddy. It worked. Just removed notification sound from data Object


Pagination: max number of pages and ellipsis support

We should support 2 additional options:

max number of pages displayed
ellipsis if max no of displayed pages is exceeded

By ellipsis, do you mean like given a max page of 100, and we are displaying 5 at a time, the UI would be like this?
<< ... 31 32 33 34 35 ... >>

By ellipsis, do you mean

Actually I don't know what I've meant by this :-) Meant to check what exists in the current version of the library + check opened / closed issues to check what we've rejected (or not)
Feel free to take over this one if you remember / know those patterns

Closing in favor of more-specific issues I've just opened.


Add support for transferring G1000 databases

I am using an official garmin SD card with
lsusb
Bus 001 Device 008: ID 05e3:0745 Genesys Logic, Inc. Logilink CR0012
Therefore I modified your device.py:
class GarminProgrammerDevice():
VID = 0x05E3
PID = 0x0745
But "jdmtool detect" returns the following errors:
Found device: Bus 001 Device 008: ID 05e3:0745
Traceback (most recent call last):
File "/home/hbu/.local/bin/jdmtool", line 8, in
sys.exit(main())
File "/home/hbu/.local/lib/python3.10/site-packages/jdmtool/main.py", line 442, in main
func(**kwargs)
File "/home/hbu/.local/lib/python3.10/site-packages/jdmtool/main.py", line 66, in wrapper
with handle.claimInterface(0):
File "/home/hbu/.local/lib/python3.10/site-packages/usb1/init.py", line 1146, in claimInterface
mayRaiseUSBError(
File "/home/hbu/.local/lib/python3.10/site-packages/usb1/init.py", line 127, in mayRaiseUSBError
__raiseUSBError(value)
File "/home/hbu/.local/lib/python3.10/site-packages/usb1/init.py", line 119, in raiseUSBError
raise __STATUS_TO_EXCEPTION_DICT.get(value, __USBError)(value)
usb1.USBErrorBusy: LIBUSB_ERROR_BUSY [-6]
Do you have any hints/suggestions?

That error most likely means that the device is already in use by some existing driver.
Does your SD card reader already show up as normal storage device? If you can already open the SD card and copy files to it, then there's no need to access the device directly. (That's not the case for GNS 430, which is why I implemented all of the USB logic.)
If you can access the SD card, the next question would be: do you know how the database needs to be stored there? E.g., copy the .zip file to it, or unzip it and copy the contents, or maybe the database is a disk image that should be copied directly to the device, etc. If you know the answer, I can make jdmtool do all that. If not... you'd need to look at an existing SD card and figure out how the database is stored there, or try the official Jeppesen tool and see what it does.

The Garmin SD card shows up as a normal storage device. Below you will find a listing of the content:
ls -lR
.:
insgesamt 3603840
-rw-r--r-- 1 hbu users        587 14. Jan 13:54 airframe_info.xml
-rw-r--r-- 1 hbu users     197716  9. Apr 08:29 AirportReport.html
-rw-r--r-- 1 hbu users    5095617  9. Apr 08:31 apt_dir.gca
-rw-r--r-- 1 hbu users       1037 17. Feb 22:46 apt_dir.gca.sff
-rw-r--r-- 1 hbu users       1038 26. Mär 19:10 avtn_db.bin.sff
-rw-r--r-- 1 hbu users   21799170  9. Apr 08:31 bmap2.bin
-rw-r--r-- 1 hbu users       1385 26. Mär 19:11 bmap2.bin.sff
-rw-r--r-- 1 hbu users   21237764  9. Apr 08:30 bmap.bin
-rw-r--r-- 1 hbu users       1385 26. Mär 19:11 bmap.bin.sff
drwxr-xr-x 2 hbu users      65536  9. Apr 08:28 Charts
-rw-r--r-- 1 hbu users       2076  3. Apr 18:36 chartview.hif.sff
-r--r--r-- 1 hbu users      18260  9. Apr 08:56 feat_unlk.dat
drwxr-xr-x 2 hbu users      65536 17. Feb 21:23 Fonts
drwxr-xr-x 2 hbu users      65536 14. Jan 12:44 ldr_sys
-rw-r--r-- 1 hbu users       1038 26. Mär 19:10 nav_db2.bin.sff
-rw-r--r-- 1 hbu users   13131584  9. Apr 08:32 safetaxi2.gca
-rw-r--r-- 1 hbu users       1038 17. Feb 22:47 safetaxi2.gca.sff
-rw-r--r-- 1 hbu users    5793796  9. Apr 08:32 safetaxi.bin
-rw-r--r-- 1 hbu users       1037 17. Feb 22:47 safetaxi.bin.sff
-rw-r--r-- 1 hbu users   16756817  9. Apr 08:30 standard.odb
-rw-r--r-- 1 hbu users       1038 26. Mär 19:10 standard.odb.sff
drwxr-xr-x 2 hbu users      65536 14. Jan 12:25 System Volume Information
-rw-r--r-- 1 hbu users    7250153  9. Apr 08:30 terrain.odb
-rw-r--r-- 1 hbu users       1037 26. Mär 19:10 terrain.odb.sff
-rw-r--r-- 1 hbu users<PHONE_NUMBER>  9. Apr 08:54 trn.dat
-rw-r--r-- 1 hbu users      38535 17. Feb 21:19 trn.dat.sff
./Charts:
insgesamt 403648
-rw-r--r-- 1 hbu users    448818  9. Apr 08:28 airports.dbf
-rw-r--r-- 1 hbu users 391368610  9. Apr 08:28 charts.bin
-rw-r--r-- 1 hbu users   2240577  9. Apr 08:28 charts.dbf
-rw-r--r-- 1 hbu users        95  3. Apr 18:36 charts.ini
-rw-r--r-- 1 hbu users  16612854  3. Apr 18:36 chartview.hif
-rw-r--r-- 1 hbu users   1248979  3. Apr 18:36 chrtlink.dbf
-rw-r--r-- 1 hbu users       358  9. Apr 08:28 crcfiles.txt
-rw-r--r-- 1 hbu users      9834  3. Apr 18:36 ctypes.dbf
-rw-r--r-- 1 hbu users       407  3. Apr 18:36 jeppesen.tfl
-rw-r--r-- 1 hbu users      8896  3. Apr 18:36 jeppesen.tls
-rw-r--r-- 1 hbu users      2526  3. Apr 18:36 lssdef.tcl
-rw-r--r-- 1 hbu users     93392  9. Apr 08:28 notams.dbf
-rw-r--r-- 1 hbu users    708609  9. Apr 08:28 notams.dbt
./Fonts:
insgesamt 2944
-rw-r--r-- 1 hbu users 66080  3. Apr 18:36 arialbd.jtf
-rw-r--r-- 1 hbu users 60012  3. Apr 18:36 arialn.jtf
-rw-r--r-- 1 hbu users 19652  3. Apr 18:36 crysn.jtf
-rw-r--r-- 1 hbu users 31684  3. Apr 18:36 font11.jtf
-rw-r--r-- 1 hbu users 22200  3. Apr 18:36 font12.jtf
-rw-r--r-- 1 hbu users 20500  3. Apr 18:36 font13.jtf
-rw-r--r-- 1 hbu users 20660  3. Apr 18:36 font15.jtf
-rw-r--r-- 1 hbu users 19732  3. Apr 18:36 font16.jtf
-rw-r--r-- 1 hbu users 24772  3. Apr 18:36 font17.jtf
-rw-r--r-- 1 hbu users 44664  3. Apr 18:36 font1.jtf
-rw-r--r-- 1 hbu users 44224  3. Apr 18:36 font21.jtf
-rw-r--r-- 1 hbu users 39788  3. Apr 18:36 font23.jtf
-rw-r--r-- 1 hbu users 39144  3. Apr 18:36 font24.jtf
-rw-r--r-- 1 hbu users 48120  3. Apr 18:36 font25.jtf
-rw-r--r-- 1 hbu users 46208  3. Apr 18:36 font26.jtf
-rw-r--r-- 1 hbu users 49424  3. Apr 18:36 font27.jtf
-rw-r--r-- 1 hbu users 44224  3. Apr 18:36 font2.jtf
-rw-r--r-- 1 hbu users 19352  3. Apr 18:36 font32.jtf
-rw-r--r-- 1 hbu users 20052  3. Apr 18:36 font34.jtf
-rw-r--r-- 1 hbu users 11928  3. Apr 18:36 font35.jtf
-rw-r--r-- 1 hbu users 40356  3. Apr 18:36 font3.jtf
-rw-r--r-- 1 hbu users 22292  3. Apr 18:36 font43.jtf
-rw-r--r-- 1 hbu users 39340  3. Apr 18:36 font4.jtf
-rw-r--r-- 1 hbu users 34908  3. Apr 18:36 font52.jtf
-rw-r--r-- 1 hbu users 47328  3. Apr 18:36 font5.jtf
-rw-r--r-- 1 hbu users 21652  3. Apr 18:36 font65.jtf
-rw-r--r-- 1 hbu users 44556  3. Apr 18:36 font6.jtf
-rw-r--r-- 1 hbu users 45476  3. Apr 18:36 font71.jtf
-rw-r--r-- 1 hbu users 41264  3. Apr 18:36 font73.jtf
-rw-r--r-- 1 hbu users 39352  3. Apr 18:36 font74.jtf
-rw-r--r-- 1 hbu users 48284  3. Apr 18:36 font75.jtf
-rw-r--r-- 1 hbu users 46836  3. Apr 18:36 font76.jtf
-rw-r--r-- 1 hbu users 50128  3. Apr 18:36 font77.jtf
-rw-r--r-- 1 hbu users  3648  3. Apr 18:36 font79.jtf
-rw-r--r-- 1 hbu users 49560  3. Apr 18:36 font7.jtf
-rw-r--r-- 1 hbu users 12924  3. Apr 18:36 font80.jtf
-rw-r--r-- 1 hbu users 36492  3. Apr 18:36 font81.jtf
-rw-r--r-- 1 hbu users 30384  3. Apr 18:36 font82.jtf
-rw-r--r-- 1 hbu users 28992  3. Apr 18:36 font84.jtf
-rw-r--r-- 1 hbu users 42996  3. Apr 18:36 font8.jtf
-rw-r--r-- 1 hbu users   407  3. Apr 18:36 jeppesen.tfl
-rw-r--r-- 1 hbu users  8896  3. Apr 18:36 jeppesen.tls
-rw-r--r-- 1 hbu users  2526  3. Apr 18:36 lssdef.tcl
-rw-r--r-- 1 hbu users 28968  3. Apr 18:36 monspacb.jtf
-rw-r--r-- 1 hbu users 64544  3. Apr 18:36 sserife.jtf
./ldr_sys:
insgesamt 20608
-rw-r--r-- 1 hbu users  9421599  9. Apr 08:31 avtn_db.bin
-rw-r--r-- 1 hbu users     5577  9. Apr 08:27 grm_feat_key.zip
-rw-r--r-- 1 hbu users 11553624  9. Apr 08:31 nav_db2.bin
./System Volume Information:
insgesamt 128
-rw-r--r-- 1 hbu users 76 14. Jan 12:25 IndexerVolumeGuid
-rw-r--r-- 1 hbu users 12 14. Jan 12:25 WPSettings.dat

Well, I have something working, but I would NOT try it on the real SD cards just yet.
Turns out, the .sff files were easy - they're just some extra downloads.
But, there's feat_unlk.dat, which appears to be some attempt at copy protection. From the manual:

This file is placed on the card when the databases are written to the card. It is required. It controls the copy protection for all the databases on the card. If this file is missing, NO databases on the card will be accepted by the avionics.  If it is deleted, all databases will need to be reinstalled using fly.garmin.com.

And from this forum:

When you download the new data each month from Jeppesen, they write the 2 DB files that contain all the data, PLUS they write a special file just for you called 'feat_unlk.dat' which contains your G1000 system ID and some checksum information about the DB files. When you power up the G1000, it looks at the top slot, and if it finds a card there, it looks for a 'feat_unlk.dat' file on the card. If it finds that file, it checks the System_ID in the file against the hardware ID of your G1000. If it doesn't match, it ignores the data on the card and just boots normally.

So I have not yet figured out how it works - but presumably, the G1000 won't accept the database update without it.
My code copies everything else, though. If you're curious to try it, it's in the g1000 branch. It can work with any directory, not necessarily an SD card. Run jdmtool refresh again and re-download the databases if jdminfo list says they're not downloaded - it needs some extra files now. Then:
$ mkdir tmp
$ jdmtool transfer 4 ./tmp/
WARNING: tmp appears to be a normal directory, not a device.
Transfer databases to tmp? (y/n) y
Copying /home/dima/.local/share/jdmtool/downloads/dga035_2303_29114daf.zip!ldr_sys\avtn_db.bin to tmp/ldr_sys/avtn_db.bin...
Copying /home/dima/.local/share/jdmtool/downloads/dga035_2303_29114daf.zip!ldr_sys\nav_db2.bin to tmp/ldr_sys/nav_db2.bin...
Copying /home/dima/.local/share/jdmtool/downloads/nav_db2.bin.sff to tmp/nav_db2.bin.sff...
Copying /home/dima/.local/share/jdmtool/downloads/avtn_db.bin.sff to tmp/avtn_db.bin.sff...
Done

Just a side note about the G1000NXi:
I do not use the top slot for the SD card on the G1000NXi, I always use the bottom slot (where normally the FS510 is installed). With a "normal = non Garmin" SD Card and JDM I was able to upgrade the databases on the G1000NXi.
I will check if the dabases can be upgraded using your newest version of jdmtool, a normal SD Card and using the bottom slot. Hopefully the feat_unlk.dat file is not checked using the bottom slot.
I can give you a feedback in a week (since I probably will have no access to the plane until then).

Interesting, sounds good.
These are the databases that use feat_unlk.dat, by the way:

Garmin G1000, G900X, G950, Perspective, Prodigy - Airport Directory
Garmin G1000, G900X, G950, Perspective, Prodigy - SafeTaxi
Garmin G1000 NXi, Perspective + - Obstacles
Garmin G1000 NXi, Perspective + - Basemap

I've made some progress on reverse-engineering feat_unlk.dat. Besides the databases, it also uses the ID of the partition - I guess that's how they stop you from just copying everything to a different SD card.
But of course, you can set the ID yourself when formatting the device. E.g., set it to 1234abcd:
$ sudo chown dima:dima /dev/sda
$ mkdosfs -i 1234abcd -F 32 -n GARMIN /dev/sda
mkfs.fat 4.2 (2021-01-31)
$ blkid /dev/sda
/dev/sda: LABEL_FATBOOT="GARMIN" LABEL="GARMIN" UUID="1234-ABCD" BLOCK_SIZE="512" TYPE="vfat"

(Or change it without formatting using gparted or whatever, but I haven't tried it.
Also, they were nice enough to move all copy protection code into a separate executable, plugins/oem_garmin/g_plugin.exe, that's only 200KB. So I don't need to reverse engineer the whole JDM - just the plugin. It communicates over JSONRPC, and even runs in wine! (Though wine needs the device file to be readable by the user - otherwise, it's not smart enough to get its ID.)
Transferring the databases:
$ jdmtool transfer 2 /run/media/dima/GARMIN/
WARNING: this database requires feat_unlk.dat, and will likely not work!
Transfer databases to /run/media/dima/GARMIN? (y/n) y
Copying /home/dima/.local/share/jdmtool/downloads/dgs235_23s1_5d913c72.zip!safetaxi.bin to /run/media/dima/GARMIN/safetaxi.bin...
Copying /home/dima/.local/share/jdmtool/downloads/dgs235_23s1_5d913c72.zip!safetaxi2.gca to /run/media/dima/GARMIN/safetaxi2.gca...
Done

Running the plugin:
$ wine g_plugin.exe
0178:fixme:msvcp:_Locinfo__Locinfo_ctor_cat_cstr (0063FA5C 1 C) semi-stub
0178:fixme:msvcp:_Locinfo__Locinfo_ctor_cat_cstr (0063F9CC 1 C) semi-stub
0178:fixme:msvcp:_Locinfo__Locinfo_ctor_cat_cstr (0063F744 1 C) semi-stub
verifying crc
card will unlock feature "safetaxi" on system(s) with the following IDs: 0x5DC5F1B0. card S/N = 0x0
verifying crc
card will unlock feature "safetaxi2" on system(s) with the following IDs: 0x5DC5F1B0. card S/N = 0x0

Sending requests for the two files:
$ curl -d '{"id":"33102457_23S1","jsonrpc":"2.0","method":"program","params":{"datafile":"E:/safetaxi.bin","featunlk":"E:/feat_unlk.dat","garmin_sec_id":191,"numaircraft":0,"sysid":"0x25DC5F1AE","uid":"33102457","vers":"23S1"}}' http://localhost:8010/
{"id":"33102457_23S1","jsonrpc":"2.0","result":{"code":0,"message":"Garmin Programming has passed."}}
$ curl -d '{"id":"33102457_23S1","jsonrpc":"2.0","method":"program","params":{"datafile":"E:/safetaxi2.gca","featunlk":"E:/feat_unlk.dat","garmin_sec_id":191,"numaircraft":0,"sysid":"0x25DC5F1AE","uid":"33102457","vers":"23S1"}}' http://localhost:8010/
{"id":"33102457_23S1","jsonrpc":"2.0","result":{"code":0,"message":"Garmin Programming has passed."}}

And it produces a feat_unlk.dat that's identical to the one created by JDM.
If I can't reverse-engineer the plugin, I can just run it on some server. CPAAS - Copy Protection As A Service!

Thanks a lot for your comments. However "g_plugin.exe" seems not work on my system.
I had to copy the library GrmNavdata.dll to the wine c:\windows folder in order to use g_plugin.exe.
I am using a SD card with one database:
hbu@laptophbu2:/run/media/hbu/GARMIN> ll
insgesamt 18544
drwxr-xr-x 2 hbu users    16384 16. Apr 16:39 ldr_sys
-rw-r--r-- 1 hbu users 13130982 16. Apr 16:39 safetaxi2.gca
-rw-r--r-- 1 hbu users  5816324 16. Apr 16:39 safetaxi.bin
wine ~/bin/g_plugin.exe
015c:fixme:msvcp:_Locinfo__Locinfo_ctor_cat_cstr (0053FA5C 1 C) semi-stub
015c:fixme:msvcp:_Locinfo__Locinfo_ctor_cat_cstr (0053F9CC 1 C) semi-stub
015c:fixme:msvcp:_Locinfo__Locinfo_ctor_cat_cstr (0053F744 1 C) semi-stub
I seems that g_plugin.exe does not find the wine windows drive with the SD card. But according to winecfg the SD card is there.
Do you have any hints?

Oh, yeah, I'm still working on automating most of this. I couldn't decide if my goal was to just make it work on Linux (and relying on g_plugin.exe was an acceptable compromise), or fully reverse-engineer featunlk.dat and create it from Python.
Anyways, a few things:

Windows programs (unlike Linux ones) generally assume they're run from the directory where the .exe is located, and look for DLLs there, too. That's why it couldn't find GrmNavdata.dll. If you do cd .../plugins/oem_garmin first, then it should work.
My curl example was using drive E: (cause I already had another device plugged in earlier), but it might be D: for you.
g_plugin.exe doesn't do anything by itself - it runs runs a server and waits for requests (but also times out after a minute or two). So you have to start it first, then run the curl command, and possibly replace E:/ with the correct drive.
You have to make sure that the device file is readable to your user - otherwise, wine will use an ID of 0 instead of the correct one. In winecfg->Drives, click "Show Advanced", and make sure Serial is not 0.

I'll try to make jdmtool actually run wine and perform all the necessary checks.

Just updated the g1000 branch - it will now try to find g_plugin.exe and run everything automatically. (You can also set G_PLUGIN_PATH environment variable to point it at the g_plugin.exe.)
This is what it looks like for me:
$ jdmtool transfer 6 /run/media/dima/GARMIN/
NOTE: this database requires feat_unlk.dat; will need to run g_plugin from JDM!
Transfer databases to /run/media/dima/GARMIN? (y/n) y
Found device: /dev/sda
Found serial number: 0000-0001
Creating /run/media/dima/GARMIN/.windows-serial so Wine can find the serial number...
Getting Windows drive for /run/media/dima/GARMIN...
Found E:
Found g_plugin at '/home/dima/.wine/dosdevices/c:/Program Files (x86)/Jeppesen/Jdm/plugins/oem_garmin/g_plugin.exe'
Copying /home/dima/.local/share/jdmtool/downloads/dgb000_22m1_2ff68ff3.zip!bmap.bin to /run/media/dima/GARMIN/bmap.bin...
Copying /home/dima/.local/share/jdmtool/downloads/dgb000_22m1_2ff68ff3.zip!bmap2.bin to /run/media/dima/GARMIN/bmap2.bin...
Starting g_plugin...
Started g_plugin successfully
Updating feat_unlk.dat for bmap.bin...
verifying crc
card will unlock feature "basemap" on system(s) with the following IDs: 0x5DC5F1B0. card S/N = 0x0
Got response: {'id': '33810500_22M1', 'jsonrpc': '2.0', 'result': {'code': 0, 'message': 'Garmin Programming has passed.'}}
Updating feat_unlk.dat for bmap2.bin...
verifying crc
card will unlock feature "basemap2" on system(s) with the following IDs: 0x5DC5F1B0. card S/N = 0x0
Got response: {'id': '33810500_22M1', 'jsonrpc': '2.0', 'result': {'code': 0, 'message': 'Garmin Programming has passed.'}}
Shutting down g_plugin.
Copying /home/dima/.local/share/jdmtool/downloads/sff/33810500_22M1/bmap.bin.sff to /run/media/dima/GARMIN/bmap.bin.sff...
Copying /home/dima/.local/share/jdmtool/downloads/sff/33810500_22M1/bmap2.bin.sff to /run/media/dima/GARMIN/bmap2.bin.sff...
Copying /home/dima/.local/share/jdmtool/grm_feat_key.zip to /run/media/dima/GARMIN/ldr_sys/grm_feat_key.zip...
Done

(Some of the output there actually comes from g_plugin.exe.)
It produces exactly the same files as JDM, as far as I can tell (except that it doesn't create .jdm - it's a JSON file, and I'm pretty sure it's only used by JDM itself; I can't imagine G1000 reading JSON.)
There are a couple Wine bugs to be aware of:

It doesn't know how to get the device's serial number unless the device file is readable, even though it's available in /dev/disk/by-uuid/. But, there's a way to override it using a .windows-serial file on the device itself, so that's what I'm doing.
Wine only reads .windows-serial when the wineserver starts up, and doesn't update it after that. Even winecfg doesn't update it correctly. So make sure wineserver is not running when you run jdmtool. (But I also added a check for incorrect serial numbers, so you'll see an error if wine messes up.)

Let me know if this works! Ideally, compare it to the files created by JDM, and see if they're identical. If they are, then that's a pretty good guarantee that it'll work on the G1000.

Oh, you'll also need to run pip install again - I added a dependency on psutil.

The file feat_unlk.dat was created on my SD card!
jdmtool transfer 5 /run/media/hbu/GARMIN/
NOTE: this database requires feat_unlk.dat; will need to run g_plugin from JDM!
Transfer databases to /run/media/hbu/GARMIN? (y/n) y
Found device: /dev/sda1
Found serial number: F292-70A6
Creating /run/media/hbu/GARMIN/.windows-serial so Wine can find the serial number...
Getting Windows drive for /run/media/hbu/GARMIN...
Found E:
Found g_plugin at '/home/hbu/.wine/dosdevices/c:/Program Files (x86)/Jeppesen/Jdm/plugins/oem_garmin/g_plugin.exe'
Copying /home/hbu/.local/share/jdmtool/downloads/dgs235_23s2_5267159b.zip!safetaxi.bin to /run/media/hbu/GARMIN/safetaxi.bin...
Copying /home/hbu/.local/share/jdmtool/downloads/dgs235_23s2_5267159b.zip!safetaxi2.gca to /run/media/hbu/GARMIN/safetaxi2.gca...
Starting g_plugin...
Started g_plugin successfully
Updating feat_unlk.dat for safetaxi.bin...
verifying crc
card will unlock feature "safetaxi" on system(s) with the following IDs: 0x5DC5F1B0. card S/N = 0x0
Got response: {'code': 0, 'message': 'Garmin Programming has passed.'}
Updating feat_unlk.dat for safetaxi2.gca...
verifying crc
card will unlock feature "safetaxi2" on system(s) with the following IDs: 0x5DC5F1B0. card S/N = 0x0
Got response: {'code': 0, 'message': 'Garmin Programming has passed.'}
Shutting down g_plugin.
Done
ll /run/media/hbu/GARMIN/
insgesamt 18560
-r--r--r-- 1 hbu users    17347 18. Apr 11:37 feat_unlk.dat
-rw-r--r-- 1 hbu users 13130982 18. Apr 11:37 safetaxi2.gca
-rw-r--r-- 1 hbu users  5816324 18. Apr 11:37 safetaxi.bin
On friday I will try to load all new databases from this card into the G1000NXi system. Keep finger crossed!

So were you able to load them into the G1000NXi?

Partially!
Several database could be loaded using jdmtool (including safetaxi). So the generation of the "feat_unlk.dat" file seems to work. Great news!
However the jeppesen chart were not recognized as new and were therefore not be uploaded. I had to use the orginal JDM tool.
It might be due to different folder structure using either jdm or jdmtool:
Original Garmin SD Card using JDM:
ll
insgesamt 3604224
-rw-r--r-- 1         587 14. Jan 13:54 airframe_info.xml
-rw-r--r-- 1      197806 18. Apr 14:02 AirportReport.html
-rw-r--r-- 1     5115037 18. Apr 14:05 apt_dir.gca
-rw-r--r-- 1        1037 17. Feb 22:46 apt_dir.gca.sff
-rw-r--r-- 1        1038 13. Apr 01:07 avtn_db.bin.sff
-rw-r--r-- 1    21799170 18. Apr 14:05 bmap2.bin
-rw-r--r-- 1        1385 26. Mär 19:11 bmap2.bin.sff
-rw-r--r-- 1    21237764 18. Apr 14:04 bmap.bin
-rw-r--r-- 1        1385 26. Mär 19:11 bmap.bin.sff
drwxr-xr-x 2       65536  9. Apr 08:28 Charts
-rw-r--r-- 1        1385 13. Apr 01:07 chartview.hif.sff
-r--r--r-- 1       18260 18. Apr 14:05 feat_unlk.dat
drwxr-xr-x 2       65536 17. Feb 21:23 Fonts
drwxr-xr-x 2       65536 14. Jan 12:44 ldr_sys
-rw-r--r-- 1        1038 13. Apr 01:07 nav_db2.bin.sff
-rw-r--r-- 1    13130982 18. Apr 14:05 safetaxi2.gca
-rw-r--r-- 1        1038 17. Feb 22:47 safetaxi2.gca.sff
-rw-r--r-- 1     5816324 18. Apr 14:05 safetaxi.bin
-rw-r--r-- 1        1037 17. Feb 22:47 safetaxi.bin.sff
-rw-r--r-- 1    16994877 18. Apr 14:04 standard.odb
-rw-r--r-- 1        1385 13. Apr 01:07 standard.odb.sff
drwxr-xr-x 2       65536 14. Jan 12:25 System Volume Information
-rw-r--r-- 1     7317305 18. Apr 14:04 terrain.odb
-rw-r--r-- 1        1037 13. Apr 01:07 terrain.odb.sff
-rw-r--r-- 1<PHONE_NUMBER>  9. Apr 08:54 trn.dat
-rw-r--r-- 1       38535 17. Feb 21:19 trn.dat.sff
ll Charts/
insgesamt 412160
-rw-r--r-- 1     449029 18. Apr 14:01 airports.dbf
-rw-r--r-- 1  399405890 18. Apr 14:02 charts.bin
-rw-r--r-- 1    2269697 18. Apr 14:01 charts.dbf
-rw-r--r-- 1         95 13. Apr 01:07 charts.ini
-rw-r--r-- 1   17212317 13. Apr 01:07 chartview.hif
-rw-r--r-- 1    1259077 13. Apr 01:08 chrtlink.dbf
-rw-r--r-- 1        358 18. Apr 14:01 crcfiles.txt
-rw-r--r-- 1       9834 13. Apr 01:07 ctypes.dbf
-rw-r--r-- 1        407 13. Apr 01:07 jeppesen.tfl
-rw-r--r-- 1       8896 13. Apr 01:07 jeppesen.tls
-rw-r--r-- 1       2526 13. Apr 01:07 lssdef.tcl
-rw-r--r-- 1      98222 18. Apr 14:01 notams.dbf
-rw-r--r-- 1     744961 18. Apr 14:01 notams.dbt
ll Charts/
insgesamt 412160
-rw-r--r-- 1     449029 18. Apr 14:01 airports.dbf
-rw-r--r-- 1  399405890 18. Apr 14:02 charts.bin
-rw-r--r-- 1    2269697 18. Apr 14:01 charts.dbf
-rw-r--r-- 1         95 13. Apr 01:07 charts.ini
-rw-r--r-- 1   17212317 13. Apr 01:07 chartview.hif
-rw-r--r-- 1    1259077 13. Apr 01:08 chrtlink.dbf
-rw-r--r-- 1        358 18. Apr 14:01 crcfiles.txt
-rw-r--r-- 1       9834 13. Apr 01:07 ctypes.dbf
-rw-r--r-- 1        407 13. Apr 01:07 jeppesen.tfl
-rw-r--r-- 1       8896 13. Apr 01:07 jeppesen.tls
-rw-r--r-- 1       2526 13. Apr 01:07 lssdef.tcl
-rw-r--r-- 1      98222 18. Apr 14:01 notams.dbf
-rw-r--r-- 1     744961 18. Apr 14:01 notams.dbt
ll ldr_sys/
insgesamt 20672
-rw-r--r-- 1   9449990 18. Apr 14:05 avtn_db.bin
-rw-r--r-- 1      5577 18. Apr 14:00 grm_feat_key.zip
-rw-r--r-- 1  11588311 18. Apr 14:05 nav_db2.bin
SDcard using JDMTOOL:
ll
insgesamt 4021632
-rw-r--r-- 1   233560138 18. Apr 11:46 023FL01687_VFRCharts.bin
-rw-r--r-- 1   165845779 18. Apr 11:46 023KM01684_Charts.bin
-rw-r--r-- 1         587  9. Apr 18:09 airframe_info.xml
-rw-r--r-- 1     1513947 18. Apr 11:46 Airports.dbf
-rw-r--r-- 1     5115037 18. Apr 11:42 apt_dir.gca
-rw-r--r-- 1        1038 18. Apr 11:43 avtn_db.bin.sff
-rw-r--r-- 1    21799170 18. Apr 11:45 bmap2.bin
-rw-r--r-- 1        1385 18. Apr 11:45 bmap2.bin.sff
-rw-r--r-- 1    21237764 18. Apr 11:45 bmap.bin
-rw-r--r-- 1        1385 18. Apr 11:45 bmap.bin.sff
-rw-r--r-- 1    10081398 18. Apr 11:46 charts.dbf
-rw-r--r-- 1          95 18. Apr 11:46 charts.ini
-rw-r--r-- 1        1385 18. Apr 11:46 chartview.hif.sff
-rw-r--r-- 1     6317252 18. Apr 11:46 chrtlink.dbf
-rw-r--r-- 1        8564 18. Apr 11:46 country.dbf
-rw-r--r-- 1     3150314 18. Apr 11:46 coverags.dbf
-rw-r--r-- 1         455 18. Apr 11:46 crcfiles.txt
-rw-r--r-- 1        9834 18. Apr 11:46 ctypes.dbf
-r--r--r-- 1       18260 18. Apr 11:45 feat_unlk.dat
drwxr-xr-x 2       16384 18. Apr 11:46 Fonts
-rw-r--r-- 1         407 18. Apr 11:46 jeppesen.tfl
-rw-r--r-- 1        8896 18. Apr 11:46 jeppesen.tls
drwxr-xr-x 2       16384 18. Apr 11:43 ldr_sys
-rw-r--r-- 1        2526 18. Apr 11:46 lssdef.tcl
-rw-r--r-- 1        1038 18. Apr 11:43 nav_db2.bin.sff
-rw-r--r-- 1      120303 18. Apr 11:46 notams.dbf
-rw-r--r-- 1      904705 18. Apr 11:46 notams.dbt
-rw-r--r-- 1      142208 18. Apr 11:46 regions.dat
-rw-r--r-- 1          37 18. Apr 11:46 revision.txt
-rw-r--r-- 1    13130982 18. Apr 11:37 safetaxi2.gca
-rw-r--r-- 1     5816324 18. Apr 11:37 safetaxi.bin
-rw-r--r-- 1     5107325 18. Apr 11:46 sbscrips.dbf
-rw-r--r-- 1    16994877 18. Apr 11:44 standard.odb
-rw-r--r-- 1        1385 18. Apr 11:44 standard.odb.sff
-rw-r--r-- 1        2866 18. Apr 11:46 state.dbf
-rw-r--r-- 1     7317305 18. Apr 11:44 terrain.odb
-rw-r--r-- 1        1037 18. Apr 11:44 terrain.odb.sff
-rw-r--r-- 1<PHONE_NUMBER> 18. Apr 11:47 trn.dat
-rw-r--r-- 1      450065 18. Apr 11:46 vfrapts.dbf
-rw-r--r-- 1      668358 18. Apr 11:46 vfrchrts.dbf
-rw-r--r-- 1       83940 18. Apr 11:46 vfrntms.dbf
-rw-r--r-- 1      636417 18. Apr 11:46 vfrntms.dbt
ll Fonts/
insgesamt 1856
-rw-r--r-- 1  66080 18. Apr 11:46 arialbd.jtf
-rw-r--r-- 1  60012 18. Apr 11:46 arialn.jtf
-rw-r--r-- 1  19652 18. Apr 11:46 crysn.jtf
-rw-r--r-- 1  31684 18. Apr 11:46 font11.jtf
-rw-r--r-- 1  22200 18. Apr 11:46 font12.jtf
-rw-r--r-- 1  20500 18. Apr 11:46 font13.jtf
-rw-r--r-- 1  20660 18. Apr 11:46 font15.jtf
-rw-r--r-- 1  19732 18. Apr 11:46 font16.jtf
-rw-r--r-- 1  24772 18. Apr 11:46 font17.jtf
-rw-r--r-- 1  44664 18. Apr 11:46 font1.jtf
-rw-r--r-- 1  44224 18. Apr 11:46 font21.jtf
-rw-r--r-- 1  39788 18. Apr 11:46 font23.jtf
-rw-r--r-- 1  39144 18. Apr 11:46 font24.jtf
-rw-r--r-- 1  48120 18. Apr 11:46 font25.jtf
-rw-r--r-- 1  46208 18. Apr 11:46 font26.jtf
-rw-r--r-- 1  49424 18. Apr 11:46 font27.jtf
-rw-r--r-- 1  44224 18. Apr 11:46 font2.jtf
-rw-r--r-- 1  19352 18. Apr 11:46 font32.jtf
-rw-r--r-- 1  20052 18. Apr 11:46 font34.jtf
-rw-r--r-- 1  11928 18. Apr 11:46 font35.jtf
-rw-r--r-- 1  40356 18. Apr 11:46 font3.jtf
-rw-r--r-- 1  22292 18. Apr 11:46 font43.jtf
-rw-r--r-- 1  39340 18. Apr 11:46 font4.jtf
-rw-r--r-- 1  34908 18. Apr 11:46 font52.jtf
-rw-r--r-- 1  47328 18. Apr 11:46 font5.jtf
-rw-r--r-- 1  21652 18. Apr 11:46 font65.jtf
-rw-r--r-- 1  44556 18. Apr 11:46 font6.jtf
-rw-r--r-- 1  45476 18. Apr 11:46 font71.jtf
-rw-r--r-- 1  41264 18. Apr 11:46 font73.jtf
-rw-r--r-- 1  39352 18. Apr 11:46 font74.jtf
-rw-r--r-- 1  48284 18. Apr 11:46 font75.jtf
-rw-r--r-- 1  46836 18. Apr 11:46 font76.jtf
-rw-r--r-- 1  50128 18. Apr 11:46 font77.jtf
-rw-r--r-- 1   3648 18. Apr 11:46 font79.jtf
-rw-r--r-- 1  49560 18. Apr 11:46 font7.jtf
-rw-r--r-- 1  12924 18. Apr 11:46 font80.jtf
-rw-r--r-- 1  36492 18. Apr 11:46 font81.jtf
-rw-r--r-- 1  30384 18. Apr 11:46 font82.jtf
-rw-r--r-- 1  28992 18. Apr 11:46 font84.jtf
-rw-r--r-- 1  42996 18. Apr 11:46 font8.jtf
-rw-r--r-- 1    407 18. Apr 11:46 jeppesen.tfl
-rw-r--r-- 1   8896 18. Apr 11:46 jeppesen.tls
-rw-r--r-- 1   2526 18. Apr 11:46 lssdef.tcl
-rw-r--r-- 1  28968 18. Apr 11:46 monspacb.jtf
-rw-r--r-- 1  64544 18. Apr 11:46 sserife.jtf
ll ldr_sys/
insgesamt 20576
-rw-r--r-- 1   9449990 18. Apr 11:43 avtn_db.bin
-rw-r--r-- 1      5577 18. Apr 11:46 grm_feat_key.zip
-rw-r--r-- 1  11588311 18. Apr 11:43 nav_db2.bin

Interesting. Well, it's great that feat_unlk.dat worked - that was probably the most difficult part.
So simply extracting the .zip is not enough. Looks like a bunch of files need to be moved into a Charts subdirectory. Also, 023FL01687_VFRCharts.bin and 023KM01684_Charts.bin somehow get converted into charts.bin.
Of course those are the two zips that I can't access myself, so it's hard to tell what's going on. I'd really like to look at them, but you probably shouldn't upload them here. Could you email me at dima [at] gmail.com, so we can figure something out?

I finally cracked the format of the Charts.bin file. It's basically a Zip without compression. Documenting it here, mostly for myself:

Byte Offset
Length
Value

0
4
CRC32Q (not CRC32!) checksum of everything after it

4
4
Magic number? Always 1B000001

8
4
N, Number of files

12
4
T, Byte offset of the table of contents

16
11
Same as Database Begin Date in charts.ini, padded with null bytes

27
T - 27
Contents of all files

T
N * 40
Table of contents

Each entry in the table of contents is 40 bytes long, and has the following format:

Byte Offset
Length
Value

0
26
File name, padded with null bytes

26
4
Byte offset of the contents of the file

30
4
File size

34
6
Unknown, but some property of the file

It looks like ChartView is broken into multiple downloads (Europe IFR, Europe VFR, etc.). Each one is a .zip containing a charts.bin file (though with different names like 023KM01684_Charts.bin or 023FL01687_VFRCharts.bin). JDM first sorts each charts.bin file so its entries are ordered by their byte offsets, then combines them into one file. I'm assuming they wanted to let the user buy any combination of regions and VFR/IFR, but G1000 needs to have everything in a single file.
The rest of the files in the .zip are mostly copied unchanged. The .dbf files might be getting merged, but it's a common file format.

Great work! Just ran across this repo, and I suspect that once the G1000 issues are solved, it will be very easy to extend to other Garmin flight displays. I have a new-to-me G500 & G430W, and am using the Garmin database subscription service. I think the code here will be a great basis for extending to a tool that supports both download sources & multiple devices.
I'll experiment more when I have some free time!

@digivation: Thanks!
Programming of the G430W should already work; I have a G430 myself. The G500 might work, too - do you use the same data cards and a USB programming device as for the G430W, or regular SD cards?
Of course, you'd need to get the database file first. I haven't used the Garmin DB Manager, so no idea what it would take to reverse engineer it.
If you want to do a quick test to see if anything works at all, you can read the existing database from the data card by running jdmtool read-database db.bin (where db.bin is the output).

@dimaryaz I haven't tried the G430W but expect that to work just fine once I can get the databases from Garmin.
The G500 uses SD cards, just like the G1000 - I suspect the data set is very similar.
The 430 data cards are at the hangar, I'll check those next time I bring them home.

Hey @liviro411! I know it's been over a year... but I haven't given up yet. If you're still around, I'd love for you to try the new code.
The latest released version of jdmtool should support everything but Electron Charts, and should produce results byte-for-byte identical to JDM itself.
If you install the chartview branch, you'll be able to transfer Electron Charts, too - though those are way more complicated. I was only able to test them using your zips from a year ago, so who knows how well it will work for the current charts. But, for the old ones, it was almost identical to JDM, with a few missing pieces:

JDM downloads airport metadata, NOTAMs, etc. for the whole world, and then filters them based on your actual subscription. But, I can't figure out how it determines the subscription. Instead, I pick the "best match" - smallest subscription that contains all airports for which you have electronic charts. It works correctly for your old charts. (Who knows, maybe it's safe to just include worldwide data? But I can't test it myself.)
After all the filtering above, notams.dbf includes one extra NOTAM. I can't imagine this would cause problems. (Still, I'm planning to get to the bottom of that.)
JDM sets today's date in some .dbf files - so .dbf files can have different checksums even if they're otherwise identical. (I'm also setting the date, but I'm not even sure which timezone I should be using - it's neither local nor UTC, I think.)
crcfiles.txt contains checksums for intermediate subscription files that I wasn't able to figure out. But... they aren't transferred to the USB drive, so I can't imagine how the correct checksum could even matter. So I'm not including those at all.

Anyways... if you get a chance, try it and tell me how it works.

@dimaryaz Are you still looking for testers for G1000? I have access to a Perspective and a JDM subscription. I will be testing the jdmtool SD card tomorrow on this avionics system.

@aantonop Yes! Would love to know if it works for you. Let me know which subscriptions you have - in particular, if you use ChartView.
You can try the latest release - it already contains all the G1000 features.

I use ChartView - here are the subscriptions I have:
ID  Name                                                                    Coverage                   Version   Start Date  End Date    Downloaded
 0  Garmin G1000, G900X, G950, Perspective, Prodigy - Basemap               Worldwide                  24M1      2024-07-30  2025-09-25  Y
 1  Garmin G1000, G900X, G950, Perspective, Prodigy - Obstacles             United States, Canada & …  24B5      2024-09-05  2024-10-31  Y
 2  Garmin G1000, G900X, G950, Perspective, Prodigy - SafeTaxi              Europe                     24S5      2024-09-05  2024-10-31  Y
 3  Garmin G1000, G900X, G950, Perspective, Prodigy - Terrain               4.9as GDU SW v15.0 or Ne…  20T1      2020-08-10  2025-09-25  Y
 4  Garmin G1000, G900X, G950, Perspective, Prodigy - NavData               Central Europe             2409      2024-09-05  2024-10-03  Y
 5  Garmin G1000, G900X, G950, Perspective, Prodigy - NavData               Central Europe             2410      2024-10-03  2024-10-31  Y
 6  Garmin G1000, G900X, G950, Perspective, Prodigy - Airport Directory     GDU SW v10.00 or Newer A…  24D5      2024-09-05  2024-10-31  Y
 7  Garmin G1000, G900X, G950, Perspective, Prodigy - Electronic Charts     All Europe IFR, Digital …  20-2024   2024-09-27  2024-10-11  Y

I was unable to test the charts because of a 'basemap' bug that you have now fixed and I don't have access to test for the next 2 months, but I will get back to you on this. I am very interested in getting this to work.


Submit Cyclops to Godot Asset Library

it would be very intuitive to have cyclops ready to install directly from the asset store rather than download and copy it every time for our projects, can you please add it to the godot asset library at: https://godotengine.org/asset-library/asset/submit ?
you can easily control what versions of godot are currently and such which i believe would be very useful from a managerial position. Thank you for your time and contributions

I want to resolve the loading issues before I add it to the Godot Asset Library.  At the moment there are a lot of errors and extra setup when the addon is first loaded.

I want to resolve the loading issues before I add it to the Godot Asset Library.  At the moment there are a lot of errors and extra setup when the addon is first loaded.

Heya! I would like to get started in contributing to Cyclops too, but I'm not sure about what are the requirements I should learn in order to be able to help out with it, can you give me a few pointers on where I can start? Thanks you so much in advance!
(Ps. Should we close this issue?)

I think this issue should be left open until it is resolved.  I do plan to add Cyclops to the Asset Library once there are no more installation issues.  I think a lot of these Autoload problems will be solved once I get around to moving Cyclops into it's own window.  That's going to involve a lot of big changes, so I don't want to make any major structural changes until that is done.
As for contributing, I don't have a formal guideline.  If there is some feature you would like to see added, bring it up in the discussions forum.  Read through the source code, and I added a design document at https://github.com/blackears/cyclopsLevelBuilder/blob/master/doc/design.md.  It's a little out of date, but still gives an overview of the project.
One other big thing I'd like to add to the project is the ability to have block types other than convex blocks, but that is going to need to wait until the new window change is made.


[ergoCubSN000] Add wbd - FTs IMU and yarpmotorgui configurations

Hi, we open this PR with the configuration on which we have been working on in https://github.com/ami-iit.
Credits to @GiulioRomualdi @mebbaid

Thanks @lrapetti for the additions 👍🏻 Could you only take some minutes to update the version numbers as suggested by @sgiraz?

Hold on!
It seems that for strain2 we've been gone with 0.0.0. See:

https://github.com/robotology/robots-configuration/blob/devel/iCubGenova09/hardware/inertials/left_leg-eb7-IMU.xml#L16-L29

So, let's go this way now. We can refine later on.


TEPHRA-231 Fix LICENSE and NOTICE files for release distribution

JIRA : https://issues.apache.org/jira/browse/TEPHRA-231

I did a build and was able to see the new license and notice files in the distribution jar.
Can we rename LICENSE_RELEASE to LICENSE_DISTRIBUTION and NOTICE_RELEASE to NOTICE_DISTRIBUTION, since they only apply to the distribution tarball? Also is it okay to move them into tephra-distribution/ directory for the same reason? In that case we can just call them LICENSE and NOTICE

@poornachandra Thanks for the review. Addressed your comment (moved LICENSE and NOTICE files under tephra-distribution). Please take a look again.