zed-f9P ardusimple compatibility

hi!
thanks for this library first it s great :)
So i have the new ardusimple board, i had to change few things to get it working with your lib (change gngga gst length... don t understand why) it works but still have few doubts on the results because of this (i receive data from bluetooth)
how can i get the speed and accuracy in the gps.state directly ?
next step is to build an ntrip-client for rtk corrections! nothing in node/react-native for this incredible !!!
thanks

only messages failing now
exemple:
Invalid GSV length: $GBGSV,1,1,00,*47

Thanks! :)
The GGA length works now? What did you change?
The GSV data does not look correct. The sentence should have the following entries: https://www.trimble.com/OEM_ReceiverHelp/V4.44/en/NMEA-0183messages_GSV.html
Is the NMEA data they send documented somewhere?  It was the addition of NMEA 4.10 in GSV, which was not handled correctly. Thanks a lot for opening this issue!
Could you test the current version on github? When it works out, I'll push it to npm

heloo i ll try it brb !

hello
it s ok for gsv but not closbale yet many other sentences fail
now it s
$GNRMC,191029.00,A,4843.01033,N,00227.78756,E,0.024,,010319,,,A,V*1C
(ok if i add && rmc.length !== 15)
then
$GNGSA,A,3,25,29,31,26,16,21,,,,,,,1.55,0.84,1.30,1*00
gps.update received it as length = 20 ...
and it s ok but still some doubts on the satellites count
alt: 52.2
errors: 22
fix: "3D"
hdop: 0.87
lat: 48.71684116666667
lon: 2.4631393333333333
pdop: 1.8
processed: 76
satsActive: (2) [24, 26]
satsVisible: (11) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}]
speed: 0.033336
time: Fri Mar 01 2019 20:20:21 GMT+0100 (heure normale d’Europe centrale) {}
track: null
vdop: 1.57
do you cumulate each type of satellites?
THANKS !!

Okay, RMC and GSA got new flags in 4.10 as well. Could you pleas test the latest version from github?
Sats active is overwritten with each new GSA. Sats visible is merged with every GSV chain. Given your example "$GNGSA,A,3,25,29,31,26,16,21,,,,,,,1.55,0.84,1.30,1*00", the output was wrong with satsActive: (2) [24, 26]. I added it as test case and it gives
[
      25,
      29,
      31,
      26,
      16,
      21
    ]

as expected.

hi
sorry for the delay ! :)
still somes problems with GSA
Possible Unhandled Promise Rejection (id: 6):
Error: Invalid GSA length: $GNGSA,A,3,21,16,31,26,27,29,20,,,,,,1.46,0.86,1.18,1*0A

thanks !

hi
sorry for the delay
just trying with u-center launched at the same time with ntrip enable
no more errors with the new version but
satsActive: []
satsVisible: []
sometimes satsVisible is populated
u-center report RTK float fix and like 12 sats active, in the gps.js state i have 3D fix and satActive seems now always empty
i ll send you some raw data if you want :)
thanks!

Yes, that would be helpful. Sounds really strange as every sentence is populated to the state object, as you can see in the source. But good to know that no errors are disturbing the process. Do you know of any message types that are used and not implemented by gps.js? I wrote the library with 3 different receivers and hoped to catch all typical anomalies - but far from it

If you don't want to have your location data published here, write me a mail at the email you can find in the license or package.json

ok i ll send you an email 👍
i have some problem with FAA mode now it return F Oo can t find info on a F for FAA field... seems coming from RMC parsing... brb

found
seems you miss R and F in the FAA case :)
`The Mode indicator is two or more characters, with the first and second defined for GPS and GLONASS. Further characters may be defined. For each system, the character can have a value (table may be incomplete):
N = Constellation not in use, or no valid fix
A = Autonomous (non-differential)
D = Differential mode
P = Precise (no degradation, like Selective Availability)
R = Real Time Kinematic
F = Float RTK
E = Estimated (dead reckoning) Mode
M = Manual Input Mode
S = Simulator Mode`

Uhm, do you have a reference for those? Every reference I found only states the ones that ar implemented. Parts of those you mentioned are GGA fix quality indicators, see http://campar.in.tum.de/twiki/pub/Chair/NaviGpsDemon/nmea.html

Ah got it.

yup for rmc then all others faa are "wrong" and fix in the state too :), i ll send you raw data in few minutes , thanks !

Okay, fixed it in the last commit. This does not explain why you don't get satellites

hello !
yup ok for the F/R still strange satActive count i know for the weird bytes i don t know wich message cause this.... why don t you make an object of satellites like satellites: { GP: [...], GA:[...], GL[...], GB[...]} just if we need details since active sats is directly printed in the GGA messages (for my device)
age: null alt: 63.6 geoidal: 46.3 hdop: 0.93 lat: 48. lon: 2. quality: "fix" raw: "$GNGGA,110921.00,4843.00623,N,00227.78733,E,1,12,0.93,63.6,M,46.3,M,,*70" satellites: 12
still have a looot of errors in the sate error count how can i check them ?

added some debug on rejetec lines:
rejected  $GNGRS,112423.00,1,-0.1,-0.4,5.6,-4.3,1.4,-0.2,,,,,,,1,1*51 D:\projets\batexpert\mobibat\node_modules\gps\gps.js:758 rejected  $GNGRS,112423.00,1,0.0,0.0,0.0,-6.4,-1.2,,,,,,,,1,6*7F D:\projets\batexpert\mobibat\node_modules\gps\gps.js:758 rejected  $GNGRS,112423.00,1,-2.5,0.8,0.2,7.2,6.2,,,,,,,,2,1*5B D:\projets\batexpert\mobibat\node_modules\gps\gps.js:758 rejected  $GNGRS,112423.00,1,-0.4,0.5,4.5,0.0,4.9,,,,,,,,2,3*58 D:\projets\batexpert\mobibat\node_modules\gps\gps.js:758 rejected  $GNGRS,112423.00,1,-0.4,0.6,2.7,4.9,,,,,,,,,3,7*74 D:\projets\batexpert\mobibat\node_modules\gps\gps.js:758 rejected  $GNGRS,112423.00,1,-0.3,-0.5,-8.2,0.0,,,,,,,,,3,2*77 D:\projets\batexpert\mobibat\node_modules\gps\gps.js:758 rejected  $GNGRS,112423.00,1,-7.8,-9.3,,,,,,,,,,,4,1*57 D:\projets\batexpert\mobibat\node_modules\gps\gps.js:758 rejected  $GNGRS,112423.00,1,,,,,,,,,,,,,4,*63 rejected  $GNGBS,112423.00,2.5,1.5,5.5,,,,,,*5B D:\projets\batexpert\mobibat\node_modules\gps\gps.js:758 rejected  $GNVLW,,N,,N,0.000,N,0.000,N*44 rejected  $GNGBS,112424.00,2.5,1.5,5.4,,,,,,*5D D:\projets\batexpert\mobibat\node_modules\gps\gps.js:758 rejected  $GNVLW,,N,,N,0.000,N,0.000,N*44

Hi :)
do you need the FAA on the state object as well?
I think the errors come from the weird bytes. The error counter is incremented as soon as the update method fails. You could add a console.log() to each return false in the update method and check what bytes cause the error.
I wanted to abstract over the message types. This is why I'm not in favor of a state object that holds individual types. The active satellites array on the state object comes from GSA and the visible satellites array comes from GSV.  If you want to pick it yourself, you can easily subscribe to either
on('data', data => console.log(data.type == 'GGA' ? data.satellites : null)
or individually
on('GGA', data => console.log(data. satellites))
Ahh, the errors you experiencing come from message types that are not implemented yet. I will add them :)

i know don t worry i just give you most information i can to get your library better :)
once done i ll fork it then send PR if needed :)
i want to have rtk float/fix in the state most important (will try now)

I'm working on the missing types already. Give me 15min

not interested to push it then implement a ntrip client to get rtk corrections ? your project can get to a new level with this (and market is empty for things like that in node/react/react-native)

I'm working on the missing types already. Give me 15min

take your time no stress :p

Okay, check out latest commit :)

You are more than welcome to add a ntrip client :)

eheh this is my final goal to finish my DIY project :) i ll try, brb, thanks !

May I ask what you're building where you need high precision?

i work for an asbestos diagnostic company we need to report exactly where we make holes in the roads ... :) so i need rtk, i builded it thru this new ardusimple board, made the case myself, designed and printed it in 3d, react-native app to get the bluetooth serial then your lib to parse sentences... last step is the ntrip and i m done 100% :D i learned a LOTTT of things in this project
lastest version ok no more rejections, cool !
but
alt: 74.9
errors: 24
fix: "3D"
hdop: 2.7
lat: 48
lon: 2.
pdop: 5.29
processed: 492
satsActive: [] /// still empty i ll make some test with the state to help
satsVisible: (9) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}]
speed: 0.079636
time: Thu Mar 07 2019 13:16:08 GMT+0100 (heure normale d’Europe centrale) {}
track: null
vdop: 4.55
i m struggling to get rtk position today thru u-center, strange....

That sounds pretty awesome!
About the still empty active sats array: Was a GSA message already seen? Could you monitor the type together with the state like so:
on('data', data => console.log(data.type, GPS.state));

To see when a GSA came in and if it fails to bring up the satellites?

just trying
gps.on('data', e => {       //console.log(e)       if(e.raw.match(/GSA/)) {         console.log(e.raw,gps.state)       }
`
$GNGSA,A,3,24,12,19,15,,,,,,,,,5.27,3.57,3.87,1*05
alt: 55.5
errors: 7
fix: "3D"
hdop: 3.57
lat: 48
lon: 2.
pdop: 5.27
processed: 211
satsActive: []
satsVisible: (6) [{…}, {…}, {…}, {…}, {…}, {…}]
speed: 1.100088
time: Thu Mar 07 2019 14:32:15 GMT+0100 (heure normale d’Europe centrale) {}
track: null
vdop: 3.88
`
and still sometimes have:
REJECTED: $GNGNS,133216.00,4843.01093,N,00227.78866,E,ANNN,04,3.57,55.4,46.3,,,V*29

I'll implement GNS. For your example:
var gps = new GPS;
gps.on('data', e => {
  console.log(e.raw, gps.state)
});
gps.update('$GNGSA,A,3,24,12,19,15,,,,,,,,,5.27,3.57,3.87,1*05');

gives
$GNGSA,A,3,24,12,19,15,,,,,,,,,5.27,3.57,3.87,1*05 { errors: 0,
  processed: 1,
  satsActive: [ 24, 12, 19, 15 ],
  fix: '3D',
  hdop: 3.57,
  pdop: 5.27,
  vdop: 3.87 }

As expected. What do you do differently?

i don t see rmc messayes anymore strange maybe because i m not in Rtk... searching
just sended an email

See last commit, minor changes and GNS was added.

ok i ll try :)
strangely seems i receive GSA like by three... first seems ok 2 others no::
$GNGSA,A,3,72,74,82,83,73,71,,,,,,,3.32,1.81,2.78,200 {errors: 7, processed: 244, satsVisible: Array(0), time: Thu Mar 07 2019 15:26:02 GMT+0100 (heure normale d’Europe centrale), lat: 48.716807333333335, …}
D:\projets\batexpert\mobibat\src\components\bluetooth\index.js:124 $GNGSA,A,3,,,,,,,,,,,,,3.32,1.81,2.78,304 {errors: 7, processed: 245, satsVisible: Array(0), time: Thu Mar 07 2019 15:26:02 GMT+0100 (heure normale d’Europe centrale), lat: 48.716807333333335, …}
D:\projets\batexpert\mobibat\src\components\bluetooth\index.js:124 $GNGSA,A,3,,,,,,,,,,,,,3.32,1.81,2.78,4*03 {errors: 7, processed: 246, satsVisible: Array(0), time: Thu Mar 07 2019 15:26:02 GMT+0100 (heure normale d’Europe centrale), lat: 48.716807333333335, …}

Based on the debug log you sent, the code of gps.js works just fine. For whatever reason you get GSA sentences with an empty satellite list, which of course resets the state. This is not cool :( We could add a test if the sats are empty and ignore it then. But what if the list is truly empty? Then the state has artifacts of old satellites hanging around forever.

yup think the same thing, just updated the firmware of the zed-f9p same problem

maybe check the number of GSA sentences .. if more than x messages in x time then keep First sentence of this last group of message... something like this maybe?

"$GNGSA,A,3,72,74,82,83,73,71,,,,,,,3.32,1.81,2.78,200" -> does not look like a complete sentence.

in u-blox text console,...
$GNVTG,,T,,M,0.021,N,0.040,K,D3F
14:38:32  $GNGGA,143832.00,4843.00925,N,00227.78614,E,5,11,2.33,59.4,M,46.3,M,1.0,170257
14:38:32  $GNGSA,A,3,12,24,25,32,29,,,,,,,,5.13,2.33,4.57,10A
14:38:32  $GNGSA,A,3,72,74,82,83,73,71,,,,,,,5.13,2.33,4.57,204
14:38:32  $GNGSA,A,3,,,,,,,,,,,,,5.13,2.33,4.57,300
14:38:32  $GNGSA,A,3,,,,,,,,,,,,,5.13,2.33,4.57,407

Either you have problems with your wiring that corrupt sentences are bashing in, or the receiver/firmware is buggy.

yeah that s what i try to understand, in u-center data come directly from usb so nothing betweenn and i have those series of gsa messages

Sorry, Github ate the * . So it might be correct

Sorry, Github ate the * . So it might be correct

eheh yes... just sended anoter email with all data from u-center and usb directly....

No worries, the GSA is correct you sent. But why do you expect the sats visible to be updated with GSA?

ah no i just speak about the activesats

trying the lastest version now

allright 0 errors in state now, sat in views = 12 active stats = 0 lol normal.... will try to find why, brb

I parsed your whole dump and found another little error. Your receiver sends GSV messages even with empty set of sats. Check out the latest. But still it is a problem how to cope with empty arrays. I'm not in favor changing the behavior of the state in the way you proposed it. What I could think of is a config option to ignore empty sats, for visible and active sats.

yup but i try to understand what s happening at the device level first don t understand why it send everything by 4 ... all messages have 4 lines with different values but same type Oo

so how GSV and GSA are sended is the problem now not the library :)

I mean, you could ask the manufacturer to not send empty sats in their firmware. They are a kickstarter project, so chances are you get contact

this chip is from u-blox :)

hummm not the only one:
https://lists.gnu.org/archive/html/gpsd-users/2016-04/msg00007.html

possible to link the GGA quality to the state fix type ? or i ll do it in my code, fix say 3D when i m in rtk float (reported correctly by GGA parsing) :)

ok i ll fix my problems you can close the issue since the lib works fine ! :)
do you know how to calculate the accuracy in meters, i m searching... (and hate maths lol) ?

The simple answer is: If the receiver would know the error, it would be possible to correct for it.
The medium answer is: Create a regression problem with the three HDOP, PDOP, VDOP values and find statistically values for x, y and z so that your error is x*HDOP + y*PDOP + z*VDOP. This is probably less useful as the DOP value does not say much about quality of the signal but what constellation of satellites is used for calculations.
The hard answer is: You don't like math, but a reliable Estimated Position Error can only be found with math and a proper amount of samples. I would go with a Kalman filter (I published the npm "kalman" package for it). Simply said, a Kalman filter builds up an idea (a model) of where you are plus a Gaussian distributed error (with it you can calculate meters) by incorporating new measurements. Understanding the filter is math heavy and takes more than 2 minutes. If you're not satisfied with the first two answers, I can set up the KF for gps.js.

can t believe that was so hard to "just" print an estimated accuracy !
thanks for the lesson professor :), i now understand the principle but i think this part is definitely not for me...
if you can implement it, not for me and not to satisfy me but, just to get your library better so yes it could be a nice update :)

Yea, unfortunately this is problem is not so trivial. But the side effect of the KF is, you get a better estimate of where you are. The GPS coordinate can jump a few meters - which is nevertheless incredible good when you imagine that a satellite has a speed of 10000Km/h and new satellites surface from the horizon and vanish on the other side very quickly.
I will implement it over the course of the day.

Hi m8
Thanks for your great work! Good luck with this! I forked your repo to make
changes specific to me :)
Le ven. 8 mars 2019 à 10:57, Robert Eisele<EMAIL_ADDRESS>a
écrit :

Yea, unfortunately this is problem is not so trivial. But the side effect
of the KF is, you get a better estimate of where you are. The GPS
coordinate can jump a few meters - which is nevertheless incredible good
when you imagine that a satellite has a speed of 10000Km/h and new
satellites surface from the horizon and vanish on the other side very
quickly.
I will implement it over the course of the day.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/infusion/GPS.js/issues/22#issuecomment-470872196, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAMOQOR32hMgHxlzchMAHpi3NLHJIm_nks5vUjQegaJpZM4bY7i1
.

I decided against the addition of the filter to the main gps file, rather I added it to the maps example. I will push it in a few minutes. It looks like this now:

I pushed the code. Only thing you have to do is using the kalman library and copy and paste the matrix definitions and feed the update method. After the update you can use filter.x which is a 2-element array of the best estimate of the latitute and longitude. And on top of that you have filter.P which is a 2x2-element array, where you simply can use the diagonal elements filter.P[0][0] and filter.P[1][1] as an error estimate, where the first is the error in degree of the latitude and the second the error in degree in longitude. I think the easiest would be to use the haversine distance formula for two geo-points and calculate the distance between filter.x[0] - sqrt(filter.P[0][0]) and filter.x[0] + sqrt(filter.P[0][0]) and the same for the longitude.
Note that for var R = Sylvester.Matrix.I(2).multiply(0.00001); the 0.00001 value is the accuracy of your GPS receiver from which the accuracy of your result depends. Good luck with that :)


Revert skill upgrade algorithm to the weight based sorting algorithm

#81 Instead. Algorithm is now
maxLevel - level / weightChange


feat(vscode): Configure target in vscode remote ssh

Description

We need to write the .ssh/config manually, then choose the dir in the vscode remote. It is not easy to use.
We should

[ ] configure ssh target in .ssh/config
[ ] configure in vscode remote ssh

Could be closed by https://github.com/tensorchord/vscode-envd/pull/21
Dev Container is a great alternate.


Case Insensitive Table and Field Name

Like any other SQL database out there.

It's not like any other SQL database out there. Some are case sensitive, some are not and some offer a user choice for that.
However, it should not be too hard to implement and make the feature available via a choice in the URL string. See how the headroom parameter is handled, for example.
PRs are welcome ;-)


Wrong dtype when using np.asarray on DeviceNDArray

Reporting a bug

[x] I have tried using the latest released version of Numba (most recent is
visible in the change log (https://github.com/numba/numba/blob/master/CHANGE_LOG).
[x] I have included a self contained code sample to reproduce the problem.
i.e. it's possible to run as 'python bug.py'.

Reproduce Code
>>> from numba import cuda
>>> import numpy as np
>>> arr = np.arange(10).astype(np.int16)
>>> arr.dtype
dtype('int16')

>>> darr = cuda.to_device(arr)
>>> darr.dtype
dtype('int16')

>>> arr = np.asarray(darr)
>>> arr.dtype
dtype('float64')

Originally posted by @ashutoshvarma in https://github.com/numba/numba/issues/6563#issuecomment-774035027
The test_auto_transfer is failing due the following change :-
Without it all tests pass without problem
@@ -107,7 +108,7 @@ class UFuncMechanism(object):
         """
         for i, ary in enumerate(self.arrays):
             if ary is not None:
-                self.argtypes[i] = ary.dtype
+                self.argtypes[i] = np.asarray(ary).dtype

Since ary would always be either np.ndarray or DeviceNDArray type,  keeping ary.dtype should be fine? (correct me if I missed something )
Ideally, the above change should not break anything, but for some reason, if ary is of DeviceNDArray type then np.asarray(ary).dtype gives the wrong dtype.
For DeviceNDArray ary, np.asarray(ary) will always be a float64 ndarray irrespective of original dtype
>>> x = np.arange(n, dtype=np.int32)
>>> dx = cuda.to_device(x)
>>> print(dx.dtype)
>>> print(np.asarray(dx).dtype)
int32
float64

After digging more, looks like problem might be in DeviceNDArray.__array__() method
https://github.com/numba/numba/blob/00ad12751725391e8423d67ef845ba56110c55df/numba/cuda/cudadrv/devicearray.py#L482-L486
In above, passing even None (dtype) to __array__ of ndarray will return new array with default dtype (float64)
ndarray.__array__ docs - https://numpy.org/doc/stable/reference/generated/numpy.ndarray.array.html
>>> import numpy as np
>>> a = np.arange(10, dtype=np.int16)
>>> b = a.__array__(np.int16)          # no copy
>>> c = a.__array__(None)              # copy
>>> d = a.__array__()                  # no copy
>>> print(f"{a.dtype=}")
>>> print(f"{b.dtype=}")
>>> print(f"{c.dtype=}")
>>> print(f"{d.dtype=}")
a.dtype=dtype('int16')
b.dtype=dtype('int16')
c.dtype=dtype('float64')
d.dtype=dtype('int16')

Changing __array__(dtype)  to either __array__(self.dtype)  or __array__()  should fix this.

@ashutoshvarma thank you for submitting this. @gmarkall would you have a look at this, when you have a minute? Thanks!

@ashutoshvarma Thanks for the issue (and corresponding PR)! I'm taking a look at this now.


Infinite loop on types that reference eachother

type TableOne struct {
    model.TableOnes

    TableTwos []TableTwo
}

type TableTwo struct {
    model.TableTwos

    TableOne TableOne
}

Preforming a stmt.Query with either of these structs (or anything that has either of these structs) will load infinitely.
No error is returned, it was incredibly long and time consuming to find the source of the issue.
I have tried making the types pointers to no avail. (idea being they would become nullable)
This pattern is common when you have a Has(One/Many)BelongsTo relationship.

Hi. Assuming you want to scan into TableOne destination, why would you want to copy that the same destination n times in the TableTwos array? Or in the case of pointer, n pointers to root scan destination? Those data are already there.
Scanner should be able to catch up circular dependency and return an error, so this can be implemented in the future. Allowing pointer might make sense in some scenarios(something to think about).
But recommendation would be to not to use circular dependencies:
type TableOne struct {
    model.TableOnes

    TableTwos []model.TableTwos
}

It's part of a typical schema, I believe GORM even has an example in their docs. If you have a HasMany/HasOne relationship, at the other end you have a BelongsTo, if you need to access the parent table from the child (very common) you have to have the child reference the parent's type.

Hi. Assuming you want to scan into TableOne destination, why would you want to copy that the same destination n times in the TableTwos array? Or in the case of pointer, n pointers to root scan destination? Those data are already there.
Scanner should be able to catch up circular dependency and return an error, so this can be implemented in the future. Allowing pointer might make sense in some scenarios(something to think about).
But recommendation would be to not to use circular dependencies:
type TableOne struct {
    model.TableOnes

    TableTwos []model.TableTwos
}

The data is different, you basically have one path of data being loaded.
More typical is
Table 4 -> Table 3 -> Table 2 -> []Table 1 (I'm table 2, grab all my children) and
Table 5 -> Table 6 -> []Table 1 => Table 2 (I'm table 1, grab my parent)
In the first path I have to access table 2 through table 3 as the reference for table 3 is in table 4 and table 3 has no table 1 reference
In the second path I have to access table 2 through table 1 as table 6 has a reference for table 1 but not table 2.
This is common when having two foreign keys (parents) on the same table.

@go-jet Any ideas on this? It shouldn't return an error as it wouldn't be instances pointing to eachother, the objects can simply have eachother's type as a type of a field (or as a slice of said type). The current workaround for this requires another library and is a bit hacky in terms of implementation.

Don't see many problems with supporting a pointer to shared scan data. The only issue would be, because all database tables are related in one way or the other, scan destination would be always a complex struct containing all the db models. This might slowdown the scan, because the scan would need to introspect every model in that destination. But eventually this would be developer decision, so it isn't a big issue.

A pointer to shared scan data? The issue lies when two structs use eachother as a type.
"scan destination would be always a complex struct containing all the db models. "
A complex struct, yes, but not all of the db models, just the ones related to that struct being pointed to.
The complex struct would be essentially be a 'slice' of the database.
type TableOne struct {
    model.TableOnes

    TableTwos []TableTwo
}

type TableTwo struct {
    model.TableTwos

    TableOne TableOne
}

If I'm working from TableOne and wanted all its TableTwo children
stmt := TableOne innerjoin TableTwo on TableTwo.table_one_id = TableOne.id
var tableOne TableOne
query(db, &TableOne)
// now I have many TableTwo that belong to TableOne in my TableOne.TableTwos
If I'm working from TableTwo in a completely different area and wanted to use its parent for something
stmt := TableTwo innerjoin TableOne on TableOne.id = TableTwo.table_one
var tableTwo TableTwo
query(db, &TableTwo)
// now I have one TableOne in my TableTwo.TableOne
Typically the first scenario, you're doing an everyday say
User -> Ticket -> []TicketRelpies
table ticket_replies has ticket.id and whatever.id
And in the second scenario, you're somewhere else accessing whatever, which TicketReplies has an ID to grab the Ticket that whatever is apart of you'd do
Whatever -> TicketReply -> Ticket
Hence why you'd need TicketReplies on Ticket and Ticket on TicketReply

@go-jet Is there any target date for 2.7? I'm refactoring our entire codebase to use go-jet and this is currently the only issue we're having and to get around it theres a lot of boilerplate, err != nil checking, and inefficient data-usage. (looping and copying data)

Version 2.7 will probably be released in February or after. In the meantime, you can use type-recursion branch. On this branch types scan recursions are prevented(test1, test2).

You're awesome! This worked when I tried a test struct I made which failed on the initial branch it seemed to work perfectly!
On the complex struct (multiple nested etc) its giving me an error.
reflect: slice index out of range

Heres the stacktrace
021/12/07 12:00:03 stderr:  /go/pkg/mod/github.com/go-jet/jet/v2@v2.5.1-0.20211207161610-1b1d50adcfdd/qrm/utill.go:43 +0x32

2021/12/07 12:00:03 stderr: github.com/go-jet/jet/v2/qrm.mapRowToSlice(0xc0000b6140, {0xc00007e210, 0x2a}, 0xc0000e99e0, {0xc0000b6680, 0xc0001601c8, 0xc0000ea950}, 0xc0002ae230)

2021/12/07 12:00:03 stderr:  /go/pkg/mod/github.com/go-jet/jet/v2@v2.5.1-0.20211207161610-1b1d50adcfdd/qrm/qrm.go:190 +0x39a

2021/12/07 12:00:03 stderr: github.com/go-jet/jet/v2/qrm.mapRowToDestinationPtr(0x826480, {0xc00007e210, 0x2a}, 0x1, {0xc0000b6680, 0xc0001601c8, 0x885500}, 0xc0002ae230)

2021/12/07 12:00:03 stderr:  /go/pkg/mod/github.com/go-jet/jet/v2@v2.5.1-0.20211207161610-1b1d50adcfdd/qrm/qrm.go:364 +0xe5

2021/12/07 12:00:03 stderr: github.com/go-jet/jet/v2/qrm.mapRowToDestinationValue(0x885500, {0xc00007e210, 0x2a}, 0x0, {0x826480, 0xc0001601c8, 0x81a6ae}, 0x1a)

2021/12/07 12:00:03 stderr:  /go/pkg/mod/github.com/go-jet/jet/v2@v2.5.1-0.20211207161610-1b1d50adcfdd/qrm/qrm.go:337 +0x178

2021/12/07 12:00:03 stderr: github.com/go-jet/jet/v2/qrm.mapRowToStruct(0xc0000e9d28, {0xc00007e210, 0x2a}, 0xc00010e950, {0x857fe0, 0xc000160100, 0xc0000e9e18}, 0xc0000e9d60, {0x0, 0x0, ...})

2021/12/07 12:00:03 stderr:  /go/pkg/mod/github.com/go-jet/jet/v2@v2.5.1-0.20211207161610-1b1d50adcfdd/qrm/qrm.go:271 +0x5f8

2021/12/07 12:00:03 stderr: github.com/go-jet/jet/v2/qrm.mapRowToDestinationPtr(0x885500, {0xc00007e210, 0x2a}, 0x1, {0x857fe0, 0xc000160100, 0x871c40}, 0xc0002a7260)

2021/12/07 12:00:03 stderr:  /go/pkg/mod/github.com/go-jet/jet/v2@v2.5.1-0.20211207161610-1b1d50adcfdd/qrm/qrm.go:362 +0x139

2021/12/07 12:00:03 stderr: github.com/go-jet/jet/v2/qrm.mapRowToDestinationValue(0x871c40, {0xc00007e210, 0x2a}, 0x0, {0x885500, 0xc000160100, 0x81027a}, 0xe)

2021/12/07 12:00:03 stderr:  /go/pkg/mod/github.com/go-jet/jet/v2@v2.5.1-0.20211207161610-1b1d50adcfdd/qrm/qrm.go:337 +0x178

2021/12/07 12:00:03 stderr: github.com/go-jet/jet/v2/qrm.mapRowToStruct(0xc0000ea070, {0xc00007e210, 0x2a}, 0xc00010e950, {0x81c600, 0xc000160090, 0xc0000ea160}, 0xc0000ea0a8, {0x0, 0x0, ...})

2021/12/07 12:00:03 stderr:  /go/pkg/mod/github.com/go-jet/jet/v2@v2.5.1-0.20211207161610-1b1d50adcfdd/qrm/qrm.go:271 +0x5f8

2021/12/07 12:00:03 stderr: github.com/go-jet/jet/v2/qrm.mapRowToDestinationPtr(0x871c40, {0xc00007e210, 0x2a}, 0x1, {0x81c600, 0xc000160090, 0x8650e0}, 0xc0002a6af0)

2021/12/07 12:00:03 stderr:  /go/pkg/mod/github.com/go-jet/jet/v2@v2.5.1-0.20211207161610-1b1d50adcfdd/qrm/qrm.go:362 +0x139

2021/12/07 12:00:03 stderr: github.com/go-jet/jet/v2/qrm.mapRowToDestinationValue(0x8650e0, {0xc00007e210, 0x2a}, 0x0, {0x871c40, 0xc000160090, 0x81338b}, 0x15)

2021/12/07 12:00:03 stderr:  /go/pkg/mod/github.com/go-jet/jet/v2@v2.5.1-0.20211207161610-1b1d50adcfdd/qrm/qrm.go:337 +0x178

2021/12/07 12:00:03 stderr: github.com/go-jet/jet/v2/qrm.mapRowToStruct(0x2a, {0xc00007e210, 0x2a}, 0xc00010e950, {0x81c6c0, 0xc000160000, 0x80cb21}, 0x46b889, {0x0, 0x0, ...})

2021/12/07 12:00:03 stderr:  /go/pkg/mod/github.com/go-jet/jet/v2@v2.5.1-0.20211207161610-1b1d50adcfdd/qrm/qrm.go:271 +0x5f8

2021/12/07 12:00:03 stderr: github.com/go-jet/jet/v2/qrm.mapRowToSlice(0xc0000b6140, {0xc0000244c8, 0x11}, 0xc0000ea4b0, {0xc0000b6580, 0xc0000b00c8, 0xc0000ea950}, 0xc000292ee0)

2021/12/07 12:00:03 stderr:  /go/pkg/mod/github.com/go-jet/jet/v2@v2.5.1-0.20211207161610-1b1d50adcfdd/qrm/qrm.go:197 +0x292

2021/12/07 12:00:03 stderr: github.com/go-jet/jet/v2/qrm.mapRowToDestinationPtr(0x8263c0, {0xc0000244c8, 0x11}, 0x1, {0xc0000b6580, 0xc0000b00c8, 0x871d00}, 0xc000292ee0)

2021/12/07 12:00:03 stderr:  /go/pkg/mod/github.com/go-jet/jet/v2@v2.5.1-0.20211207161610-1b1d50adcfdd/qrm/qrm.go:364 +0xe5

2021/12/07 12:00:03 stderr: github.com/go-jet/jet/v2/qrm.mapRowToDestinationValue(0x871d00, {0xc0000244c8, 0x11}, 0x0, {0x8263c0, 0xc0000b00c8, 0x815204}, 0x12)

2021/12/07 12:00:03 stderr:  /go/pkg/mod/github.com/go-jet/jet/v2@v2.5.1-0.20211207161610-1b1d50adcfdd/qrm/qrm.go:337 +0x178

2021/12/07 12:00:03 stderr: github.com/go-jet/jet/v2/qrm.mapRowToStruct(0x11, {0xc0000244c8, 0x11}, 0xc00010e950, {0x81c680, 0xc0000b0080, 0x40e914}, 0xc0000ea877, {0x0, 0x0, ...})

2021/12/07 12:00:03 stderr:  /go/pkg/mod/github.com/go-jet/jet/v2@v2.5.1-0.20211207161610-1b1d50adcfdd/qrm/qrm.go:271 +0x5f8

2021/12/07 12:00:03 stderr: github.com/go-jet/jet/v2/qrm.mapRowToSlice(0xc0000b6140, {0x0, 0x0}, 0xc00013d200, {0x81bc40, 0xc0000f62d0, 0x1}, 0x0)

2021/12/07 12:00:03 stderr:  /go/pkg/mod/github.com/go-jet/jet/v2@v2.5.1-0.20211207161610-1b1d50adcfdd/qrm/qrm.go:197 +0x292

2021/12/07 12:00:03 stderr: github.com/go-jet/jet/v2/qrm.queryToSlice({0x961d90, 0xc000026060}, {0x961ee0, 0xc00007d5f0}, {0xc00013d200, 0xc0000eaa08}, {0xc0004409d0, 0x7561fc, 0xc0000ea9e8}, {0x81bc40, ...})

2021/12/07 12:00:03 stderr:  /go/pkg/mod/github.com/go-jet/jet/v2@v2.5.1-0.20211207161610-1b1d50adcfdd/qrm/qrm.go:144 +0x32d

2021/12/07 12:00:03 stderr: github.com/go-jet/jet/v2/qrm.Query({0x961d90, 0xc000026060}, {0x961ee0, 0xc00007d5f0}, {0xc00013d200, 0x81e}, {0xc0004409d0, 0x1, 0x1}, {0x81bc40, ...})

2021/12/07 12:00:03 stderr:  /go/pkg/mod/github.com/go-jet/jet/v2@v2.5.1-0.20211207161610-1b1d50adcfdd/qrm/qrm.go:29 +0x1bb

2021/12/07 12:00:03 stderr: github.com/go-jet/jet/v2/internal/jet.(*serializerStatementInterfaceImpl).Query(0xc0004143c0, {0x961ee0, 0xc00007d5f0}, {0x81bc40, 0xc0000f62d0})

2021/12/07 12:00:03 stderr:  /go/pkg/mod/github.com/go-jet/jet/v2@v2.5.1-0.20211207161610-1b1d50adcfdd/internal/jet/statement.go:86 +0x12f

Got it to work by adding table.JoinedTable.ID to the select (not just inner join), going to look at why this is but branch seems to work :)!
Thanks a million @go-jet

Went from 13-20ms to 5-6ms! On a production sized table this difference would be massive.

Refactored all our current jet code to use this detection, everything working smoothly, functions are now specific yet lean and many less points of failure, this is the reason I wanted to use this library, glad I can finally use it as intended. Working great!

Cool! Glad to hear that.

Hi @CmpHDL,
Could you share the stacktrace?

@go-jet
http: panic serving <IP_ADDRESS>:51564: reflect: slice index out of range
goroutine 38 [running]:
net/http.(*conn).serve.func1()
/usr/local/go/src/net/http/server.go:1801 +0xb9
panic({0x8553c0, 0x9c59a0})
/usr/local/go/src/runtime/panic.go:1047 +0x266
reflect.Value.Index({0x847920, 0xc00023e248, 0xc0000efea0}, 0x85)
/usr/local/go/src/reflect/value.go:1297 +0x178
github.com/go-jet/jet/v2/qrm.getSliceElemPtrAt({0x82c340, 0xc00023e248, 0xc0000efea0}, 0x85)
/go/pkg/mod/github.com/go-jet/jet/v2@v2.9.0/qrm/utill.go:43 +0x32
github.com/go-jet/jet/v2/qrm.mapRowToSlice(0xc00010cf00, {0xc0004a8850, 0x6a}, {0x82c340, 0xc00023e248, 0xc0004cf288}, 0xc0002437a0)
/go/pkg/mod/github.com/go-jet/jet/v2@v2.9.0/qrm/qrm.go:161 +0x3e9
github.com/go-jet/jet/v2/qrm.mapRowToDestinationPtr(0x847920, {0xc0004a8850, 0x6a}, {0x82c340, 0xc00023e248, 0x5}, 0xc0002437a0)
/go/pkg/mod/github.com/go-jet/jet/v2@v2.9.0/qrm/qrm.go:334 +0xcb
github.com/go-jet/jet/v2/qrm.mapRowToDestinationValue(0x8f6360, {0xc0004a8850, 0x6a}, {0x847920, 0xc00023e248, 0x847920}, 0x809ab8)
/go/pkg/mod/github.com/go-jet/jet/v2@v2.9.0/qrm/qrm.go:308 +0x152
github.com/go-jet/jet/v2/qrm.mapRowToStruct(0xc00010cf00, {0xc0004a8850, 0x6a}, {0x8eb600, 0xc00023e160, 0xc0004cf558}, 0x4a925d, {0x0, 0x0, 0x0})
/go/pkg/mod/github.com/go-jet/jet/v2@v2.9.0/qrm/qrm.go:241 +0x5d0
github.com/go-jet/jet/v2/qrm.mapRowToDestinationPtr(0x9e1690, {0xc0004a8850, 0x6a}, {0x8eb600, 0xc00023e160, 0x2}, 0xc0002402a0)
/go/pkg/mod/github.com/go-jet/jet/v2@v2.9.0/qrm/qrm.go:332 +0x114
github.com/go-jet/jet/v2/qrm.mapRowToDestinationValue(0x8d6c80, {0xc0004a8850, 0x6a}, {0x8eb600, 0xc0005a0250, 0x8eb600}, 0x80cb57)
/go/pkg/mod/github.com/go-jet/jet/v2@v2.9.0/qrm/qrm.go:308 +0x152
github.com/go-jet/jet/v2/qrm.mapRowToStruct(0xc00010cf00, {0xc0004a8850, 0x6a}, {0x8dbd40, 0xc0005a01a0, 0xc0004cf8d0}, 0x4a925d, {0x0, 0x0, 0x0})
/go/pkg/mod/github.com/go-jet/jet/v2@v2.9.0/qrm/qrm.go:241 +0x5d0
github.com/go-jet/jet/v2/qrm.mapRowToDestinationPtr(0x9e1690, {0xc0004a8850, 0x6a}, {0x8dbd40, 0xc0005a01a0, 0x2}, 0xc00022eaf0)
/go/pkg/mod/github.com/go-jet/jet/v2@v2.9.0/qrm/qrm.go:332 +0x114
github.com/go-jet/jet/v2/qrm.mapRowToDestinationValue(0x8dc520, {0xc0004a8850, 0x6a}, {0x8dbd40, 0xc0004aab40, 0x8dbd40}, 0x814373)
/go/pkg/mod/github.com/go-jet/jet/v2@v2.9.0/qrm/qrm.go:308 +0x152
github.com/go-jet/jet/v2/qrm.mapRowToStruct(0xc00010cf00, {0xc0004a8850, 0x6a}, {0x8bbb60, 0xc0004aaa80, 0xc0000a1610}, 0x8553c0, {0x0, 0x0, 0x0})
/go/pkg/mod/github.com/go-jet/jet/v2@v2.9.0/qrm/qrm.go:241 +0x5d0
github.com/go-jet/jet/v2/qrm.mapRowToSlice(0xc00010cf00, {0x0, 0x0}, {0x82c3c0, 0xc00012efa8, 0xc0000a12b0}, 0x0)
/go/pkg/mod/github.com/go-jet/jet/v2@v2.9.0/qrm/qrm.go:168 +0x2de
github.com/go-jet/jet/v2/qrm.queryToSlice({0x9d3550, 0xc0000aa000}, {0x9c95c0, 0xc0000a7ee0}, {0xc0001d4400, 0x44f777}, {0xc0000a12b0, 0x0, 0x0}, {0x82c3c0, ...})
/go/pkg/mod/github.com/go-jet/jet/v2@v2.9.0/qrm/qrm.go:124 +0x2ec
github.com/go-jet/jet/v2/qrm.Query({0x9d3550, 0xc0000aa000}, {0x9c95c0, 0xc0000a7ee0}, {0xc0001d4400, 0xb09}, {0xc0000a12b0, 0x1, 0x1}, {0x82c3c0, ...})
/go/pkg/mod/github.com/go-jet/jet/v2@v2.9.0/qrm/qrm.go:29 +0x1bb
github.com/go-jet/jet/v2/internal/jet.(*serializerStatementInterfaceImpl).QueryContext.func1()
/go/pkg/mod/github.com/go-jet/jet/v2@v2.9.0/internal/jet/statement.go:102 +0x65
github.com/go-jet/jet/v2/internal/jet.duration(0xc0004d0050)
/go/pkg/mod/github.com/go-jet/jet/v2@v2.9.0/internal/jet/statement.go:181 +0x37
github.com/go-jet/jet/v2/internal/jet.(*serializerStatementInterfaceImpl).QueryContext(0xc00010ceb0, {0x9d3550, 0xc0000aa000}, {0x9c95c0, 0xc0000a7ee0}, {0x82c3c0, 0xc00012efa8})
/go/pkg/mod/github.com/go-jet/jet/v2@v2.9.0/internal/jet/statement.go:101 +0x1d1
github.com/go-jet/jet/v2/internal/jet.(*serializerStatementInterfaceImpl).Query(0x929120, {0x9c95c0, 0xc0000a7ee0}, {0x82c3c0, 0xc00012efa8})
/go/pkg/mod/github.com/go-jet/jet/v2@v2.9.0/internal/jet/statement.go:90 +0x4a

Running version
github.com/go-jet/jet/v2 v2.9.0

Your destination type looks similar to the type from this discussion.

This is how I fixed it in the meantime, is there a way we could put an alias on a struct field? Eg:
type A struct {
    models.As
    B *B
    C *C
}

type B struct {
    models.Bs
    D *D `alias:b_ds'
}

type C struct {
    models.Cs
    D *D `alias:"c_ds"
}

That way we would could maintain all of the methods on D without having to duplicate them in another model or have to do some sort of casting?

Also is there no way to distinguish which should nested struct should go on which automatically?

Yeah, you're right. Discussion type is not that similar to your destination type. Your alias example should work, except maybe type D struct. I don't believe alias is propagated to model.Ds in this case. But maybe you can use type D model.Ds instead.

@houten11 Problem is we would lose all methods on type D

No, you can still add methods on the renamed type.
type D model.Ds

func (d D) SomeMethod() {}

@CmpHDL Could you share the query you used in your first attempt. I can't reproduce the bug.
Just by looking at stacktrace it doesn't' seems to be related to types circular reference.
Also, what driver are you using?

Postgres, I'll create a reproduction for this so you can reproduce. But I essentially just did inner joins.

No, you can still add methods on the renamed type.
type D model.Ds

func (d D) SomeMethod() {}

However, then, additional properties cannot be added.

I'll create a reproduction for this so you can reproduce.

This would be great.

Forgot about this, always juggling 100 things. I'll make one today if not then this week.

This seems like a scan grouping bug, so for your test sample you can ignore all the columns except the primary key columns.


float is emitted as object

Describe the issue or request
When a spec has a float type it gets generated as object
model Foo {
   TestNonNullableFloat: float;
   TestNullableFloat: float | null;
   TestNonNullableFloat32: float32;
   TestNullableFloat32: float32 | null;
   TestNonNullableFloat64: float64;
   TestNullableFloat64: float64 | null;
}

Describe your ideas for solutions
Maybe generate the max possible representation which would be decimal
/cc: @m-nash

Hi @joheredi per typespec document, float is the base type of float32 and float64.
We did not handle this particular kind previously therefore it is emitted as object.
Since it is the base, from value's perspective, I think we should generate this type as double.
What do you think? @joheredi @m-nash


Add a separate event for random teleport

As the title suggests, an event added to make it easier to listen for random teleport (actually my plugin needs to listen for random teleport, it seems to work well on the bukkit platform)

Sorry I didn't look at the pull request the other day, I'll get it done soon


fix: allow ts to work with account names that have multiple uppercase chars in a row

generate proper discriminators for accounts that have multiple uppercase characters in their names, such as "FooNFT" or "MetaDAO"
address #2104, #2058, and #1859
context for camel casing: https://github.com/coral-xyz/anchor/pull/931

@callensm review pls?

this seems like a weakly desired feature by some, have multiple uppercase characters in variable name
-It doesn't appear to be a breaking change because it would simply error before on this behaviour? If not we should definitely add a breaking change notice to the changelog @metaproph3t

Thanks for the PR! (And for including a test!)


Replace with NFDI4Objects Organization Knowledge Graph

NFDI4Objects will publish a knowledge graph based on the model of NFDI4Culture Knowledge Graph. @situx might know more.

We cannot wait longer, so keeping this repository.


How to become a freelancer, and how u got your first client ?

That’s a good question and not the shortest. But I’ll try to give you some insight.
I did my first websites as a pupil in secondary school (around 2003). Nothing special but around 2006 I got some requests by friends to make them a website. I didn’t want to give that away for free and also badly needed some money for my hobbies back then.
Being aware that I can’t just receive money without having some sort of business I played around thinking how to solve the problems. A big problem was to get my parents on board because I was still not full age so needed the permission of them.
Finally, I got it sorted out with a friend of mine at the age of 17 and started my first business in 2007. It was 25EUR and some weird bureaucratic things to manage but worth it. Our first client indeed was a relative of my friend who had a holiday residence so we made a website for him (for waaay to less money of course but we were newbies here).
There followed a few other projects for sport clubs (we always knew some people there). Being a bit bored of HTML (it was the times of frames and table layouts made with Photoshop), I dived into print design and did a couple of brochures, flyers and such stuff for the same and various other small clients. It was amazing to have my first real printed product in my hands which wasn’t a basic flyer (but a 64 pages brochure with all the tricky things in there – low-res images, vector layouts, floats, shapes, ads, etc).
In my spare time I hung around in forums to learn more about web development and print layouting/prepress. I got stuck with InDesign and started to try out new things on my own. Once, I attended a meetup in the big city 1hour away from where I lived (Munich). It was an InDesign user group and I was hooked. There were people teaching others cool things for free and you could discuss with people. After the event the organizers gave everyone a feedback form which contained also the question if one would be interested in speaking there, too. I don’t remember what lead me to mark the cross at "yes" but a few weeks later I got a call. Their original speaker turned the gig down and they needed a replacement. Clueless what I could talk about they asked me if I knew something about InDesign and XML. I said no but I could figure it out which was enough for them and that’s how I gave my first public talk and a few meetings later, joined the organization team for the user group (for like 5 years).
After my Abitur (university-entrance diploma) I worked a bit freelance and then started my civil service in Munich and moved there. During that, I received several requests for projects and did them in my spare time. It was the time HTML5 came around and I wanted to go back into web development. A few smaller websites followed and when I finished my 9 month of civil service I went full time freelance instead of going to university. I got more than enough projects to make a living from it and due to my blog articles, speaking appearances (still all local stuff) I apparently got enough attention that people shared that I do good work…
Basically, this is how I started. The story goes on but that’d be way too long now. Hope it helps. :) If you have questions on details, please ask.

Actually, it seems you wanted to also know how to become a freelancer. A few tips from me:

Start gaining interest by potential clients before going freelance (blog, speak, share something, open source work)
Search yourself a corner that you’re good at and that you love to get work
Research how much money you need for a living
Calculate your hourly and daily rate based on that and charge a bit more than that
Don’t assume to start out covering 100% of your costs in the first year, it’ll take some time to get enough good paid projects
Have a portfolio and CV
Open the legal business, care about your taxes in advance and get someone who can help you on that

And finally, get colleagues who can help you out on the development/design and get people who can help you out on the business side. It first feels weird to pay an accountant but be sure it’s worth the money.
Take this as basic advice, please. There might be some things missing now but I think the most important is to put yourself out on the market and be very disciplined on working on your own and managing finances.

Tips are really helpful, and  your story give me some direction, thank you for your detailed answer!


I lost "unused imports" warning

I am selfhosting with gulp-tsb running in VS Code and I am no longer seeing warnings for unused imports.

Sorry, invalid. I missed to install tslint when moving to insiders build.


telescope: 0.6.1 → 0.7

Motivation for this change
Changelog
Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux (cross)
[ ] x86_64-darwin
[ ] aarch64-darwin (cross)

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

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

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

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

[x] Fits CONTRIBUTING.md.

Run on x86_64-darwin

1 package built:

telescope

Run on x86_64-linux

1 package built:

telescope


On demand filter chain

Motivation

Make better use of resources (RAM, CPU)

Why

We have a huge network filter chain candidates but only very few are actively used.
Filter chain dependencies could be retrieved elsewhere (FDS/SDS)

Possible solution

On listener update, build decision tree of filter chain match
When packet arrives at worker, use the decision tree to find the filter chain
If the filter chain is not retented, trigger the filter chain build at master thread.
Resume the connection at worker thread when master thread successfully initialized the filter chain.

VS #12183

This proposal addresses the resource usage
Support retention policy

See also

landed VHDS
[on demand RDS](on-demand lazy loading for S/RDS)
on demand XDS

A design outline for this feature:

Create fake filterchain placeholder when listener calls newListenerWithFilterChain, replace ListenerImpl::buildFilterChain() with ListenerImpl::buildFakeFilterChain().
2, On new connection arriving, connection handler find filter chain, (when it is fake) calls dispatcher (of master thread) to post an updateFilterChain request together with a retryConnection callback function of this handler. Reject(Clear) this new connection for now.
Listener Manager assign a listener-specific init manager to a transport socket factory to request dependencies(SDS).
On request completion, callback the retryConnection on the worker thread with updated(real) filter chain.


slack URL in README is missing

https://github.com/mackerelio-labs/terraform-provider-mackerel/blob/bdba627a7a4d59004bd2cfbdc38e63dd2f76be16/README.md?plain=1#L11
This URL has passed away...

closes.
done at #183


Document VEP flags missing from public docs

ENSVAR-5301: Documented VEP arguments --ga4gh_vrs and opt_ambiguous_hgvs .
Check documentation changes in my sandbox.

Hi Nuno, is this for 109? If so, could you finish it so I can merge it in, please?

Hey @ens-ap5, yes, it would be nice if these could already be merged for 109. Thanks!


Allow developer to specify PACT_URI for Frontend Pact tests

This is to simplify the Frontend codebase. See
https://github.com/alphagov/frontend/pull/2647
I've made this configurable field called FRONTEND_PACT_URI,
rather than PACT_URI, so that we can provide different PACT_URI
values for each provider (otherwise if they all implement the
PACT_URI approach, all but one would fail as a result of
pointing to the wrong pactfile).

Superseded by https://github.com/alphagov/frontend/pull/2648.


Moved 2 code from home directory to correct folder for better structuring of the repository

Please fill the deatils before contributing.

⚠Important!!

[x] Done reading CONTRIBUTING.md?

Adding Code PRs?🔥
⚠Do not add multiple files for the same solution!!!

[ ] Added problem statement(Readme.md) with solution?

[ ] Contributing new file?
[ ] Appending your code in already existing file?

From Platform:

[ ] Leetcode
[ ] GFG
[ ] Interviewbit
[ ] Others(only acceptable after DISCUSSIONS)

Link to the problem

Migration PRs?🤝

[x] Done deleteing file from home directory?
[x] Added file with correct name and correct directory?

Kindly inform me once, if I have done it right. I would love to contribute to this repository in the future as much as possible. @Sagar0-0

Thanks for merging my pull request.
Here's a suggestion from me-->
Should I start adding the names with their profile links (commented) of the original contributors as well (in the moved code)?
Although I don't remember the names of the previous two contributors I moved, I will take care of this next time. If you allow me to do so.

No problem, you are doing a great job!

Thanks for your appreciation :)


When dragging the UITableView, GIF will disappear in the cell

When dragging the UITableView, GIF will disappear in the cell.
I have no ability to repair it, I can only provide a demo of errors.
https://github.com/wangweijia/SDWebImageBugDemo.git
Hope to be able to provide a little help to solve this problem
(Please forgive my helpless and English is not my native language, please forgive mistakes in grammar)

In the 4.x branch, you can find our new GIF solution based on FLAnimatedImage. Please try with that and see if the issue still occurs.


perf: replace useState with useReducer

follow up to #3 (perf optimization)
also: bundle size will be even smaller (not that is a concern :rofl:)
this avoids creating a new function on each render,
the identity value for the dispatch function stays stable.
passing dispatcher down is encouraged because of "ref stability".
added some tests to guarantee void returns from function,
as I had to do some coercion. (dispatcher function is too specific)
this is not a breaking change, and compatible with both alpha and stable react.
(the alpha lacks the third argument to useReducer, this doesn't use it.)

update: regarding the other, even shorter, proposal:
the reducer proposed here seems more "reliable" as the setState will always return undefined.
React may bail out in the future, if it doesn't already.
update 2: yeps, react broke the () => useState()[1]:
should update a component:

AssertionError: expected 1 to equal 2

-1
+2

this avoids creating a new function on each render,
the identity value for the dispatch function stays stable.

This is subtle. Took me a moment to see the change. I really like it.

update: regarding the other, even shorter, proposal:
update 2: yeps, react broke the () => useState()[1]:

As much as I like unnecessarily short code, this is precisely why I didn't implement it. React behavior in the future isn't predictable enough to say that calling setState will always trigger a re-render. I wasn't super happy about toggling back and forth between booleans, because I feared a race condition for a shallow comparison, where it toggled twice before a re-render/animation frame, and React decides not to re-render because the state is now the same again.
That isn't the case for how it's treated right now, but I didn't want to have to refactor for future releases. Oh well. People didn't like the integer thing. C'est la vie.

it was news to me too.
I came about it, when I was writing a useEffect that dispatched conditionally something.
I didn't knew if I should add dispatch to the list of "dependencies".
turn's out it's stable (I quick tested with a ref), then looked at the eslint-plugin,
it's a special case there. (:
It's very subtle indeed. 🤓

Thanks for the PR. After merging, I did a little tampering to see what I could find. I had to use useMemo to get rid of that mandatory parameter. TypeScript's as could get rid of the IntelliSense and transpilation errors, but it wouldn't pass unit tests on creating a function with no arguments. useMemo does require a function be created every render, which is a little overhead, but it doesn't change dispatch's functional reference each render, which will allow it to be passed as a prop without changing that prop's reference each render; and I think that was the primary benefit of the PR.
I really appreciate the extra eyes on the project. If you have any other ideas or concerns, feel free to share them. Thanks again!


Power consumption mesurment

Measure power consumption of Irnas-NodeMCU:

normal mode
deep sleep
Modem-sleep
Light-sleep

No need to measure this, only standby power consumption of voltage regulator.


New rule - Unnecessary usage of white-space

I am looking for feedback on this as a new (optional) rule.
Specifically - the unnecessary usage of one or multiple unnecessary white-spaces before the closing of a tag.
Specifically. This rule-set would warn on examples such as:

PRIVACY POLICY

But not:

PRIVACY POLICY

It would also apply to other tags, such as , i.e.:

Use of your personal information

But not:

Use of your personal information

Feedback welcome.

Agree.

Hi @jamesspittal, this has been implemented in https://github.com/ecomfe/htmlcs/pull/90

Thanks @olegkrivtsov - great work.

Probably this can be closed.


provides that ability to specify a custom name for the ceph cluster

I messed up line 423 on index.rst. It is missing a backtick: public_network

@alfredodeza ok, fixed that typo in the docs.


AWS 2 Lambda native support

I think this one is quite simple to do, I'd give it a try this or next weekend.

That's highly welcome, unless @oscerd has something in the works?

Hello @Jeansen
Feel free to work on this extension :-)
Thanks a lot for your time!

I am sorry, this the passed WE I did not find time. I hope this WE works out. This time, it will - sadly - not be done in 9 days ;-)

When promoting to native, I got some error regarding the POM.xml file in the integration-tests folder
[ERROR] The build could not read 1 project -> [Help 1]
[ERROR]
[ERROR]   The project  (/home/marcel/ownCloud/workspaces/projects/camel-quarkus/integration-tests/pom.xml) has 1 error
[ERROR]     Non-parseable POM /home/marcel/ownCloud/workspaces/projects/camel-quarkus/integration-tests/pom.xml: Duplicated tag: 'modules' (position: START_TAG seen ...</dependencyManagement>\n\n    <modules>... @53:14)  @ line 53, column 14 -> [Help 2]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/ProjectBuildingException
[ERROR] [Help 2] http://cwiki.apache.org/confluence/display/MAVEN/ModelParseException

And in the POM, I see
 <modules>
        <module>aws2-lambda</module>
    </modules>

    <properties>
        <quarkus.banner.enabled>false</quarkus.banner.enabled>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>io.quarkus</groupId>
                <artifactId>quarkus-junit5-internal</artifactId>
                <version>${quarkus.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <modules>
        <!-- build those first -->
        <module>core</module>
        <module>main</module>
        <module>main-devmode</module>
        <module>main-xml-jaxb</module>
        <module>main-xml-io</module>
        <module>main-collector</module>
        <module>main-caffeine-lrucache</module>
        <module>main-command-mode</module>
.
.
.

Obviously, something with the module addition went wrong ;-) I'll fix it manually for now.

As I see, integration tests are all in one folder. So, I assume I do not have to amend the 'tooling/scripts/test-categories.yaml' file?
Is there any automation? Or should I just manually throw away what I do not need from the generated integration test and simply try adding a rout the the aws2 test class?

You should add just the needed bits into the camel-aws2 test folder. It should be enough to add the extension and write a similar route.

OK, thx.

Obviously, something with the module addition went wrong

Thanks for complaining :), let me check that tomorrow.

Obviously, something with the module addition went wrong

Thanks for complaining :), let me check that tomorrow.

Should be fixed via f4233ff8159e15f4ba2ad46bc16be6ba754c317e


Create: 57-Insert-Interval.swift, 141-Linked-List-Cycle.swift, 206-Reverse-Linked-List.swift, 213-House-Robber-II.swift, 19-Remove-Nth-Node-From-End-of-List.swift, 72-Edit-Distance.swift, 152-Maximum-Product-Subarray.swift, 152-Maximum-Product-Subarray.c, 152-Maximum-Product-Subarray.go, 66-Plus-One.go, 152-Maximum-Product-Subarray.kt, 153-Find-Minimum-in-Rotated-Sorted-Array.cs, 309-Best-Time-to-Buy-and-Sell-Stock-With-Cooldown.cs

Swift Solutions for: 57-Insert-Interval.swift, 141-Linked-List-Cycle.swift, 206-Reverse-Linked-List.swift, 213-House-Robber-II.swift, 19-Remove-Nth-Node-From-End-of-List.swift, 72-Edit-Distance.swift, 152-Maximum-Product-Subarray.swift
C Solution for: 152-Maximum-Product-Subarray.c
Golang Solutions for 152-Maximum-Product-Subarray.go, 66-Plus-One.go
Kotlin Solution for 152-Maximum-Product-Subarray.kt
C# Solutions for 153-Find-Minimum-in-Rotated-Sorted-Array.cs, 309-Best-Time-to-Buy-and-Sell-Stock-With-Cooldown.cs

File(s) Modified: 57-Insert-Interval.swift, 141-Linked-List-Cycle.swift, 206-Reverse-Linked-List.swift, 213-House-Robber-II.swift, 19-Remove-Nth-Node-From-End-of-List.swift, 72-Edit-Distance.swift, 152-Maximum-Product-Subarray.swift, 152-Maximum-Product-Subarray.c, 152-Maximum-Product-Subarray.go, 66-Plus-One.go, 152-Maximum-Product-Subarray.go, 153-Find-Minimum-in-Rotated-Sorted-Array.cs, 309-Best-Time-to-Buy-and-Sell-Stock-With-Cooldown.cs
Language(s) Used: Swift, C, Golang, Kotlin, Csharp
Submission URL:

Swift Solutions

Insert Interval: _https://leetcode.com/submissions/detail/802317828/_
House Robber II: _https://leetcode.com/submissions/detail/802327190/_
Linked List Cycle: _https://leetcode.com/submissions/detail/803466791/_
Reverse Linked List: _https://leetcode.com/submissions/detail/803471057/_
Remove Nth Node From End of List: _https://leetcode.com/submissions/detail/803477630/_
Edit Distance: _https://leetcode.com/submissions/detail/805127122/_
Maximum Product Subarray(swift): _https://leetcode.com/submissions/detail/802331073/_

C Solution

Maximum Product Subarray(C): _https://leetcode.com/submissions/detail/802342008/_

Golang Solutions

Maximum Product Subarray(Go): _https://leetcode.com/submissions/detail/802346783/_
Plus One: _https://leetcode.com/submissions/detail/804336962/_

Kotlin Solution

Maximum Product Subarray(Kotlin): _https://leetcode.com/submissions/detail/803340122/_

C# Solutions

Find Minimum in Rotated Sorted Array: _https://leetcode.com/submissions/detail/804344527/_
Best Time to Buy and Sell Stock with Cooldown: _https://leetcode.com/submissions/detail/804349351/_

Thanks so much @Ykhan799!

Are you interested in becoming a collaborator for this repo, so that you don't have to wait around for me to merge your PRs?

Sure, I would love to be a collaborator :)

@neetcode-gh, would this be possible? @Ykhan799 has committed thousands of lines to this repo.

Done, just invited @Ykhan799, thanks for all your contributions!


missing dependency  vue-runtime-helpers

This dependency was not found:

* vue-runtime-helpers in ./node_modules/vue-gallery-slideshow/dist/js/vue-gallery-slideshow.js

To install it, you can run: npm install --save vue-runtime-helpers

I had the same issue, but running
yarn add vue-runtime-helpers
solve it, probabbly it will work with npm too

It should be added to dependencies in this project's package.json, like all other libraries do

@mariusa @waltergammarota Thanks for this hint! I've added it now to the project and released a patch (v1.5.1) the fixes that issue.

Thanks! Please publish to npm too:
https://www.npmjs.com/package/vue-gallery-slideshow


SAS vs R Template

I had added a few suggested changes - apologies they were sitting as pending. Let me know if you'd like us to make these updates.

Hi @orladoylenvs , thank you for the suggestions. Could you please help review the update? https://github.com/PSIAIMS/CAMIS/compare/main...zzzzqqqa:CAMISfork:main

I think you will need to make another pull request cause I pull this in prior to these changes


[Feature request] rename Factorys to Ohshown Events

Please fix this wording shown below in the django admin site:

relates to #9 and #1

This issue is resolved by https://github.com/tai271828/disfactory-backend/pull/16/files#diff-c8e3f64411fbf3baf33d779f8592f7e49939be761c46462d9b37f94d568402d3R11


Better docs, disabling privileged mode and NPE fix

Codecov Report

Merging #252 into master will decrease coverage by 3.91%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##           master     #252      +/-   ##
==========================================
- Coverage   75.59%   71.67%   -3.92%
==========================================
  Files           5        8       +3
  Lines         676      971     +295
==========================================
+ Hits          511      696     +185
- Misses        145      236      +91
- Partials       20       39      +19

Flag
Coverage Δ

#unittests
71.67% <100%> (-3.92%)
:arrow_down:

Impacted Files
Coverage Δ

service/service.go
70.58% <ø> (ø)

service/docker.go
77.12% <100%> (ø)

main.go
63.47% <100%> (+0.44%)
:arrow_up:

service/driver.go
0% <0%> (ø)

selenoid.go
75.64% <0%> (+0.57%)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update eb8351d...6913fb5. Read the comment docs.


"node not synced" response while the node is synced

Describe the bug
A clear and concise description of what the bug is.
I often get a "node not synced" response to API called but the node is synced.
To Reproduce
I have a Hornet node running (v0.5.2), it reports quite often node not synced although the LSMI and the isSynced, isHealthy fields indicate it is synchronized.
I have tested it with the getBalances call but it may occur with other calls, as well:
echo $(curl -s -X POST -H 'Content-Type: application/json' -H 'X-IOTA-API-Version: 1' '<address>' --data '{"command": "getBalances","addresses":["<my IOTA address>"]}')
echo $(curl -s -X POST -H 'Content-Type: application/json' -H 'X-IOTA-API-Version: 1' '<address>' --data '{"command": "getNodeInfo"}' | jq ".isSynced,.isHealthy")

{"error":"node not synced"}
true true

Also if I compare ... --data '{"command": "getNodeInfo"}' | jq -r '.latestSolidSubtangleMilestoneIndex' with the result from https://nodes.thetangle.org, they do match."
I run the getBalances and getNodeInfo calles with a bash script one after the other with no "sleep" time.
Full response to a "getNodeInfo" command:
  "appName": "HORNET",
  "appVersion": "0.5.2",
  "latestMilestone": "TVYNXLYYJCSCBYW9KZGHU9JCXYNOSBBWFKQDLDVHOKVOBSECZGZGZYIAETJNDQHHRQMVNYZSUBZYA9999",
  "latestMilestoneIndex": 1717140,
  "latestSolidSubtangleMilestone": "TVYNXLYYJCSCBYW9KZGHU9JCXYNOSBBWFKQDLDVHOKVOBSECZGZGZYIAETJNDQHHRQMVNYZSUBZYA9999",
  "latestSolidSubtangleMilestoneIndex": 1717140,
  "isSynced": true,
  "isHealthy": true,
  "milestoneStartIndex": 1564509,
  "lastSnapshottedMilestoneIndex": 1717061,
  "neighbors": 7,
  "time":<PHONE_NUMBER>000,
  "tips": 95,
  "transactionsToRequest": 0,
  "features": [
    "RemotePOW",
    "WereAddressesSpentFrom"
  ],
  "coordinatorAddress": "UDYXTZBE9GZGPM9SSQV9LTZNDLJIZMPUVVXYXFYVBLIEUHLSEWFTKZZLXYRHHWVQV9MNNX9KZC9D9UZWZ",
  "duration": 0
}

Expected behavior
I get the balance.
Environment information:

RAM: 8 GB
Cores: 16
Type: VM
HORNET version: 0.5.2

Additional context
This issue has happened a few times before but since the update to 0.5.0 on the 19th August (or the increased rate of milestones per minute) it has become more frequent.

My config:

{
--
"useProfile": "auto",
"httpAPI": {
"basicAuth": {
"enabled": false,
"username": "",
"passwordHash": "",
"passwordSalt": ""
},
"excludeHealthCheckFromAuth": false,
"permitRemoteAccess": [
"attachToTangle",
"getNodeInfo",
"getBalances",
"checkConsistency",
"getTipInfo",
"getTransactionsToApprove",
"getInclusionStates",
"getNodeAPIConfiguration",
"wereAddressesSpentFrom",
"broadcastTransactions",
"findTransactions",
"storeTransactions",
"getTrytes"
],
"whitelistedAddresses": [],
"bindAddress": "<IP_ADDRESS>:11111",
"limits": {
"bodyLengthBytes": 1000000,
"findTransactions": 1000,
"getTrytes": 1000,
"requestsList": 1000
}
},
"tipsel": {
"belowMaxDepth": 15
},
"db": {
"path": "/hornet/mainnetdb",
"debug": false
},
"logger": {
"level": "info",
"disableCaller": true,
"encoding": "console",
"outputPaths": [
"stdout"
]
},
"snapshots": {
"loadType": "local",
"local": {
"intervalSynced": 50,
"intervalUnsynced": 1000,
"path": "snapshots/mainnet/export.bin",
"downloadURLs": [
"https://ls.manapotion.io/export.bin",
"https://x-vps.com/export.bin",
"https://dbfiles.iota.org/mainnet/hornet/latest-export.bin"
]
},
"global": {
"path": "snapshotMainnet.txt",
"spentAddressesPaths": [
"previousEpochsSpentAddresses1.txt",
"previousEpochsSpentAddresses2.txt",
"previousEpochsSpentAddresses3.txt"
],
"index": 1050000
},
"pruning": {
"enabled": true,
"delay": 258000
}
},
"spentAddresses": {
"enabled": true
},
"network": {
"preferIPv6": false,
"gossip": {
"bindAddress": "<IP_ADDRESS>:15600",
"reconnectAttemptIntervalSeconds": 60
},
"autopeering": {
"bindAddress": "<IP_ADDRESS>:14626",
"runAsEntryNode": false,
"entryNodes": [
"FvfwJuCMoWJvcJLSYww7whPxouZ9WFJ55uyxTxKxJ1ez@enter.hornet.zone:14626",
"EkSLZ4uvSTED1x6KaGzqxoGxjbytt2rPVfbJk1LRLCGL@enter.manapotion.io:18626",
"iotaMk9Rg8wWo1DDeG7fwV9iJ41hvkwFX8w6MyTQgDu@enter.thetangle.org:14627",
"12w9FrzMdDQ42aBgFrv1siHuJMhuZ4SMVHRFSS7Zb72W@entrynode.iotatoken.nl:14626",
"DboTc1v61Xdyvggj8VRszy92ScUTLgfwZaHvXsU8zr7e@entrynode.tanglebay.org:14626",
"31Tz9meznQMm7qSDUgyMmYVeHUCGA7za5Suvbom5hpE9@bender.iota.autopeering.com:14626"
],
"seed": ""
}
},
"node": {
"alias": "",
"showAliasInGetNodeInfo": false,
"disablePlugins": [
"WarpSync",
"Dashboard",
"Graph",
"MQTT",
"Prometheus",
"Spammer",
"ZMQ"
],
"enablePlugins": []
},
"profiling": {
"bindAddress": "localhost:6060"
}
}

Hi @g574 and thx for the report.
I see where this problem comes from, because in some API calls, we directly check if latest solid milestone is equal to latest known milestone. This is somewhat on purpose, because you will not get the latest information about the "balances" in that moment, because the state of the latest milestone is not applied yet.
In getBalances this may not be a problem, because we also return the milestoneIndex of that result, so the client could check if these are the latest balances. But if a client doesn't check this index, and uses the old balances for new transfers, this could go wrong.
Also 2 other calls are affected wereAddressesSpentFrom and getInclusionState.
IMHO it's better to signal the caller that the node was not completly sync in exactly that moment of the call, instead of replying with outdated information. The caller can just retry the request.
What do you think?
We will also discuss this internally.
We have to d

IMHO a node that is synced and catches up to each new milestone within few milliseconds should not be considered 'out of sync' for the duration of these few milliseconds. If you decide to promote the current behaviour to a feature, then we'd greatly appreciate a different error message between 'outdated by a millisecond', where it makes sense to repeat the call, and 'significantly outdated' where it does not.
Looking at other blockchains, the consensus behaviour for all other node software seems to be to deliver the most recent known data for e.g. balances. The node already provides sufficient information to the user to determine if the information should be considered current enough or not. I do not think this decision should be enforced on the node level.

I think I will add a small deadline to wait for becoming sync if the node is almost sync when the request arrives.

That would very likely work for us, thanks.

Great, I will implement that tonight.

Hi @muXxer ,
Unfortunately I still have this issue with 0.5.3-rc3.
I use a script like this:
#!/bin/bash

echo $(curl -s --noproxy "*" --connect-timeout 10 --max-time 10 -X POST -H 'Content-Type: application/json' -H 'X-IOTA-API-Version: 1' 'http://<address>' --data '{"command": "getBalances","addresses":["<IOTA address>"]}')

echo $(curl -s --noproxy "*" --connect-timeout 10 --max-time 10 -X POST -H 'Content-Type: application/json' -H 'X-IOTA-API-Version: 1' 'http://<address>' --data '{"command": "getNodeInfo"}' | jq ".isSynced,.isHealthy")

It still reports "node not synced" quite often.
This is the output from getNodeInfo:
{
  "appName": "HORNET",
  "appVersion": "0.5.3-rc3",
  "latestMilestone": "FNGOUMVLMXRUDAKFZIKBGGSWYQ9TQEDKTS9S9SWHSSKDUFFSXJYAPHIIGXNLXI9MNVMTGWNOEDCE99999",
  "latestMilestoneIndex": 1734991,
  "latestSolidSubtangleMilestone": "FNGOUMVLMXRUDAKFZIKBGGSWYQ9TQEDKTS9S9SWHSSKDUFFSXJYAPHIIGXNLXI9MNVMTGWNOEDCE99999",
  "latestSolidSubtangleMilestoneIndex": 1734991,
  "isSynced": true,
  "isHealthy": true,
  "milestoneStartIndex": 1559930,
  "lastSnapshottedMilestoneIndex": 1734908,
  "neighbors": 7,
  "time":<PHONE_NUMBER>000,
  "tips": 101,
  "transactionsToRequest": 0,
  "features": [
    "RemotePOW",
    "WereAddressesSpentFrom"
  ],
  "coordinatorAddress": "UDYXTZBE9GZGPM9SSQV9LTZNDLJIZMPUVVXYXFYVBLIEUHLSEWFTKZZLXYRHHWVQV9MNNX9KZC9D9UZWZ",
  "duration": 0
}

can you post the node logs at the same time your script fails?

Closed due to inactivity.
Hit me up if you still have the problem with the next version called chrysalis.  (see develop branch)


Not able to add torrent file via web interface since last release

Describe the bug
When adding a torrent file via web interface nothing happens.
To Reproduce
Steps to reproduce the behaviour:

Click on + in the right low corner
Click on the torrent file icon
Select a torrent file from browser
Nothing happens, no popup window appears as it used to be before

Platform:

OS: macOS, iOS, iPadOS
Browser: Safari, Chrome

The above messages appear in the browser console log

Have you tried to clear the cache by reloading the page with Cmd Shift R ?

Same here, rolling back to 1.7.1 fixes it.
I see this message in the browser console when I try to add a torrent:
Unhandled Promise Rejection: Error: no web crypto support

Getting the same error on version 1.8.0; here's the log:
chunk-vendors.94715fc1.js:545 Uncaught (in promise) Error: no web crypto support
    at k (chunk-vendors.94715fc1.js:545:1354)
    at st (chunk-vendors.94715fc1.js:549:2098)
    at rt (chunk-vendors.94715fc1.js:549:396)
    at Object.parseBuffer (app.058545cd.js:1:65632)
    at Object.filesLoaded (app.058545cd.js:1:65483)
    at Object.readFiles (app.058545cd.js:1:65081)

Same, Firefox, Chromium, Brave, hen uploading a file
Uncaught (in promise) Error: no web crypto support
    k http://...js/chunk-vendors.94715fc1.js:545
    st http://...js/chunk-vendors.94715fc1.js:549
    rt http://...js/chunk-vendors.94715fc1.js:549
    parseBuffer http://...js/app.058545cd.js:1
    filesLoaded http://...js/app.058545cd.js:1
    readFiles http://...js/app.058545cd.js:1
    handleFiles http://...js/app.058545cd.js:1
    inputFile http://...js/app.058545cd.js:1
    inputFile http://...js/app.058545cd.js:1
    inputFile http://...js/app.058545cd.js:1
    5 http://...js/app.058545cd.js:1
    E http://...js/chunk-vendors.94715fc1.js:217
    a http://...js/chunk-vendors.94715fc1.js:217
    s http://...js/chunk-vendors.94715fc1.js:217
    s http://...js/chunk-vendors.94715fc1.js:217
    n http://...js/chunk-vendors.94715fc1.js:217
``

same in safari. adding via url and magnet working fine

hey folks, it’s working absolutely fine with ssl (https) connection. so you can set nginx server on reverse proxy to access transmission through https

same here using edge and safari

I have a same issue.
another workaround is using localhost (http://localhost:9091/transmission/web/)

I also encountered this problem. For me, the solution was to roll back to version https://github.com/6c65726f79/Transmissionic/releases/tag/v1.6.1


Migrate crtsh-postgres to cloudnativepg

Migrate crontab to k8s cronjobs? Can set PGHOST and PGPASSWORD. Also remove crlset and test_websites_monitor

Upstream had major perf upgrade, so we can decom this mirror


Filled contour changes and use of scientific notation for tick labels

I've made three changes that might be useful to others.

currently with fill_contours=False the contours are still filled in in the highest density region. On occasion I've wanted absolutely no filling in the contours, so I've created a new input argument (no_fill_contours), which if true means that just the contour outlines are plotted. The argument name may want changing to something different though!
For very large or small numbers the tick labels are currently in the e format (e.g 2.0e-20), so I've created the option of using MathText to output them in scientific notation (e.g. 2.0×10-20) if required.
Currently the number of histogram bins for the 2d histogram is set to 20 and can't be changed as the bins arguments for the corner functions means that another bins argument can't be added as a hist2d_kwargs argument. So, I've set it that if bins2d is set as a hist2d_kwargs argument then this value will be used for the 2d histogram binning (it will default back to 20 bins). (I've removed this as it was not required following merging of Will's pull request #46)

Thanks! The math text version fails for me with a LaTeX error but I'll include it for now without a test.
Long term, it would probably be better to allow the user to specify the formatter more flexibly but we'll wait until someone asks for it :-)

Thanks for adding this. I agree that more flexibility in this regard would indeed to nice in the future.


Fix en-us bug

I haven't been able to replicate the bug since the fixes, but maybe test it yourself before approving just in case

No problems in URL but if I do
Login -> click a project on homepage -> errors loading the page -> reload page -> everything fine

@AronBuzogany I seem to have this problem on development also


iOS: Discussions - Can't determine current selection for filters and sort within a topic

Steps:

Go to discussions
Go to a topic
Tap "All Posts"
Expect pop to show a check mark next to the current selection.

@aleffert pl review.
I know the approach is not that neat, but i didn't do a major refactor so that it remains consistent with Qualcomm Team's structure

I did end up doing a major refactor which will make this redundant. Apologies for the duplicated work.


remove double check for auth

Coverage decreased (-0.07%) to 85.644% when pulling cac7a579403d1e374b6f7ef9e278be878a0b5c4e on PRED-414 into a735261722bc677b7dac1f08325ad8e5a7d0d4b3 on master.


[PE-D][Tester D] Unable to insert multiple tags via edit pop up form

Suppose I have selected a receipe and press f to open up the edit pop up form. While I am able to add Ingredients and Steps by clicking on their respective last boxes, for Tags, I am unable to add multiple tags. When I insert Italian Food into the box for Tags, it will be saved as one single tag. May I check why the feature to add multiple tags is not included since it exists for Ingredients and Steps? This makes it hard for users to use this feature to edit tags since users can only edit 1 tag at a time.
Before:

After clicking save:

Labels: type.FeatureFlaw severity.Medium
original: eugenetangkj/ped#9

documentation issue, it should be noted that tags in forms are comma-separated


Adds new tslint rule for no-unused-variables

Fixes errors that came up through that new rule
Signed-off-by: campionfellin<EMAIL_ADDRESS>

Pull Request Test Coverage Report for Build 66

0 of 0 (NaN%) changed or added relevant lines in 0 files are covered.
207 unchanged lines in 1 file lost coverage.
Overall coverage decreased (-61.2%) to 9.603%

Files with Coverage Reduction
New Missed Lines
%

index.js
207
7.94%

Totals

Change from base Build 63:
-61.2%

Covered Lines:
80

Relevant Lines:
617

💛  - Coveralls

LGTM, thanks!


Traitlets config

Recreating #173 with rebased PR. Waiting for #174 .
Closes #148
Closes #109

@mateusz-garlacz can you rebase?


import from CommentedSeq from ruamel.yaml.comments instead of ruamel.…

…yaml
Not sure when this changed. I'm using ruamel.yaml version '0.16.12'. If there's a different approach you want to take that's fine too.

Did they change the interface?
Let me check

thanks for the fix! :)


Better Installation section

fixes #5

Current coverage is 80.68% (diff: 100%)

Merging #8 into master will not change coverage

@@             master         #8   diff @@
==========================================
  Files            10         10
  Lines           264        264
  Methods           0          0
  Messages          0          0
  Branches          0          0
==========================================
  Hits            213        213
  Misses           51         51
  Partials          0          0

Powered by Codecov. Last update 3e1079b...efdf72d


under the ie8,selected the all，the brower throw the error:stack overflow at line: 2

under the ie8,selected the all，the brower throw the error:stack overflow at line: 2

I'm surprised you got it running on IE8 at all.

it not suport ie8?


Don't load executable accounts for transactions

Problem
There is no need for loading executable accounts for transactions, if the account is already present in the program cache.
Summary of Changes

The program cache needs to track the size, rent epoch and lamports for the programs.
If an account is not loaded, then we pad the account size with 0s. This is because otherwise transactions use less compute units, and then transactions which fail on mainnet may suddenly pass in our validator. This makes checking for divergence possible.
There are a few programs running on mainnet which read the contents of the executable accounts. There is a an exception list for these accounts. Note that all executable accounts in that instruction needs to be loaded, since we do not know ahead of time which account will be read.
All programs currently in this list are upgradable
This code has been running for months in a mainnet validator without divergence. However, the code has been  re-written a number of times - I completely changed the approach a number of times. The current version of the code has been running for about 3 weeks now.
I intend to let the validator with these code changes run continuously until the feature is activated

Future:

Remove the need for zero-padding the non-loaded executable accounts
Remove the need to pass executable accounts down the CPI chain https://github.com/solana-labs/solana/pull/34191
Fixes #

Codecov Report
Attention: Patch coverage is 94.57364% with 14 lines in your changes are missing coverage. Please review.

Project coverage is 81.9%. Comparing base (2ddb50d) to head (e834852).
Report is 29 commits behind head on master.

Additional details and impacted files
@@            Coverage Diff            @@
##           master     #180     +/-   ##
=========================================
- Coverage    81.9%    81.9%   -0.1%
=========================================
  Files         837      837
  Lines      226518   226716    +198
=========================================
+ Hits       185551   185710    +159
- Misses      40967    41006     +39

Can you rebase it onto master and resolve the conflicts?

Can you rebase it onto master and resolve the conflicts?

It's been rebased

I only skimmed through the changes haven't done a proper review, but here's some initial comments since this ties to another perf issue I've been investigating.

There are a few programs running on mainnet which read the contents of the executable accounts. There is a an exception list for these accounts. Note that all executable accounts in that instruction needs to be loaded, since we do not know ahead of time which account will be read.

I don't think we can do this. It is acceptable to break those programs, but I don't think it's acceptable to have an exception list, because it's exploitable: there could be a dormant malicious program, not in the exception list, waiting for this feature to be enabled to trigger a consensus issue by accessing an executable program.
Anyway, what brought me here is that I've been investigating account_matches_owners interacting with the accounts-db read cache, and causing a lot of major page faults (hitting disk).
I think the original approach of having separate filter_executable_program_accounts/load_accounts is not ideal. We introduced account_matches_owners() to "peek" into the accounts-db before we load the non-executable accounts, which effectively forces us to do two round trips into the accountsdb. We first make accounts-db iterate over all accounts in a message, then do another round trip where we make it iterate over all the non-executable accounts.
account_matches_owners() interacts with the internal caches in the accountsdb, pages in parts of the accounts index, pages in parts of appendvecs, etc, so this is not great perf wise.
Instead, I think we could have a load_accounts_with_filter(account_keys, |...| { ... }) and in the filter build the list of program accounts, and return a value to signal to the accounts-db to not load nor insert an account into its caches. What do you think?

With an upcoming fix for the accounts-db to avoid thrashing the readonly cache, account_matches_owners becomes the largest offender in tx execution, causing a lot of pagecache faults (and sleeps):

account_matches_owners becomes the largest offender in tx execution, causing a lot of pagecache faults (and sleeps)

That is because it is the first place to touch all the accounts of a TX.
If we were to remove the account_matches_owners() from filter_executable_program_accounts() then load_accounts() would in turn become the place that causes all of these, right?
But I agree that filter_executable_program_accounts(), replenish_program_cache() and load_accounts() should be refactored. IMO it is sufficient to only check the program cache in filter_executable_program_accounts() and swap the order of load_accounts() and replenish_program_cache(). I will try this out and PR it.

At that point we are left with a list that needs to be loaded. So replenish_program_cache() does its normal thing but uses a uncached account read.

It is not clear to me:

fn load_program_accounts() uses callbacks.get_account_shared_data(pubkey), which is just a regular account read. How can we make this a "do not keep this in the cache" type of read?
For program account which appear as instruction accounts, we do want them to be cached, else we have to read them again

fn load_program_accounts() uses callbacks.get_account_shared_data(pubkey), which is just a regular account read. How can we make this a "do not keep this in the cache" type of read?

Have to check the interfaces if such a method exists already, don't know.

For program account which appear as instruction accounts, we do want the account to be cached, else we have to read them again.

load_program_accounts() happens after load_accounts() so by that time the instruction accounts will already by cached anyway.

Calling account_matches_owners() when we are going to call get_account_shared_data() anyway seems a waste of cycles and iops.

Agreed, we can also check the owner of the loaded accounts.

I think we have roughly the same thing in mind. What I suggest is three phases:

I'm not sure that they are the same. Can you elaborate what's the advantage of doing this - which requires account_matches_owners which is inherently "look before you leap" - vs something like load_accounts_with_filter(), which would allow account_matches_owners to be removed altogether and do only one trip inside the accounts db, reducing locks, index lookups etc?
if you do if !account_matches_owners(key, owners) { load_account(key) } that's more work than if you do load_accounts(account_keys, filter) and filter() is invoked with the account. First case you have to find the account twice, second case once.

My proposal does not need to use account_matches_owners(), that part is orthogonal.
I was more concerned about not touching the accounts-db at all for programs we have in the global cache, while you are aiming to touch each account only once, if we have to touch it. And both things can be combined.
What exactly is the purpose of the filter callback you have in mind, and why wouldn't we just hard-code a check against PROGRAM_OWNERS instead?


Index for the current file

Is it possible to get an index for the current file? I've tried it a couple of ways:

https://github.com/tshort/DataFrames.jl/blob/master/docs/src/lib/manipulation.md
https://github.com/tshort/DataFrames.jl/blob/master/docs/src/lib/maintypes.md

Because the list of docstrings listed isn't in the contents on the left (they aren't headings), I'd like to put an index at the top of the current file.

Doing that should work fine I think. The path is relative to the pwd. Also the two blocks, {index} and {docs}, need to be distinct. When using indented code blocks consecutive ones will merge together if there's no other content, such as a paragraph, between them. You can get around that by adding some text between them or using fenced code blocks instead.

Thanks @MichaelHatherly. That was it. Missed that bit.


Update README examples/project structure to reflect TS port, updated imports, etc.

Update the code examples and project structure section in the release/2.0.0 branch to reflect *.ts files, named exports, etc.

Closed via #141


[3319] Handle when the trainee is merged or has an invalid TRN

Context
https://trello.com/c/0OczNMS6/3319-investigate-trainees-with-no-addresses-international-addresses
TRN's are set to 999999999 if they never received a TRN for some reason. We think this would be because they didn't start the course. If that's the case, the trainee would be skipped over since we do not map that "DID_NOT_START" status.
Trainee records can be merged into other (more complete) records in DTTP. Don't import these ones.
Changes proposed in this pull request

Don't set the our trainee's TRN to an invalid one from DTTP.
Don't try to import merged trainees

Guidance to review
Important business

Does this PR introduce any PII fields that need to be overwritten or deleted in db/scripts/sanitise.sql?
Does this PR change the database schema? If so, have you updated the config/analytics.yml file and considered whether you need to send 'import_entity' events?

 Investigate trainees with no addresses/international addresses


request for color picker input

Laravel Version:5.3
Voyager Version: 0.11
PHP Version: 5.6
Database Driver & Version:5.6

Description:
it will  be nice to make color picker in bread
Steps To Reproduce:
http://angularjs.jqueryrain.com/demo/color-picker/
here is some examples

Duplicated, it has been requested here #619.

Closing as duplicate.  Please track this under #619

Here, PR sent: https://github.com/the-control-group/voyager/pull/1494
Can you please take care it @fletch3555?


Release notifications in Slack

Post message to Slack community when new version of st2 is released in GitHub st2.
Seems there are several ways to do that (core.http action, workflows, core.st2.CronTimer trigger).
But as I understand the most clear one and reusable is to create Sensor in existing GitHub integration pack.
TODO:

[x] Create new event type for Sensor in Github integration pack, see https://github.com/StackStorm/st2contrib/pull/262
[x] Rule that will post message to Slack when GitHub release event is triggered, see #3

Works


[BUG]: Uploading dataset not working

When uploading a new dataset to the project we are getting an object that has multiple file names and no columns section filled in
This occurs when we only upload a singular file
Sample on staging:
https://app.staging.terarium.ai/projects/d7e690d5-ec81-4b01-8e97-295863454dfe/dataset/1501aea6-ddda-4b4d-a8c4-c8e7da18dd9b

Sample object locally with the following file:
simResult.csv

{
    "id": "ca081a8c-bc2f-4c2d-9070-2bc79b18e635",
    "createdOn": "2024-05-27T14:59:13.498+00:00",
    "updatedOn": "2024-05-27T14:59:14.377+00:00",
    "name": "simResult",
    "description": "simResult.csv",
    "fileNames": [
        "simResult.csv",
        "simResult.csv"
    ],
    "temporary": false,
    "publicAsset": false,
    "userId": "7421f1cd-b9aa-4e26-be86-a4cefc3acc7e",
    "datasetUrls": [],
    "columns": []
}

Talked to @dvince2 about the values missing from the columns. It appears to be an issue with database. Re-assigning it to @dvince2 .


Better patching

Deprecates the existing Mod::patch API and adds platform-specific patching APIs. Reasoning is that since patching is inherently unportable, this reminds modders better that they need to also work out the correct patch for other platforms.
Unresolved questions

[x] Implement platform-specific APIs
[x] Add warning to Mod::patch
[ ] Should the functions issue a warning if you try to call them on another platform?
[ ] Should Mod::patch be removed completely?

this stinks sorry


Confusing description of throughput assignment

Under Logical Partitions, you mention the following:
"...the throughput that you provision on the container are automatically (horizontally) partitioned across a set of logical partitions."
Then, under Physical Partitions you state the following:
"Throughput provisioned for a container is divided evenly among physical partitions"
But, we also know that multiple logical partitions can be mapped to the same physical partition.
This is a little confusing. My understanding was that if I allocate 400 RU's/s at the container level, I have 400 RU's/s available for each logical partition. Is my understanding consistent with the way Cosmos DB works? or does the fact that there is not a 1-1 mapping between physical and logical partitions change things?
Thanks

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 9da32a62-a60f-1013-bb2f-688c67a446ec
Version Independent ID: 7a2bf261-0a20-30f0-837d-cf02700034aa
Content: Partitioning and horizontal scaling in Azure Cosmos DB
Content Source: articles/cosmos-db/partition-data.md
Service: cosmos-db
GitHub Login: @rimman
Microsoft Alias: rimman

Azure Cosmos DB provides throughput guarantees at the container level if you provision throughput on a container or at the database level, if you provision throughput on database. There is no reserved throughput at individual partition key level. As long as your requests are distributed across sufficient number of partition keys you should be able to drive the utilization very high. I hope this helps. Please follow these best practices for partitioning https://docs.microsoft.com/en-us/azure/cosmos-db/partitioning-overview#choose-partitionkey (this will ensure you that you will drive the utilization of  the provisioned throughput).

So, I understand that if we allocate 1000 RU/s to the container, and we have 5 partitions, each partition will have a limit of 200 RU/s.
From a purely throughput perspective, what is the motivation to have a partition key? Why not just put everything under the same partition?
You mention that we could have "hot spots" but this doesn't seem to be any different with partitions. I am confused...
Thanks

Hi @zepedaherbey, want provide a link to a Stack Overflow thread: Why is cosmos db creating 5 partitions for a same partition key value? where this is discussed in greater detail.

When using the Unlimited collection size, by default you will be provisioned 5 physical partition key ranges. This number can change, but as of May 2018, 5 is the default. You can think of each physical partition as a "server". So your data will be spread amongst 5 physical "servers". As your data size grows, your data will automatically be re-distributed against more physical partitions. That's why getting partition key correct upfront in your design is so important.

The problem in your scenario of having the same Partition Key (PK) for all 200k records is that you will have hot spots. You have 5 physical "servers" but only one will ever be used. The other 4 will go idle, and the result is that you'll have less performance for the same price point. You're paying for 50k RU/s but will ever only be able to use 10k RU/s. Change your PK to something that is more uniformly distributed. This will vary of course how you read the data. If you give more detail about the docs you're storing then we may be able to help give a recommendation. If you're simply doing point lookups (calling ReadDocumentAsync() by each Document ID) then you can safely partition on the ID field of the document. This will spread all 200k of your docs across all 5 physical partitions and your 50k RU/s throughput will be maximized. Once you effectively do this, you will probably see that you can reduce the RU usage to something much lower and save a ton of money. With only 200k records each at 2.1KB, you probably could go low as 2500 RU/s (1/20th of the cost you're paying now).

*Server is in quotes because each physical partition is actually a collection of many servers that are load-balanced for high availability and also throughput (depending on your consistency level).

We will now proceed to close this thread. If there are specific documentation edit that need to be made, please comment and we will gladly take these into consideration or you free to contribute.

Thank you for the response. This was helpful but did not quite address my concern. The reference you provided deals with an - unlimited collection size -.
In our case, we would like to start with a small volume of data (say 2 GB). We know that per logical partition, you allow up to 10 GB. In this case, all of our data fits into a single partition. As it relates to the demand for this data, it will also be a relatively low because this is an internal app.
Given these small numbers, why would I need multiple partitions? Why not allocate the full 400 RU/s to a single partition?

@zepedaherbey
The response above is conflating physical and logical partitions. Il want to make a clear distinction between logical and physical partitions - these are not the same thing.

Logical partitions are controlled by the user. These are represented as partition keys – and users are instructed to choose a partition key that (1) distributes throughput for a given workload as evenly as possible across a high cardinality of values (2) efficiently routes queries – with attention focused on frequently run, high QPS queries and (3) ensures a given partition key value should not exceed size + throughput bounds.

Physical partitions are the underlying infrastructure and are controlled by the service – users do not have any knobs/levers for tuning this – and this is expected to evolve over time as we refresh the underlying hardware (the above Stackoverflow response is already obsolete). The size of the physical partition is not material – as Cosmos DB will manage and redistribute logical partitions across a dynamic number of physical partitions.

Our external customers should be designing their applications - in which they should honor best practices for choosing logical partition keys.
When you start out with small volume (2GB) and let's say 400RUs (it may end up on a single physical partition) - but we still ask you to provide a logical partition key, just in case your data/workloads start to scale. Behind the scene - we do the transparent partition management and provide the SLAs for the throughput provisioned at the level of granularity at which you've provisioned throughput (e.g., container or database). I hope this helps. Thanks.
I highly recommend you watch this:
https://www.youtube.com/watch?v=bQBeTeYUrR8
Thanks!

Thank you for the additional dialog! Want to add the Cosmos DB UserVoice as a channel to provide product specific feedback and make product feature requests. The link filters on Partitions but feel free to modify the filter based upon other keywords or UpVote and comment on existing entries.

@rimman,
We are revisiting this issue.
In this article this statement is mentioned a couple of times:
(1)
"Most small Cosmos containers have many logical partitions but only require a single physical partition"
You state:
(2)
"When you start out with small volume (2GB) and let's say 400RUs (it may end up on a single physical partition)"
I would like clarification on the "Most" in statement (1) ad the "it may.." on statement (2).
I am particularly interested in knowing under what conditions is a container allocated one (and only one) physical partition.
Thanks

@zepedaherbey This user has moved onto a new role. I can make @markjbrown aware of your inquiry or you can create a new issue if there is a specific area of the document you feel needs some clarification. In the current document, the Logical partitions section has the following statement:

Groups of items that have specific values for foodGroup, such as Beef Products, Baked Products, and Sausages and Luncheon Meats, form distinct logical partitions.

In this example the container has a partition key of /foodGroup and this creates a set of logical partitions based upon the foodGroup values listed, and each are 1 GB in size, all 4 logical partitions will be placed upon a single physical partition.
If these logical partitions grow in size over time (say 15GB each) and/or the RU requirements exceed 10k RUs, then this container will expand to 2 or more physical partitions. I say and/or because the limit of a physical partition is 50GB or 10k RUs and if either threshold is exceeded by a logical partition in the collection or by the collection itself, then the Cosmos DB service will expand the collection to additional physical partitions.